summaryrefslogtreecommitdiff
path: root/vere/ext/gmp/gen/x86_64-linux
diff options
context:
space:
mode:
Diffstat (limited to 'vere/ext/gmp/gen/x86_64-linux')
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/config.h668
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/fac_table.h49
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/fib_table.h8
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mp_bases.h13
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/add_err1_n.s237
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/add_err2_n.s184
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/add_err3_n.s168
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/add_n.s194
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/addaddmul_1msb0.s185
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/addlsh1_n.s179
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/addlsh2_n.s204
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/addlsh_n.s228
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/addmul_1.s196
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/addmul_2.s209
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/and_n.s149
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/andn_n.s154
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/bdiv_dbm1c.s121
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/bdiv_q_1.s198
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/cnd_add_n.s190
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/cnd_sub_n.s190
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/com.s110
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/copyd.s108
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/copyi.s107
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_1n_pi1.s261
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_2n_pi1.s171
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_2u_pi1.s211
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/dive_1.s175
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/divrem_1.s335
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/divrem_2.s208
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/fib_table.c107
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/gcd_11.s256
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/gcd_22.s434
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/hamdist.s167
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/invert_limb.s123
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/invert_limb_table.s313
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/ior_n.s149
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/iorn_n.s154
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/jacobitab.h13
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/lshift.s186
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/lshiftc.s197
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_1.s241
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_2.s252
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_4.s283
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/mod_34lsub1.s228
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/mode1o.s189
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/mp_bases.c268
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/mul_1.s205
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/mul_2.s218
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/mul_basecase.s483
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/mullo_basecase.s439
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/mulmid_basecase.s573
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/nand_n.s155
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/nior_n.s155
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/perfsqr.h46
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/popcount.s160
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/redc_1.s603
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh1_n.s179
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh2_n.s204
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh_n.s228
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/rsh1add_n.s203
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/rsh1sub_n.s203
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/rshift.s191
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/sec_tabselect.s190
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/sqr_basecase.s818
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/sqr_diag_addlsh1.s130
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/sub_err1_n.s237
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/sub_err2_n.s184
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/sub_err3_n.s168
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/sub_n.s194
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/sublsh1_n.s175
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/submul_1.s196
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/xnor_n.s154
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/mpn/xor_n.s149
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/sieve_table.h46
-rw-r--r--vere/ext/gmp/gen/x86_64-linux/trialdivtab.h1214
75 files changed, 17070 insertions, 0 deletions
diff --git a/vere/ext/gmp/gen/x86_64-linux/config.h b/vere/ext/gmp/gen/x86_64-linux/config.h
new file mode 100644
index 0000000..47840ff
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/config.h
@@ -0,0 +1,668 @@
+/* config.h. Generated from config.in by configure. */
+/* config.in. Generated from configure.ac by autoheader. */
+
+/*
+
+Copyright 1996-2020 Free Software Foundation, Inc.
+
+This file is part of the GNU MP Library.
+
+The GNU MP Library is free software; you can redistribute it and/or modify
+it under the terms of either:
+
+ * the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 3 of the License, or (at your
+ option) any later version.
+
+or
+
+ * the GNU General Public License as published by the Free Software
+ Foundation; either version 2 of the License, or (at your option) any
+ later version.
+
+or both in parallel, as here.
+
+The GNU MP 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 General Public License
+for more details.
+
+You should have received copies of the GNU General Public License and the
+GNU Lesser General Public License along with the GNU MP Library. If not,
+see https://www.gnu.org/licenses/.
+*/
+
+/* Define if building universal (internal helper macro) */
+/* #undef AC_APPLE_UNIVERSAL_BUILD */
+
+/* The gmp-mparam.h file (a string) the tune program should suggest updating.
+ */
+#define GMP_MPARAM_H_SUGGEST "./mpn/x86_64/k8/gmp-mparam.h"
+
+/* Define to 1 if you have the `alarm' function. */
+#define HAVE_ALARM 1
+
+/* Define to 1 if alloca() works (via gmp-impl.h). */
+#define HAVE_ALLOCA 1
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+ */
+#define HAVE_ALLOCA_H 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((const)) */
+#define HAVE_ATTRIBUTE_CONST 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((malloc)) */
+#define HAVE_ATTRIBUTE_MALLOC 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((mode (XX)))
+ */
+#define HAVE_ATTRIBUTE_MODE 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((noreturn)) */
+#define HAVE_ATTRIBUTE_NORETURN 1
+
+/* Define to 1 if you have the `attr_get' function. */
+/* #undef HAVE_ATTR_GET */
+
+/* Define to 1 if tests/libtests has calling conventions checking for the CPU
+ */
+#define HAVE_CALLING_CONVENTIONS 1
+
+/* Define to 1 if you have the `clock' function. */
+#define HAVE_CLOCK 1
+
+/* Define to 1 if you have the `clock_gettime' function */
+#define HAVE_CLOCK_GETTIME 1
+
+/* Define to 1 if you have the `cputime' function. */
+/* #undef HAVE_CPUTIME */
+
+/* Define to 1 if you have the declaration of `fgetc', and to 0 if you don't.
+ */
+#define HAVE_DECL_FGETC 1
+
+/* Define to 1 if you have the declaration of `fscanf', and to 0 if you don't.
+ */
+#define HAVE_DECL_FSCANF 1
+
+/* Define to 1 if you have the declaration of `optarg', and to 0 if you don't.
+ */
+#define HAVE_DECL_OPTARG 1
+
+/* Define to 1 if you have the declaration of `sys_errlist', and to 0 if you
+ don't. */
+#define HAVE_DECL_SYS_ERRLIST 0
+
+/* Define to 1 if you have the declaration of `sys_nerr', and to 0 if you
+ don't. */
+#define HAVE_DECL_SYS_NERR 0
+
+/* Define to 1 if you have the declaration of `ungetc', and to 0 if you don't.
+ */
+#define HAVE_DECL_UNGETC 1
+
+/* Define to 1 if you have the declaration of `vfprintf', and to 0 if you
+ don't. */
+#define HAVE_DECL_VFPRINTF 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define one of the following to 1 for the format of a `double'.
+ If your format is not among these choices, or you don't know what it is,
+ then leave all undefined.
+ IEEE_LITTLE_SWAPPED means little endian, but with the two 4-byte halves
+ swapped, as used by ARM CPUs in little endian mode. */
+/* #undef HAVE_DOUBLE_IEEE_BIG_ENDIAN */
+#define HAVE_DOUBLE_IEEE_LITTLE_ENDIAN 1
+/* #undef HAVE_DOUBLE_IEEE_LITTLE_SWAPPED */
+/* #undef HAVE_DOUBLE_VAX_D */
+/* #undef HAVE_DOUBLE_VAX_G */
+/* #undef HAVE_DOUBLE_CRAY_CFP */
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the <float.h> header file. */
+#define HAVE_FLOAT_H 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 if you have the `getrusage' function. */
+#define HAVE_GETRUSAGE 1
+
+/* Define to 1 if you have the `getsysinfo' function. */
+/* #undef HAVE_GETSYSINFO */
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((visibility))
+ and __attribute__ ((alias)) */
+#define HAVE_HIDDEN_ALIAS 1
+
+/* Define one of these to 1 for the host CPU family.
+ If your CPU is not in any of these families, leave all undefined.
+ For an AMD64 chip, define "x86" in ABI=32, but not in ABI=64. */
+/* #undef HAVE_HOST_CPU_FAMILY_alpha */
+/* #undef HAVE_HOST_CPU_FAMILY_m68k */
+/* #undef HAVE_HOST_CPU_FAMILY_power */
+/* #undef HAVE_HOST_CPU_FAMILY_powerpc */
+/* #undef HAVE_HOST_CPU_FAMILY_x86 */
+#define HAVE_HOST_CPU_FAMILY_x86_64 1
+
+/* Define one of the following to 1 for the host CPU, as per the output of
+ ./config.guess. If your CPU is not listed here, leave all undefined. */
+/* #undef HAVE_HOST_CPU_alphaev67 */
+/* #undef HAVE_HOST_CPU_alphaev68 */
+/* #undef HAVE_HOST_CPU_alphaev7 */
+/* #undef HAVE_HOST_CPU_m68020 */
+/* #undef HAVE_HOST_CPU_m68030 */
+/* #undef HAVE_HOST_CPU_m68040 */
+/* #undef HAVE_HOST_CPU_m68060 */
+/* #undef HAVE_HOST_CPU_m68360 */
+/* #undef HAVE_HOST_CPU_powerpc604 */
+/* #undef HAVE_HOST_CPU_powerpc604e */
+/* #undef HAVE_HOST_CPU_powerpc750 */
+/* #undef HAVE_HOST_CPU_powerpc7400 */
+/* #undef HAVE_HOST_CPU_supersparc */
+/* #undef HAVE_HOST_CPU_i386 */
+/* #undef HAVE_HOST_CPU_i586 */
+/* #undef HAVE_HOST_CPU_i686 */
+/* #undef HAVE_HOST_CPU_pentium */
+/* #undef HAVE_HOST_CPU_pentiummmx */
+/* #undef HAVE_HOST_CPU_pentiumpro */
+/* #undef HAVE_HOST_CPU_pentium2 */
+/* #undef HAVE_HOST_CPU_pentium3 */
+/* #undef HAVE_HOST_CPU_pentium4 */
+/* #undef HAVE_HOST_CPU_core2 */
+/* #undef HAVE_HOST_CPU_nehalem */
+/* #undef HAVE_HOST_CPU_westmere */
+/* #undef HAVE_HOST_CPU_sandybridge */
+/* #undef HAVE_HOST_CPU_ivybridge */
+/* #undef HAVE_HOST_CPU_haswell */
+/* #undef HAVE_HOST_CPU_broadwell */
+/* #undef HAVE_HOST_CPU_skylake */
+/* #undef HAVE_HOST_CPU_silvermont */
+/* #undef HAVE_HOST_CPU_goldmont */
+/* #undef HAVE_HOST_CPU_k8 */
+/* #undef HAVE_HOST_CPU_k10 */
+/* #undef HAVE_HOST_CPU_bulldozer */
+/* #undef HAVE_HOST_CPU_piledriver */
+/* #undef HAVE_HOST_CPU_steamroller */
+/* #undef HAVE_HOST_CPU_excavator */
+/* #undef HAVE_HOST_CPU_zen */
+/* #undef HAVE_HOST_CPU_bobcat */
+/* #undef HAVE_HOST_CPU_jaguar */
+/* #undef HAVE_HOST_CPU_s390_z900 */
+/* #undef HAVE_HOST_CPU_s390_z990 */
+/* #undef HAVE_HOST_CPU_s390_z9 */
+/* #undef HAVE_HOST_CPU_s390_z10 */
+/* #undef HAVE_HOST_CPU_s390_z196 */
+
+/* Define to 1 iff we have a s390 with 64-bit registers. */
+/* #undef HAVE_HOST_CPU_s390_zarch */
+
+/* Define to 1 if the system has the type `intmax_t'. */
+#define HAVE_INTMAX_T 1
+
+/* Define to 1 if the system has the type `intptr_t'. */
+#define HAVE_INTPTR_T 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <invent.h> header file. */
+/* #undef HAVE_INVENT_H */
+
+/* Define to 1 if you have the <langinfo.h> header file. */
+#define HAVE_LANGINFO_H 1
+
+/* Define one of these to 1 for the endianness of `mp_limb_t'.
+ If the endianness is not a simple big or little, or you don't know what
+ it is, then leave both undefined. */
+/* #undef HAVE_LIMB_BIG_ENDIAN */
+#define HAVE_LIMB_LITTLE_ENDIAN 1
+
+/* Define to 1 if you have the `localeconv' function. */
+#define HAVE_LOCALECONV 1
+
+/* Define to 1 if you have the <locale.h> header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define to 1 if the system has the type `long double'. */
+#define HAVE_LONG_DOUBLE 1
+
+/* Define to 1 if the system has the type `long long'. */
+#define HAVE_LONG_LONG 1
+
+/* Define to 1 if you have the <machine/hal_sysinfo.h> header file. */
+/* #undef HAVE_MACHINE_HAL_SYSINFO_H */
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `memset' function. */
+#define HAVE_MEMSET 1
+
+/* Define to 1 if you have the `mmap' function. */
+#define HAVE_MMAP 1
+
+/* Define to 1 if you have the `mprotect' function. */
+#define HAVE_MPROTECT 1
+
+/* Define to 1 each of the following for which a native (ie. CPU specific)
+ implementation of the corresponding routine exists. */
+#define HAVE_NATIVE_mpn_add_n 1
+/* #undef HAVE_NATIVE_mpn_add_n_sub_n */
+#define HAVE_NATIVE_mpn_add_nc 1
+#define HAVE_NATIVE_mpn_addaddmul_1msb0 1
+#define HAVE_NATIVE_mpn_addlsh1_n 1
+#define HAVE_NATIVE_mpn_addlsh2_n 1
+#define HAVE_NATIVE_mpn_addlsh_n 1
+/* #undef HAVE_NATIVE_mpn_addlsh1_nc */
+/* #undef HAVE_NATIVE_mpn_addlsh2_nc */
+/* #undef HAVE_NATIVE_mpn_addlsh_nc */
+/* #undef HAVE_NATIVE_mpn_addlsh1_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh2_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh1_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh1_n_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh2_n_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh_n_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh1_nc_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip2 */
+/* #undef HAVE_NATIVE_mpn_addmul_1c */
+#define HAVE_NATIVE_mpn_addmul_2 1
+/* #undef HAVE_NATIVE_mpn_addmul_3 */
+/* #undef HAVE_NATIVE_mpn_addmul_4 */
+/* #undef HAVE_NATIVE_mpn_addmul_5 */
+/* #undef HAVE_NATIVE_mpn_addmul_6 */
+/* #undef HAVE_NATIVE_mpn_addmul_7 */
+/* #undef HAVE_NATIVE_mpn_addmul_8 */
+/* #undef HAVE_NATIVE_mpn_addmul_2s */
+#define HAVE_NATIVE_mpn_and_n 1
+#define HAVE_NATIVE_mpn_andn_n 1
+#define HAVE_NATIVE_mpn_bdiv_dbm1c 1
+#define HAVE_NATIVE_mpn_bdiv_q_1 1
+#define HAVE_NATIVE_mpn_pi1_bdiv_q_1 1
+#define HAVE_NATIVE_mpn_cnd_add_n 1
+#define HAVE_NATIVE_mpn_cnd_sub_n 1
+#define HAVE_NATIVE_mpn_com 1
+#define HAVE_NATIVE_mpn_copyd 1
+#define HAVE_NATIVE_mpn_copyi 1
+#define HAVE_NATIVE_mpn_div_qr_1n_pi1 1
+/* #undef HAVE_NATIVE_mpn_div_qr_2 */
+#define HAVE_NATIVE_mpn_divexact_1 1
+/* #undef HAVE_NATIVE_mpn_divexact_by3c */
+#define HAVE_NATIVE_mpn_divrem_1 1
+/* #undef HAVE_NATIVE_mpn_divrem_1c */
+#define HAVE_NATIVE_mpn_divrem_2 1
+/* #undef HAVE_NATIVE_mpn_gcd_1 */
+#define HAVE_NATIVE_mpn_gcd_11 1
+#define HAVE_NATIVE_mpn_gcd_22 1
+#define HAVE_NATIVE_mpn_hamdist 1
+#define HAVE_NATIVE_mpn_invert_limb 1
+#define HAVE_NATIVE_mpn_ior_n 1
+#define HAVE_NATIVE_mpn_iorn_n 1
+#define HAVE_NATIVE_mpn_lshift 1
+#define HAVE_NATIVE_mpn_lshiftc 1
+/* #undef HAVE_NATIVE_mpn_lshsub_n */
+/* #undef HAVE_NATIVE_mpn_mod_1 */
+#define HAVE_NATIVE_mpn_mod_1_1p 1
+/* #undef HAVE_NATIVE_mpn_mod_1c */
+#define HAVE_NATIVE_mpn_mod_1s_2p 1
+#define HAVE_NATIVE_mpn_mod_1s_4p 1
+#define HAVE_NATIVE_mpn_mod_34lsub1 1
+#define HAVE_NATIVE_mpn_modexact_1_odd 1
+#define HAVE_NATIVE_mpn_modexact_1c_odd 1
+#define HAVE_NATIVE_mpn_mul_1 1
+#define HAVE_NATIVE_mpn_mul_1c 1
+#define HAVE_NATIVE_mpn_mul_2 1
+/* #undef HAVE_NATIVE_mpn_mul_3 */
+/* #undef HAVE_NATIVE_mpn_mul_4 */
+/* #undef HAVE_NATIVE_mpn_mul_5 */
+/* #undef HAVE_NATIVE_mpn_mul_6 */
+#define HAVE_NATIVE_mpn_mul_basecase 1
+#define HAVE_NATIVE_mpn_mullo_basecase 1
+#define HAVE_NATIVE_mpn_nand_n 1
+#define HAVE_NATIVE_mpn_nior_n 1
+#define HAVE_NATIVE_mpn_popcount 1
+#define HAVE_NATIVE_mpn_preinv_divrem_1 1
+/* #undef HAVE_NATIVE_mpn_preinv_mod_1 */
+#define HAVE_NATIVE_mpn_redc_1 1
+/* #undef HAVE_NATIVE_mpn_redc_2 */
+#define HAVE_NATIVE_mpn_rsblsh1_n 1
+#define HAVE_NATIVE_mpn_rsblsh2_n 1
+#define HAVE_NATIVE_mpn_rsblsh_n 1
+/* #undef HAVE_NATIVE_mpn_rsblsh1_nc */
+/* #undef HAVE_NATIVE_mpn_rsblsh2_nc */
+/* #undef HAVE_NATIVE_mpn_rsblsh_nc */
+#define HAVE_NATIVE_mpn_rsh1add_n 1
+#define HAVE_NATIVE_mpn_rsh1add_nc 1
+#define HAVE_NATIVE_mpn_rsh1sub_n 1
+#define HAVE_NATIVE_mpn_rsh1sub_nc 1
+#define HAVE_NATIVE_mpn_rshift 1
+/* #undef HAVE_NATIVE_mpn_sbpi1_bdiv_r */
+#define HAVE_NATIVE_mpn_sqr_basecase 1
+/* #undef HAVE_NATIVE_mpn_sqr_diagonal */
+#define HAVE_NATIVE_mpn_sqr_diag_addlsh1 1
+#define HAVE_NATIVE_mpn_sub_n 1
+#define HAVE_NATIVE_mpn_sub_nc 1
+#define HAVE_NATIVE_mpn_sublsh1_n 1
+/* #undef HAVE_NATIVE_mpn_sublsh2_n */
+/* #undef HAVE_NATIVE_mpn_sublsh_n */
+/* #undef HAVE_NATIVE_mpn_sublsh1_nc */
+/* #undef HAVE_NATIVE_mpn_sublsh2_nc */
+/* #undef HAVE_NATIVE_mpn_sublsh_nc */
+/* #undef HAVE_NATIVE_mpn_sublsh1_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh2_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh1_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh2_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_submul_1c */
+/* #undef HAVE_NATIVE_mpn_tabselect */
+/* #undef HAVE_NATIVE_mpn_udiv_qrnnd */
+/* #undef HAVE_NATIVE_mpn_udiv_qrnnd_r */
+/* #undef HAVE_NATIVE_mpn_umul_ppmm */
+/* #undef HAVE_NATIVE_mpn_umul_ppmm_r */
+#define HAVE_NATIVE_mpn_xor_n 1
+#define HAVE_NATIVE_mpn_xnor_n 1
+
+/* Define to 1 if you have the `nl_langinfo' function. */
+#define HAVE_NL_LANGINFO 1
+
+/* Define to 1 if you have the <nl_types.h> header file. */
+#define HAVE_NL_TYPES_H 1
+
+/* Define to 1 if you have the `obstack_vprintf' function. */
+/* #define HAVE_OBSTACK_VPRINTF 1 */
+
+/* Define to 1 if you have the `popen' function. */
+#define HAVE_POPEN 1
+
+/* Define to 1 if you have the `processor_info' function. */
+/* #undef HAVE_PROCESSOR_INFO */
+
+/* Define to 1 if <sys/pstat.h> `struct pst_processor' exists and contains
+ `psp_iticksperclktick'. */
+/* #undef HAVE_PSP_ITICKSPERCLKTICK */
+
+/* Define to 1 if you have the `pstat_getprocessor' function. */
+/* #undef HAVE_PSTAT_GETPROCESSOR */
+
+/* Define to 1 if the system has the type `ptrdiff_t'. */
+#define HAVE_PTRDIFF_T 1
+
+/* Define to 1 if the system has the type `quad_t'. */
+#define HAVE_QUAD_T 1
+
+/* Define to 1 if you have the `raise' function. */
+#define HAVE_RAISE 1
+
+/* Define to 1 if you have the `read_real_time' function. */
+/* #undef HAVE_READ_REAL_TIME */
+
+/* Define to 1 if you have the `sigaction' function. */
+#define HAVE_SIGACTION 1
+
+/* Define to 1 if you have the `sigaltstack' function. */
+#define HAVE_SIGALTSTACK 1
+
+/* Define to 1 if you have the `sigstack' function. */
+#define HAVE_SIGSTACK 1
+
+/* Tune directory speed_cyclecounter, undef=none, 1=32bits, 2=64bits) */
+#define HAVE_SPEED_CYCLECOUNTER 2
+
+/* Define to 1 if you have the <sstream> header file. */
+/* #undef HAVE_SSTREAM */
+
+/* Define to 1 if the system has the type `stack_t'. */
+#define HAVE_STACK_T 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if the system has the type `std::locale'. */
+/* #undef HAVE_STD__LOCALE */
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strnlen' function. */
+#define HAVE_STRNLEN 1
+
+/* Define to 1 if you have the `strtol' function. */
+#define HAVE_STRTOL 1
+
+/* Define to 1 if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define to 1 if you have the `sysconf' function. */
+#define HAVE_SYSCONF 1
+
+/* Define to 1 if you have the `sysctl' function. */
+/* #undef HAVE_SYSCTL */
+
+/* Define to 1 if you have the `sysctlbyname' function. */
+/* #undef HAVE_SYSCTLBYNAME */
+
+/* Define to 1 if you have the `syssgi' function. */
+/* #undef HAVE_SYSSGI */
+
+/* Define to 1 if you have the <sys/attributes.h> header file. */
+/* #undef HAVE_SYS_ATTRIBUTES_H */
+
+/* Define to 1 if you have the <sys/iograph.h> header file. */
+/* #undef HAVE_SYS_IOGRAPH_H */
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#define HAVE_SYS_MMAN_H 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/processor.h> header file. */
+/* #undef HAVE_SYS_PROCESSOR_H */
+
+/* Define to 1 if you have the <sys/pstat.h> header file. */
+/* #undef HAVE_SYS_PSTAT_H */
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#define HAVE_SYS_RESOURCE_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/sysctl.h> header file. */
+/* #undef HAVE_SYS_SYSCTL_H */
+
+/* Define to 1 if you have the <sys/sysinfo.h> header file. */
+#define HAVE_SYS_SYSINFO_H 1
+
+/* Define to 1 if you have the <sys/syssgi.h> header file. */
+/* #undef HAVE_SYS_SYSSGI_H */
+
+/* Define to 1 if you have the <sys/systemcfg.h> header file. */
+/* #undef HAVE_SYS_SYSTEMCFG_H */
+
+/* Define to 1 if you have the <sys/times.h> header file. */
+#define HAVE_SYS_TIMES_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the `times' function. */
+#define HAVE_TIMES 1
+
+/* Define to 1 if the system has the type `uint_least32_t'. */
+#define HAVE_UINT_LEAST32_T 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `vsnprintf' function and it works properly. */
+#define HAVE_VSNPRINTF 1
+
+/* Define to 1 for Windos/64 */
+/* #undef HOST_DOS64 */
+
+/* Assembler local label prefix */
+#define LSYM_PREFIX ".L"
+
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
+#define LT_OBJDIR ".libs/"
+
+/* Define to 1 to disable the use of inline assembly */
+/* #undef NO_ASM */
+
+/* Name of package */
+#define PACKAGE "gmp"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "gmp-bugs@gmplib.org, see https://gmplib.org/manual/Reporting-Bugs.html"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "GNU MP"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "GNU MP 6.2.1"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "gmp"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL "http://www.gnu.org/software/gmp/"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "6.2.1"
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* The size of `mp_limb_t', as computed by sizeof. */
+#define SIZEOF_MP_LIMB_T 8
+
+/* The size of `unsigned', as computed by sizeof. */
+#define SIZEOF_UNSIGNED 4
+
+/* The size of `unsigned long', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG 8
+
+/* The size of `unsigned short', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_SHORT 2
+
+/* The size of `void *', as computed by sizeof. */
+#define SIZEOF_VOID_P 8
+
+/* Define to 1 if sscanf requires writable inputs */
+/* #undef SSCANF_WRITABLE_INPUT */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* Maximum size the tune program can test for SQR_TOOM2_THRESHOLD */
+/* #undef TUNE_SQR_TOOM2_MAX */
+
+/* Version number of package */
+#define VERSION "6.2.1"
+
+/* Define to 1 to enable ASSERT checking, per --enable-assert */
+/* #undef WANT_ASSERT */
+
+/* Define to 1 to enable GMP_CPU_TYPE faking cpuid, per --enable-fake-cpuid */
+/* #undef WANT_FAKE_CPUID */
+
+/* Define to 1 when building a fat binary. */
+/* #undef WANT_FAT_BINARY */
+
+/* Define to 1 to enable FFTs for multiplication, per --enable-fft */
+#define WANT_FFT 1
+
+/* Define to 1 to enable old mpn_mul_fft_full for multiplication, per
+ --enable-old-fft-full */
+/* #undef WANT_OLD_FFT_FULL */
+
+/* Define to 1 if --enable-profiling=gprof */
+/* #undef WANT_PROFILING_GPROF */
+
+/* Define to 1 if --enable-profiling=instrument */
+/* #undef WANT_PROFILING_INSTRUMENT */
+
+/* Define to 1 if --enable-profiling=prof */
+/* #undef WANT_PROFILING_PROF */
+
+/* Define one of these to 1 for the desired temporary memory allocation
+ method, per --enable-alloca. */
+#define WANT_TMP_ALLOCA 1
+/* #undef WANT_TMP_REENTRANT */
+/* #undef WANT_TMP_NOTREENTRANT */
+/* #undef WANT_TMP_DEBUG */
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+/* # undef WORDS_BIGENDIAN */
+# endif
+#endif
+
+/* Define to 1 if the assembler understands the mulx instruction */
+/* #undef X86_ASM_MULX */
+
+/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
+ `char[]'. */
+/* #undef YYTEXT_POINTER */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+/* #undef inline */
+#endif
+
+/* Define to the equivalent of the C99 'restrict' keyword, or to
+ nothing if this is not supported. Do not define if restrict is
+ supported directly. */
+#define restrict __restrict
+/* Work around a bug in Sun C++: it does not support _Restrict or
+ __restrict__, even though the corresponding Sun C compiler ends up with
+ "#define restrict _Restrict" or "#define restrict __restrict__" in the
+ previous line. Perhaps some future version of Sun C++ will work with
+ restrict; if so, hopefully it defines __RESTRICT like Sun C does. */
+#if defined __SUNPRO_CC && !defined __RESTRICT
+# define _Restrict
+# define __restrict__
+#endif
+
+/* Define to empty if the keyword `volatile' does not work. Warning: valid
+ code using `volatile' can become incorrect without. Disable with care. */
+/* #undef volatile */
diff --git a/vere/ext/gmp/gen/x86_64-linux/fac_table.h b/vere/ext/gmp/gen/x86_64-linux/fac_table.h
new file mode 100644
index 0000000..6708348
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/fac_table.h
@@ -0,0 +1,49 @@
+/* This file is automatically generated by gen-fac.c */
+
+#if GMP_NUMB_BITS != 64
+Error , error this data is for 64 GMP_NUMB_BITS only
+#endif
+/* This table is 0!,1!,2!,3!,...,n! where n! has <= GMP_NUMB_BITS bits */
+#define ONE_LIMB_FACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x2),CNST_LIMB(0x6),CNST_LIMB(0x18),CNST_LIMB(0x78),CNST_LIMB(0x2d0),CNST_LIMB(0x13b0),CNST_LIMB(0x9d80),CNST_LIMB(0x58980),CNST_LIMB(0x375f00),CNST_LIMB(0x2611500),CNST_LIMB(0x1c8cfc00),CNST_LIMB(0x17328cc00),CNST_LIMB(0x144c3b2800),CNST_LIMB(0x13077775800),CNST_LIMB(0x130777758000),CNST_LIMB(0x1437eeecd8000),CNST_LIMB(0x16beecca730000),CNST_LIMB(0x1b02b9306890000),CNST_LIMB(0x21c3677c82b40000)
+
+/* This table is 0!,1!,2!/2,3!/2,...,n!/2^sn where n!/2^sn is an */
+/* odd integer for each n, and n!/2^sn has <= GMP_NUMB_BITS bits */
+#define ONE_LIMB_ODD_FACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x3),CNST_LIMB(0x3),CNST_LIMB(0xf),CNST_LIMB(0x2d),CNST_LIMB(0x13b),CNST_LIMB(0x13b),CNST_LIMB(0xb13),CNST_LIMB(0x375f),CNST_LIMB(0x26115),CNST_LIMB(0x7233f),CNST_LIMB(0x5cca33),CNST_LIMB(0x2898765),CNST_LIMB(0x260eeeeb),CNST_LIMB(0x260eeeeb),CNST_LIMB(0x286fddd9b),CNST_LIMB(0x16beecca73),CNST_LIMB(0x1b02b930689),CNST_LIMB(0x870d9df20ad),CNST_LIMB(0xb141df4dae31),CNST_LIMB(0x79dd498567c1b),CNST_LIMB(0xaf2e19afc5266d),CNST_LIMB(0x20d8a4d0f4f7347),CNST_LIMB(0x335281867ec241ef)
+#define ODD_FACTORIAL_TABLE_MAX CNST_LIMB(0x335281867ec241ef)
+#define ODD_FACTORIAL_TABLE_LIMIT (25)
+
+/* Previous table, continued, values modulo 2^GMP_NUMB_BITS */
+#define ONE_LIMB_ODD_FACTORIAL_EXTTABLE CNST_LIMB(0x9b3093d46fdd5923),CNST_LIMB(0x5e1f9767cc5866b1),CNST_LIMB(0x92dd23d6966aced7),CNST_LIMB(0xa30d0f4f0a196e5b),CNST_LIMB(0x8dc3e5a1977d7755),CNST_LIMB(0x2ab8ce915831734b),CNST_LIMB(0x2ab8ce915831734b),CNST_LIMB(0x81d2a0bc5e5fdcab),CNST_LIMB(0x9efcac82445da75b),CNST_LIMB(0xbc8b95cf58cde171),CNST_LIMB(0xa0e8444a1f3cecf9),CNST_LIMB(0x4191deb683ce3ffd),CNST_LIMB(0xddd3878bc84ebfc7),CNST_LIMB(0xcb39a64b83ff3751),CNST_LIMB(0xf8203f7993fc1495),CNST_LIMB(0xbd2a2a78b35f4bdd),CNST_LIMB(0x84757be6b6d13921),CNST_LIMB(0x3fbbcfc0b524988b),CNST_LIMB(0xbd11ed47c8928df9),CNST_LIMB(0x3c26b59e41c2f4c5),CNST_LIMB(0x677a5137e883fdb3),CNST_LIMB(0xff74e943b03b93dd),CNST_LIMB(0xfe5ebbcb10b2bb97),CNST_LIMB(0xb021f1de3235e7e7),CNST_LIMB(0x33509eb2e743a58f),CNST_LIMB(0x390f9da41279fb7d),CNST_LIMB(0xe5cb0154f031c559),CNST_LIMB(0x93074695ba4ddb6d),CNST_LIMB(0x81c471caa636247f),CNST_LIMB(0xe1347289b5a1d749),CNST_LIMB(0x286f21c3f76ce2ff),CNST_LIMB(0xbe84a2173e8ac7),CNST_LIMB(0x1595065ca215b88b),CNST_LIMB(0xf95877595b018809),CNST_LIMB(0x9c2efe3c5516f887),CNST_LIMB(0x373294604679382b),CNST_LIMB(0xaf1ff7a888adcd35),CNST_LIMB(0x18ddf279a2c5800b),CNST_LIMB(0x18ddf279a2c5800b),CNST_LIMB(0x505a90e2542582cb),CNST_LIMB(0x5bacad2cd8d5dc2b),CNST_LIMB(0xfe3152bcbff89f41)
+#define ODD_FACTORIAL_EXTTABLE_LIMIT (67)
+
+/* This table is 1!!,3!!,...,(2n+1)!! where (2n+1)!! has <= GMP_NUMB_BITS bits */
+#define ONE_LIMB_ODD_DOUBLEFACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x3),CNST_LIMB(0xf),CNST_LIMB(0x69),CNST_LIMB(0x3b1),CNST_LIMB(0x289b),CNST_LIMB(0x20fdf),CNST_LIMB(0x1eee11),CNST_LIMB(0x20dcf21),CNST_LIMB(0x27065f73),CNST_LIMB(0x33385d46f),CNST_LIMB(0x49a10615f9),CNST_LIMB(0x730b9982551),CNST_LIMB(0xc223930bef8b),CNST_LIMB(0x15fe07a85a22bf),CNST_LIMB(0x2a9c2ed62ea3521),CNST_LIMB(0x57e22099c030d941)
+#define ODD_DOUBLEFACTORIAL_TABLE_MAX CNST_LIMB(0x57e22099c030d941)
+#define ODD_DOUBLEFACTORIAL_TABLE_LIMIT (33)
+
+/* This table x_1, x_2,... contains values s.t. x_n^n has <= GMP_NUMB_BITS bits */
+#define NTH_ROOT_NUMB_MASK_TABLE (GMP_NUMB_MASK),CNST_LIMB(0xffffffff),CNST_LIMB(0x285145),CNST_LIMB(0xffff),CNST_LIMB(0x1bdb),CNST_LIMB(0x659),CNST_LIMB(0x235),CNST_LIMB(0xff)
+
+/* This table contains inverses of odd factorials, modulo 2^GMP_NUMB_BITS */
+
+/* It begins with (2!/2)^-1=1 */
+#define ONE_LIMB_ODD_FACTORIAL_INVERSES_TABLE CNST_LIMB(0x1),CNST_LIMB(0xaaaaaaaaaaaaaaab),CNST_LIMB(0xaaaaaaaaaaaaaaab),CNST_LIMB(0xeeeeeeeeeeeeeeef),CNST_LIMB(0x4fa4fa4fa4fa4fa5),CNST_LIMB(0x2ff2ff2ff2ff2ff3),CNST_LIMB(0x2ff2ff2ff2ff2ff3),CNST_LIMB(0x938cc70553e3771b),CNST_LIMB(0xb71c27cddd93e49f),CNST_LIMB(0xb38e3229fcdee63d),CNST_LIMB(0xe684bb63544a4cbf),CNST_LIMB(0xc2f684917ca340fb),CNST_LIMB(0xf747c9cba417526d),CNST_LIMB(0xbb26eb51d7bd49c3),CNST_LIMB(0xbb26eb51d7bd49c3),CNST_LIMB(0xb0a7efb985294093),CNST_LIMB(0xbe4b8c69f259eabb),CNST_LIMB(0x6854d17ed6dc4fb9),CNST_LIMB(0xe1aa904c915f4325),CNST_LIMB(0x3b8206df131cead1),CNST_LIMB(0x79c6009fea76fe13),CNST_LIMB(0xd8c5d381633cd365),CNST_LIMB(0x4841f12b21144677),CNST_LIMB(0x4a91ff68200b0d0f),CNST_LIMB(0x8f9513a58c4f9e8b),CNST_LIMB(0x2b3e690621a42251),CNST_LIMB(0x4f520f00e03c04e7),CNST_LIMB(0x2edf84ee600211d3),CNST_LIMB(0xadcaa2764aaacdfd),CNST_LIMB(0x161f4f9033f4fe63),CNST_LIMB(0x161f4f9033f4fe63),CNST_LIMB(0xbada2932ea4d3e03),CNST_LIMB(0xcec189f3efaa30d3),CNST_LIMB(0xf7475bb68330bf91),CNST_LIMB(0x37eb7bf7d5b01549),CNST_LIMB(0x46b35660a4e91555),CNST_LIMB(0xa567c12d81f151f7),CNST_LIMB(0x4c724007bb2071b1),CNST_LIMB(0xf4a0cce58a016bd),CNST_LIMB(0xfa21068e66106475),CNST_LIMB(0x244ab72b5a318ae1),CNST_LIMB(0x366ce67e080d0f23),CNST_LIMB(0xd666fdae5dd2a449),CNST_LIMB(0xd740ddd0acc06a0d),CNST_LIMB(0xb050bbbb28e6f97b),CNST_LIMB(0x70b003fe890a5c75),CNST_LIMB(0xd03aabff83037427),CNST_LIMB(0x13ec4ca72c783bd7),CNST_LIMB(0x90282c06afdbd96f),CNST_LIMB(0x4414ddb9db4a95d5),CNST_LIMB(0xa2c68735ae6832e9),CNST_LIMB(0xbf72d71455676665),CNST_LIMB(0xa8469fab6b759b7f),CNST_LIMB(0xc1e55b56e606caf9),CNST_LIMB(0x40455630fc4a1cff),CNST_LIMB(0x120a7b0046d16f7),CNST_LIMB(0xa7c3553b08faef23),CNST_LIMB(0x9f0bfd1b08d48639),CNST_LIMB(0xa433ffce9a304d37),CNST_LIMB(0xa22ad1d53915c683),CNST_LIMB(0xcb6cbc723ba5dd1d),CNST_LIMB(0x547fb1b8ab9d0ba3),CNST_LIMB(0x547fb1b8ab9d0ba3),CNST_LIMB(0x8f15a826498852e3)
+
+/* This table contains 2n-popc(2n) for small n */
+
+/* It begins with 2-1=1 (n=1) */
+#define TABLE_2N_MINUS_POPC_2N 1,3,4,7,8,10,11,15,16,18,19,22,23,25,26,31,32,34,35,38,39,41,42,46,47,49,50,53,54,56,57,63,64,66,67,70,71,73,74,78
+#define TABLE_LIMIT_2N_MINUS_POPC_2N 81
+#define ODD_CENTRAL_BINOMIAL_OFFSET (13)
+
+/* This table contains binomial(2k,k)/2^t */
+
+/* It begins with ODD_CENTRAL_BINOMIAL_TABLE_MIN */
+#define ONE_LIMB_ODD_CENTRAL_BINOMIAL_TABLE CNST_LIMB(0x13d66b),CNST_LIMB(0x4c842f),CNST_LIMB(0x93ee7d),CNST_LIMB(0x11e9e123),CNST_LIMB(0x22c60053),CNST_LIMB(0x873ae4d1),CNST_LIMB(0x10757bd97),CNST_LIMB(0x80612c6cd),CNST_LIMB(0xfaa556bc1),CNST_LIMB(0x3d3cc24821),CNST_LIMB(0x77cfeb6bbb),CNST_LIMB(0x7550ebd97c7),CNST_LIMB(0xe5f08695caf),CNST_LIMB(0x386120ffce11),CNST_LIMB(0x6eabb28dd6df),CNST_LIMB(0x3658e31c82a8f),CNST_LIMB(0x6ad2050312783),CNST_LIMB(0x1a42902a5af0bf),CNST_LIMB(0x33ac44f881661d),CNST_LIMB(0xcb764f927d82123),CNST_LIMB(0x190c23fa46b93983),CNST_LIMB(0x62b7609e25caf1b9),CNST_LIMB(0xc29cb72925ef2cff)
+#define ODD_CENTRAL_BINOMIAL_TABLE_LIMIT (35)
+
+/* This table contains the inverses of elements in the previous table. */
+#define ONE_LIMB_ODD_CENTRAL_BINOMIAL_INVERSE_TABLE CNST_LIMB(0x61e5bd199bb12643),CNST_LIMB(0x78321494dc8342cf),CNST_LIMB(0x4fd348704ebf7ad5),CNST_LIMB(0x7e722ba086ab568b),CNST_LIMB(0xa5fcc124265843db),CNST_LIMB(0x89c4a6b18633f431),CNST_LIMB(0x4daa2c15f8ce9227),CNST_LIMB(0x801c618ca9be9605),CNST_LIMB(0x32dc192f948a441),CNST_LIMB(0xd02b90c2bf3be1),CNST_LIMB(0xd897e8c1749aa173),CNST_LIMB(0x54a234fc01fef9f7),CNST_LIMB(0x83ff2ab4d1ff7a4f),CNST_LIMB(0xa427f1c9b304e2f1),CNST_LIMB(0x9c14595d1793651f),CNST_LIMB(0x883a71c607a7b46f),CNST_LIMB(0xd089863c54bc9f2b),CNST_LIMB(0x9022f6bce5d07f3f),CNST_LIMB(0xbec207e218768c35),CNST_LIMB(0x9d70cb4cbb4f168b),CNST_LIMB(0x3c3d3403828a9d2b),CNST_LIMB(0x7672df58c56bc489),CNST_LIMB(0x1e66ca55d727d2ff)
+
+/* This table contains the values t in the formula binomial(2k,k)/2^t */
+#define CENTRAL_BINOMIAL_2FAC_TABLE 3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3
diff --git a/vere/ext/gmp/gen/x86_64-linux/fib_table.h b/vere/ext/gmp/gen/x86_64-linux/fib_table.h
new file mode 100644
index 0000000..66ac4d6
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/fib_table.h
@@ -0,0 +1,8 @@
+/* This file generated by gen-fib.c - DO NOT EDIT. */
+
+#if GMP_NUMB_BITS != 64
+Error, error, this data is for 64 bits
+#endif
+
+#define FIB_TABLE_LIMIT 93
+#define FIB_TABLE_LUCNUM_LIMIT 92
diff --git a/vere/ext/gmp/gen/x86_64-linux/mp_bases.h b/vere/ext/gmp/gen/x86_64-linux/mp_bases.h
new file mode 100644
index 0000000..08ede78
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mp_bases.h
@@ -0,0 +1,13 @@
+/* This file generated by gen-bases.c - DO NOT EDIT. */
+
+#if GMP_NUMB_BITS != 64
+Error, error, this data is for 64 bits
+#endif
+
+/* mp_bases[10] data, as literal values */
+#define MP_BASES_CHARS_PER_LIMB_10 19
+#define MP_BASES_BIG_BASE_CTZ_10 19
+#define MP_BASES_BIG_BASE_10 CNST_LIMB(0x8ac7230489e80000)
+#define MP_BASES_BIG_BASE_INVERTED_10 CNST_LIMB(0xd83c94fb6d2ac34a)
+#define MP_BASES_BIG_BASE_BINVERTED_10 CNST_LIMB(0x26b172506559ce15)
+#define MP_BASES_NORMALIZATION_STEPS_10 0
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/add_err1_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/add_err1_n.s
new file mode 100644
index 0000000..2cbba6a
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/add_err1_n.s
@@ -0,0 +1,237 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_add_err1_n
+ .type __gmpn_add_err1_n,@function
+
+__gmpn_add_err1_n:
+
+ mov 8(%rsp), %rax
+
+ push %rbx
+ push %rbp
+ push %r12
+ push %r13
+ push %r14
+ push %r15
+
+ lea (%rsi,%r9,8), %rsi
+ lea (%rdx,%r9,8), %rdx
+ lea (%rdi,%r9,8), %rdi
+
+ mov %r9d, %r10d
+ and $3, %r10d
+ jz .L0mod4
+ cmp $2, %r10d
+ jc .L1mod4
+ jz .L2mod4
+.L3mod4:
+ xor %ebx, %ebx
+ xor %ebp, %ebp
+ xor %r10d, %r10d
+ xor %r11d, %r11d
+ lea -24(%r8,%r9,8), %r8
+ neg %r9
+
+ shr $1, %al
+ mov (%rsi,%r9,8), %r14
+ mov 8(%rsi,%r9,8), %r15
+ adc (%rdx,%r9,8), %r14
+ mov %r14, (%rdi,%r9,8)
+ cmovc 16(%r8), %rbx
+ adc 8(%rdx,%r9,8), %r15
+ mov %r15, 8(%rdi,%r9,8)
+ cmovc 8(%r8), %r10
+ mov 16(%rsi,%r9,8), %r14
+ adc 16(%rdx,%r9,8), %r14
+ mov %r14, 16(%rdi,%r9,8)
+ cmovc (%r8), %r11
+ setc %al
+ add %r10, %rbx
+ adc $0, %rbp
+ add %r11, %rbx
+ adc $0, %rbp
+
+ add $3, %r9
+ jnz .Lloop
+ jmp .Lend
+
+ .align 16, 0x90
+.L0mod4:
+ xor %ebx, %ebx
+ xor %ebp, %ebp
+ lea (%r8,%r9,8), %r8
+ neg %r9
+ jmp .Lloop
+
+ .align 16, 0x90
+.L1mod4:
+ xor %ebx, %ebx
+ xor %ebp, %ebp
+ lea -8(%r8,%r9,8), %r8
+ neg %r9
+
+ shr $1, %al
+ mov (%rsi,%r9,8), %r14
+ adc (%rdx,%r9,8), %r14
+ mov %r14, (%rdi,%r9,8)
+ cmovc (%r8), %rbx
+ setc %al
+
+ add $1, %r9
+ jnz .Lloop
+ jmp .Lend
+
+ .align 16, 0x90
+.L2mod4:
+ xor %ebx, %ebx
+ xor %ebp, %ebp
+ xor %r10d, %r10d
+ lea -16(%r8,%r9,8), %r8
+ neg %r9
+
+ shr $1, %al
+ mov (%rsi,%r9,8), %r14
+ mov 8(%rsi,%r9,8), %r15
+ adc (%rdx,%r9,8), %r14
+ mov %r14, (%rdi,%r9,8)
+ cmovc 8(%r8), %rbx
+ adc 8(%rdx,%r9,8), %r15
+ mov %r15, 8(%rdi,%r9,8)
+ cmovc (%r8), %r10
+ setc %al
+ add %r10, %rbx
+ adc $0, %rbp
+
+ add $2, %r9
+ jnz .Lloop
+ jmp .Lend
+
+ .align 32, 0x90
+.Lloop:
+ shr $1, %al
+ mov -8(%r8), %r10
+ mov $0, %r13d
+ mov (%rsi,%r9,8), %r14
+ mov 8(%rsi,%r9,8), %r15
+ adc (%rdx,%r9,8), %r14
+ cmovnc %r13, %r10
+ adc 8(%rdx,%r9,8), %r15
+ mov -16(%r8), %r11
+ mov %r14, (%rdi,%r9,8)
+ mov 16(%rsi,%r9,8), %r14
+ mov %r15, 8(%rdi,%r9,8)
+ cmovnc %r13, %r11
+ mov -24(%r8), %r12
+ adc 16(%rdx,%r9,8), %r14
+ cmovnc %r13, %r12
+ mov 24(%rsi,%r9,8), %r15
+ adc 24(%rdx,%r9,8), %r15
+ cmovc -32(%r8), %r13
+ setc %al
+ add %r10, %rbx
+ adc $0, %rbp
+ add %r11, %rbx
+ adc $0, %rbp
+ add %r12, %rbx
+ adc $0, %rbp
+ mov %r14, 16(%rdi,%r9,8)
+ add %r13, %rbx
+ lea -32(%r8), %r8
+ adc $0, %rbp
+ mov %r15, 24(%rdi,%r9,8)
+ add $4, %r9
+ jnz .Lloop
+
+.Lend:
+ mov %rbx, (%rcx)
+ mov %rbp, 8(%rcx)
+
+ pop %r15
+ pop %r14
+ pop %r13
+ pop %r12
+ pop %rbp
+ pop %rbx
+ ret
+ .size __gmpn_add_err1_n,.-__gmpn_add_err1_n
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/add_err2_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/add_err2_n.s
new file mode 100644
index 0000000..1008479
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/add_err2_n.s
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_add_err2_n
+ .type __gmpn_add_err2_n,@function
+
+__gmpn_add_err2_n:
+
+ mov 16(%rsp), %rax
+ mov 8(%rsp), %r10
+
+ push %rbx
+ push %rbp
+ push %r12
+ push %r13
+ push %r14
+
+ xor %ebp, %ebp
+ xor %r11d, %r11d
+ xor %r12d, %r12d
+ xor %r13d, %r13d
+
+ sub %r8, %r9
+
+ lea (%rdi,%r10,8), %rdi
+ lea (%rsi,%r10,8), %rsi
+ lea (%rdx,%r10,8), %rdx
+
+ test $1, %r10
+ jnz .Lodd
+
+ lea -8(%r8,%r10,8), %r8
+ neg %r10
+ jmp .Ltop
+
+ .align 16, 0x90
+.Lodd:
+ lea -16(%r8,%r10,8), %r8
+ neg %r10
+ shr $1, %rax
+ mov (%rsi,%r10,8), %rbx
+ adc (%rdx,%r10,8), %rbx
+ cmovc 8(%r8), %rbp
+ cmovc 8(%r8,%r9), %r12
+ mov %rbx, (%rdi,%r10,8)
+ sbb %rax, %rax
+ inc %r10
+ jz .Lend
+
+ .align 16, 0x90
+.Ltop:
+ mov (%rsi,%r10,8), %rbx
+ shr $1, %rax
+ adc (%rdx,%r10,8), %rbx
+ mov %rbx, (%rdi,%r10,8)
+ sbb %r14, %r14
+
+ mov 8(%rsi,%r10,8), %rbx
+ adc 8(%rdx,%r10,8), %rbx
+ mov %rbx, 8(%rdi,%r10,8)
+ sbb %rax, %rax
+
+ mov (%r8), %rbx
+ and %r14, %rbx
+ add %rbx, %rbp
+ adc $0, %r11
+
+ and (%r8,%r9), %r14
+ add %r14, %r12
+ adc $0, %r13
+
+ mov -8(%r8), %rbx
+ and %rax, %rbx
+ add %rbx, %rbp
+ adc $0, %r11
+
+ mov -8(%r8,%r9), %rbx
+ and %rax, %rbx
+ add %rbx, %r12
+ adc $0, %r13
+
+ add $2, %r10
+ lea -16(%r8), %r8
+ jnz .Ltop
+.Lend:
+
+ mov %rbp, (%rcx)
+ mov %r11, 8(%rcx)
+ mov %r12, 16(%rcx)
+ mov %r13, 24(%rcx)
+
+ and $1, %eax
+
+ pop %r14
+ pop %r13
+ pop %r12
+ pop %rbp
+ pop %rbx
+ ret
+ .size __gmpn_add_err2_n,.-__gmpn_add_err2_n
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/add_err3_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/add_err3_n.s
new file mode 100644
index 0000000..cf99415
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/add_err3_n.s
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_add_err3_n
+ .type __gmpn_add_err3_n,@function
+
+__gmpn_add_err3_n:
+
+ mov 24(%rsp), %rax
+ mov 16(%rsp), %r10
+
+ push %rbx
+ push %rbp
+ push %r12
+ push %r13
+ push %r14
+ push %r15
+
+ push %rcx
+ mov 64(%rsp), %rcx
+
+ xor %ebp, %ebp
+ xor %r11d, %r11d
+ xor %r12d, %r12d
+ xor %r13d, %r13d
+ xor %r14d, %r14d
+ xor %r15d, %r15d
+
+ sub %r8, %r9
+ sub %r8, %rcx
+
+ lea -8(%r8,%r10,8), %r8
+ lea (%rdi,%r10,8), %rdi
+ lea (%rsi,%r10,8), %rsi
+ lea (%rdx,%r10,8), %rdx
+ neg %r10
+
+ .align 16, 0x90
+.Ltop:
+ shr $1, %rax
+ mov (%rsi,%r10,8), %rax
+ adc (%rdx,%r10,8), %rax
+ mov %rax, (%rdi,%r10,8)
+ sbb %rax, %rax
+
+ mov (%r8), %rbx
+ and %rax, %rbx
+ add %rbx, %rbp
+ adc $0, %r11
+
+ mov (%r8,%r9), %rbx
+ and %rax, %rbx
+ add %rbx, %r12
+ adc $0, %r13
+
+ mov (%r8,%rcx), %rbx
+ and %rax, %rbx
+ add %rbx, %r14
+ adc $0, %r15
+
+ lea -8(%r8), %r8
+ inc %r10
+ jnz .Ltop
+
+.Lend:
+ and $1, %eax
+ pop %rcx
+
+ mov %rbp, (%rcx)
+ mov %r11, 8(%rcx)
+ mov %r12, 16(%rcx)
+ mov %r13, 24(%rcx)
+ mov %r14, 32(%rcx)
+ mov %r15, 40(%rcx)
+
+ pop %r15
+ pop %r14
+ pop %r13
+ pop %r12
+ pop %rbp
+ pop %rbx
+ ret
+ .size __gmpn_add_err3_n,.-__gmpn_add_err3_n
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/add_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/add_n.s
new file mode 100644
index 0000000..14cc32b
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/add_n.s
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_add_nc
+ .type __gmpn_add_nc,@function
+
+__gmpn_add_nc:
+
+
+
+ mov %ecx, %eax
+ shr $2, %rcx
+ and $3, %eax
+ bt $0, %r8
+ jrcxz .Llt4
+
+ mov (%rsi), %r8
+ mov 8(%rsi), %r9
+ dec %rcx
+ jmp .Lmid
+
+ .size __gmpn_add_nc,.-__gmpn_add_nc
+ .align 16, 0x90
+ .globl __gmpn_add_n
+ .type __gmpn_add_n,@function
+
+__gmpn_add_n:
+
+
+ mov %ecx, %eax
+ shr $2, %rcx
+ and $3, %eax
+ jrcxz .Llt4
+
+ mov (%rsi), %r8
+ mov 8(%rsi), %r9
+ dec %rcx
+ jmp .Lmid
+
+.Llt4: dec %eax
+ mov (%rsi), %r8
+ jnz .L2
+ adc (%rdx), %r8
+ mov %r8, (%rdi)
+ adc %eax, %eax
+
+ ret
+
+.L2: dec %eax
+ mov 8(%rsi), %r9
+ jnz .L3
+ adc (%rdx), %r8
+ adc 8(%rdx), %r9
+ mov %r8, (%rdi)
+ mov %r9, 8(%rdi)
+ adc %eax, %eax
+
+ ret
+
+.L3: mov 16(%rsi), %r10
+ adc (%rdx), %r8
+ adc 8(%rdx), %r9
+ adc 16(%rdx), %r10
+ mov %r8, (%rdi)
+ mov %r9, 8(%rdi)
+ mov %r10, 16(%rdi)
+ setc %al
+
+ ret
+
+ .align 16, 0x90
+.Ltop: adc (%rdx), %r8
+ adc 8(%rdx), %r9
+ adc 16(%rdx), %r10
+ adc 24(%rdx), %r11
+ mov %r8, (%rdi)
+ lea 32(%rsi), %rsi
+ mov %r9, 8(%rdi)
+ mov %r10, 16(%rdi)
+ dec %rcx
+ mov %r11, 24(%rdi)
+ lea 32(%rdx), %rdx
+ mov (%rsi), %r8
+ mov 8(%rsi), %r9
+ lea 32(%rdi), %rdi
+.Lmid: mov 16(%rsi), %r10
+ mov 24(%rsi), %r11
+ jnz .Ltop
+
+.Lend: lea 32(%rsi), %rsi
+ adc (%rdx), %r8
+ adc 8(%rdx), %r9
+ adc 16(%rdx), %r10
+ adc 24(%rdx), %r11
+ lea 32(%rdx), %rdx
+ mov %r8, (%rdi)
+ mov %r9, 8(%rdi)
+ mov %r10, 16(%rdi)
+ mov %r11, 24(%rdi)
+ lea 32(%rdi), %rdi
+
+ inc %eax
+ dec %eax
+ jnz .Llt4
+ adc %eax, %eax
+
+ ret
+ .size __gmpn_add_n,.-__gmpn_add_n
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/addaddmul_1msb0.s b/vere/ext/gmp/gen/x86_64-linux/mpn/addaddmul_1msb0.s
new file mode 100644
index 0000000..c821f7b
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/addaddmul_1msb0.s
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_addaddmul_1msb0
+ .type __gmpn_addaddmul_1msb0,@function
+
+__gmpn_addaddmul_1msb0:
+
+ push %r12
+ push %rbp
+
+ lea (%rsi,%rcx,8), %rsi
+ lea (%rdx,%rcx,8), %rbp
+ lea (%rdi,%rcx,8), %rdi
+ neg %rcx
+
+ mov (%rsi,%rcx,8), %rax
+ mul %r8
+ mov %rax, %r12
+ mov (%rbp,%rcx,8), %rax
+ mov %rdx, %r10
+ add $3, %rcx
+ jns .Lend
+
+ .align 16, 0x90
+.Ltop: mul %r9
+ add %rax, %r12
+ mov -16(%rsi,%rcx,8), %rax
+ adc %rdx, %r10
+ mov %r12, -24(%rdi,%rcx,8)
+ mul %r8
+ add %rax, %r10
+ mov -16(%rbp,%rcx,8), %rax
+ mov $0, %r11d
+ adc %rdx, %r11
+ mul %r9
+ add %rax, %r10
+ mov -8(%rsi,%rcx,8), %rax
+ adc %rdx, %r11
+ mov %r10, -16(%rdi,%rcx,8)
+ mul %r8
+ add %rax, %r11
+ mov -8(%rbp,%rcx,8), %rax
+ mov $0, %r12d
+ adc %rdx, %r12
+ mul %r9
+ add %rax, %r11
+ adc %rdx, %r12
+ mov (%rsi,%rcx,8), %rax
+ mul %r8
+ add %rax, %r12
+ mov %r11, -8(%rdi,%rcx,8)
+ mov (%rbp,%rcx,8), %rax
+ mov $0, %r10d
+ adc %rdx, %r10
+ add $3, %rcx
+ js .Ltop
+
+.Lend: cmp $1, %ecx
+ ja 2f
+ jz 1f
+
+ mul %r9
+ add %rax, %r12
+ mov -16(%rsi), %rax
+ adc %rdx, %r10
+ mov %r12, -24(%rdi)
+ mul %r8
+ add %rax, %r10
+ mov -16(%rbp), %rax
+ mov $0, %r11d
+ adc %rdx, %r11
+ mul %r9
+ add %rax, %r10
+ mov -8(%rsi), %rax
+ adc %rdx, %r11
+ mov %r10, -16(%rdi)
+ mul %r8
+ add %rax, %r11
+ mov -8(%rbp), %rax
+ mov $0, %r12d
+ adc %rdx, %r12
+ mul %r9
+ add %rax, %r11
+ adc %rdx, %r12
+ mov %r11, -8(%rdi)
+ mov %r12, %rax
+ pop %rbp
+ pop %r12
+ ret
+
+1: mul %r9
+ add %rax, %r12
+ mov -8(%rsi), %rax
+ adc %rdx, %r10
+ mov %r12, -16(%rdi)
+ mul %r8
+ add %rax, %r10
+ mov -8(%rbp), %rax
+ mov $0, %r11d
+ adc %rdx, %r11
+ mul %r9
+ add %rax, %r10
+ adc %rdx, %r11
+ mov %r10, -8(%rdi)
+ mov %r11, %rax
+ pop %rbp
+ pop %r12
+ ret
+
+2: mul %r9
+ add %rax, %r12
+ mov %r12, -8(%rdi)
+ adc %rdx, %r10
+ mov %r10, %rax
+ pop %rbp
+ pop %r12
+ ret
+ .size __gmpn_addaddmul_1msb0,.-__gmpn_addaddmul_1msb0
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/addlsh1_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/addlsh1_n.s
new file mode 100644
index 0000000..e3d3aae
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/addlsh1_n.s
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_addlsh1_n
+ .type __gmpn_addlsh1_n,@function
+
+__gmpn_addlsh1_n:
+
+
+ push %rbp
+
+ mov (%rdx), %r8
+ mov %ecx, %eax
+ lea (%rdi,%rcx,8), %rdi
+ lea (%rsi,%rcx,8), %rsi
+ lea (%rdx,%rcx,8), %rdx
+ neg %rcx
+ xor %ebp, %ebp
+ and $3, %eax
+ je .Lb00
+ cmp $2, %eax
+ jc .Lb01
+ je .Lb10
+
+.Lb11: add %r8, %r8
+ mov 8(%rdx,%rcx,8), %r9
+ adc %r9, %r9
+ mov 16(%rdx,%rcx,8), %r10
+ adc %r10, %r10
+ sbb %eax, %eax
+ add (%rsi,%rcx,8), %r8
+ adc 8(%rsi,%rcx,8), %r9
+ mov %r8, (%rdi,%rcx,8)
+ mov %r9, 8(%rdi,%rcx,8)
+ adc 16(%rsi,%rcx,8), %r10
+ mov %r10, 16(%rdi,%rcx,8)
+ sbb %ebp, %ebp
+ add $3, %rcx
+ jmp .Lent
+
+.Lb10: add %r8, %r8
+ mov 8(%rdx,%rcx,8), %r9
+ adc %r9, %r9
+ sbb %eax, %eax
+ add (%rsi,%rcx,8), %r8
+ adc 8(%rsi,%rcx,8), %r9
+ mov %r8, (%rdi,%rcx,8)
+ mov %r9, 8(%rdi,%rcx,8)
+ sbb %ebp, %ebp
+ add $2, %rcx
+ jmp .Lent
+
+.Lb01: add %r8, %r8
+ sbb %eax, %eax
+ add (%rsi,%rcx,8), %r8
+ mov %r8, (%rdi,%rcx,8)
+ sbb %ebp, %ebp
+ inc %rcx
+.Lent: jns .Lend
+
+ .align 16, 0x90
+.Ltop: add %eax, %eax
+
+ mov (%rdx,%rcx,8), %r8
+.Lb00: adc %r8, %r8
+ mov 8(%rdx,%rcx,8), %r9
+ adc %r9, %r9
+ mov 16(%rdx,%rcx,8), %r10
+ adc %r10, %r10
+ mov 24(%rdx,%rcx,8), %r11
+ adc %r11, %r11
+
+ sbb %eax, %eax
+ add %ebp, %ebp
+
+ adc (%rsi,%rcx,8), %r8
+ nop
+ adc 8(%rsi,%rcx,8), %r9
+ mov %r8, (%rdi,%rcx,8)
+ mov %r9, 8(%rdi,%rcx,8)
+ adc 16(%rsi,%rcx,8), %r10
+ adc 24(%rsi,%rcx,8), %r11
+ mov %r10, 16(%rdi,%rcx,8)
+ mov %r11, 24(%rdi,%rcx,8)
+
+ sbb %ebp, %ebp
+ add $4, %rcx
+ js .Ltop
+
+.Lend:
+
+ add %ebp, %eax
+ neg %eax
+
+
+ pop %rbp
+
+ ret
+ .size __gmpn_addlsh1_n,.-__gmpn_addlsh1_n
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/addlsh2_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/addlsh2_n.s
new file mode 100644
index 0000000..00e2090
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/addlsh2_n.s
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_addlsh2_n
+ .type __gmpn_addlsh2_n,@function
+
+__gmpn_addlsh2_n:
+
+
+ push %r12
+ push %r13
+ push %r14
+ push %r15
+
+ mov (%rdx), %r8
+ lea (,%r8,4), %r12
+ shr $62, %r8
+
+ mov %ecx, %eax
+ lea (%rdi,%rcx,8), %rdi
+ lea (%rsi,%rcx,8), %rsi
+ lea (%rdx,%rcx,8), %rdx
+ neg %rcx
+ and $3, %al
+ je .Lb00
+ cmp $2, %al
+ jc .Lb01
+ je .Lb10
+
+.Lb11: mov 8(%rdx,%rcx,8), %r10
+ lea (%r8,%r10,4), %r14
+ shr $62, %r10
+ mov 16(%rdx,%rcx,8), %r11
+ lea (%r10,%r11,4), %r15
+ shr $62, %r11
+ add (%rsi,%rcx,8), %r12
+ adc 8(%rsi,%rcx,8), %r14
+ adc 16(%rsi,%rcx,8), %r15
+ sbb %eax, %eax
+ mov %r12, (%rdi,%rcx,8)
+ mov %r14, 8(%rdi,%rcx,8)
+ mov %r15, 16(%rdi,%rcx,8)
+ add $3, %rcx
+ js .Ltop
+ jmp .Lend
+
+.Lb01: mov %r8, %r11
+ add (%rsi,%rcx,8), %r12
+ sbb %eax, %eax
+ mov %r12, (%rdi,%rcx,8)
+ add $1, %rcx
+ js .Ltop
+ jmp .Lend
+
+.Lb10: mov 8(%rdx,%rcx,8), %r11
+ lea (%r8,%r11,4), %r15
+ shr $62, %r11
+ add (%rsi,%rcx,8), %r12
+ adc 8(%rsi,%rcx,8), %r15
+ sbb %eax, %eax
+ mov %r12, (%rdi,%rcx,8)
+ mov %r15, 8(%rdi,%rcx,8)
+ add $2, %rcx
+ js .Ltop
+ jmp .Lend
+
+.Lb00: mov 8(%rdx,%rcx,8), %r9
+ mov 16(%rdx,%rcx,8), %r10
+ jmp .Le00
+
+ .align 16, 0x90
+.Ltop: mov 16(%rdx,%rcx,8), %r10
+ mov (%rdx,%rcx,8), %r8
+ mov 8(%rdx,%rcx,8), %r9
+ lea (%r11,%r8,4), %r12
+ shr $62, %r8
+.Le00: lea (%r8,%r9,4), %r13
+ shr $62, %r9
+ mov 24(%rdx,%rcx,8), %r11
+ lea (%r9,%r10,4), %r14
+ shr $62, %r10
+ lea (%r10,%r11,4), %r15
+ shr $62, %r11
+ add %eax, %eax
+ adc (%rsi,%rcx,8), %r12
+ adc 8(%rsi,%rcx,8), %r13
+ adc 16(%rsi,%rcx,8), %r14
+ adc 24(%rsi,%rcx,8), %r15
+ mov %r12, (%rdi,%rcx,8)
+ mov %r13, 8(%rdi,%rcx,8)
+ mov %r14, 16(%rdi,%rcx,8)
+ sbb %eax, %eax
+ mov %r15, 24(%rdi,%rcx,8)
+ add $4, %rcx
+ js .Ltop
+.Lend:
+
+
+ sub %r11d, %eax
+ neg %eax
+
+ pop %r15
+ pop %r14
+ pop %r13
+ pop %r12
+
+ ret
+ .size __gmpn_addlsh2_n,.-__gmpn_addlsh2_n
+
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/addlsh_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/addlsh_n.s
new file mode 100644
index 0000000..2d261d5
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/addlsh_n.s
@@ -0,0 +1,228 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_addlsh_n
+ .type __gmpn_addlsh_n,@function
+
+__gmpn_addlsh_n:
+
+
+
+ push %r12
+ push %rbp
+ push %rbx
+
+ mov (%rdx), %rax
+
+ mov $0, %ebp
+ sub %rcx, %rbp
+
+ lea -16(%rsi,%rcx,8), %rsi
+ lea -16(%rdi,%rcx,8), %rdi
+ lea 16(%rdx,%rcx,8), %r12
+
+ mov %rcx, %r9
+
+ mov %r8, %rcx
+ mov $1, %r8d
+ shl %cl, %r8
+
+ mul %r8
+
+ and $3, %r9d
+ jz .Lb0
+ cmp $2, %r9d
+ jc .Lb1
+ jz .Lb2
+
+.Lb3: mov %rax, %r11
+ add 16(%rsi,%rbp,8), %r11
+ mov -8(%r12,%rbp,8), %rax
+ sbb %ecx, %ecx
+ mov %rdx, %rbx
+ mul %r8
+ or %rax, %rbx
+ mov (%r12,%rbp,8), %rax
+ mov %rdx, %r9
+ mul %r8
+ or %rax, %r9
+ add $3, %rbp
+ jnz .Llo3
+ jmp .Lcj3
+
+.Lb2: mov %rax, %rbx
+ mov -8(%r12,%rbp,8), %rax
+ mov %rdx, %r9
+ mul %r8
+ or %rax, %r9
+ add $2, %rbp
+ jz .Lcj2
+ mov %rdx, %r10
+ mov -16(%r12,%rbp,8), %rax
+ mul %r8
+ or %rax, %r10
+ xor %ecx, %ecx
+ jmp .Llo2
+
+.Lb1: mov %rax, %r9
+ mov %rdx, %r10
+ add $1, %rbp
+ jnz .Lgt1
+ add 8(%rsi,%rbp,8), %r9
+ jmp .Lcj1
+.Lgt1: mov -16(%r12,%rbp,8), %rax
+ mul %r8
+ or %rax, %r10
+ mov %rdx, %r11
+ mov -8(%r12,%rbp,8), %rax
+ mul %r8
+ or %rax, %r11
+ add 8(%rsi,%rbp,8), %r9
+ adc 16(%rsi,%rbp,8), %r10
+ adc 24(%rsi,%rbp,8), %r11
+ mov (%r12,%rbp,8), %rax
+ sbb %ecx, %ecx
+ jmp .Llo1
+
+.Lb0: mov %rax, %r10
+ mov %rdx, %r11
+ mov -8(%r12,%rbp,8), %rax
+ mul %r8
+ or %rax, %r11
+ add 16(%rsi,%rbp,8), %r10
+ adc 24(%rsi,%rbp,8), %r11
+ mov (%r12,%rbp,8), %rax
+ sbb %ecx, %ecx
+ mov %rdx, %rbx
+ mul %r8
+ or %rax, %rbx
+ mov 8(%r12,%rbp,8), %rax
+ add $4, %rbp
+ jz .Lend
+
+ .align 8, 0x90
+.Ltop: mov %rdx, %r9
+ mul %r8
+ or %rax, %r9
+ mov %r10, -16(%rdi,%rbp,8)
+.Llo3: mov %rdx, %r10
+ mov -16(%r12,%rbp,8), %rax
+ mul %r8
+ or %rax, %r10
+ mov %r11, -8(%rdi,%rbp,8)
+.Llo2: mov %rdx, %r11
+ mov -8(%r12,%rbp,8), %rax
+ mul %r8
+ or %rax, %r11
+ add %ecx, %ecx
+ adc (%rsi,%rbp,8), %rbx
+ adc 8(%rsi,%rbp,8), %r9
+ adc 16(%rsi,%rbp,8), %r10
+ adc 24(%rsi,%rbp,8), %r11
+ mov (%r12,%rbp,8), %rax
+ sbb %ecx, %ecx
+ mov %rbx, (%rdi,%rbp,8)
+.Llo1: mov %rdx, %rbx
+ mul %r8
+ or %rax, %rbx
+ mov %r9, 8(%rdi,%rbp,8)
+.Llo0: mov 8(%r12,%rbp,8), %rax
+ add $4, %rbp
+ jnz .Ltop
+
+.Lend: mov %rdx, %r9
+ mul %r8
+ or %rax, %r9
+ mov %r10, -16(%rdi,%rbp,8)
+.Lcj3: mov %r11, -8(%rdi,%rbp,8)
+.Lcj2: add %ecx, %ecx
+ adc (%rsi,%rbp,8), %rbx
+ adc 8(%rsi,%rbp,8), %r9
+ mov %rbx, (%rdi,%rbp,8)
+.Lcj1: mov %r9, 8(%rdi,%rbp,8)
+ mov %rdx, %rax
+ adc $0, %rax
+ pop %rbx
+ pop %rbp
+ pop %r12
+
+ ret
+ .size __gmpn_addlsh_n,.-__gmpn_addlsh_n
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/addmul_1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/addmul_1.s
new file mode 100644
index 0000000..8daf1ac
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/addmul_1.s
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_addmul_1
+ .type __gmpn_addmul_1,@function
+
+__gmpn_addmul_1:
+
+
+
+
+
+
+ mov (%rsi), %rax
+ push %rbx
+ mov %rdx, %rbx
+
+ mul %rcx
+ mov %rbx, %r11
+
+ and $3, %ebx
+ jz .Lb0
+ cmp $2, %ebx
+ jz .Lb2
+ jg .Lb3
+
+.Lb1: dec %r11
+ jne .Lgt1
+ add %rax, (%rdi)
+ jmp .Lret
+.Lgt1: lea 8(%rsi,%r11,8), %rsi
+ lea -8(%rdi,%r11,8), %rdi
+ neg %r11
+ xor %r10, %r10
+ xor %ebx, %ebx
+ mov %rax, %r9
+ mov (%rsi,%r11,8), %rax
+ mov %rdx, %r8
+ jmp .LL1
+
+.Lb0: lea (%rsi,%r11,8), %rsi
+ lea -16(%rdi,%r11,8), %rdi
+ neg %r11
+ xor %r10, %r10
+ mov %rax, %r8
+ mov %rdx, %rbx
+ jmp .LL0
+
+.Lb3: lea -8(%rsi,%r11,8), %rsi
+ lea -24(%rdi,%r11,8), %rdi
+ neg %r11
+ mov %rax, %rbx
+ mov %rdx, %r10
+ jmp .LL3
+
+.Lb2: lea -16(%rsi,%r11,8), %rsi
+ lea -32(%rdi,%r11,8), %rdi
+ neg %r11
+ xor %r8, %r8
+ xor %ebx, %ebx
+ mov %rax, %r10
+ mov 24(%rsi,%r11,8), %rax
+ mov %rdx, %r9
+ jmp .LL2
+
+ .align 16, 0x90
+.Ltop: add %r10, (%rdi,%r11,8)
+ adc %rax, %r9
+ mov (%rsi,%r11,8), %rax
+ adc %rdx, %r8
+ mov $0, %r10d
+.LL1: mul %rcx
+ add %r9, 8(%rdi,%r11,8)
+ adc %rax, %r8
+ adc %rdx, %rbx
+.LL0: mov 8(%rsi,%r11,8), %rax
+ mul %rcx
+ add %r8, 16(%rdi,%r11,8)
+ adc %rax, %rbx
+ adc %rdx, %r10
+.LL3: mov 16(%rsi,%r11,8), %rax
+ mul %rcx
+ add %rbx, 24(%rdi,%r11,8)
+ mov $0, %r8d
+ mov %r8, %rbx
+ adc %rax, %r10
+ mov 24(%rsi,%r11,8), %rax
+ mov %r8, %r9
+ adc %rdx, %r9
+.LL2: mul %rcx
+ add $4, %r11
+ js .Ltop
+
+ add %r10, (%rdi,%r11,8)
+ adc %rax, %r9
+ adc %r8, %rdx
+ add %r9, 8(%rdi,%r11,8)
+.Lret: adc $0, %rdx
+ mov %rdx, %rax
+
+ pop %rbx
+
+
+ ret
+ .size __gmpn_addmul_1,.-__gmpn_addmul_1
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/addmul_2.s b/vere/ext/gmp/gen/x86_64-linux/mpn/addmul_2.s
new file mode 100644
index 0000000..5883dab
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/addmul_2.s
@@ -0,0 +1,209 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_addmul_2
+ .type __gmpn_addmul_2,@function
+
+__gmpn_addmul_2:
+
+
+ mov %rdx, %r11
+ push %rbx
+ push %rbp
+
+ mov 0(%rcx), %r8
+ mov 8(%rcx), %r9
+
+ mov %edx, %ebx
+ mov (%rsi), %rax
+ lea -8(%rsi,%rdx,8), %rsi
+ lea -8(%rdi,%rdx,8), %rdi
+ mul %r8
+ neg %r11
+ and $3, %ebx
+ jz .Lb0
+ cmp $2, %ebx
+ jc .Lb1
+ jz .Lb2
+
+.Lb3: mov %rax, %rcx
+ mov %rdx, %rbp
+ xor %r10d, %r10d
+ mov 8(%rsi,%r11,8), %rax
+ dec %r11
+ jmp .Llo3
+
+.Lb2: mov %rax, %rbp
+ mov 8(%rsi,%r11,8), %rax
+ mov %rdx, %r10
+ xor %ebx, %ebx
+ add $-2, %r11
+ jmp .Llo2
+
+.Lb1: mov %rax, %r10
+ mov 8(%rsi,%r11,8), %rax
+ mov %rdx, %rbx
+ xor %ecx, %ecx
+ inc %r11
+ jmp .Llo1
+
+.Lb0: mov $0, %r10d
+ mov %rax, %rbx
+ mov 8(%rsi,%r11,8), %rax
+ mov %rdx, %rcx
+ xor %ebp, %ebp
+ jmp .Llo0
+
+ .align 32, 0x90
+.Ltop: mov $0, %ecx
+ mul %r8
+ add %rax, %r10
+ mov (%rsi,%r11,8), %rax
+ adc %rdx, %rbx
+ adc $0, %ecx
+.Llo1: mul %r9
+ add %r10, (%rdi,%r11,8)
+ mov $0, %r10d
+ adc %rax, %rbx
+ mov $0, %ebp
+ mov 8(%rsi,%r11,8), %rax
+ adc %rdx, %rcx
+ mul %r8
+ add %rax, %rbx
+ mov 8(%rsi,%r11,8), %rax
+ adc %rdx, %rcx
+ adc $0, %ebp
+.Llo0: mul %r9
+ add %rbx, 8(%rdi,%r11,8)
+ adc %rax, %rcx
+ adc %rdx, %rbp
+ mov 16(%rsi,%r11,8), %rax
+ mul %r8
+ add %rax, %rcx
+ adc %rdx, %rbp
+ adc $0, %r10d
+ mov 16(%rsi,%r11,8), %rax
+.Llo3: mul %r9
+ add %rcx, 16(%rdi,%r11,8)
+ adc %rax, %rbp
+ adc %rdx, %r10
+ xor %ebx, %ebx
+ mov 24(%rsi,%r11,8), %rax
+ mul %r8
+ add %rax, %rbp
+ mov 24(%rsi,%r11,8), %rax
+ adc %rdx, %r10
+ adc $0, %ebx
+.Llo2: mul %r9
+ add %rbp, 24(%rdi,%r11,8)
+ adc %rax, %r10
+ adc %rdx, %rbx
+ mov 32(%rsi,%r11,8), %rax
+ add $4, %r11
+ js .Ltop
+
+.Lend: xor %ecx, %ecx
+ mul %r8
+ add %rax, %r10
+ mov (%rsi), %rax
+ adc %rdx, %rbx
+ adc %ecx, %ecx
+ mul %r9
+ add %r10, (%rdi)
+ adc %rax, %rbx
+ adc %rdx, %rcx
+ mov %rbx, 8(%rdi)
+ mov %rcx, %rax
+
+ pop %rbp
+ pop %rbx
+
+ ret
+ .size __gmpn_addmul_2,.-__gmpn_addmul_2
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/and_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/and_n.s
new file mode 100644
index 0000000..946906e
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/and_n.s
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 32, 0x90
+ .globl __gmpn_and_n
+ .type __gmpn_and_n,@function
+
+__gmpn_and_n:
+
+
+ mov (%rdx), %r8
+ mov %ecx, %eax
+ lea (%rdx,%rcx,8), %rdx
+ lea (%rsi,%rcx,8), %rsi
+ lea (%rdi,%rcx,8), %rdi
+ neg %rcx
+ and $3, %eax
+ je .Lb00
+ cmp $2, %eax
+ jc .Lb01
+ je .Lb10
+
+.Lb11: and (%rsi,%rcx,8), %r8
+ mov %r8, (%rdi,%rcx,8)
+ dec %rcx
+ jmp .Le11
+.Lb10: add $-2, %rcx
+ jmp .Le10
+.Lb01: and (%rsi,%rcx,8), %r8
+ mov %r8, (%rdi,%rcx,8)
+ inc %rcx
+ jz .Lret
+
+.Ltop: mov (%rdx,%rcx,8), %r8
+.Lb00: mov 8(%rdx,%rcx,8), %r9
+ and (%rsi,%rcx,8), %r8
+ and 8(%rsi,%rcx,8), %r9
+ nop
+ mov %r8, (%rdi,%rcx,8)
+ mov %r9, 8(%rdi,%rcx,8)
+.Le11: mov 16(%rdx,%rcx,8), %r8
+.Le10: mov 24(%rdx,%rcx,8), %r9
+ and 16(%rsi,%rcx,8), %r8
+ and 24(%rsi,%rcx,8), %r9
+ mov %r8, 16(%rdi,%rcx,8)
+ mov %r9, 24(%rdi,%rcx,8)
+ add $4, %rcx
+ jnc .Ltop
+
+.Lret:
+ ret
+ .size __gmpn_and_n,.-__gmpn_and_n
+
+
+
+
+
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/andn_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/andn_n.s
new file mode 100644
index 0000000..aee1df4
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/andn_n.s
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 32, 0x90
+ .globl __gmpn_andn_n
+ .type __gmpn_andn_n,@function
+
+__gmpn_andn_n:
+
+
+ mov (%rdx), %r8
+ not %r8
+ mov %ecx, %eax
+ lea (%rdx,%rcx,8), %rdx
+ lea (%rsi,%rcx,8), %rsi
+ lea (%rdi,%rcx,8), %rdi
+ neg %rcx
+ and $3, %eax
+ je .Lb00
+ cmp $2, %eax
+ jc .Lb01
+ je .Lb10
+
+.Lb11: and (%rsi,%rcx,8), %r8
+ mov %r8, (%rdi,%rcx,8)
+ dec %rcx
+ jmp .Le11
+.Lb10: add $-2, %rcx
+ jmp .Le10
+ .byte 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90
+.Lb01: and (%rsi,%rcx,8), %r8
+ mov %r8, (%rdi,%rcx,8)
+ inc %rcx
+ jz .Lret
+
+.Ltop: mov (%rdx,%rcx,8), %r8
+ not %r8
+.Lb00: mov 8(%rdx,%rcx,8), %r9
+ not %r9
+ and (%rsi,%rcx,8), %r8
+ and 8(%rsi,%rcx,8), %r9
+ mov %r8, (%rdi,%rcx,8)
+ mov %r9, 8(%rdi,%rcx,8)
+.Le11: mov 16(%rdx,%rcx,8), %r8
+ not %r8
+.Le10: mov 24(%rdx,%rcx,8), %r9
+ not %r9
+ and 16(%rsi,%rcx,8), %r8
+ and 24(%rsi,%rcx,8), %r9
+ mov %r8, 16(%rdi,%rcx,8)
+ mov %r9, 24(%rdi,%rcx,8)
+ add $4, %rcx
+ jnc .Ltop
+
+.Lret:
+ ret
+ .size __gmpn_andn_n,.-__gmpn_andn_n
+
+
+
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/bdiv_dbm1c.s b/vere/ext/gmp/gen/x86_64-linux/mpn/bdiv_dbm1c.s
new file mode 100644
index 0000000..2fda4a0
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/bdiv_dbm1c.s
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_bdiv_dbm1c
+ .type __gmpn_bdiv_dbm1c,@function
+
+__gmpn_bdiv_dbm1c:
+
+
+
+ mov (%rsi), %rax
+ mov %rdx, %r9
+ mov %edx, %r11d
+ mul %rcx
+ lea (%rsi,%r9,8), %rsi
+ lea (%rdi,%r9,8), %rdi
+ neg %r9
+ and $3, %r11d
+ jz .Llo0
+ lea -4(%r9,%r11), %r9
+ cmp $2, %r11d
+ jc .Llo1
+ jz .Llo2
+ jmp .Llo3
+
+ .align 16, 0x90
+.Ltop: mov (%rsi,%r9,8), %rax
+ mul %rcx
+.Llo0: sub %rax, %r8
+ mov %r8, (%rdi,%r9,8)
+ sbb %rdx, %r8
+ mov 8(%rsi,%r9,8), %rax
+ mul %rcx
+.Llo3: sub %rax, %r8
+ mov %r8, 8(%rdi,%r9,8)
+ sbb %rdx, %r8
+ mov 16(%rsi,%r9,8), %rax
+ mul %rcx
+.Llo2: sub %rax, %r8
+ mov %r8, 16(%rdi,%r9,8)
+ sbb %rdx, %r8
+ mov 24(%rsi,%r9,8), %rax
+ mul %rcx
+.Llo1: sub %rax, %r8
+ mov %r8, 24(%rdi,%r9,8)
+ sbb %rdx, %r8
+ add $4, %r9
+ jnz .Ltop
+
+ mov %r8, %rax
+
+ ret
+ .size __gmpn_bdiv_dbm1c,.-__gmpn_bdiv_dbm1c
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/bdiv_q_1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/bdiv_q_1.s
new file mode 100644
index 0000000..4f58778
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/bdiv_q_1.s
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_bdiv_q_1
+ .type __gmpn_bdiv_q_1,@function
+
+__gmpn_bdiv_q_1:
+
+
+ push %rbx
+
+ mov %rcx, %rax
+ xor %ecx, %ecx
+ mov %rdx, %r10
+
+ bt $0, %eax
+ jnc .Levn
+
+.Lodd: mov %rax, %rbx
+ shr %eax
+ and $127, %eax
+
+ mov __gmp_binvert_limb_table@GOTPCREL(%rip), %rdx
+
+
+
+ movzbl (%rdx,%rax), %eax
+
+ mov %rbx, %r11
+
+ lea (%rax,%rax), %edx
+ imul %eax, %eax
+ imul %ebx, %eax
+ sub %eax, %edx
+
+ lea (%rdx,%rdx), %eax
+ imul %edx, %edx
+ imul %ebx, %edx
+ sub %edx, %eax
+
+ lea (%rax,%rax), %r8
+ imul %rax, %rax
+ imul %rbx, %rax
+ sub %rax, %r8
+
+ jmp .Lpi1
+
+.Levn: bsf %rax, %rcx
+ shr %cl, %rax
+ jmp .Lodd
+ .size __gmpn_bdiv_q_1,.-__gmpn_bdiv_q_1
+
+ .globl __gmpn_pi1_bdiv_q_1
+ .type __gmpn_pi1_bdiv_q_1,@function
+
+__gmpn_pi1_bdiv_q_1:
+
+
+
+
+ push %rbx
+
+ mov %rcx, %r11
+ mov %rdx, %r10
+ mov %r9, %rcx
+
+.Lpi1: mov (%rsi), %rax
+
+ dec %r10
+ jz .Lone
+
+ mov 8(%rsi), %rdx
+ lea (%rsi,%r10,8), %rsi
+ lea (%rdi,%r10,8), %rdi
+ neg %r10
+
+ shrd %cl, %rdx, %rax
+
+ xor %ebx, %ebx
+ jmp .Lent
+
+ .align 8, 0x90
+.Ltop:
+
+
+
+
+
+
+
+ mul %r11
+ mov (%rsi,%r10,8), %rax
+ mov 8(%rsi,%r10,8), %r9
+ shrd %cl, %r9, %rax
+ nop
+ sub %rbx, %rax
+ setc %bl
+ sub %rdx, %rax
+ adc $0, %ebx
+.Lent: imul %r8, %rax
+ mov %rax, (%rdi,%r10,8)
+ inc %r10
+ jnz .Ltop
+
+ mul %r11
+ mov (%rsi), %rax
+ shr %cl, %rax
+ sub %rbx, %rax
+ sub %rdx, %rax
+ imul %r8, %rax
+ mov %rax, (%rdi)
+ pop %rbx
+
+ ret
+
+.Lone: shr %cl, %rax
+ imul %r8, %rax
+ mov %rax, (%rdi)
+ pop %rbx
+
+ ret
+ .size __gmpn_pi1_bdiv_q_1,.-__gmpn_pi1_bdiv_q_1
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/cnd_add_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/cnd_add_n.s
new file mode 100644
index 0000000..b046e36
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/cnd_add_n.s
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_cnd_add_n
+ .type __gmpn_cnd_add_n,@function
+
+__gmpn_cnd_add_n:
+
+
+
+ push %rbx
+ push %rbp
+ push %r12
+ push %r13
+ push %r14
+
+ neg %rdi
+ sbb %rdi, %rdi
+
+ lea (%rcx,%r8,8), %rcx
+ lea (%rdx,%r8,8), %rdx
+ lea (%rsi,%r8,8), %rsi
+
+ mov %r8d, %eax
+ neg %r8
+ and $3, %eax
+ jz .Ltop
+ cmp $2, %eax
+ jc .Lb1
+ jz .Lb2
+
+.Lb3: mov (%rcx,%r8,8), %r12
+ mov 8(%rcx,%r8,8), %r13
+ mov 16(%rcx,%r8,8), %r14
+ and %rdi, %r12
+ mov (%rdx,%r8,8), %r10
+ and %rdi, %r13
+ mov 8(%rdx,%r8,8), %rbx
+ and %rdi, %r14
+ mov 16(%rdx,%r8,8), %rbp
+ add %r12, %r10
+ mov %r10, (%rsi,%r8,8)
+ adc %r13, %rbx
+ mov %rbx, 8(%rsi,%r8,8)
+ adc %r14, %rbp
+ mov %rbp, 16(%rsi,%r8,8)
+ sbb %eax, %eax
+ add $3, %r8
+ js .Ltop
+ jmp .Lend
+
+.Lb2: mov (%rcx,%r8,8), %r12
+ mov 8(%rcx,%r8,8), %r13
+ mov (%rdx,%r8,8), %r10
+ and %rdi, %r12
+ mov 8(%rdx,%r8,8), %rbx
+ and %rdi, %r13
+ add %r12, %r10
+ mov %r10, (%rsi,%r8,8)
+ adc %r13, %rbx
+ mov %rbx, 8(%rsi,%r8,8)
+ sbb %eax, %eax
+ add $2, %r8
+ js .Ltop
+ jmp .Lend
+
+.Lb1: mov (%rcx,%r8,8), %r12
+ mov (%rdx,%r8,8), %r10
+ and %rdi, %r12
+ add %r12, %r10
+ mov %r10, (%rsi,%r8,8)
+ sbb %eax, %eax
+ add $1, %r8
+ jns .Lend
+
+ .align 16, 0x90
+.Ltop: mov (%rcx,%r8,8), %r12
+ mov 8(%rcx,%r8,8), %r13
+ mov 16(%rcx,%r8,8), %r14
+ mov 24(%rcx,%r8,8), %r11
+ and %rdi, %r12
+ mov (%rdx,%r8,8), %r10
+ and %rdi, %r13
+ mov 8(%rdx,%r8,8), %rbx
+ and %rdi, %r14
+ mov 16(%rdx,%r8,8), %rbp
+ and %rdi, %r11
+ mov 24(%rdx,%r8,8), %r9
+ add %eax, %eax
+ adc %r12, %r10
+ mov %r10, (%rsi,%r8,8)
+ adc %r13, %rbx
+ mov %rbx, 8(%rsi,%r8,8)
+ adc %r14, %rbp
+ mov %rbp, 16(%rsi,%r8,8)
+ adc %r11, %r9
+ mov %r9, 24(%rsi,%r8,8)
+ sbb %eax, %eax
+ add $4, %r8
+ js .Ltop
+
+.Lend: neg %eax
+ pop %r14
+ pop %r13
+ pop %r12
+ pop %rbp
+ pop %rbx
+
+ ret
+ .size __gmpn_cnd_add_n,.-__gmpn_cnd_add_n
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/cnd_sub_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/cnd_sub_n.s
new file mode 100644
index 0000000..596dd8f
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/cnd_sub_n.s
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_cnd_sub_n
+ .type __gmpn_cnd_sub_n,@function
+
+__gmpn_cnd_sub_n:
+
+
+
+ push %rbx
+ push %rbp
+ push %r12
+ push %r13
+ push %r14
+
+ neg %rdi
+ sbb %rdi, %rdi
+
+ lea (%rcx,%r8,8), %rcx
+ lea (%rdx,%r8,8), %rdx
+ lea (%rsi,%r8,8), %rsi
+
+ mov %r8d, %eax
+ neg %r8
+ and $3, %eax
+ jz .Ltop
+ cmp $2, %eax
+ jc .Lb1
+ jz .Lb2
+
+.Lb3: mov (%rcx,%r8,8), %r12
+ mov 8(%rcx,%r8,8), %r13
+ mov 16(%rcx,%r8,8), %r14
+ and %rdi, %r12
+ mov (%rdx,%r8,8), %r10
+ and %rdi, %r13
+ mov 8(%rdx,%r8,8), %rbx
+ and %rdi, %r14
+ mov 16(%rdx,%r8,8), %rbp
+ sub %r12, %r10
+ mov %r10, (%rsi,%r8,8)
+ sbb %r13, %rbx
+ mov %rbx, 8(%rsi,%r8,8)
+ sbb %r14, %rbp
+ mov %rbp, 16(%rsi,%r8,8)
+ sbb %eax, %eax
+ add $3, %r8
+ js .Ltop
+ jmp .Lend
+
+.Lb2: mov (%rcx,%r8,8), %r12
+ mov 8(%rcx,%r8,8), %r13
+ mov (%rdx,%r8,8), %r10
+ and %rdi, %r12
+ mov 8(%rdx,%r8,8), %rbx
+ and %rdi, %r13
+ sub %r12, %r10
+ mov %r10, (%rsi,%r8,8)
+ sbb %r13, %rbx
+ mov %rbx, 8(%rsi,%r8,8)
+ sbb %eax, %eax
+ add $2, %r8
+ js .Ltop
+ jmp .Lend
+
+.Lb1: mov (%rcx,%r8,8), %r12
+ mov (%rdx,%r8,8), %r10
+ and %rdi, %r12
+ sub %r12, %r10
+ mov %r10, (%rsi,%r8,8)
+ sbb %eax, %eax
+ add $1, %r8
+ jns .Lend
+
+ .align 16, 0x90
+.Ltop: mov (%rcx,%r8,8), %r12
+ mov 8(%rcx,%r8,8), %r13
+ mov 16(%rcx,%r8,8), %r14
+ mov 24(%rcx,%r8,8), %r11
+ and %rdi, %r12
+ mov (%rdx,%r8,8), %r10
+ and %rdi, %r13
+ mov 8(%rdx,%r8,8), %rbx
+ and %rdi, %r14
+ mov 16(%rdx,%r8,8), %rbp
+ and %rdi, %r11
+ mov 24(%rdx,%r8,8), %r9
+ add %eax, %eax
+ sbb %r12, %r10
+ mov %r10, (%rsi,%r8,8)
+ sbb %r13, %rbx
+ mov %rbx, 8(%rsi,%r8,8)
+ sbb %r14, %rbp
+ mov %rbp, 16(%rsi,%r8,8)
+ sbb %r11, %r9
+ mov %r9, 24(%rsi,%r8,8)
+ sbb %eax, %eax
+ add $4, %r8
+ js .Ltop
+
+.Lend: neg %eax
+ pop %r14
+ pop %r13
+ pop %r12
+ pop %rbp
+ pop %rbx
+
+ ret
+ .size __gmpn_cnd_sub_n,.-__gmpn_cnd_sub_n
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/com.s b/vere/ext/gmp/gen/x86_64-linux/mpn/com.s
new file mode 100644
index 0000000..ff14001
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/com.s
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 32, 0x90
+ .globl __gmpn_com
+ .type __gmpn_com,@function
+
+__gmpn_com:
+
+
+ movq (%rsi), %r8
+ movl %edx, %eax
+ leaq (%rsi,%rdx,8), %rsi
+ leaq (%rdi,%rdx,8), %rdi
+ negq %rdx
+ andl $3, %eax
+ je .Lb00
+ cmpl $2, %eax
+ jc .Lb01
+ je .Lb10
+
+.Lb11: notq %r8
+ movq %r8, (%rdi,%rdx,8)
+ decq %rdx
+ jmp .Le11
+.Lb10: addq $-2, %rdx
+ jmp .Le10
+ .byte 0x90,0x90,0x90,0x90,0x90,0x90
+.Lb01: notq %r8
+ movq %r8, (%rdi,%rdx,8)
+ incq %rdx
+ jz .Lret
+
+.Loop: movq (%rsi,%rdx,8), %r8
+.Lb00: movq 8(%rsi,%rdx,8), %r9
+ notq %r8
+ notq %r9
+ movq %r8, (%rdi,%rdx,8)
+ movq %r9, 8(%rdi,%rdx,8)
+.Le11: movq 16(%rsi,%rdx,8), %r8
+.Le10: movq 24(%rsi,%rdx,8), %r9
+ notq %r8
+ notq %r9
+ movq %r8, 16(%rdi,%rdx,8)
+ movq %r9, 24(%rdi,%rdx,8)
+ addq $4, %rdx
+ jnc .Loop
+.Lret:
+ ret
+ .size __gmpn_com,.-__gmpn_com
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/copyd.s b/vere/ext/gmp/gen/x86_64-linux/mpn/copyd.s
new file mode 100644
index 0000000..f375481
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/copyd.s
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 64, 0x90
+ .globl __gmpn_copyd
+ .type __gmpn_copyd,@function
+
+__gmpn_copyd:
+
+ lea -8(%rsi,%rdx,8), %rsi
+ lea (%rdi,%rdx,8), %rdi
+ sub $4, %rdx
+ jc .Lend
+ nop
+
+.Ltop: mov (%rsi), %rax
+ mov -8(%rsi), %r9
+ lea -32(%rdi), %rdi
+ mov -16(%rsi), %r10
+ mov -24(%rsi), %r11
+ lea -32(%rsi), %rsi
+ mov %rax, 24(%rdi)
+ mov %r9, 16(%rdi)
+ sub $4, %rdx
+ mov %r10, 8(%rdi)
+ mov %r11, (%rdi)
+ jnc .Ltop
+
+.Lend: shr %edx
+ jnc 1f
+ mov (%rsi), %rax
+ mov %rax, -8(%rdi)
+ lea -8(%rdi), %rdi
+ lea -8(%rsi), %rsi
+1: shr %edx
+ jnc 1f
+ mov (%rsi), %rax
+ mov -8(%rsi), %r9
+ mov %rax, -8(%rdi)
+ mov %r9, -16(%rdi)
+1: ret
+ .size __gmpn_copyd,.-__gmpn_copyd
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/copyi.s b/vere/ext/gmp/gen/x86_64-linux/mpn/copyi.s
new file mode 100644
index 0000000..dc746b2
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/copyi.s
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 64, 0x90
+ .byte 0,0,0,0,0,0
+ .globl __gmpn_copyi
+ .type __gmpn_copyi,@function
+
+__gmpn_copyi:
+
+ lea -8(%rdi), %rdi
+ sub $4, %rdx
+ jc .Lend
+
+.Ltop: mov (%rsi), %rax
+ mov 8(%rsi), %r9
+ lea 32(%rdi), %rdi
+ mov 16(%rsi), %r10
+ mov 24(%rsi), %r11
+ lea 32(%rsi), %rsi
+ mov %rax, -24(%rdi)
+ mov %r9, -16(%rdi)
+ sub $4, %rdx
+ mov %r10, -8(%rdi)
+ mov %r11, (%rdi)
+ jnc .Ltop
+
+.Lend: shr %edx
+ jnc 1f
+ mov (%rsi), %rax
+ mov %rax, 8(%rdi)
+ lea 8(%rdi), %rdi
+ lea 8(%rsi), %rsi
+1: shr %edx
+ jnc 1f
+ mov (%rsi), %rax
+ mov 8(%rsi), %r9
+ mov %rax, 8(%rdi)
+ mov %r9, 16(%rdi)
+1: ret
+ .size __gmpn_copyi,.-__gmpn_copyi
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_1n_pi1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_1n_pi1.s
new file mode 100644
index 0000000..fd8ce8e
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_1n_pi1.s
@@ -0,0 +1,261 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_div_qr_1n_pi1
+ .type __gmpn_div_qr_1n_pi1,@function
+
+__gmpn_div_qr_1n_pi1:
+
+
+
+
+ dec %rdx
+ jnz .Lfirst
+
+
+
+ lea 1(%rcx), %r10
+ mov %rcx, %rax
+ mul %r9
+ mov (%rsi), %r11
+ add %r11, %rax
+ adc %r10, %rdx
+ mov %rdx, %r10
+ imul %r8, %rdx
+ sub %rdx, %r11
+ cmp %r11, %rax
+ lea (%r11, %r8), %rax
+ cmovnc %r11, %rax
+ sbb $0, %r10
+ cmp %r8, %rax
+ jc .Lsingle_div_done
+ sub %r8, %rax
+ add $1, %r10
+.Lsingle_div_done:
+ mov %r10, (%rdi)
+
+ ret
+.Lfirst:
+
+ push %r15
+ push %r14
+ push %r13
+ push %r12
+ push %rbx
+ push %rbp
+
+ mov %r8, %rbp
+ imul %r9, %rbp
+ neg %rbp
+ mov %rbp, %rbx
+ sub %r8, %rbx
+
+
+ push %r8
+ mov %rdx, %r8
+
+ mov %r9, %rax
+ mul %rcx
+ mov %rax, %r13
+ add %rcx, %rdx
+ mov %rdx, %r10
+
+ mov %rbp, %rax
+ mul %rcx
+ mov -8(%rsi, %r8, 8), %r11
+ mov (%rsi, %r8, 8), %rcx
+ mov %r10, (%rdi, %r8, 8)
+ add %rax, %r11
+ adc %rdx, %rcx
+ sbb %r12, %r12
+ dec %r8
+ mov %rcx, %rax
+ jz .Lfinal
+ mov $0, %r14d
+
+ .align 16, 0x90
+
+
+
+
+.Lloop:
+
+
+ cmovc %r9, %r14
+ mov %r12, %r15
+ neg %r15
+ mul %r9
+ add %rdx, %r14
+ adc $0, %r15
+ add %r13, %r14
+ mov %rax, %r13
+ mov %rbp, %rax
+ lea (%rbx, %r11), %r10
+ adc $0, %r15
+
+
+ mul %rcx
+ and %rbp, %r12
+ add %r12, %r11
+ cmovnc %r11, %r10
+
+
+ adc %rcx, %r14
+ mov -8(%rsi, %r8, 8), %r11
+ adc %r15, 8(%rdi, %r8, 8)
+ jc .Lq_incr
+.Lq_incr_done:
+ add %rax, %r11
+ mov %r10, %rax
+ adc %rdx, %rax
+ mov %r14, (%rdi, %r8, 8)
+ mov $0, %r14d
+ sbb %r12, %r12
+ dec %r8
+ mov %rax, %rcx
+ jnz .Lloop
+
+.Lfinal:
+ pop %r8
+
+ mov %r12, %r14
+ and %r8, %r12
+ sub %r12, %rax
+ neg %r14
+
+ mov %rax, %rcx
+ sub %r8, %rax
+ cmovc %rcx, %rax
+ sbb $-1, %r14
+
+ lea 1(%rax), %r10
+ mul %r9
+ add %r11, %rax
+ adc %r10, %rdx
+ mov %rdx, %r10
+ imul %r8, %rdx
+ sub %rdx, %r11
+ cmp %r11, %rax
+ lea (%r11, %r8), %rax
+ cmovnc %r11, %rax
+ sbb $0, %r10
+ cmp %r8, %rax
+ jc .Ldiv_done
+ sub %r8, %rax
+ add $1, %r10
+.Ldiv_done:
+ add %r10, %r13
+ mov %r13, (%rdi)
+ adc %r14, 8(%rdi)
+ jnc .Ldone
+.Lfinal_q_incr:
+ addq $1, 16(%rdi)
+ lea 8(%rdi), %rdi
+ jc .Lfinal_q_incr
+
+.Ldone:
+ pop %rbp
+ pop %rbx
+ pop %r12
+ pop %r13
+ pop %r14
+ pop %r15
+
+ ret
+
+.Lq_incr:
+
+ lea 16(%rdi, %r8, 8), %rcx
+.Lq_incr_loop:
+ addq $1, (%rcx)
+ jnc .Lq_incr_done
+ lea 8(%rcx), %rcx
+ jmp .Lq_incr_loop
+ .size __gmpn_div_qr_1n_pi1,.-__gmpn_div_qr_1n_pi1
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_2n_pi1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_2n_pi1.s
new file mode 100644
index 0000000..67618f7
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_2n_pi1.s
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_div_qr_2n_pi1
+ .type __gmpn_div_qr_2n_pi1,@function
+
+__gmpn_div_qr_2n_pi1:
+
+
+
+
+
+ mov 8(%rsp), %r10
+ mov %rdx, %r11
+ push %r15
+ push %r14
+ push %r13
+ push %r12
+ push %rbx
+
+ mov -16(%r11, %rcx, 8), %r12
+ mov -8(%r11, %rcx, 8), %rbx
+
+ mov %r12, %r14
+ mov %rbx, %r13
+ sub %r9, %r14
+ sbb %r8, %r13
+ cmovnc %r14, %r12
+ cmovnc %r13, %rbx
+
+ sbb %rax, %rax
+ inc %rax
+ push %rax
+ lea -2(%rcx), %rcx
+ mov %r8, %r15
+ neg %r15
+
+ jmp .Lnext
+
+ .align 16, 0x90
+.Lloop:
+
+
+
+ mov %r10, %rax
+ mul %rbx
+ mov %r12, %r14
+ add %rax, %r14
+ adc %rbx, %rdx
+ mov %rdx, %r13
+ imul %r15, %rdx
+ mov %r9, %rax
+ lea (%rdx, %r12), %rbx
+ mul %r13
+ mov (%r11, %rcx, 8), %r12
+ sub %r9, %r12
+ sbb %r8, %rbx
+ sub %rax, %r12
+ sbb %rdx, %rbx
+ xor %eax, %eax
+ xor %edx, %edx
+ cmp %r14, %rbx
+ cmovnc %r9, %rax
+ cmovnc %r8, %rdx
+ adc $0, %r13
+ nop
+ add %rax, %r12
+ adc %rdx, %rbx
+ cmp %r8, %rbx
+ jae .Lfix
+.Lbck:
+ mov %r13, (%rdi, %rcx, 8)
+.Lnext:
+ sub $1, %rcx
+ jnc .Lloop
+.Lend:
+ mov %rbx, 8(%rsi)
+ mov %r12, (%rsi)
+
+
+ pop %rax
+
+ pop %rbx
+ pop %r12
+ pop %r13
+ pop %r14
+ pop %r15
+
+ ret
+
+.Lfix:
+ seta %dl
+ cmp %r9, %r12
+ setae %al
+ orb %dl, %al
+ je .Lbck
+ inc %r13
+ sub %r9, %r12
+ sbb %r8, %rbx
+ jmp .Lbck
+ .size __gmpn_div_qr_2n_pi1,.-__gmpn_div_qr_2n_pi1
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_2u_pi1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_2u_pi1.s
new file mode 100644
index 0000000..a11a847
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/div_qr_2u_pi1.s
@@ -0,0 +1,211 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+
+ .globl __gmpn_div_qr_2u_pi1
+ .type __gmpn_div_qr_2u_pi1,@function
+
+__gmpn_div_qr_2u_pi1:
+
+ mov 0+16(%rsp), %r10
+ mov %rdx, %r11
+ push %r15
+ push %r14
+ push %r13
+ push %r12
+ push %rbx
+ push %rbp
+ push %rsi
+
+ lea -2(%rcx), %rbp
+ mov %r8, %r15
+ neg %r15
+
+
+ movl 56+8(%rsp), %ecx
+
+
+
+ xor %ebx, %ebx
+ mov 8(%r11, %rbp, 8), %r12
+ shld %cl, %r12, %rbx
+
+
+ mov %r10, %rax
+ mul %rbx
+ mov (%r11, %rbp, 8), %rsi
+ shld %cl, %rsi, %r12
+ mov %r12, %r14
+ add %rax, %r14
+ adc %rbx, %rdx
+ mov %rdx, %r13
+ imul %r15, %rdx
+ mov %r9, %rax
+ lea (%rdx, %r12), %rbx
+ mul %r13
+ mov %rsi, %r12
+ shl %cl, %r12
+ sub %r9, %r12
+ sbb %r8, %rbx
+ sub %rax, %r12
+ sbb %rdx, %rbx
+ xor %eax, %eax
+ xor %edx, %edx
+ cmp %r14, %rbx
+ cmovnc %r9, %rax
+ cmovnc %r8, %rdx
+ adc $0, %r13
+ nop
+ add %rax, %r12
+ adc %rdx, %rbx
+ cmp %r8, %rbx
+ jae .Lfix_qh
+.Lbck_qh:
+ push %r13
+
+ jmp .Lnext
+
+ .align 16, 0x90
+.Lloop:
+
+
+
+ mov %r10, %rax
+ mul %rbx
+ mov (%r11, %rbp, 8), %rsi
+ xor %r13d, %r13d
+ shld %cl, %rsi, %r13
+ or %r13, %r12
+ mov %r12, %r14
+ add %rax, %r14
+ adc %rbx, %rdx
+ mov %rdx, %r13
+ imul %r15, %rdx
+ mov %r9, %rax
+ lea (%rdx, %r12), %rbx
+ mul %r13
+ mov %rsi, %r12
+ shl %cl, %r12
+ sub %r9, %r12
+ sbb %r8, %rbx
+ sub %rax, %r12
+ sbb %rdx, %rbx
+ xor %eax, %eax
+ xor %edx, %edx
+ cmp %r14, %rbx
+ cmovnc %r9, %rax
+ cmovnc %r8, %rdx
+ adc $0, %r13
+ nop
+ add %rax, %r12
+ adc %rdx, %rbx
+ cmp %r8, %rbx
+ jae .Lfix
+.Lbck:
+ mov %r13, (%rdi, %rbp, 8)
+.Lnext:
+ sub $1, %rbp
+ jnc .Lloop
+.Lend:
+
+ pop %rax
+ pop %rsi
+ shrd %cl, %rbx, %r12
+ shr %cl, %rbx
+ mov %rbx, 8(%rsi)
+ mov %r12, (%rsi)
+
+ pop %rbp
+ pop %rbx
+ pop %r12
+ pop %r13
+ pop %r14
+ pop %r15
+ ret
+
+.Lfix:
+ seta %dl
+ cmp %r9, %r12
+ setae %al
+ orb %dl, %al
+ je .Lbck
+ inc %r13
+ sub %r9, %r12
+ sbb %r8, %rbx
+ jmp .Lbck
+
+
+.Lfix_qh:
+ seta %dl
+ cmp %r9, %r12
+ setae %al
+ orb %dl, %al
+ je .Lbck_qh
+ inc %r13
+ sub %r9, %r12
+ sbb %r8, %rbx
+ jmp .Lbck_qh
+ .size __gmpn_div_qr_2u_pi1,.-__gmpn_div_qr_2u_pi1
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/dive_1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/dive_1.s
new file mode 100644
index 0000000..23a35c8
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/dive_1.s
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_divexact_1
+ .type __gmpn_divexact_1,@function
+
+__gmpn_divexact_1:
+
+
+ push %rbx
+
+ mov %rcx, %rax
+ xor %ecx, %ecx
+ mov %rdx, %r8
+
+ bt $0, %eax
+ jnc .Levn
+
+.Lodd: mov %rax, %rbx
+ shr %eax
+ and $127, %eax
+
+ mov __gmp_binvert_limb_table@GOTPCREL(%rip), %rdx
+
+
+
+ movzbl (%rdx,%rax), %eax
+
+ mov %rbx, %r11
+
+ lea (%rax,%rax), %edx
+ imul %eax, %eax
+ imul %ebx, %eax
+ sub %eax, %edx
+
+ lea (%rdx,%rdx), %eax
+ imul %edx, %edx
+ imul %ebx, %edx
+ sub %edx, %eax
+
+ lea (%rax,%rax), %r10
+ imul %rax, %rax
+ imul %rbx, %rax
+ sub %rax, %r10
+
+ lea (%rsi,%r8,8), %rsi
+ lea -8(%rdi,%r8,8), %rdi
+ neg %r8
+
+ mov (%rsi,%r8,8), %rax
+
+ inc %r8
+ jz .Lone
+
+ mov (%rsi,%r8,8), %rdx
+
+ shrd %cl, %rdx, %rax
+
+ xor %ebx, %ebx
+ jmp .Lent
+
+.Levn: bsf %rax, %rcx
+ shr %cl, %rax
+ jmp .Lodd
+
+ .align 8, 0x90
+.Ltop:
+
+
+
+
+
+
+
+
+
+
+ mul %r11
+ mov -8(%rsi,%r8,8), %rax
+ mov (%rsi,%r8,8), %r9
+ shrd %cl, %r9, %rax
+ nop
+ sub %rbx, %rax
+ setc %bl
+ sub %rdx, %rax
+ adc $0, %rbx
+.Lent: imul %r10, %rax
+ mov %rax, (%rdi,%r8,8)
+ inc %r8
+ jnz .Ltop
+
+ mul %r11
+ mov -8(%rsi), %rax
+ shr %cl, %rax
+ sub %rbx, %rax
+ sub %rdx, %rax
+ imul %r10, %rax
+ mov %rax, (%rdi)
+ pop %rbx
+
+ ret
+
+.Lone: shr %cl, %rax
+ imul %r10, %rax
+ mov %rax, (%rdi)
+ pop %rbx
+
+ ret
+
+ .size __gmpn_divexact_1,.-__gmpn_divexact_1
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/divrem_1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/divrem_1.s
new file mode 100644
index 0000000..e689bd2
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/divrem_1.s
@@ -0,0 +1,335 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_preinv_divrem_1
+ .type __gmpn_preinv_divrem_1,@function
+
+__gmpn_preinv_divrem_1:
+
+
+
+
+ xor %eax, %eax
+ push %r13
+ push %r12
+ push %rbp
+ push %rbx
+
+ mov %rsi, %r12
+ mov %rcx, %rbx
+ add %rsi, %rcx
+ mov %rdx, %rsi
+
+ lea -8(%rdi,%rcx,8), %rdi
+
+ test %r8, %r8
+ js .Lnent
+
+ mov 40(%rsp), %cl
+ shl %cl, %r8
+ jmp .Luent
+ .size __gmpn_preinv_divrem_1,.-__gmpn_preinv_divrem_1
+
+ .align 16, 0x90
+ .globl __gmpn_divrem_1
+ .type __gmpn_divrem_1,@function
+
+__gmpn_divrem_1:
+
+
+
+ xor %eax, %eax
+ push %r13
+ push %r12
+ push %rbp
+ push %rbx
+
+ mov %rsi, %r12
+ mov %rcx, %rbx
+ add %rsi, %rcx
+ mov %rdx, %rsi
+ je .Lret
+
+ lea -8(%rdi,%rcx,8), %rdi
+ xor %ebp, %ebp
+
+ test %r8, %r8
+ jns .Lunnormalized
+
+.Lnormalized:
+ test %rbx, %rbx
+ je .L8
+ mov -8(%rsi,%rbx,8), %rbp
+ dec %rbx
+ mov %rbp, %rax
+ sub %r8, %rbp
+ cmovc %rax, %rbp
+ sbb %eax, %eax
+ inc %eax
+ mov %rax, (%rdi)
+ lea -8(%rdi), %rdi
+.L8:
+ push %rdi
+ push %rsi
+ push %r8
+ mov %r8, %rdi
+
+
+
+ call __gmpn_invert_limb@PLT
+
+
+ pop %r8
+ pop %rsi
+ pop %rdi
+
+ mov %rax, %r9
+ mov %rbp, %rax
+ jmp .Lnent
+
+ .align 16, 0x90
+.Lntop:mov (%rsi,%rbx,8), %r10
+ mul %r9
+ add %r10, %rax
+ adc %rbp, %rdx
+ mov %rax, %rbp
+ mov %rdx, %r13
+ imul %r8, %rdx
+ sub %rdx, %r10
+ mov %r8, %rax
+ add %r10, %rax
+ cmp %rbp, %r10
+ cmovc %r10, %rax
+ adc $-1, %r13
+ cmp %r8, %rax
+ jae .Lnfx
+.Lnok: mov %r13, (%rdi)
+ sub $8, %rdi
+.Lnent:lea 1(%rax), %rbp
+ dec %rbx
+ jns .Lntop
+
+ xor %ecx, %ecx
+ jmp .Lfrac
+
+.Lnfx: sub %r8, %rax
+ inc %r13
+ jmp .Lnok
+
+.Lunnormalized:
+ test %rbx, %rbx
+ je .L44
+ mov -8(%rsi,%rbx,8), %rax
+ cmp %r8, %rax
+ jae .L44
+ mov %rbp, (%rdi)
+ mov %rax, %rbp
+ lea -8(%rdi), %rdi
+ je .Lret
+ dec %rbx
+.L44:
+ bsr %r8, %rcx
+ not %ecx
+ shl %cl, %r8
+ shl %cl, %rbp
+
+ push %rcx
+ push %rdi
+ push %rsi
+ push %r8
+ sub $8, %rsp
+ mov %r8, %rdi
+
+
+
+ call __gmpn_invert_limb@PLT
+
+ add $8, %rsp
+
+ pop %r8
+ pop %rsi
+ pop %rdi
+ pop %rcx
+
+ mov %rax, %r9
+ mov %rbp, %rax
+ test %rbx, %rbx
+ je .Lfrac
+
+.Luent:dec %rbx
+ mov (%rsi,%rbx,8), %rbp
+ neg %ecx
+ shr %cl, %rbp
+ neg %ecx
+ or %rbp, %rax
+ jmp .Lent
+
+ .align 16, 0x90
+.Lutop:mov (%rsi,%rbx,8), %r10
+ shl %cl, %rbp
+ neg %ecx
+ shr %cl, %r10
+ neg %ecx
+ or %r10, %rbp
+ mul %r9
+ add %rbp, %rax
+ adc %r11, %rdx
+ mov %rax, %r11
+ mov %rdx, %r13
+ imul %r8, %rdx
+ sub %rdx, %rbp
+ mov %r8, %rax
+ add %rbp, %rax
+ cmp %r11, %rbp
+ cmovc %rbp, %rax
+ adc $-1, %r13
+ cmp %r8, %rax
+ jae .Lufx
+.Luok: mov %r13, (%rdi)
+ sub $8, %rdi
+.Lent: mov (%rsi,%rbx,8), %rbp
+ dec %rbx
+ lea 1(%rax), %r11
+ jns .Lutop
+
+.Luend:shl %cl, %rbp
+ mul %r9
+ add %rbp, %rax
+ adc %r11, %rdx
+ mov %rax, %r11
+ mov %rdx, %r13
+ imul %r8, %rdx
+ sub %rdx, %rbp
+ mov %r8, %rax
+ add %rbp, %rax
+ cmp %r11, %rbp
+ cmovc %rbp, %rax
+ adc $-1, %r13
+ cmp %r8, %rax
+ jae .Lefx
+.Leok: mov %r13, (%rdi)
+ sub $8, %rdi
+ jmp .Lfrac
+
+.Lufx: sub %r8, %rax
+ inc %r13
+ jmp .Luok
+.Lefx: sub %r8, %rax
+ inc %r13
+ jmp .Leok
+
+.Lfrac:mov %r8, %rbp
+ neg %rbp
+ jmp .Lfent
+
+ .align 16, 0x90
+.Lftop:mul %r9
+ add %r11, %rdx
+ mov %rax, %r11
+ mov %rdx, %r13
+ imul %rbp, %rdx
+ mov %r8, %rax
+ add %rdx, %rax
+ cmp %r11, %rdx
+ cmovc %rdx, %rax
+ adc $-1, %r13
+ mov %r13, (%rdi)
+ sub $8, %rdi
+.Lfent:lea 1(%rax), %r11
+ dec %r12
+ jns .Lftop
+
+ shr %cl, %rax
+.Lret: pop %rbx
+ pop %rbp
+ pop %r12
+ pop %r13
+
+ ret
+ .size __gmpn_divrem_1,.-__gmpn_divrem_1
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/divrem_2.s b/vere/ext/gmp/gen/x86_64-linux/mpn/divrem_2.s
new file mode 100644
index 0000000..b1c0d5b
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/divrem_2.s
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_divrem_2
+ .type __gmpn_divrem_2,@function
+
+__gmpn_divrem_2:
+
+
+
+ push %r15
+ push %r14
+ push %r13
+ push %r12
+ lea -24(%rdx,%rcx,8), %r12
+ mov %rsi, %r13
+ push %rbp
+ mov %rdi, %rbp
+ push %rbx
+ mov 8(%r8), %r11
+ mov 16(%r12), %rbx
+ mov (%r8), %r8
+ mov 8(%r12), %r10
+
+ xor %r15d, %r15d
+ cmp %rbx, %r11
+ ja .L2
+ setb %dl
+ cmp %r10, %r8
+ setbe %al
+ orb %al, %dl
+ je .L2
+ inc %r15d
+ sub %r8, %r10
+ sbb %r11, %rbx
+.L2:
+ lea -3(%rcx,%r13), %r14
+ test %r14, %r14
+ js .Lend
+
+ push %r8
+ push %r10
+ push %r11
+ mov %r11, %rdi
+
+
+
+ call __gmpn_invert_limb@PLT
+
+
+ pop %r11
+ pop %r10
+ pop %r8
+
+ mov %r11, %rdx
+ mov %rax, %rdi
+ imul %rax, %rdx
+ mov %rdx, %r9
+ mul %r8
+ xor %ecx, %ecx
+ add %r8, %r9
+ adc $-1, %rcx
+ add %rdx, %r9
+ adc $0, %rcx
+ js 2f
+1: dec %rdi
+ sub %r11, %r9
+ sbb $0, %rcx
+ jns 1b
+2:
+
+ lea (%rbp,%r14,8), %rbp
+ mov %r11, %rsi
+ neg %rsi
+
+
+
+
+ .align 16, 0x90
+.Ltop: mov %rdi, %rax
+ mul %rbx
+ mov %r10, %rcx
+ add %rax, %rcx
+ adc %rbx, %rdx
+ mov %rdx, %r9
+ imul %rsi, %rdx
+ mov %r8, %rax
+ lea (%rdx, %r10), %rbx
+ xor %r10d, %r10d
+ mul %r9
+ cmp %r14, %r13
+ jg .L19
+ mov (%r12), %r10
+ sub $8, %r12
+.L19: sub %r8, %r10
+ sbb %r11, %rbx
+ sub %rax, %r10
+ sbb %rdx, %rbx
+ xor %eax, %eax
+ xor %edx, %edx
+ cmp %rcx, %rbx
+ cmovnc %r8, %rax
+ cmovnc %r11, %rdx
+ adc $0, %r9
+ nop
+ add %rax, %r10
+ adc %rdx, %rbx
+ cmp %r11, %rbx
+ jae .Lfix
+.Lbck: mov %r9, (%rbp)
+ sub $8, %rbp
+ dec %r14
+ jns .Ltop
+
+.Lend: mov %r10, 8(%r12)
+ mov %rbx, 16(%r12)
+ pop %rbx
+ pop %rbp
+ pop %r12
+ pop %r13
+ pop %r14
+ mov %r15, %rax
+ pop %r15
+
+ ret
+
+.Lfix: seta %dl
+ cmp %r8, %r10
+ setae %al
+ orb %dl, %al
+ je .Lbck
+ inc %r9
+ sub %r8, %r10
+ sbb %r11, %rbx
+ jmp .Lbck
+ .size __gmpn_divrem_2,.-__gmpn_divrem_2
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/fib_table.c b/vere/ext/gmp/gen/x86_64-linux/mpn/fib_table.c
new file mode 100644
index 0000000..a830475
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/fib_table.c
@@ -0,0 +1,107 @@
+/* This file generated by gen-fib.c - DO NOT EDIT. */
+
+#include "gmp.h"
+#include "gmp-impl.h"
+
+#if GMP_NUMB_BITS != 64
+Error, error, this data is for 64 bits
+#endif
+
+const mp_limb_t
+__gmp_fib_table[FIB_TABLE_LIMIT+2] = {
+ CNST_LIMB (0x1), /* -1 */
+ CNST_LIMB (0x0), /* 0 */
+ CNST_LIMB (0x1), /* 1 */
+ CNST_LIMB (0x1), /* 2 */
+ CNST_LIMB (0x2), /* 3 */
+ CNST_LIMB (0x3), /* 4 */
+ CNST_LIMB (0x5), /* 5 */
+ CNST_LIMB (0x8), /* 6 */
+ CNST_LIMB (0xd), /* 7 */
+ CNST_LIMB (0x15), /* 8 */
+ CNST_LIMB (0x22), /* 9 */
+ CNST_LIMB (0x37), /* 10 */
+ CNST_LIMB (0x59), /* 11 */
+ CNST_LIMB (0x90), /* 12 */
+ CNST_LIMB (0xe9), /* 13 */
+ CNST_LIMB (0x179), /* 14 */
+ CNST_LIMB (0x262), /* 15 */
+ CNST_LIMB (0x3db), /* 16 */
+ CNST_LIMB (0x63d), /* 17 */
+ CNST_LIMB (0xa18), /* 18 */
+ CNST_LIMB (0x1055), /* 19 */
+ CNST_LIMB (0x1a6d), /* 20 */
+ CNST_LIMB (0x2ac2), /* 21 */
+ CNST_LIMB (0x452f), /* 22 */
+ CNST_LIMB (0x6ff1), /* 23 */
+ CNST_LIMB (0xb520), /* 24 */
+ CNST_LIMB (0x12511), /* 25 */
+ CNST_LIMB (0x1da31), /* 26 */
+ CNST_LIMB (0x2ff42), /* 27 */
+ CNST_LIMB (0x4d973), /* 28 */
+ CNST_LIMB (0x7d8b5), /* 29 */
+ CNST_LIMB (0xcb228), /* 30 */
+ CNST_LIMB (0x148add), /* 31 */
+ CNST_LIMB (0x213d05), /* 32 */
+ CNST_LIMB (0x35c7e2), /* 33 */
+ CNST_LIMB (0x5704e7), /* 34 */
+ CNST_LIMB (0x8cccc9), /* 35 */
+ CNST_LIMB (0xe3d1b0), /* 36 */
+ CNST_LIMB (0x1709e79), /* 37 */
+ CNST_LIMB (0x2547029), /* 38 */
+ CNST_LIMB (0x3c50ea2), /* 39 */
+ CNST_LIMB (0x6197ecb), /* 40 */
+ CNST_LIMB (0x9de8d6d), /* 41 */
+ CNST_LIMB (0xff80c38), /* 42 */
+ CNST_LIMB (0x19d699a5), /* 43 */
+ CNST_LIMB (0x29cea5dd), /* 44 */
+ CNST_LIMB (0x43a53f82), /* 45 */
+ CNST_LIMB (0x6d73e55f), /* 46 */
+ CNST_LIMB (0xb11924e1), /* 47 */
+ CNST_LIMB (0x11e8d0a40), /* 48 */
+ CNST_LIMB (0x1cfa62f21), /* 49 */
+ CNST_LIMB (0x2ee333961), /* 50 */
+ CNST_LIMB (0x4bdd96882), /* 51 */
+ CNST_LIMB (0x7ac0ca1e3), /* 52 */
+ CNST_LIMB (0xc69e60a65), /* 53 */
+ CNST_LIMB (0x1415f2ac48), /* 54 */
+ CNST_LIMB (0x207fd8b6ad), /* 55 */
+ CNST_LIMB (0x3495cb62f5), /* 56 */
+ CNST_LIMB (0x5515a419a2), /* 57 */
+ CNST_LIMB (0x89ab6f7c97), /* 58 */
+ CNST_LIMB (0xdec1139639), /* 59 */
+ CNST_LIMB (0x1686c8312d0), /* 60 */
+ CNST_LIMB (0x2472d96a909), /* 61 */
+ CNST_LIMB (0x3af9a19bbd9), /* 62 */
+ CNST_LIMB (0x5f6c7b064e2), /* 63 */
+ CNST_LIMB (0x9a661ca20bb), /* 64 */
+ CNST_LIMB (0xf9d297a859d), /* 65 */
+ CNST_LIMB (0x19438b44a658), /* 66 */
+ CNST_LIMB (0x28e0b4bf2bf5), /* 67 */
+ CNST_LIMB (0x42244003d24d), /* 68 */
+ CNST_LIMB (0x6b04f4c2fe42), /* 69 */
+ CNST_LIMB (0xad2934c6d08f), /* 70 */
+ CNST_LIMB (0x1182e2989ced1), /* 71 */
+ CNST_LIMB (0x1c5575e509f60), /* 72 */
+ CNST_LIMB (0x2dd8587da6e31), /* 73 */
+ CNST_LIMB (0x4a2dce62b0d91), /* 74 */
+ CNST_LIMB (0x780626e057bc2), /* 75 */
+ CNST_LIMB (0xc233f54308953), /* 76 */
+ CNST_LIMB (0x13a3a1c2360515), /* 77 */
+ CNST_LIMB (0x1fc6e116668e68), /* 78 */
+ CNST_LIMB (0x336a82d89c937d), /* 79 */
+ CNST_LIMB (0x533163ef0321e5), /* 80 */
+ CNST_LIMB (0x869be6c79fb562), /* 81 */
+ CNST_LIMB (0xd9cd4ab6a2d747), /* 82 */
+ CNST_LIMB (0x16069317e428ca9), /* 83 */
+ CNST_LIMB (0x23a367c34e563f0), /* 84 */
+ CNST_LIMB (0x39a9fadb327f099), /* 85 */
+ CNST_LIMB (0x5d4d629e80d5489), /* 86 */
+ CNST_LIMB (0x96f75d79b354522), /* 87 */
+ CNST_LIMB (0xf444c01834299ab), /* 88 */
+ CNST_LIMB (0x18b3c1d91e77decd), /* 89 */
+ CNST_LIMB (0x27f80ddaa1ba7878), /* 90 */
+ CNST_LIMB (0x40abcfb3c0325745), /* 91 */
+ CNST_LIMB (0x68a3dd8e61eccfbd), /* 92 */
+ CNST_LIMB (0xa94fad42221f2702), /* 93 */
+};
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/gcd_11.s b/vere/ext/gmp/gen/x86_64-linux/mpn/gcd_11.s
new file mode 100644
index 0000000..cf35d25
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/gcd_11.s
@@ -0,0 +1,256 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .section .rodata
+ .align 64, 0x90
+ctz_table:
+
+ .byte 7
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 4
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 5
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 4
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 6
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 4
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 5
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 4
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+
+ .size ctz_table,.-ctz_table
+
+
+
+
+
+
+
+
+ .text
+ .align 64, 0x90
+ .globl __gmpn_gcd_11
+ .type __gmpn_gcd_11,@function
+
+__gmpn_gcd_11:
+
+
+ mov ctz_table@GOTPCREL(%rip), %r8
+
+
+ jmp .Lent
+
+ .align 16, 0x90
+.Ltop: cmovc %rdx, %rdi
+ cmovc %rax, %rsi
+.Lmid: and $127, %edx
+ movzbl (%r8,%rdx), %ecx
+ jz .Lshift_alot
+ shr %cl, %rdi
+.Lent: mov %rdi, %rax
+ mov %rsi, %rdx
+ sub %rdi, %rdx
+ sub %rsi, %rdi
+ jnz .Ltop
+
+.Lend:
+
+
+ ret
+
+.Lshift_alot:
+ shr $7, %rdi
+ mov %rdi, %rdx
+ jmp .Lmid
+ .size __gmpn_gcd_11,.-__gmpn_gcd_11
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/gcd_22.s b/vere/ext/gmp/gen/x86_64-linux/mpn/gcd_22.s
new file mode 100644
index 0000000..60f4c71
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/gcd_22.s
@@ -0,0 +1,434 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .section .rodata
+ .align 64, 0x90
+ctz_table:
+
+ .byte 8
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 4
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 5
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 4
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 6
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 4
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 5
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 4
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 7
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 4
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 5
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 4
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 6
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 4
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 5
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 4
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 3
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 2
+ .byte 0
+ .byte 1
+ .byte 0
+
+ .size ctz_table,.-ctz_table
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 64, 0x90
+ .globl __gmpn_gcd_22
+ .type __gmpn_gcd_22,@function
+
+__gmpn_gcd_22:
+
+
+ mov %rcx, %rax
+
+ mov ctz_table@GOTPCREL(%rip), %r10
+
+
+
+ .align 16, 0x90
+.Ltop: mov %rax, %rcx
+ sub %rsi, %rcx
+ jz .Llowz
+ mov %rdx, %r11
+ sbb %rdi, %r11
+
+ mov %rsi, %r8
+ mov %rdi, %r9
+
+ sub %rax, %rsi
+ sbb %rdx, %rdi
+
+.Lbck: cmovc %rcx, %rsi
+ cmovc %r11, %rdi
+ cmovc %r8, %rax
+ cmovc %r9, %rdx
+
+ and $255, %ecx
+ movzbl (%r10,%rcx), %ecx
+ jz .Lcount_better
+
+.Lshr: shr %cl, %rsi
+ mov %rdi, %r11
+ shr %cl, %rdi
+ neg %rcx
+ shl %cl, %r11
+ or %r11, %rsi
+
+ test %rdx, %rdx
+ jnz .Ltop
+ test %rdi, %rdi
+ jnz .Ltop
+
+.Lgcd_11:
+ mov %rax, %rdi
+
+ jmp __gmpn_gcd_11@PLT
+
+
+.Lcount_better:
+ rep;bsf %rsi, %rcx
+ jmp .Lshr
+
+.Llowz:
+
+
+ mov %rdx, %rcx
+ sub %rdi, %rcx
+ je .Lend
+
+ xor %r11, %r11
+ mov %rsi, %r8
+ mov %rdi, %r9
+ mov %rdi, %rsi
+ xor %rdi, %rdi
+ sub %rdx, %rsi
+ jmp .Lbck
+
+.Lend:
+
+
+ ret
+ .size __gmpn_gcd_22,.-__gmpn_gcd_22
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/hamdist.s b/vere/ext/gmp/gen/x86_64-linux/mpn/hamdist.s
new file mode 100644
index 0000000..1ab3a8c
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/hamdist.s
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 32, 0x90
+ .globl __gmpn_hamdist
+ .type __gmpn_hamdist,@function
+
+__gmpn_hamdist:
+
+
+ push %rbx
+ mov $0x5555555555555555, %r10
+ push %rbp
+ mov $0x3333333333333333, %r11
+ push %r12
+ lea (%rdi,%rdx,8), %rdi
+ mov $0x0f0f0f0f0f0f0f0f, %rcx
+ lea (%rsi,%rdx,8), %rsi
+ neg %rdx
+ mov $0x0101010101010101, %r12
+ xor %eax, %eax
+ test $1, %dl
+ jz .Ltop
+
+ mov (%rdi,%rdx,8), %r8
+ xor (%rsi,%rdx,8), %r8
+
+ mov %r8, %r9
+ shr %r8
+ and %r10, %r8
+ sub %r8, %r9
+
+ mov %r9, %r8
+ shr $2, %r9
+ and %r11, %r8
+ and %r11, %r9
+ add %r8, %r9
+
+ dec %rdx
+ jmp .Lmid
+
+ .align 16, 0x90
+.Ltop: mov (%rdi,%rdx,8), %r8
+ mov 8(%rdi,%rdx,8), %rbx
+ xor (%rsi,%rdx,8), %r8
+ xor 8(%rsi,%rdx,8), %rbx
+
+ mov %r8, %r9
+ mov %rbx, %rbp
+ shr %r8
+ shr %rbx
+ and %r10, %r8
+ and %r10, %rbx
+ sub %r8, %r9
+ sub %rbx, %rbp
+
+ mov %r9, %r8
+ mov %rbp, %rbx
+ shr $2, %r9
+ shr $2, %rbp
+ and %r11, %r8
+ and %r11, %r9
+ and %r11, %rbx
+ and %r11, %rbp
+ add %r8, %r9
+ add %rbx, %rbp
+
+ add %rbp, %r9
+.Lmid: mov %r9, %r8
+ shr $4, %r9
+ and %rcx, %r8
+ and %rcx, %r9
+ add %r8, %r9
+
+ imul %r12, %r9
+ shr $56, %r9
+
+ add %r9, %rax
+ add $2, %rdx
+ jnc .Ltop
+
+.Lend:
+ pop %r12
+ pop %rbp
+ pop %rbx
+
+ ret
+ .size __gmpn_hamdist,.-__gmpn_hamdist
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/invert_limb.s b/vere/ext/gmp/gen/x86_64-linux/mpn/invert_limb.s
new file mode 100644
index 0000000..d7352e7
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/invert_limb.s
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.hidden __gmpn_invert_limb_table
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_invert_limb
+ .type __gmpn_invert_limb,@function
+
+__gmpn_invert_limb:
+
+
+ mov %rdi, %rax
+ shr $55, %rax
+
+ lea -512+__gmpn_invert_limb_table(%rip), %r8
+
+ movzwl (%r8,%rax,2), %ecx
+
+
+ mov %rdi, %rsi
+ mov %ecx, %eax
+ imul %ecx, %ecx
+ shr $24, %rsi
+ inc %rsi
+ imul %rsi, %rcx
+ shr $40, %rcx
+ sal $11, %eax
+ dec %eax
+ sub %ecx, %eax
+
+
+ mov $0x1000000000000000, %rcx
+ imul %rax, %rsi
+ sub %rsi, %rcx
+ imul %rax, %rcx
+ sal $13, %rax
+ shr $47, %rcx
+ add %rax, %rcx
+
+
+ mov %rdi, %rsi
+ shr %rsi
+ sbb %rax, %rax
+ sub %rax, %rsi
+ imul %rcx, %rsi
+ and %rcx, %rax
+ shr %rax
+ sub %rsi, %rax
+ mul %rcx
+ sal $31, %rcx
+ shr %rdx
+ add %rdx, %rcx
+
+ mov %rdi, %rax
+ mul %rcx
+ add %rdi, %rax
+ mov %rcx, %rax
+ adc %rdi, %rdx
+ sub %rdx, %rax
+
+
+ ret
+ .size __gmpn_invert_limb,.-__gmpn_invert_limb
+
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/invert_limb_table.s b/vere/ext/gmp/gen/x86_64-linux/mpn/invert_limb_table.s
new file mode 100644
index 0000000..a990458
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/invert_limb_table.s
@@ -0,0 +1,313 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.hidden __gmpn_invert_limb_table
+
+
+
+
+ .section .rodata
+ .align 2, 0x90
+ .globl __gmpn_invert_limb_table
+__gmpn_invert_limb_table:
+ .value 2045
+ .value 2037
+ .value 2029
+ .value 2021
+ .value 2013
+ .value 2005
+ .value 1998
+ .value 1990
+ .value 1983
+ .value 1975
+ .value 1968
+ .value 1960
+ .value 1953
+ .value 1946
+ .value 1938
+ .value 1931
+ .value 1924
+ .value 1917
+ .value 1910
+ .value 1903
+ .value 1896
+ .value 1889
+ .value 1883
+ .value 1876
+ .value 1869
+ .value 1863
+ .value 1856
+ .value 1849
+ .value 1843
+ .value 1836
+ .value 1830
+ .value 1824
+ .value 1817
+ .value 1811
+ .value 1805
+ .value 1799
+ .value 1792
+ .value 1786
+ .value 1780
+ .value 1774
+ .value 1768
+ .value 1762
+ .value 1756
+ .value 1750
+ .value 1745
+ .value 1739
+ .value 1733
+ .value 1727
+ .value 1722
+ .value 1716
+ .value 1710
+ .value 1705
+ .value 1699
+ .value 1694
+ .value 1688
+ .value 1683
+ .value 1677
+ .value 1672
+ .value 1667
+ .value 1661
+ .value 1656
+ .value 1651
+ .value 1646
+ .value 1641
+ .value 1636
+ .value 1630
+ .value 1625
+ .value 1620
+ .value 1615
+ .value 1610
+ .value 1605
+ .value 1600
+ .value 1596
+ .value 1591
+ .value 1586
+ .value 1581
+ .value 1576
+ .value 1572
+ .value 1567
+ .value 1562
+ .value 1558
+ .value 1553
+ .value 1548
+ .value 1544
+ .value 1539
+ .value 1535
+ .value 1530
+ .value 1526
+ .value 1521
+ .value 1517
+ .value 1513
+ .value 1508
+ .value 1504
+ .value 1500
+ .value 1495
+ .value 1491
+ .value 1487
+ .value 1483
+ .value 1478
+ .value 1474
+ .value 1470
+ .value 1466
+ .value 1462
+ .value 1458
+ .value 1454
+ .value 1450
+ .value 1446
+ .value 1442
+ .value 1438
+ .value 1434
+ .value 1430
+ .value 1426
+ .value 1422
+ .value 1418
+ .value 1414
+ .value 1411
+ .value 1407
+ .value 1403
+ .value 1399
+ .value 1396
+ .value 1392
+ .value 1388
+ .value 1384
+ .value 1381
+ .value 1377
+ .value 1374
+ .value 1370
+ .value 1366
+ .value 1363
+ .value 1359
+ .value 1356
+ .value 1352
+ .value 1349
+ .value 1345
+ .value 1342
+ .value 1338
+ .value 1335
+ .value 1332
+ .value 1328
+ .value 1325
+ .value 1322
+ .value 1318
+ .value 1315
+ .value 1312
+ .value 1308
+ .value 1305
+ .value 1302
+ .value 1299
+ .value 1295
+ .value 1292
+ .value 1289
+ .value 1286
+ .value 1283
+ .value 1280
+ .value 1276
+ .value 1273
+ .value 1270
+ .value 1267
+ .value 1264
+ .value 1261
+ .value 1258
+ .value 1255
+ .value 1252
+ .value 1249
+ .value 1246
+ .value 1243
+ .value 1240
+ .value 1237
+ .value 1234
+ .value 1231
+ .value 1228
+ .value 1226
+ .value 1223
+ .value 1220
+ .value 1217
+ .value 1214
+ .value 1211
+ .value 1209
+ .value 1206
+ .value 1203
+ .value 1200
+ .value 1197
+ .value 1195
+ .value 1192
+ .value 1189
+ .value 1187
+ .value 1184
+ .value 1181
+ .value 1179
+ .value 1176
+ .value 1173
+ .value 1171
+ .value 1168
+ .value 1165
+ .value 1163
+ .value 1160
+ .value 1158
+ .value 1155
+ .value 1153
+ .value 1150
+ .value 1148
+ .value 1145
+ .value 1143
+ .value 1140
+ .value 1138
+ .value 1135
+ .value 1133
+ .value 1130
+ .value 1128
+ .value 1125
+ .value 1123
+ .value 1121
+ .value 1118
+ .value 1116
+ .value 1113
+ .value 1111
+ .value 1109
+ .value 1106
+ .value 1104
+ .value 1102
+ .value 1099
+ .value 1097
+ .value 1095
+ .value 1092
+ .value 1090
+ .value 1088
+ .value 1086
+ .value 1083
+ .value 1081
+ .value 1079
+ .value 1077
+ .value 1074
+ .value 1072
+ .value 1070
+ .value 1068
+ .value 1066
+ .value 1064
+ .value 1061
+ .value 1059
+ .value 1057
+ .value 1055
+ .value 1053
+ .value 1051
+ .value 1049
+ .value 1047
+ .value 1044
+ .value 1042
+ .value 1040
+ .value 1038
+ .value 1036
+ .value 1034
+ .value 1032
+ .value 1030
+ .value 1028
+ .value 1026
+ .value 1024
+
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/ior_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/ior_n.s
new file mode 100644
index 0000000..6509f28
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/ior_n.s
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 32, 0x90
+ .globl __gmpn_ior_n
+ .type __gmpn_ior_n,@function
+
+__gmpn_ior_n:
+
+
+ mov (%rdx), %r8
+ mov %ecx, %eax
+ lea (%rdx,%rcx,8), %rdx
+ lea (%rsi,%rcx,8), %rsi
+ lea (%rdi,%rcx,8), %rdi
+ neg %rcx
+ and $3, %eax
+ je .Lb00
+ cmp $2, %eax
+ jc .Lb01
+ je .Lb10
+
+.Lb11: or (%rsi,%rcx,8), %r8
+ mov %r8, (%rdi,%rcx,8)
+ dec %rcx
+ jmp .Le11
+.Lb10: add $-2, %rcx
+ jmp .Le10
+.Lb01: or (%rsi,%rcx,8), %r8
+ mov %r8, (%rdi,%rcx,8)
+ inc %rcx
+ jz .Lret
+
+.Ltop: mov (%rdx,%rcx,8), %r8
+.Lb00: mov 8(%rdx,%rcx,8), %r9
+ or (%rsi,%rcx,8), %r8
+ or 8(%rsi,%rcx,8), %r9
+ nop
+ mov %r8, (%rdi,%rcx,8)
+ mov %r9, 8(%rdi,%rcx,8)
+.Le11: mov 16(%rdx,%rcx,8), %r8
+.Le10: mov 24(%rdx,%rcx,8), %r9
+ or 16(%rsi,%rcx,8), %r8
+ or 24(%rsi,%rcx,8), %r9
+ mov %r8, 16(%rdi,%rcx,8)
+ mov %r9, 24(%rdi,%rcx,8)
+ add $4, %rcx
+ jnc .Ltop
+
+.Lret:
+ ret
+ .size __gmpn_ior_n,.-__gmpn_ior_n
+
+
+
+
+
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/iorn_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/iorn_n.s
new file mode 100644
index 0000000..b199ca3
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/iorn_n.s
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 32, 0x90
+ .globl __gmpn_iorn_n
+ .type __gmpn_iorn_n,@function
+
+__gmpn_iorn_n:
+
+
+ mov (%rdx), %r8
+ not %r8
+ mov %ecx, %eax
+ lea (%rdx,%rcx,8), %rdx
+ lea (%rsi,%rcx,8), %rsi
+ lea (%rdi,%rcx,8), %rdi
+ neg %rcx
+ and $3, %eax
+ je .Lb00
+ cmp $2, %eax
+ jc .Lb01
+ je .Lb10
+
+.Lb11: or (%rsi,%rcx,8), %r8
+ mov %r8, (%rdi,%rcx,8)
+ dec %rcx
+ jmp .Le11
+.Lb10: add $-2, %rcx
+ jmp .Le10
+ .byte 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90
+.Lb01: or (%rsi,%rcx,8), %r8
+ mov %r8, (%rdi,%rcx,8)
+ inc %rcx
+ jz .Lret
+
+.Ltop: mov (%rdx,%rcx,8), %r8
+ not %r8
+.Lb00: mov 8(%rdx,%rcx,8), %r9
+ not %r9
+ or (%rsi,%rcx,8), %r8
+ or 8(%rsi,%rcx,8), %r9
+ mov %r8, (%rdi,%rcx,8)
+ mov %r9, 8(%rdi,%rcx,8)
+.Le11: mov 16(%rdx,%rcx,8), %r8
+ not %r8
+.Le10: mov 24(%rdx,%rcx,8), %r9
+ not %r9
+ or 16(%rsi,%rcx,8), %r8
+ or 24(%rsi,%rcx,8), %r9
+ mov %r8, 16(%rdi,%rcx,8)
+ mov %r9, 24(%rdi,%rcx,8)
+ add $4, %rcx
+ jnc .Ltop
+
+.Lret:
+ ret
+ .size __gmpn_iorn_n,.-__gmpn_iorn_n
+
+
+
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/jacobitab.h b/vere/ext/gmp/gen/x86_64-linux/mpn/jacobitab.h
new file mode 100644
index 0000000..4bdbfcc
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/jacobitab.h
@@ -0,0 +1,13 @@
+ 0, 0, 0, 0, 0,12, 8, 4, 1, 1, 1, 1, 1,13, 9, 5,
+ 2, 2, 2, 2, 2, 6,10,14, 3, 3, 3, 3, 3, 7,11,15,
+ 4,16, 6,18, 4, 0,12, 8, 5,17, 7,19, 5, 1,13, 9,
+ 6,18, 4,16, 6,10,14, 2, 7,19, 5,17, 7,11,15, 3,
+ 8,10, 9,11, 8, 4, 0,12, 9,11, 8,10, 9, 5, 1,13,
+10, 9,11, 8,10,14, 2, 6,11, 8,10, 9,11,15, 3, 7,
+12,22,24,20,12, 8, 4, 0,13,23,25,21,13, 9, 5, 1,
+25,21,13,23,14, 2, 6,10,24,20,12,22,15, 3, 7,11,
+16, 6,18, 4,16,16,16,16,17, 7,19, 5,17,17,17,17,
+18, 4,16, 6,18,22,19,23,19, 5,17, 7,19,23,18,22,
+20,12,22,24,20,20,20,20,21,13,23,25,21,21,21,21,
+22,24,20,12,22,19,23,18,23,25,21,13,23,18,22,19,
+24,20,12,22,15, 3, 7,11,25,21,13,23,14, 2, 6,10,
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/lshift.s b/vere/ext/gmp/gen/x86_64-linux/mpn/lshift.s
new file mode 100644
index 0000000..89e9566
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/lshift.s
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 32, 0x90
+ .globl __gmpn_lshift
+ .type __gmpn_lshift,@function
+
+__gmpn_lshift:
+
+
+ neg %ecx
+ mov -8(%rsi,%rdx,8), %rax
+ shr %cl, %rax
+
+ neg %ecx
+ lea 1(%rdx), %r8d
+ and $3, %r8d
+ je .Lrlx
+
+ dec %r8d
+ jne .L1
+
+ mov -8(%rsi,%rdx,8), %r10
+ shl %cl, %r10
+ neg %ecx
+ mov -16(%rsi,%rdx,8), %r8
+ shr %cl, %r8
+ or %r8, %r10
+ mov %r10, -8(%rdi,%rdx,8)
+ dec %rdx
+ jmp .Lrll
+
+.L1: dec %r8d
+ je .L1x
+
+ mov -8(%rsi,%rdx,8), %r10
+ shl %cl, %r10
+ neg %ecx
+ mov -16(%rsi,%rdx,8), %r8
+ shr %cl, %r8
+ or %r8, %r10
+ mov %r10, -8(%rdi,%rdx,8)
+ dec %rdx
+ neg %ecx
+.L1x:
+ cmp $1, %rdx
+ je .Last
+ mov -8(%rsi,%rdx,8), %r10
+ shl %cl, %r10
+ mov -16(%rsi,%rdx,8), %r11
+ shl %cl, %r11
+ neg %ecx
+ mov -16(%rsi,%rdx,8), %r8
+ mov -24(%rsi,%rdx,8), %r9
+ shr %cl, %r8
+ or %r8, %r10
+ shr %cl, %r9
+ or %r9, %r11
+ mov %r10, -8(%rdi,%rdx,8)
+ mov %r11, -16(%rdi,%rdx,8)
+ sub $2, %rdx
+
+.Lrll: neg %ecx
+.Lrlx: mov -8(%rsi,%rdx,8), %r10
+ shl %cl, %r10
+ mov -16(%rsi,%rdx,8), %r11
+ shl %cl, %r11
+
+ sub $4, %rdx
+ jb .Lend
+ .align 16, 0x90
+.Ltop:
+
+ neg %ecx
+ mov 16(%rsi,%rdx,8), %r8
+ mov 8(%rsi,%rdx,8), %r9
+ shr %cl, %r8
+ or %r8, %r10
+ shr %cl, %r9
+ or %r9, %r11
+ mov %r10, 24(%rdi,%rdx,8)
+ mov %r11, 16(%rdi,%rdx,8)
+
+ mov 0(%rsi,%rdx,8), %r8
+ mov -8(%rsi,%rdx,8), %r9
+ shr %cl, %r8
+ shr %cl, %r9
+
+
+ neg %ecx
+ mov 8(%rsi,%rdx,8), %r10
+ mov 0(%rsi,%rdx,8), %r11
+ shl %cl, %r10
+ or %r10, %r8
+ shl %cl, %r11
+ or %r11, %r9
+ mov %r8, 8(%rdi,%rdx,8)
+ mov %r9, 0(%rdi,%rdx,8)
+
+ mov -8(%rsi,%rdx,8), %r10
+ mov -16(%rsi,%rdx,8), %r11
+ shl %cl, %r10
+ shl %cl, %r11
+
+ sub $4, %rdx
+ jae .Ltop
+.Lend:
+ neg %ecx
+ mov 8(%rsi), %r8
+ shr %cl, %r8
+ or %r8, %r10
+ mov (%rsi), %r9
+ shr %cl, %r9
+ or %r9, %r11
+ mov %r10, 16(%rdi)
+ mov %r11, 8(%rdi)
+
+ neg %ecx
+.Last: mov (%rsi), %r10
+ shl %cl, %r10
+ mov %r10, (%rdi)
+
+ ret
+ .size __gmpn_lshift,.-__gmpn_lshift
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/lshiftc.s b/vere/ext/gmp/gen/x86_64-linux/mpn/lshiftc.s
new file mode 100644
index 0000000..6809940
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/lshiftc.s
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 32, 0x90
+ .globl __gmpn_lshiftc
+ .type __gmpn_lshiftc,@function
+
+__gmpn_lshiftc:
+
+
+ neg %ecx
+ mov -8(%rsi,%rdx,8), %rax
+ shr %cl, %rax
+
+ neg %ecx
+ lea 1(%rdx), %r8d
+ and $3, %r8d
+ je .Lrlx
+
+ dec %r8d
+ jne .L1
+
+ mov -8(%rsi,%rdx,8), %r10
+ shl %cl, %r10
+ neg %ecx
+ mov -16(%rsi,%rdx,8), %r8
+ shr %cl, %r8
+ or %r8, %r10
+ not %r10
+ mov %r10, -8(%rdi,%rdx,8)
+ dec %rdx
+ jmp .Lrll
+
+.L1: dec %r8d
+ je .L1x
+
+ mov -8(%rsi,%rdx,8), %r10
+ shl %cl, %r10
+ neg %ecx
+ mov -16(%rsi,%rdx,8), %r8
+ shr %cl, %r8
+ or %r8, %r10
+ not %r10
+ mov %r10, -8(%rdi,%rdx,8)
+ dec %rdx
+ neg %ecx
+.L1x:
+ cmp $1, %rdx
+ je .Last
+ mov -8(%rsi,%rdx,8), %r10
+ shl %cl, %r10
+ mov -16(%rsi,%rdx,8), %r11
+ shl %cl, %r11
+ neg %ecx
+ mov -16(%rsi,%rdx,8), %r8
+ mov -24(%rsi,%rdx,8), %r9
+ shr %cl, %r8
+ or %r8, %r10
+ shr %cl, %r9
+ or %r9, %r11
+ not %r10
+ not %r11
+ mov %r10, -8(%rdi,%rdx,8)
+ mov %r11, -16(%rdi,%rdx,8)
+ sub $2, %rdx
+
+.Lrll: neg %ecx
+.Lrlx: mov -8(%rsi,%rdx,8), %r10
+ shl %cl, %r10
+ mov -16(%rsi,%rdx,8), %r11
+ shl %cl, %r11
+
+ sub $4, %rdx
+ jb .Lend
+ .align 16, 0x90
+.Ltop:
+
+ neg %ecx
+ mov 16(%rsi,%rdx,8), %r8
+ mov 8(%rsi,%rdx,8), %r9
+ shr %cl, %r8
+ or %r8, %r10
+ shr %cl, %r9
+ or %r9, %r11
+ not %r10
+ not %r11
+ mov %r10, 24(%rdi,%rdx,8)
+ mov %r11, 16(%rdi,%rdx,8)
+
+ mov 0(%rsi,%rdx,8), %r8
+ mov -8(%rsi,%rdx,8), %r9
+ shr %cl, %r8
+ shr %cl, %r9
+
+
+ neg %ecx
+ mov 8(%rsi,%rdx,8), %r10
+ mov 0(%rsi,%rdx,8), %r11
+ shl %cl, %r10
+ or %r10, %r8
+ shl %cl, %r11
+ or %r11, %r9
+ not %r8
+ not %r9
+ mov %r8, 8(%rdi,%rdx,8)
+ mov %r9, 0(%rdi,%rdx,8)
+
+ mov -8(%rsi,%rdx,8), %r10
+ mov -16(%rsi,%rdx,8), %r11
+ shl %cl, %r10
+ shl %cl, %r11
+
+ sub $4, %rdx
+ jae .Ltop
+.Lend:
+ neg %ecx
+ mov 8(%rsi), %r8
+ shr %cl, %r8
+ or %r8, %r10
+ mov (%rsi), %r9
+ shr %cl, %r9
+ or %r9, %r11
+ not %r10
+ not %r11
+ mov %r10, 16(%rdi)
+ mov %r11, 8(%rdi)
+
+ neg %ecx
+.Last: mov (%rsi), %r10
+ shl %cl, %r10
+ not %r10
+ mov %r10, (%rdi)
+
+ ret
+ .size __gmpn_lshiftc,.-__gmpn_lshiftc
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_1.s
new file mode 100644
index 0000000..a8e3198
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_1.s
@@ -0,0 +1,241 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_mod_1_1p
+ .type __gmpn_mod_1_1p,@function
+
+__gmpn_mod_1_1p:
+
+
+ push %rbp
+ push %rbx
+ mov %rdx, %rbx
+ mov %rcx, %r8
+
+ mov -8(%rdi, %rsi, 8), %rax
+ cmp $3, %rsi
+ jnc .Lfirst
+ mov -16(%rdi, %rsi, 8), %rbp
+ jmp .Lreduce_two
+
+.Lfirst:
+
+ mov 24(%r8), %r11
+ mul %r11
+ mov -24(%rdi, %rsi, 8), %rbp
+ add %rax, %rbp
+ mov -16(%rdi, %rsi, 8), %rax
+ adc %rdx, %rax
+ sbb %rcx, %rcx
+ sub $4, %rsi
+ jc .Lreduce_three
+
+ mov %r11, %r10
+ sub %rbx, %r10
+
+ .align 16, 0x90
+.Ltop: and %r11, %rcx
+ lea (%r10, %rbp), %r9
+ mul %r11
+ add %rbp, %rcx
+ mov (%rdi, %rsi, 8), %rbp
+ cmovc %r9, %rcx
+ add %rax, %rbp
+ mov %rcx, %rax
+ adc %rdx, %rax
+ sbb %rcx, %rcx
+ sub $1, %rsi
+ jnc .Ltop
+
+.Lreduce_three:
+
+ and %rbx, %rcx
+ sub %rcx, %rax
+
+.Lreduce_two:
+ mov 8(%r8), %ecx
+ test %ecx, %ecx
+ jz .Lnormalized
+
+
+ mulq 16(%r8)
+ xor %r9, %r9
+ add %rax, %rbp
+ adc %rdx, %r9
+ mov %r9, %rax
+
+
+
+ shld %cl, %rbp, %rax
+
+ shl %cl, %rbp
+ jmp .Ludiv
+
+.Lnormalized:
+ mov %rax, %r9
+ sub %rbx, %r9
+ cmovnc %r9, %rax
+
+.Ludiv:
+ lea 1(%rax), %r9
+ mulq (%r8)
+ add %rbp, %rax
+ adc %r9, %rdx
+ imul %rbx, %rdx
+ sub %rdx, %rbp
+ cmp %rbp, %rax
+ lea (%rbx, %rbp), %rax
+ cmovnc %rbp, %rax
+ cmp %rbx, %rax
+ jnc .Lfix
+.Lok: shr %cl, %rax
+
+ pop %rbx
+ pop %rbp
+
+ ret
+.Lfix: sub %rbx, %rax
+ jmp .Lok
+ .size __gmpn_mod_1_1p,.-__gmpn_mod_1_1p
+
+ .align 16, 0x90
+ .globl __gmpn_mod_1_1p_cps
+ .type __gmpn_mod_1_1p_cps,@function
+
+__gmpn_mod_1_1p_cps:
+
+
+ push %rbp
+ bsr %rsi, %rcx
+ push %rbx
+ mov %rdi, %rbx
+ push %r12
+ xor $63, %ecx
+ mov %rsi, %r12
+ mov %ecx, %ebp
+ sal %cl, %r12
+ mov %r12, %rdi
+
+
+
+ call __gmpn_invert_limb@PLT
+
+
+ neg %r12
+ mov %r12, %r8
+ mov %rax, (%rbx)
+ mov %rbp, 8(%rbx)
+ imul %rax, %r12
+ mov %r12, 24(%rbx)
+ mov %ebp, %ecx
+ test %ecx, %ecx
+ jz .Lz
+
+ mov $1, %edx
+
+ shld %cl, %rax, %rdx
+
+ imul %rdx, %r8
+ shr %cl, %r8
+ mov %r8, 16(%rbx)
+.Lz:
+ pop %r12
+ pop %rbx
+ pop %rbp
+
+ ret
+ .size __gmpn_mod_1_1p_cps,.-__gmpn_mod_1_1p_cps
+
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_2.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_2.s
new file mode 100644
index 0000000..1a19107
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_2.s
@@ -0,0 +1,252 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_mod_1s_2p
+ .type __gmpn_mod_1s_2p,@function
+
+__gmpn_mod_1s_2p:
+
+
+ push %r14
+ test $1, %sil
+ mov %rdx, %r14
+ push %r13
+ mov %rcx, %r13
+ push %r12
+ push %rbp
+ push %rbx
+ mov 16(%rcx), %r10
+ mov 24(%rcx), %rbx
+ mov 32(%rcx), %rbp
+ je .Lb0
+ dec %rsi
+ je .Lone
+ mov -8(%rdi,%rsi,8), %rax
+ mul %r10
+ mov %rax, %r9
+ mov %rdx, %r8
+ mov (%rdi,%rsi,8), %rax
+ add -16(%rdi,%rsi,8), %r9
+ adc $0, %r8
+ mul %rbx
+ add %rax, %r9
+ adc %rdx, %r8
+ jmp .L11
+
+.Lb0: mov -8(%rdi,%rsi,8), %r8
+ mov -16(%rdi,%rsi,8), %r9
+
+.L11: sub $4, %rsi
+ jb .Led2
+ lea 40(%rdi,%rsi,8), %rdi
+ mov -40(%rdi), %r11
+ mov -32(%rdi), %rax
+ jmp .Lm0
+
+ .align 16, 0x90
+.Ltop: mov -24(%rdi), %r9
+ add %rax, %r11
+ mov -16(%rdi), %rax
+ adc %rdx, %r12
+ mul %r10
+ add %rax, %r9
+ mov %r11, %rax
+ mov %rdx, %r8
+ adc $0, %r8
+ mul %rbx
+ add %rax, %r9
+ mov %r12, %rax
+ adc %rdx, %r8
+ mul %rbp
+ sub $2, %rsi
+ jb .Led1
+ mov -40(%rdi), %r11
+ add %rax, %r9
+ mov -32(%rdi), %rax
+ adc %rdx, %r8
+.Lm0: mul %r10
+ add %rax, %r11
+ mov %r9, %rax
+ mov %rdx, %r12
+ adc $0, %r12
+ mul %rbx
+ add %rax, %r11
+ lea -32(%rdi), %rdi
+ mov %r8, %rax
+ adc %rdx, %r12
+ mul %rbp
+ sub $2, %rsi
+ jae .Ltop
+
+.Led0: mov %r11, %r9
+ mov %r12, %r8
+.Led1: add %rax, %r9
+ adc %rdx, %r8
+.Led2: mov 8(%r13), %edi
+ mov %r8, %rax
+ mov %r9, %r8
+ mul %r10
+ add %rax, %r8
+ adc $0, %rdx
+.L1: xor %ecx, %ecx
+ mov %r8, %r9
+ sub %edi, %ecx
+ shr %cl, %r9
+ mov %edi, %ecx
+ sal %cl, %rdx
+ or %rdx, %r9
+ sal %cl, %r8
+ mov %r9, %rax
+ mulq (%r13)
+ mov %rax, %rsi
+ inc %r9
+ add %r8, %rsi
+ adc %r9, %rdx
+ imul %r14, %rdx
+ sub %rdx, %r8
+ lea (%r8,%r14), %rax
+ cmp %r8, %rsi
+ cmovc %rax, %r8
+ mov %r8, %rax
+ sub %r14, %rax
+ cmovc %r8, %rax
+ mov %edi, %ecx
+ shr %cl, %rax
+ pop %rbx
+ pop %rbp
+ pop %r12
+ pop %r13
+ pop %r14
+
+ ret
+.Lone:
+ mov (%rdi), %r8
+ mov 8(%rcx), %edi
+ xor %rdx, %rdx
+ jmp .L1
+ .size __gmpn_mod_1s_2p,.-__gmpn_mod_1s_2p
+
+ .align 16, 0x90
+ .globl __gmpn_mod_1s_2p_cps
+ .type __gmpn_mod_1s_2p_cps,@function
+
+__gmpn_mod_1s_2p_cps:
+
+
+ push %rbp
+ bsr %rsi, %rcx
+ push %rbx
+ mov %rdi, %rbx
+ push %r12
+ xor $63, %ecx
+ mov %rsi, %r12
+ mov %ecx, %ebp
+ sal %cl, %r12
+ mov %r12, %rdi
+
+
+
+ call __gmpn_invert_limb@PLT
+
+
+ mov %r12, %r8
+ mov %rax, %r11
+ mov %rax, (%rbx)
+ mov %rbp, 8(%rbx)
+ neg %r8
+ mov %ebp, %ecx
+ mov $1, %esi
+
+ shld %cl, %rax, %rsi
+
+ imul %r8, %rsi
+ mul %rsi
+
+ add %rsi, %rdx
+ shr %cl, %rsi
+ mov %rsi, 16(%rbx)
+
+ not %rdx
+ imul %r12, %rdx
+ lea (%rdx,%r12), %rsi
+ cmp %rdx, %rax
+ cmovnc %rdx, %rsi
+ mov %r11, %rax
+ mul %rsi
+
+ add %rsi, %rdx
+ shr %cl, %rsi
+ mov %rsi, 24(%rbx)
+
+ not %rdx
+ imul %r12, %rdx
+ add %rdx, %r12
+ cmp %rdx, %rax
+ cmovnc %rdx, %r12
+
+ shr %cl, %r12
+ mov %r12, 32(%rbx)
+
+ pop %r12
+ pop %rbx
+ pop %rbp
+
+ ret
+ .size __gmpn_mod_1s_2p_cps,.-__gmpn_mod_1s_2p_cps
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_4.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_4.s
new file mode 100644
index 0000000..491753d
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mod_1_4.s
@@ -0,0 +1,283 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_mod_1s_4p
+ .type __gmpn_mod_1s_4p,@function
+
+__gmpn_mod_1s_4p:
+
+
+ push %r15
+ push %r14
+ push %r13
+ push %r12
+ push %rbp
+ push %rbx
+
+ mov %rdx, %r15
+ mov %rcx, %r14
+ mov 16(%rcx), %r11
+ mov 24(%rcx), %rbx
+ mov 32(%rcx), %rbp
+ mov 40(%rcx), %r13
+ mov 48(%rcx), %r12
+ xor %r8d, %r8d
+ mov %esi, %edx
+ and $3, %edx
+ je .Lb0
+ cmp $2, %edx
+ jc .Lb1
+ je .Lb2
+
+.Lb3: lea -24(%rdi,%rsi,8), %rdi
+ mov 8(%rdi), %rax
+ mul %r11
+ mov (%rdi), %r9
+ add %rax, %r9
+ adc %rdx, %r8
+ mov 16(%rdi), %rax
+ mul %rbx
+ jmp .Lm0
+
+ .align 8, 0x90
+.Lb0: lea -32(%rdi,%rsi,8), %rdi
+ mov 8(%rdi), %rax
+ mul %r11
+ mov (%rdi), %r9
+ add %rax, %r9
+ adc %rdx, %r8
+ mov 16(%rdi), %rax
+ mul %rbx
+ add %rax, %r9
+ adc %rdx, %r8
+ mov 24(%rdi), %rax
+ mul %rbp
+ jmp .Lm0
+
+ .align 8, 0x90
+.Lb1: lea -8(%rdi,%rsi,8), %rdi
+ mov (%rdi), %r9
+ jmp .Lm1
+
+ .align 8, 0x90
+.Lb2: lea -16(%rdi,%rsi,8), %rdi
+ mov 8(%rdi), %r8
+ mov (%rdi), %r9
+ jmp .Lm1
+
+ .align 16, 0x90
+.Ltop: mov -24(%rdi), %rax
+ mov -32(%rdi), %r10
+ mul %r11
+ add %rax, %r10
+ mov -16(%rdi), %rax
+ mov $0, %ecx
+ adc %rdx, %rcx
+ mul %rbx
+ add %rax, %r10
+ mov -8(%rdi), %rax
+ adc %rdx, %rcx
+ sub $32, %rdi
+ mul %rbp
+ add %rax, %r10
+ mov %r13, %rax
+ adc %rdx, %rcx
+ mul %r9
+ add %rax, %r10
+ mov %r12, %rax
+ adc %rdx, %rcx
+ mul %r8
+ mov %r10, %r9
+ mov %rcx, %r8
+.Lm0: add %rax, %r9
+ adc %rdx, %r8
+.Lm1: sub $4, %rsi
+ ja .Ltop
+
+.Lend: mov 8(%r14), %esi
+ mov %r8, %rax
+ mul %r11
+ mov %rax, %r8
+ add %r9, %r8
+ adc $0, %rdx
+ xor %ecx, %ecx
+ sub %esi, %ecx
+ mov %r8, %rdi
+ shr %cl, %rdi
+ mov %esi, %ecx
+ sal %cl, %rdx
+ or %rdx, %rdi
+ mov %rdi, %rax
+ mulq (%r14)
+ mov %r15, %rbx
+ mov %rax, %r9
+ sal %cl, %r8
+ inc %rdi
+ add %r8, %r9
+ adc %rdi, %rdx
+ imul %rbx, %rdx
+ sub %rdx, %r8
+ lea (%r8,%rbx), %rax
+ cmp %r8, %r9
+ cmovc %rax, %r8
+ mov %r8, %rax
+ sub %rbx, %rax
+ cmovc %r8, %rax
+ shr %cl, %rax
+ pop %rbx
+ pop %rbp
+ pop %r12
+ pop %r13
+ pop %r14
+ pop %r15
+
+ ret
+ .size __gmpn_mod_1s_4p,.-__gmpn_mod_1s_4p
+
+ .align 16, 0x90
+ .globl __gmpn_mod_1s_4p_cps
+ .type __gmpn_mod_1s_4p_cps,@function
+
+__gmpn_mod_1s_4p_cps:
+
+
+ push %rbp
+ bsr %rsi, %rcx
+ push %rbx
+ mov %rdi, %rbx
+ push %r12
+ xor $63, %ecx
+ mov %rsi, %r12
+ mov %ecx, %ebp
+ sal %cl, %r12
+ mov %r12, %rdi
+
+
+
+ call __gmpn_invert_limb@PLT
+
+
+ mov %r12, %r8
+ mov %rax, %r11
+ mov %rax, (%rbx)
+ mov %rbp, 8(%rbx)
+ neg %r8
+ mov %ebp, %ecx
+ mov $1, %esi
+
+ shld %cl, %rax, %rsi
+
+ imul %r8, %rsi
+ mul %rsi
+
+ add %rsi, %rdx
+ shr %cl, %rsi
+ mov %rsi, 16(%rbx)
+
+ not %rdx
+ imul %r12, %rdx
+ lea (%rdx,%r12), %rsi
+ cmp %rdx, %rax
+ cmovnc %rdx, %rsi
+ mov %r11, %rax
+ mul %rsi
+
+ add %rsi, %rdx
+ shr %cl, %rsi
+ mov %rsi, 24(%rbx)
+
+ not %rdx
+ imul %r12, %rdx
+ lea (%rdx,%r12), %rsi
+ cmp %rdx, %rax
+ cmovnc %rdx, %rsi
+ mov %r11, %rax
+ mul %rsi
+
+ add %rsi, %rdx
+ shr %cl, %rsi
+ mov %rsi, 32(%rbx)
+
+ not %rdx
+ imul %r12, %rdx
+ lea (%rdx,%r12), %rsi
+ cmp %rdx, %rax
+ cmovnc %rdx, %rsi
+ mov %r11, %rax
+ mul %rsi
+
+ add %rsi, %rdx
+ shr %cl, %rsi
+ mov %rsi, 40(%rbx)
+
+ not %rdx
+ imul %r12, %rdx
+ add %rdx, %r12
+ cmp %rdx, %rax
+ cmovnc %rdx, %r12
+
+ shr %cl, %r12
+ mov %r12, 48(%rbx)
+
+ pop %r12
+ pop %rbx
+ pop %rbp
+
+ ret
+ .size __gmpn_mod_1s_4p_cps,.-__gmpn_mod_1s_4p_cps
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mod_34lsub1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mod_34lsub1.s
new file mode 100644
index 0000000..e2a2ebb
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mod_34lsub1.s
@@ -0,0 +1,228 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 32, 0x90
+ .globl __gmpn_mod_34lsub1
+ .type __gmpn_mod_34lsub1,@function
+
+__gmpn_mod_34lsub1:
+
+
+
+ mov $0x0000FFFFFFFFFFFF, %r11
+
+ mov (%rdi), %rax
+
+ cmp $2, %rsi
+ ja .Lgt2
+
+ jb .Lone
+
+ mov 8(%rdi), %rsi
+ mov %rax, %rdx
+ shr $48, %rax
+
+ and %r11, %rdx
+ add %rdx, %rax
+ mov %esi, %edx
+
+ shr $32, %rsi
+ add %rsi, %rax
+
+ shl $16, %rdx
+ add %rdx, %rax
+.Lone:
+ ret
+
+
+
+
+
+.Lgt2: mov 8(%rdi), %rcx
+ mov 16(%rdi), %rdx
+ xor %r9, %r9
+ add $24, %rdi
+ sub $12, %rsi
+ jc .Lend
+ .align 16, 0x90
+.Ltop:
+ add (%rdi), %rax
+ adc 8(%rdi), %rcx
+ adc 16(%rdi), %rdx
+ adc $0, %r9
+ add 24(%rdi), %rax
+ adc 32(%rdi), %rcx
+ adc 40(%rdi), %rdx
+ adc $0, %r9
+ add 48(%rdi), %rax
+ adc 56(%rdi), %rcx
+ adc 64(%rdi), %rdx
+ adc $0, %r9
+ add $72, %rdi
+ sub $9, %rsi
+ jnc .Ltop
+
+.Lend:
+ lea .Ltab(%rip), %r8
+ movslq 36(%r8,%rsi,4), %r10
+ add %r10, %r8
+ jmp *%r8
+
+ .section .data.rel.ro.local,"a",@progbits
+ .align 8, 0x90
+.Ltab: .long .L0-.Ltab
+ .long .L1-.Ltab
+ .long .L2-.Ltab
+ .long .L3-.Ltab
+ .long .L4-.Ltab
+ .long .L5-.Ltab
+ .long .L6-.Ltab
+ .long .L7-.Ltab
+ .long .L8-.Ltab
+ .text
+
+.L6: add (%rdi), %rax
+ adc 8(%rdi), %rcx
+ adc 16(%rdi), %rdx
+ adc $0, %r9
+ add $24, %rdi
+.L3: add (%rdi), %rax
+ adc 8(%rdi), %rcx
+ adc 16(%rdi), %rdx
+ jmp .Lcj1
+
+.L7: add (%rdi), %rax
+ adc 8(%rdi), %rcx
+ adc 16(%rdi), %rdx
+ adc $0, %r9
+ add $24, %rdi
+.L4: add (%rdi), %rax
+ adc 8(%rdi), %rcx
+ adc 16(%rdi), %rdx
+ adc $0, %r9
+ add $24, %rdi
+.L1: add (%rdi), %rax
+ adc $0, %rcx
+ jmp .Lcj2
+
+.L8: add (%rdi), %rax
+ adc 8(%rdi), %rcx
+ adc 16(%rdi), %rdx
+ adc $0, %r9
+ add $24, %rdi
+.L5: add (%rdi), %rax
+ adc 8(%rdi), %rcx
+ adc 16(%rdi), %rdx
+ adc $0, %r9
+ add $24, %rdi
+.L2: add (%rdi), %rax
+ adc 8(%rdi), %rcx
+
+.Lcj2: adc $0, %rdx
+.Lcj1: adc $0, %r9
+.L0: add %r9, %rax
+ adc $0, %rcx
+ adc $0, %rdx
+ adc $0, %rax
+
+ mov %rax, %rdi
+ shr $48, %rax
+
+ and %r11, %rdi
+ mov %ecx, %r10d
+
+ shr $32, %rcx
+
+ add %rdi, %rax
+ movzwl %dx, %edi
+ shl $16, %r10
+
+ add %rcx, %rax
+ shr $16, %rdx
+
+ add %r10, %rax
+ shl $32, %rdi
+
+ add %rdx, %rax
+ add %rdi, %rax
+
+
+ ret
+ .size __gmpn_mod_34lsub1,.-__gmpn_mod_34lsub1
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mode1o.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mode1o.s
new file mode 100644
index 0000000..bff06a3
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mode1o.s
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 32, 0x90
+ .globl __gmpn_modexact_1_odd
+ .type __gmpn_modexact_1_odd,@function
+
+__gmpn_modexact_1_odd:
+
+
+ mov $0, %ecx
+
+
+ .globl __gmpn_modexact_1c_odd
+ .type __gmpn_modexact_1c_odd,@function
+
+__gmpn_modexact_1c_odd:
+
+
+.Lent:
+
+
+
+
+
+ mov %rdx, %r8
+ shr %edx
+
+ mov __gmp_binvert_limb_table@GOTPCREL(%rip), %r9
+
+
+
+ and $127, %edx
+ mov %rcx, %r10
+
+ movzbl (%r9,%rdx), %edx
+
+ mov (%rdi), %rax
+ lea (%rdi,%rsi,8), %r11
+ mov %r8, %rdi
+
+ lea (%rdx,%rdx), %ecx
+ imul %edx, %edx
+
+ neg %rsi
+
+ imul %edi, %edx
+
+ sub %edx, %ecx
+
+ lea (%rcx,%rcx), %edx
+ imul %ecx, %ecx
+
+ imul %edi, %ecx
+
+ sub %ecx, %edx
+ xor %ecx, %ecx
+
+ lea (%rdx,%rdx), %r9
+ imul %rdx, %rdx
+
+ imul %r8, %rdx
+
+ sub %rdx, %r9
+ mov %r10, %rdx
+
+
+
+ inc %rsi
+ jz .Lone
+
+
+ .align 16, 0x90
+.Ltop:
+
+
+
+
+
+
+
+
+
+ sub %rdx, %rax
+
+ adc $0, %rcx
+ imul %r9, %rax
+
+ mul %r8
+
+ mov (%r11,%rsi,8), %rax
+ sub %rcx, %rax
+ setc %cl
+
+ inc %rsi
+ jnz .Ltop
+
+
+.Lone:
+ sub %rdx, %rax
+
+ adc $0, %rcx
+ imul %r9, %rax
+
+ mul %r8
+
+ lea (%rcx,%rdx), %rax
+
+ ret
+
+ .size __gmpn_modexact_1c_odd,.-__gmpn_modexact_1c_odd
+ .size __gmpn_modexact_1_odd,.-__gmpn_modexact_1_odd
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mp_bases.c b/vere/ext/gmp/gen/x86_64-linux/mpn/mp_bases.c
new file mode 100644
index 0000000..c72c531
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mp_bases.c
@@ -0,0 +1,268 @@
+/* This file generated by gen-bases.c - DO NOT EDIT. */
+
+#include "gmp-impl.h"
+
+#if GMP_NUMB_BITS != 64
+Error, error, this data is for 64 bits
+#endif
+
+const struct bases mp_bases[257] =
+{
+ /* 0 */ { 0, 0, 0, 0, 0 },
+ /* 1 */ { 0, 0, 0, 0, 0 },
+ /* 2 */ { 64, CNST_LIMB(0xffffffffffffffff), CNST_LIMB(0x1fffffffffffffff), CNST_LIMB(0x1), CNST_LIMB(0x0) },
+ /* 3 */ { 40, CNST_LIMB(0xa1849cc1a9a9e94e), CNST_LIMB(0x32b803473f7ad0f3), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) },
+ /* 4 */ { 32, CNST_LIMB(0x7fffffffffffffff), CNST_LIMB(0x3fffffffffffffff), CNST_LIMB(0x2), CNST_LIMB(0x0) },
+ /* 5 */ { 27, CNST_LIMB(0x6e40d1a4143dcb94), CNST_LIMB(0x4a4d3c25e68dc57f), CNST_LIMB(0x6765c793fa10079d), CNST_LIMB(0x3ce9a36f23c0fc90) },
+ /* 6 */ { 24, CNST_LIMB(0x6308c91b702a7cf4), CNST_LIMB(0x52b803473f7ad0f3), CNST_LIMB(0x41c21cb8e1000000), CNST_LIMB(0xf24f62335024a295) },
+ /* 7 */ { 22, CNST_LIMB(0x5b3064eb3aa6d388), CNST_LIMB(0x59d5d9fd5010b366), CNST_LIMB(0x3642798750226111), CNST_LIMB(0x2df495ccaa57147b) },
+ /* 8 */ { 21, CNST_LIMB(0x5555555555555555), CNST_LIMB(0x5fffffffffffffff), CNST_LIMB(0x3), CNST_LIMB(0x0) },
+ /* 9 */ { 20, CNST_LIMB(0x50c24e60d4d4f4a7), CNST_LIMB(0x6570068e7ef5a1e7), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) },
+ /* 10 */ { 19, CNST_LIMB(0x4d104d427de7fbcc), CNST_LIMB(0x6a4d3c25e68dc57f), CNST_LIMB(0x8ac7230489e80000), CNST_LIMB(0xd83c94fb6d2ac34a) },
+ /* 11 */ { 18, CNST_LIMB(0x4a00270775914e88), CNST_LIMB(0x6eb3a9f01975077f), CNST_LIMB(0x4d28cb56c33fa539), CNST_LIMB(0xa8adf7ae45e7577b) },
+ /* 12 */ { 17, CNST_LIMB(0x4768ce0d05818e12), CNST_LIMB(0x72b803473f7ad0f3), CNST_LIMB(0x1eca170c00000000), CNST_LIMB(0xa10c2bec5da8f8f) },
+ /* 13 */ { 17, CNST_LIMB(0x452e53e365907bda), CNST_LIMB(0x766a008e4788cbcd), CNST_LIMB(0x780c7372621bd74d), CNST_LIMB(0x10f4becafe412ec3) },
+ /* 14 */ { 16, CNST_LIMB(0x433cfffb4b5aae55), CNST_LIMB(0x79d5d9fd5010b366), CNST_LIMB(0x1e39a5057d810000), CNST_LIMB(0xf08480f672b4e86) },
+ /* 15 */ { 16, CNST_LIMB(0x41867711b4f85355), CNST_LIMB(0x7d053f6d26089673), CNST_LIMB(0x5b27ac993df97701), CNST_LIMB(0x6779c7f90dc42f48) },
+ /* 16 */ { 16, CNST_LIMB(0x3fffffffffffffff), CNST_LIMB(0x7fffffffffffffff), CNST_LIMB(0x4), CNST_LIMB(0x0) },
+ /* 17 */ { 15, CNST_LIMB(0x3ea16afd58b10966), CNST_LIMB(0x82cc7edf592262cf), CNST_LIMB(0x27b95e997e21d9f1), CNST_LIMB(0x9c71e11bab279323) },
+ /* 18 */ { 15, CNST_LIMB(0x3d64598d154dc4de), CNST_LIMB(0x8570068e7ef5a1e7), CNST_LIMB(0x5da0e1e53c5c8000), CNST_LIMB(0x5dfaa697ec6f6a1c) },
+ /* 19 */ { 15, CNST_LIMB(0x3c43c23018bb5563), CNST_LIMB(0x87ef05ae409a0288), CNST_LIMB(0xd2ae3299c1c4aedb), CNST_LIMB(0x3711783f6be7e9ec) },
+ /* 20 */ { 14, CNST_LIMB(0x3b3b9a42873069c7), CNST_LIMB(0x8a4d3c25e68dc57f), CNST_LIMB(0x16bcc41e90000000), CNST_LIMB(0x6849b86a12b9b01e) },
+ /* 21 */ { 14, CNST_LIMB(0x3a4898f06cf41ac9), CNST_LIMB(0x8c8ddd448f8b845a), CNST_LIMB(0x2d04b7fdd9c0ef49), CNST_LIMB(0x6bf097ba5ca5e239) },
+ /* 22 */ { 14, CNST_LIMB(0x39680b13582e7c18), CNST_LIMB(0x8eb3a9f01975077f), CNST_LIMB(0x5658597bcaa24000), CNST_LIMB(0x7b8015c8d7af8f08) },
+ /* 23 */ { 14, CNST_LIMB(0x3897b2b751ae561a), CNST_LIMB(0x90c10500d63aa658), CNST_LIMB(0xa0e2073737609371), CNST_LIMB(0x975a24b3a3151b38) },
+ /* 24 */ { 13, CNST_LIMB(0x37d5aed131f19c98), CNST_LIMB(0x92b803473f7ad0f3), CNST_LIMB(0xc29e98000000000), CNST_LIMB(0x50bd367972689db1) },
+ /* 25 */ { 13, CNST_LIMB(0x372068d20a1ee5ca), CNST_LIMB(0x949a784bcd1b8afe), CNST_LIMB(0x14adf4b7320334b9), CNST_LIMB(0x8c240c4aecb13bb5) },
+ /* 26 */ { 13, CNST_LIMB(0x3676867e5d60de29), CNST_LIMB(0x966a008e4788cbcd), CNST_LIMB(0x226ed36478bfa000), CNST_LIMB(0xdbd2e56854e118c9) },
+ /* 27 */ { 13, CNST_LIMB(0x35d6deeb388df86f), CNST_LIMB(0x982809d5be7072db), CNST_LIMB(0x383d9170b85ff80b), CNST_LIMB(0x2351ffcaa9c7c4ae) },
+ /* 28 */ { 13, CNST_LIMB(0x354071d61c77fa2e), CNST_LIMB(0x99d5d9fd5010b366), CNST_LIMB(0x5a3c23e39c000000), CNST_LIMB(0x6b24188ca33b0636) },
+ /* 29 */ { 13, CNST_LIMB(0x34b260c5671b18ac), CNST_LIMB(0x9b74948f5532da4b), CNST_LIMB(0x8e65137388122bcd), CNST_LIMB(0xcc3dceaf2b8ba99d) },
+ /* 30 */ { 13, CNST_LIMB(0x342be986572b45cc), CNST_LIMB(0x9d053f6d26089673), CNST_LIMB(0xdd41bb36d259e000), CNST_LIMB(0x2832e835c6c7d6b6) },
+ /* 31 */ { 12, CNST_LIMB(0x33ac61b998fbbdf2), CNST_LIMB(0x9e88c6b3626a72aa), CNST_LIMB(0xaee5720ee830681), CNST_LIMB(0x76b6aa272e1873c5) },
+ /* 32 */ { 12, CNST_LIMB(0x3333333333333333), CNST_LIMB(0x9fffffffffffffff), CNST_LIMB(0x5), CNST_LIMB(0x0) },
+ /* 33 */ { 12, CNST_LIMB(0x32bfd90114c12861), CNST_LIMB(0xa16bad3758efd873), CNST_LIMB(0x172588ad4f5f0981), CNST_LIMB(0x61eaf5d402c7bf4f) },
+ /* 34 */ { 12, CNST_LIMB(0x3251dcf6169e45f2), CNST_LIMB(0xa2cc7edf592262cf), CNST_LIMB(0x211e44f7d02c1000), CNST_LIMB(0xeeb658123ffb27ec) },
+ /* 35 */ { 12, CNST_LIMB(0x31e8d59f180dc630), CNST_LIMB(0xa4231623369e78e5), CNST_LIMB(0x2ee56725f06e5c71), CNST_LIMB(0x5d5e3762e6fdf509) },
+ /* 36 */ { 12, CNST_LIMB(0x3184648db8153e7a), CNST_LIMB(0xa570068e7ef5a1e7), CNST_LIMB(0x41c21cb8e1000000), CNST_LIMB(0xf24f62335024a295) },
+ /* 37 */ { 12, CNST_LIMB(0x312434e89c35dacd), CNST_LIMB(0xa6b3d78b6d3b24fb), CNST_LIMB(0x5b5b57f8a98a5dd1), CNST_LIMB(0x66ae7831762efb6f) },
+ /* 38 */ { 12, CNST_LIMB(0x30c7fa349460a541), CNST_LIMB(0xa7ef05ae409a0288), CNST_LIMB(0x7dcff8986ea31000), CNST_LIMB(0x47388865a00f544) },
+ /* 39 */ { 12, CNST_LIMB(0x306f6f4c8432bc6d), CNST_LIMB(0xa92203d587039cc1), CNST_LIMB(0xabd4211662a6b2a1), CNST_LIMB(0x7d673c33a123b54c) },
+ /* 40 */ { 12, CNST_LIMB(0x301a557ffbfdd252), CNST_LIMB(0xaa4d3c25e68dc57f), CNST_LIMB(0xe8d4a51000000000), CNST_LIMB(0x19799812dea11197) },
+ /* 41 */ { 11, CNST_LIMB(0x2fc873d1fda55f3b), CNST_LIMB(0xab7110e6ce866f2b), CNST_LIMB(0x7a32956ad081b79), CNST_LIMB(0xc27e62e0686feae) },
+ /* 42 */ { 11, CNST_LIMB(0x2f799652a4e6dc49), CNST_LIMB(0xac8ddd448f8b845a), CNST_LIMB(0x9f49aaff0e86800), CNST_LIMB(0x9b6e7507064ce7c7) },
+ /* 43 */ { 11, CNST_LIMB(0x2f2d8d8f64460aad), CNST_LIMB(0xada3f5fb9c415052), CNST_LIMB(0xce583bb812d37b3), CNST_LIMB(0x3d9ac2bf66cfed94) },
+ /* 44 */ { 11, CNST_LIMB(0x2ee42e164e8f53a4), CNST_LIMB(0xaeb3a9f01975077f), CNST_LIMB(0x109b79a654c00000), CNST_LIMB(0xed46bc50ce59712a) },
+ /* 45 */ { 11, CNST_LIMB(0x2e9d500984041dbd), CNST_LIMB(0xafbd42b465836767), CNST_LIMB(0x1543beff214c8b95), CNST_LIMB(0x813d97e2c89b8d46) },
+ /* 46 */ { 11, CNST_LIMB(0x2e58cec05a6a8144), CNST_LIMB(0xb0c10500d63aa658), CNST_LIMB(0x1b149a79459a3800), CNST_LIMB(0x2e81751956af8083) },
+ /* 47 */ { 11, CNST_LIMB(0x2e1688743ef9104c), CNST_LIMB(0xb1bf311e95d00de3), CNST_LIMB(0x224edfb5434a830f), CNST_LIMB(0xdd8e0a95e30c0988) },
+ /* 48 */ { 11, CNST_LIMB(0x2dd65df7a583598f), CNST_LIMB(0xb2b803473f7ad0f3), CNST_LIMB(0x2b3fb00000000000), CNST_LIMB(0x7ad4dd48a0b5b167) },
+ /* 49 */ { 11, CNST_LIMB(0x2d9832759d5369c4), CNST_LIMB(0xb3abb3faa02166cc), CNST_LIMB(0x3642798750226111), CNST_LIMB(0x2df495ccaa57147b) },
+ /* 50 */ { 11, CNST_LIMB(0x2d5beb38dcd1394c), CNST_LIMB(0xb49a784bcd1b8afe), CNST_LIMB(0x43c33c1937564800), CNST_LIMB(0xe392010175ee5962) },
+ /* 51 */ { 11, CNST_LIMB(0x2d216f7943e2ba6a), CNST_LIMB(0xb5848226989d33c3), CNST_LIMB(0x54411b2441c3cd8b), CNST_LIMB(0x84eaf11b2fe7738e) },
+ /* 52 */ { 11, CNST_LIMB(0x2ce8a82efbb3ff2c), CNST_LIMB(0xb66a008e4788cbcd), CNST_LIMB(0x6851455acd400000), CNST_LIMB(0x3a1e3971e008995d) },
+ /* 53 */ { 11, CNST_LIMB(0x2cb17fea7ad7e332), CNST_LIMB(0xb74b1fd64e0753c6), CNST_LIMB(0x80a23b117c8feb6d), CNST_LIMB(0xfd7a462344ffce25) },
+ /* 54 */ { 11, CNST_LIMB(0x2c7be2b0cfa1ba50), CNST_LIMB(0xb82809d5be7072db), CNST_LIMB(0x9dff7d32d5dc1800), CNST_LIMB(0x9eca40b40ebcef8a) },
+ /* 55 */ { 11, CNST_LIMB(0x2c47bddba92d7463), CNST_LIMB(0xb900e6160002ccfe), CNST_LIMB(0xc155af6faeffe6a7), CNST_LIMB(0x52fa161a4a48e43d) },
+ /* 56 */ { 11, CNST_LIMB(0x2c14fffcaa8b131e), CNST_LIMB(0xb9d5d9fd5010b366), CNST_LIMB(0xebb7392e00000000), CNST_LIMB(0x1607a2cbacf930c1) },
+ /* 57 */ { 10, CNST_LIMB(0x2be398c3a38be053), CNST_LIMB(0xbaa708f58014d37c), CNST_LIMB(0x50633659656d971), CNST_LIMB(0x97a014f8e3be55f1) },
+ /* 58 */ { 10, CNST_LIMB(0x2bb378e758451068), CNST_LIMB(0xbb74948f5532da4b), CNST_LIMB(0x5fa8624c7fba400), CNST_LIMB(0x568df8b76cbf212c) },
+ /* 59 */ { 10, CNST_LIMB(0x2b8492108be5e5f7), CNST_LIMB(0xbc3e9ca2e1a05533), CNST_LIMB(0x717d9faa73c5679), CNST_LIMB(0x20ba7c4b4e6ef492) },
+ /* 60 */ { 10, CNST_LIMB(0x2b56d6c70d55481b), CNST_LIMB(0xbd053f6d26089673), CNST_LIMB(0x86430aac6100000), CNST_LIMB(0xe81ee46b9ef492f5) },
+ /* 61 */ { 10, CNST_LIMB(0x2b2a3a608c72ddd5), CNST_LIMB(0xbdc899ab3ff56c5e), CNST_LIMB(0x9e64d9944b57f29), CNST_LIMB(0x9dc0d10d51940416) },
+ /* 62 */ { 10, CNST_LIMB(0x2afeb0f1060c7e41), CNST_LIMB(0xbe88c6b3626a72aa), CNST_LIMB(0xba5ca5392cb0400), CNST_LIMB(0x5fa8ed2f450272a5) },
+ /* 63 */ { 10, CNST_LIMB(0x2ad42f3c9aca595c), CNST_LIMB(0xbf45e08bcf06554e), CNST_LIMB(0xdab2ce1d022cd81), CNST_LIMB(0x2ba9eb8c5e04e641) },
+ /* 64 */ { 10, CNST_LIMB(0x2aaaaaaaaaaaaaaa), CNST_LIMB(0xbfffffffffffffff), CNST_LIMB(0x6), CNST_LIMB(0x0) },
+ /* 65 */ { 10, CNST_LIMB(0x2a82193a13425883), CNST_LIMB(0xc0b73cb42e16914c), CNST_LIMB(0x12aeed5fd3e2d281), CNST_LIMB(0xb67759cc00287bf1) },
+ /* 66 */ { 10, CNST_LIMB(0x2a5a717672f66450), CNST_LIMB(0xc16bad3758efd873), CNST_LIMB(0x15c3da1572d50400), CNST_LIMB(0x78621feeb7f4ed33) },
+ /* 67 */ { 10, CNST_LIMB(0x2a33aa6e56d9c71c), CNST_LIMB(0xc21d6713f453f356), CNST_LIMB(0x194c05534f75ee29), CNST_LIMB(0x43d55b5f72943bc0) },
+ /* 68 */ { 10, CNST_LIMB(0x2a0dbbaa3bdfcea4), CNST_LIMB(0xc2cc7edf592262cf), CNST_LIMB(0x1d56299ada100000), CNST_LIMB(0x173decb64d1d4409) },
+ /* 69 */ { 10, CNST_LIMB(0x29e89d244eb4bfaf), CNST_LIMB(0xc379084815b5774c), CNST_LIMB(0x21f2a089a4ff4f79), CNST_LIMB(0xe29fb54fd6b6074f) },
+ /* 70 */ { 10, CNST_LIMB(0x29c44740d7db51e6), CNST_LIMB(0xc4231623369e78e5), CNST_LIMB(0x2733896c68d9a400), CNST_LIMB(0xa1f1f5c210d54e62) },
+ /* 71 */ { 10, CNST_LIMB(0x29a0b2c743b14d74), CNST_LIMB(0xc4caba789e2b8687), CNST_LIMB(0x2d2cf2c33b533c71), CNST_LIMB(0x6aac7f9bfafd57b2) },
+ /* 72 */ { 10, CNST_LIMB(0x297dd8dbb7c22a2d), CNST_LIMB(0xc570068e7ef5a1e7), CNST_LIMB(0x33f506e440000000), CNST_LIMB(0x3b563c2478b72ee2) },
+ /* 73 */ { 10, CNST_LIMB(0x295bb2f9285c8c1b), CNST_LIMB(0xc6130af40bc0ecbf), CNST_LIMB(0x3ba43bec1d062211), CNST_LIMB(0x12b536b574e92d1b) },
+ /* 74 */ { 10, CNST_LIMB(0x293a3aebe2be1c92), CNST_LIMB(0xc6b3d78b6d3b24fb), CNST_LIMB(0x4455872d8fd4e400), CNST_LIMB(0xdf86c03020404fa5) },
+ /* 75 */ { 10, CNST_LIMB(0x29196acc815ebd9f), CNST_LIMB(0xc7527b930c965bf2), CNST_LIMB(0x4e2694539f2f6c59), CNST_LIMB(0xa34adf02234eea8e) },
+ /* 76 */ { 10, CNST_LIMB(0x28f93cfb40f5c22a), CNST_LIMB(0xc7ef05ae409a0288), CNST_LIMB(0x5938006c18900000), CNST_LIMB(0x6f46eb8574eb59dd) },
+ /* 77 */ { 10, CNST_LIMB(0x28d9ac1badc64117), CNST_LIMB(0xc88983ed6985bae5), CNST_LIMB(0x65ad9912474aa649), CNST_LIMB(0x42459b481df47cec) },
+ /* 78 */ { 10, CNST_LIMB(0x28bab310a196b478), CNST_LIMB(0xc92203d587039cc1), CNST_LIMB(0x73ae9ff4241ec400), CNST_LIMB(0x1b424b95d80ca505) },
+ /* 79 */ { 10, CNST_LIMB(0x289c4cf88b774469), CNST_LIMB(0xc9b892675266f66c), CNST_LIMB(0x836612ee9c4ce1e1), CNST_LIMB(0xf2c1b982203a0dac) },
+ /* 80 */ { 10, CNST_LIMB(0x287e7529fb244e91), CNST_LIMB(0xca4d3c25e68dc57f), CNST_LIMB(0x9502f90000000000), CNST_LIMB(0xb7cdfd9d7bdbab7d) },
+ /* 81 */ { 10, CNST_LIMB(0x286127306a6a7a53), CNST_LIMB(0xcae00d1cfdeb43cf), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) },
+ /* 82 */ { 10, CNST_LIMB(0x28445ec93f792b1e), CNST_LIMB(0xcb7110e6ce866f2b), CNST_LIMB(0xbebf59a07dab4400), CNST_LIMB(0x57931eeaf85cf64f) },
+ /* 83 */ { 10, CNST_LIMB(0x282817e1038950fa), CNST_LIMB(0xcc0052b18b0e2a19), CNST_LIMB(0xd7540d4093bc3109), CNST_LIMB(0x305a944507c82f47) },
+ /* 84 */ { 10, CNST_LIMB(0x280c4e90c9ab1f45), CNST_LIMB(0xcc8ddd448f8b845a), CNST_LIMB(0xf2b96616f1900000), CNST_LIMB(0xe007ccc9c22781a) },
+ /* 85 */ { 9, CNST_LIMB(0x27f0ff1bc1ee87cd), CNST_LIMB(0xcd19bb053fb0284e), CNST_LIMB(0x336de62af2bca35), CNST_LIMB(0x3e92c42e000eeed4) },
+ /* 86 */ { 9, CNST_LIMB(0x27d625ecf571c340), CNST_LIMB(0xcda3f5fb9c415052), CNST_LIMB(0x39235ec33d49600), CNST_LIMB(0x1ebe59130db2795e) },
+ /* 87 */ { 9, CNST_LIMB(0x27bbbf95282fcd45), CNST_LIMB(0xce2c97d694adab3f), CNST_LIMB(0x3f674e539585a17), CNST_LIMB(0x268859e90f51b89) },
+ /* 88 */ { 9, CNST_LIMB(0x27a1c8c8ddaf84da), CNST_LIMB(0xceb3a9f01975077f), CNST_LIMB(0x4645b6958000000), CNST_LIMB(0xd24cde0463108cfa) },
+ /* 89 */ { 9, CNST_LIMB(0x27883e5e7df3f518), CNST_LIMB(0xcf393550f3aa6906), CNST_LIMB(0x4dcb74afbc49c19), CNST_LIMB(0xa536009f37adc383) },
+ /* 90 */ { 9, CNST_LIMB(0x276f1d4c9847e90e), CNST_LIMB(0xcfbd42b465836767), CNST_LIMB(0x56064e1d18d9a00), CNST_LIMB(0x7cea06ce1c9ace10) },
+ /* 91 */ { 9, CNST_LIMB(0x275662a841b30191), CNST_LIMB(0xd03fda8b97997f33), CNST_LIMB(0x5f04fe2cd8a39fb), CNST_LIMB(0x58db032e72e8ba43) },
+ /* 92 */ { 9, CNST_LIMB(0x273e0ba38d15a47b), CNST_LIMB(0xd0c10500d63aa658), CNST_LIMB(0x68d74421f5c0000), CNST_LIMB(0x388cc17cae105447) },
+ /* 93 */ { 9, CNST_LIMB(0x2726158c1b13cf03), CNST_LIMB(0xd140c9faa1e5439e), CNST_LIMB(0x738df1f6ab4827d), CNST_LIMB(0x1b92672857620ce0) },
+ /* 94 */ { 9, CNST_LIMB(0x270e7dc9c01d8e9b), CNST_LIMB(0xd1bf311e95d00de3), CNST_LIMB(0x7f3afbc9cfb5e00), CNST_LIMB(0x18c6a9575c2ade4) },
+ /* 95 */ { 9, CNST_LIMB(0x26f741dd3f070d61), CNST_LIMB(0xd23c41d42727c808), CNST_LIMB(0x8bf187fba88f35f), CNST_LIMB(0xd44da7da8e44b24f) },
+ /* 96 */ { 9, CNST_LIMB(0x26e05f5f16c2159e), CNST_LIMB(0xd2b803473f7ad0f3), CNST_LIMB(0x99c600000000000), CNST_LIMB(0xaa2f78f1b4cc6794) },
+ /* 97 */ { 9, CNST_LIMB(0x26c9d3fe61e80598), CNST_LIMB(0xd3327c6ab49ca6c8), CNST_LIMB(0xa8ce21eb6531361), CNST_LIMB(0x843c067d091ee4cc) },
+ /* 98 */ { 9, CNST_LIMB(0x26b39d7fc6ddab08), CNST_LIMB(0xd3abb3faa02166cc), CNST_LIMB(0xb92112c1a0b6200), CNST_LIMB(0x62005e1e913356e3) },
+ /* 99 */ { 9, CNST_LIMB(0x269db9bc7772a5cc), CNST_LIMB(0xd423b07e986aa967), CNST_LIMB(0xcad7718b8747c43), CNST_LIMB(0x4316eed01dedd518) },
+ /* 100 */ { 9, CNST_LIMB(0x268826a13ef3fde6), CNST_LIMB(0xd49a784bcd1b8afe), CNST_LIMB(0xde0b6b3a7640000), CNST_LIMB(0x2725dd1d243aba0e) },
+ /* 101 */ { 9, CNST_LIMB(0x2672e22d9dbdbd9f), CNST_LIMB(0xd510118708a8f8dd), CNST_LIMB(0xf2d8cf5fe6d74c5), CNST_LIMB(0xddd9057c24cb54f) },
+ /* 102 */ { 9, CNST_LIMB(0x265dea72f169cc99), CNST_LIMB(0xd5848226989d33c3), CNST_LIMB(0x1095d25bfa712600), CNST_LIMB(0xedeee175a736d2a1) },
+ /* 103 */ { 9, CNST_LIMB(0x26493d93a8cb2514), CNST_LIMB(0xd5f7cff41e09aeb8), CNST_LIMB(0x121b7c4c3698faa7), CNST_LIMB(0xc4699f3df8b6b328) },
+ /* 104 */ { 9, CNST_LIMB(0x2634d9c282f3ef82), CNST_LIMB(0xd66a008e4788cbcd), CNST_LIMB(0x13c09e8d68000000), CNST_LIMB(0x9ebbe7d859cb5a7c) },
+ /* 105 */ { 9, CNST_LIMB(0x2620bd41d8933adc), CNST_LIMB(0xd6db196a761949d9), CNST_LIMB(0x15876ccb0b709ca9), CNST_LIMB(0x7c828b9887eb2179) },
+ /* 106 */ { 9, CNST_LIMB(0x260ce662ef04088a), CNST_LIMB(0xd74b1fd64e0753c6), CNST_LIMB(0x17723c2976da2a00), CNST_LIMB(0x5d652ab99001adcf) },
+ /* 107 */ { 9, CNST_LIMB(0x25f95385547353fd), CNST_LIMB(0xd7ba18f93502e409), CNST_LIMB(0x198384e9c259048b), CNST_LIMB(0x4114f1754e5d7b32) },
+ /* 108 */ { 9, CNST_LIMB(0x25e60316448db8e1), CNST_LIMB(0xd82809d5be7072db), CNST_LIMB(0x1bbde41dfeec0000), CNST_LIMB(0x274b7c902f7e0188) },
+ /* 109 */ { 9, CNST_LIMB(0x25d2f390152f74f5), CNST_LIMB(0xd894f74b06ef8b40), CNST_LIMB(0x1e241d6e3337910d), CNST_LIMB(0xfc9e0fbb32e210c) },
+ /* 110 */ { 9, CNST_LIMB(0x25c02379aa9ad043), CNST_LIMB(0xd900e6160002ccfe), CNST_LIMB(0x20b91cee9901ee00), CNST_LIMB(0xf4afa3e594f8ea1f) },
+ /* 111 */ { 9, CNST_LIMB(0x25ad9165f2c18907), CNST_LIMB(0xd96bdad2acb5f5ef), CNST_LIMB(0x237ff9079863dfef), CNST_LIMB(0xcd85c32e9e4437b0) },
+ /* 112 */ { 9, CNST_LIMB(0x259b3bf36735c90c), CNST_LIMB(0xd9d5d9fd5010b366), CNST_LIMB(0x267bf47000000000), CNST_LIMB(0xa9bbb147e0dd92a8) },
+ /* 113 */ { 9, CNST_LIMB(0x258921cb955e7693), CNST_LIMB(0xda3ee7f38e181ed0), CNST_LIMB(0x29b08039fbeda7f1), CNST_LIMB(0x8900447b70e8eb82) },
+ /* 114 */ { 9, CNST_LIMB(0x257741a2ac9170af), CNST_LIMB(0xdaa708f58014d37c), CNST_LIMB(0x2d213df34f65f200), CNST_LIMB(0x6b0a92adaad5848a) },
+ /* 115 */ { 9, CNST_LIMB(0x25659a3711bc827d), CNST_LIMB(0xdb0e4126bcc86bd7), CNST_LIMB(0x30d201d957a7c2d3), CNST_LIMB(0x4f990ad8740f0ee5) },
+ /* 116 */ { 9, CNST_LIMB(0x25542a50f84b9c39), CNST_LIMB(0xdb74948f5532da4b), CNST_LIMB(0x34c6d52160f40000), CNST_LIMB(0x3670a9663a8d3610) },
+ /* 117 */ { 9, CNST_LIMB(0x2542f0c20000377d), CNST_LIMB(0xdbda071cc67e6db5), CNST_LIMB(0x3903f855d8f4c755), CNST_LIMB(0x1f5c44188057be3c) },
+ /* 118 */ { 9, CNST_LIMB(0x2531ec64d772bd64), CNST_LIMB(0xdc3e9ca2e1a05533), CNST_LIMB(0x3d8de5c8ec59b600), CNST_LIMB(0xa2bea956c4e4977) },
+ /* 119 */ { 9, CNST_LIMB(0x25211c1ce2fb5a6e), CNST_LIMB(0xdca258dca9331635), CNST_LIMB(0x4269541d1ff01337), CNST_LIMB(0xed68b23033c3637e) },
+ /* 120 */ { 9, CNST_LIMB(0x25107ed5e7c3ec3b), CNST_LIMB(0xdd053f6d26089673), CNST_LIMB(0x479b38e478000000), CNST_LIMB(0xc99cf624e50549c5) },
+ /* 121 */ { 9, CNST_LIMB(0x25001383bac8a744), CNST_LIMB(0xdd6753e032ea0efe), CNST_LIMB(0x4d28cb56c33fa539), CNST_LIMB(0xa8adf7ae45e7577b) },
+ /* 122 */ { 9, CNST_LIMB(0x24efd921f390bce3), CNST_LIMB(0xddc899ab3ff56c5e), CNST_LIMB(0x5317871fa13aba00), CNST_LIMB(0x8a5bc740b1c113e5) },
+ /* 123 */ { 9, CNST_LIMB(0x24dfceb3a26bb203), CNST_LIMB(0xde29142e0e01401f), CNST_LIMB(0x596d2f44de9fa71b), CNST_LIMB(0x6e6c7efb81cfbb9b) },
+ /* 124 */ { 9, CNST_LIMB(0x24cff3430a0341a7), CNST_LIMB(0xde88c6b3626a72aa), CNST_LIMB(0x602fd125c47c0000), CNST_LIMB(0x54aba5c5cada5f10) },
+ /* 125 */ { 9, CNST_LIMB(0x24c045e15c149931), CNST_LIMB(0xdee7b471b3a9507d), CNST_LIMB(0x6765c793fa10079d), CNST_LIMB(0x3ce9a36f23c0fc90) },
+ /* 126 */ { 9, CNST_LIMB(0x24b0c5a679267ae2), CNST_LIMB(0xdf45e08bcf06554e), CNST_LIMB(0x6f15be069b847e00), CNST_LIMB(0x26fb43de2c8cd2a8) },
+ /* 127 */ { 9, CNST_LIMB(0x24a171b0b31461c8), CNST_LIMB(0xdfa34e1177c23362), CNST_LIMB(0x7746b3e82a77047f), CNST_LIMB(0x12b94793db8486a1) },
+ /* 128 */ { 9, CNST_LIMB(0x2492492492492492), CNST_LIMB(0xdfffffffffffffff), CNST_LIMB(0x7), CNST_LIMB(0x0) },
+ /* 129 */ { 9, CNST_LIMB(0x24834b2c9d85cdfe), CNST_LIMB(0xe05bf942dbbc2145), CNST_LIMB(0x894953f7ea890481), CNST_LIMB(0xdd5deca404c0156d) },
+ /* 130 */ { 9, CNST_LIMB(0x247476f924137501), CNST_LIMB(0xe0b73cb42e16914c), CNST_LIMB(0x932abffea4848200), CNST_LIMB(0xbd51373330291de0) },
+ /* 131 */ { 9, CNST_LIMB(0x2465cbc00a40cec0), CNST_LIMB(0xe111cd1d5133412e), CNST_LIMB(0x9dacb687d3d6a163), CNST_LIMB(0x9fa4025d66f23085) },
+ /* 132 */ { 9, CNST_LIMB(0x245748bc980e0427), CNST_LIMB(0xe16bad3758efd873), CNST_LIMB(0xa8d8102a44840000), CNST_LIMB(0x842530ee2db4949d) },
+ /* 133 */ { 9, CNST_LIMB(0x2448ed2f49eb0633), CNST_LIMB(0xe1c4dfab90aab5ef), CNST_LIMB(0xb4b60f9d140541e5), CNST_LIMB(0x6aa7f2766b03dc25) },
+ /* 134 */ { 9, CNST_LIMB(0x243ab85da36e3167), CNST_LIMB(0xe21d6713f453f356), CNST_LIMB(0xc15065d4856e4600), CNST_LIMB(0x53035ba7ebf32e8d) },
+ /* 135 */ { 9, CNST_LIMB(0x242ca99203ea8c18), CNST_LIMB(0xe27545fba4fe385a), CNST_LIMB(0xceb1363f396d23c7), CNST_LIMB(0x3d12091fc9fb4914) },
+ /* 136 */ { 9, CNST_LIMB(0x241ec01b7cce4ea0), CNST_LIMB(0xe2cc7edf592262cf), CNST_LIMB(0xdce31b2488000000), CNST_LIMB(0x28b1cb81b1ef1849) },
+ /* 137 */ { 9, CNST_LIMB(0x2410fb4da9b3b0fc), CNST_LIMB(0xe323142dc8c66b55), CNST_LIMB(0xebf12a24bca135c9), CNST_LIMB(0x15c35be67ae3e2c9) },
+ /* 138 */ { 9, CNST_LIMB(0x24035a808a0f315e), CNST_LIMB(0xe379084815b5774c), CNST_LIMB(0xfbe6f8dbf88f4a00), CNST_LIMB(0x42a17bd09be1ff0) },
+ /* 139 */ { 8, CNST_LIMB(0x23f5dd105c67ab9d), CNST_LIMB(0xe3ce5d822ff4b643), CNST_LIMB(0x1ef156c084ce761), CNST_LIMB(0x8bf461f03cf0bbf) },
+ /* 140 */ { 8, CNST_LIMB(0x23e8825d7b05abb1), CNST_LIMB(0xe4231623369e78e5), CNST_LIMB(0x20c4e3b94a10000), CNST_LIMB(0xf3fbb43f68a32d05) },
+ /* 141 */ { 8, CNST_LIMB(0x23db49cc3a0866fe), CNST_LIMB(0xe4773465d54aded7), CNST_LIMB(0x22b0695a08ba421), CNST_LIMB(0xd84f44c48564dc19) },
+ /* 142 */ { 8, CNST_LIMB(0x23ce32c4c6cfb9f5), CNST_LIMB(0xe4caba789e2b8687), CNST_LIMB(0x24b4f35d7a4c100), CNST_LIMB(0xbe58ebcce7956abe) },
+ /* 143 */ { 8, CNST_LIMB(0x23c13cb308ab6ab7), CNST_LIMB(0xe51daa7e60fdd34c), CNST_LIMB(0x26d397284975781), CNST_LIMB(0xa5fac463c7c134b7) },
+ /* 144 */ { 8, CNST_LIMB(0x23b4670682c0c709), CNST_LIMB(0xe570068e7ef5a1e7), CNST_LIMB(0x290d74100000000), CNST_LIMB(0x8f19241e28c7d757) },
+ /* 145 */ { 8, CNST_LIMB(0x23a7b13237187c8b), CNST_LIMB(0xe5c1d0b53bc09fca), CNST_LIMB(0x2b63b3a37866081), CNST_LIMB(0x799a6d046c0ae1ae) },
+ /* 146 */ { 8, CNST_LIMB(0x239b1aac8ac74728), CNST_LIMB(0xe6130af40bc0ecbf), CNST_LIMB(0x2dd789f4d894100), CNST_LIMB(0x6566e37d746a9e40) },
+ /* 147 */ { 8, CNST_LIMB(0x238ea2ef2b24c379), CNST_LIMB(0xe663b741df9c37c0), CNST_LIMB(0x306a35e51b58721), CNST_LIMB(0x526887dbfb5f788f) },
+ /* 148 */ { 8, CNST_LIMB(0x23824976f4045a26), CNST_LIMB(0xe6b3d78b6d3b24fb), CNST_LIMB(0x331d01712e10000), CNST_LIMB(0x408af3382b8efd3d) },
+ /* 149 */ { 8, CNST_LIMB(0x23760dc3d6e4d729), CNST_LIMB(0xe7036db376537b90), CNST_LIMB(0x35f14200a827c61), CNST_LIMB(0x2fbb374806ec05f1) },
+ /* 150 */ { 8, CNST_LIMB(0x2369ef58c30bd43e), CNST_LIMB(0xe7527b930c965bf2), CNST_LIMB(0x38e858b62216100), CNST_LIMB(0x1fe7c0f0afce87fe) },
+ /* 151 */ { 8, CNST_LIMB(0x235dedbb8e82aa1c), CNST_LIMB(0xe7a102f9d39a9331), CNST_LIMB(0x3c03b2c13176a41), CNST_LIMB(0x11003d517540d32e) },
+ /* 152 */ { 8, CNST_LIMB(0x23520874dfeb1ffd), CNST_LIMB(0xe7ef05ae409a0288), CNST_LIMB(0x3f44c9b21000000), CNST_LIMB(0x2f5810f98eff0dc) },
+ /* 153 */ { 8, CNST_LIMB(0x23463f1019228dd7), CNST_LIMB(0xe83c856dd81804b7), CNST_LIMB(0x42ad23cef3113c1), CNST_LIMB(0xeb72e35e7840d910) },
+ /* 154 */ { 8, CNST_LIMB(0x233a911b42aa9b3c), CNST_LIMB(0xe88983ed6985bae5), CNST_LIMB(0x463e546b19a2100), CNST_LIMB(0xd27de19593dc3614) },
+ /* 155 */ { 8, CNST_LIMB(0x232efe26f7cf33f9), CNST_LIMB(0xe8d602d948f83829), CNST_LIMB(0x49f9fc3f96684e1), CNST_LIMB(0xbaf391fd3e5e6fc2) },
+ /* 156 */ { 8, CNST_LIMB(0x232385c65381b485), CNST_LIMB(0xe92203d587039cc1), CNST_LIMB(0x4de1c9c5dc10000), CNST_LIMB(0xa4bd38c55228c81d) },
+ /* 157 */ { 8, CNST_LIMB(0x2318278edde1b39b), CNST_LIMB(0xe96d887e26cd57b7), CNST_LIMB(0x51f77994116d2a1), CNST_LIMB(0x8fc5a8de8e1de782) },
+ /* 158 */ { 8, CNST_LIMB(0x230ce3187a6c2be9), CNST_LIMB(0xe9b892675266f66c), CNST_LIMB(0x563cd6bb3398100), CNST_LIMB(0x7bf9265bea9d3a3b) },
+ /* 159 */ { 8, CNST_LIMB(0x2301b7fd56ca21bb), CNST_LIMB(0xea03231d8d8224ba), CNST_LIMB(0x5ab3bb270beeb01), CNST_LIMB(0x69454b325983dccd) },
+ /* 160 */ { 8, CNST_LIMB(0x22f6a5d9da38341c), CNST_LIMB(0xea4d3c25e68dc57f), CNST_LIMB(0x5f5e10000000000), CNST_LIMB(0x5798ee2308c39df9) },
+ /* 161 */ { 8, CNST_LIMB(0x22ebac4c9580d89f), CNST_LIMB(0xea96defe264b59be), CNST_LIMB(0x643dce0ec16f501), CNST_LIMB(0x46e40ba0fa66a753) },
+ /* 162 */ { 8, CNST_LIMB(0x22e0caf633834beb), CNST_LIMB(0xeae00d1cfdeb43cf), CNST_LIMB(0x6954fe21e3e8100), CNST_LIMB(0x3717b0870b0db3a7) },
+ /* 163 */ { 8, CNST_LIMB(0x22d601796a418886), CNST_LIMB(0xeb28c7f233bdd372), CNST_LIMB(0x6ea5b9755f440a1), CNST_LIMB(0x2825e6775d11cdeb) },
+ /* 164 */ { 8, CNST_LIMB(0x22cb4f7aec6fd8b4), CNST_LIMB(0xeb7110e6ce866f2b), CNST_LIMB(0x74322a1c0410000), CNST_LIMB(0x1a01a1c09d1b4dac) },
+ /* 165 */ { 8, CNST_LIMB(0x22c0b4a15b80d83e), CNST_LIMB(0xebb8e95d3f7d9df2), CNST_LIMB(0x79fc8b6ae8a46e1), CNST_LIMB(0xc9eb0a8bebc8f3e) },
+ /* 166 */ { 8, CNST_LIMB(0x22b630953a28f77a), CNST_LIMB(0xec0052b18b0e2a19), CNST_LIMB(0x80072a66d512100), CNST_LIMB(0xffe357ff59e6a004) },
+ /* 167 */ { 8, CNST_LIMB(0x22abc300df54ca7c), CNST_LIMB(0xec474e39705912d2), CNST_LIMB(0x86546633b42b9c1), CNST_LIMB(0xe7dfd1be05fa61a8) },
+ /* 168 */ { 8, CNST_LIMB(0x22a16b90698da5d2), CNST_LIMB(0xec8ddd448f8b845a), CNST_LIMB(0x8ce6b0861000000), CNST_LIMB(0xd11ed6fc78f760e5) },
+ /* 169 */ { 8, CNST_LIMB(0x229729f1b2c83ded), CNST_LIMB(0xecd4011c8f11979a), CNST_LIMB(0x93c08e16a022441), CNST_LIMB(0xbb8db609dd29ebfe) },
+ /* 170 */ { 8, CNST_LIMB(0x228cfdd444992f78), CNST_LIMB(0xed19bb053fb0284e), CNST_LIMB(0x9ae49717f026100), CNST_LIMB(0xa71aec8d1813d532) },
+ /* 171 */ { 8, CNST_LIMB(0x2282e6e94ccb8588), CNST_LIMB(0xed5f0c3cbf8fa470), CNST_LIMB(0xa25577ae24c1a61), CNST_LIMB(0x93b612a9f20fbc02) },
+ /* 172 */ { 8, CNST_LIMB(0x2278e4e392557ecf), CNST_LIMB(0xeda3f5fb9c415052), CNST_LIMB(0xaa15f068e610000), CNST_LIMB(0x814fc7b19a67d317) },
+ /* 173 */ { 8, CNST_LIMB(0x226ef7776aa7fd29), CNST_LIMB(0xede87974f3c81855), CNST_LIMB(0xb228d6bf7577921), CNST_LIMB(0x6fd9a03f2e0a4b7c) },
+ /* 174 */ { 8, CNST_LIMB(0x22651e5aaf5532d0), CNST_LIMB(0xee2c97d694adab3f), CNST_LIMB(0xba91158ef5c4100), CNST_LIMB(0x5f4615a38d0d316e) },
+ /* 175 */ { 8, CNST_LIMB(0x225b5944b40b4694), CNST_LIMB(0xee7052491d2c3e64), CNST_LIMB(0xc351ad9aec0b681), CNST_LIMB(0x4f8876863479a286) },
+ /* 176 */ { 8, CNST_LIMB(0x2251a7ee3cdfcca5), CNST_LIMB(0xeeb3a9f01975077f), CNST_LIMB(0xcc6db6100000000), CNST_LIMB(0x4094d8a3041b60eb) },
+ /* 177 */ { 8, CNST_LIMB(0x22480a1174e913d9), CNST_LIMB(0xeef69fea211b2627), CNST_LIMB(0xd5e85d09025c181), CNST_LIMB(0x32600b8ed883a09b) },
+ /* 178 */ { 8, CNST_LIMB(0x223e7f69e522683c), CNST_LIMB(0xef393550f3aa6906), CNST_LIMB(0xdfc4e816401c100), CNST_LIMB(0x24df8c6eb4b6d1f1) },
+ /* 179 */ { 8, CNST_LIMB(0x223507b46b988abe), CNST_LIMB(0xef7b6b399471103e), CNST_LIMB(0xea06b4c72947221), CNST_LIMB(0x18097a8ee151acef) },
+ /* 180 */ { 8, CNST_LIMB(0x222ba2af32dbbb9e), CNST_LIMB(0xefbd42b465836767), CNST_LIMB(0xf4b139365210000), CNST_LIMB(0xbd48cc8ec1cd8e3) },
+ /* 181 */ { 8, CNST_LIMB(0x22225019a9b4d16c), CNST_LIMB(0xeffebccd41ffcd5c), CNST_LIMB(0xffc80497d520961), CNST_LIMB(0x3807a8d67485fb) },
+ /* 182 */ { 8, CNST_LIMB(0x22190fb47b1af172), CNST_LIMB(0xf03fda8b97997f33), CNST_LIMB(0x10b4ebfca1dee100), CNST_LIMB(0xea5768860b62e8d8) },
+ /* 183 */ { 8, CNST_LIMB(0x220fe14186679801), CNST_LIMB(0xf0809cf27f703d52), CNST_LIMB(0x117492de921fc141), CNST_LIMB(0xd54faf5b635c5005) },
+ /* 184 */ { 8, CNST_LIMB(0x2206c483d7c6b786), CNST_LIMB(0xf0c10500d63aa658), CNST_LIMB(0x123bb2ce41000000), CNST_LIMB(0xc14a56233a377926) },
+ /* 185 */ { 8, CNST_LIMB(0x21fdb93fa0e0ccc5), CNST_LIMB(0xf10113b153c8ea7b), CNST_LIMB(0x130a8b6157bdecc1), CNST_LIMB(0xae39a88db7cd329f) },
+ /* 186 */ { 8, CNST_LIMB(0x21f4bf3a31bcdcaa), CNST_LIMB(0xf140c9faa1e5439e), CNST_LIMB(0x13e15dede0e8a100), CNST_LIMB(0x9c10bde69efa7ab6) },
+ /* 187 */ { 8, CNST_LIMB(0x21ebd639f1d86584), CNST_LIMB(0xf18028cf72976a4e), CNST_LIMB(0x14c06d941c0ca7e1), CNST_LIMB(0x8ac36c42a2836497) },
+ /* 188 */ { 8, CNST_LIMB(0x21e2fe06597361a6), CNST_LIMB(0xf1bf311e95d00de3), CNST_LIMB(0x15a7ff487a810000), CNST_LIMB(0x7a463c8b84f5ef67) },
+ /* 189 */ { 8, CNST_LIMB(0x21da3667eb0e8ccb), CNST_LIMB(0xf1fde3d30e812642), CNST_LIMB(0x169859ddc5c697a1), CNST_LIMB(0x6a8e5f5ad090fd4b) },
+ /* 190 */ { 8, CNST_LIMB(0x21d17f282d1a300e), CNST_LIMB(0xf23c41d42727c808), CNST_LIMB(0x1791c60f6fed0100), CNST_LIMB(0x5b91a2943596fc56) },
+ /* 191 */ { 8, CNST_LIMB(0x21c8d811a3d3c9e1), CNST_LIMB(0xf27a4c0585cbf805), CNST_LIMB(0x18948e8c0e6fba01), CNST_LIMB(0x4d4667b1c468e8f0) },
+ /* 192 */ { 8, CNST_LIMB(0x21c040efcb50f858), CNST_LIMB(0xf2b803473f7ad0f3), CNST_LIMB(0x19a1000000000000), CNST_LIMB(0x3fa39ab547994daf) },
+ /* 193 */ { 8, CNST_LIMB(0x21b7b98f11b61c1a), CNST_LIMB(0xf2f56875eb3f2614), CNST_LIMB(0x1ab769203dafc601), CNST_LIMB(0x32a0a9b2faee1e2a) },
+ /* 194 */ { 8, CNST_LIMB(0x21af41bcd19739ba), CNST_LIMB(0xf3327c6ab49ca6c8), CNST_LIMB(0x1bd81ab557f30100), CNST_LIMB(0x26357ceac0e96962) },
+ /* 195 */ { 8, CNST_LIMB(0x21a6d9474c81adf0), CNST_LIMB(0xf36f3ffb6d916240), CNST_LIMB(0x1d0367a69fed1ba1), CNST_LIMB(0x1a5a6f65caa5859e) },
+ /* 196 */ { 8, CNST_LIMB(0x219e7ffda5ad572a), CNST_LIMB(0xf3abb3faa02166cc), CNST_LIMB(0x1e39a5057d810000), CNST_LIMB(0xf08480f672b4e86) },
+ /* 197 */ { 8, CNST_LIMB(0x219635afdcd3e46d), CNST_LIMB(0xf3e7d9379f70166a), CNST_LIMB(0x1f7b2a18f29ac3e1), CNST_LIMB(0x4383340615612ca) },
+ /* 198 */ { 8, CNST_LIMB(0x218dfa2ec92d0643), CNST_LIMB(0xf423b07e986aa967), CNST_LIMB(0x20c850694c2aa100), CNST_LIMB(0xf3c77969ee4be5a2) },
+ /* 199 */ { 8, CNST_LIMB(0x2185cd4c148e4ae2), CNST_LIMB(0xf45f3a98a20738a4), CNST_LIMB(0x222173cc014980c1), CNST_LIMB(0xe00993cc187c5ec9) },
+ /* 200 */ { 8, CNST_LIMB(0x217daeda36ad7a5c), CNST_LIMB(0xf49a784bcd1b8afe), CNST_LIMB(0x2386f26fc1000000), CNST_LIMB(0xcd2b297d889bc2b6) },
+ /* 201 */ { 8, CNST_LIMB(0x21759eac708452fe), CNST_LIMB(0xf4d56a5b33cec44a), CNST_LIMB(0x24f92ce8af296d41), CNST_LIMB(0xbb214d5064862b22) },
+ /* 202 */ { 8, CNST_LIMB(0x216d9c96c7d490d4), CNST_LIMB(0xf510118708a8f8dd), CNST_LIMB(0x2678863cd0ece100), CNST_LIMB(0xa9e1a7ca7ea10e20) },
+ /* 203 */ { 8, CNST_LIMB(0x2165a86e02cb358c), CNST_LIMB(0xf54a6e8ca5438db1), CNST_LIMB(0x280563f0a9472d61), CNST_LIMB(0x99626e72b39ea0cf) },
+ /* 204 */ { 8, CNST_LIMB(0x215dc207a3c20fdf), CNST_LIMB(0xf5848226989d33c3), CNST_LIMB(0x29a02e1406210000), CNST_LIMB(0x899a5ba9c13fafd9) },
+ /* 205 */ { 8, CNST_LIMB(0x2155e939e51e8b37), CNST_LIMB(0xf5be4d0cb51434aa), CNST_LIMB(0x2b494f4efe6d2e21), CNST_LIMB(0x7a80a705391e96ff) },
+ /* 206 */ { 8, CNST_LIMB(0x214e1ddbb54cd933), CNST_LIMB(0xf5f7cff41e09aeb8), CNST_LIMB(0x2d0134ef21cbc100), CNST_LIMB(0x6c0cfe23de23042a) },
+ /* 207 */ { 8, CNST_LIMB(0x21465fc4b2d68f98), CNST_LIMB(0xf6310b8f55304840), CNST_LIMB(0x2ec84ef4da2ef581), CNST_LIMB(0x5e377df359c944dd) },
+ /* 208 */ { 8, CNST_LIMB(0x213eaecd2893dd60), CNST_LIMB(0xf66a008e4788cbcd), CNST_LIMB(0x309f102100000000), CNST_LIMB(0x50f8ac5fc8f53985) },
+ /* 209 */ { 8, CNST_LIMB(0x21370ace09f681c6), CNST_LIMB(0xf6a2af9e5a0f0a08), CNST_LIMB(0x3285ee02a1420281), CNST_LIMB(0x44497266278e35b7) },
+ /* 210 */ { 8, CNST_LIMB(0x212f73a0ef6db7cb), CNST_LIMB(0xf6db196a761949d9), CNST_LIMB(0x347d6104fc324100), CNST_LIMB(0x382316831f7ee175) },
+ /* 211 */ { 8, CNST_LIMB(0x2127e92012e25004), CNST_LIMB(0xf7133e9b156c7be5), CNST_LIMB(0x3685e47dade53d21), CNST_LIMB(0x2c7f377833b8946e) },
+ /* 212 */ { 8, CNST_LIMB(0x21206b264c4a39a7), CNST_LIMB(0xf74b1fd64e0753c6), CNST_LIMB(0x389ff6bb15610000), CNST_LIMB(0x2157c761ab4163ef) },
+ /* 213 */ { 8, CNST_LIMB(0x2118f98f0e52c28f), CNST_LIMB(0xf782bdbfdda6577b), CNST_LIMB(0x3acc1912ebb57661), CNST_LIMB(0x16a7071803cc49a9) },
+ /* 214 */ { 8, CNST_LIMB(0x211194366320dc66), CNST_LIMB(0xf7ba18f93502e409), CNST_LIMB(0x3d0acff111946100), CNST_LIMB(0xc6781d80f8224fc) },
+ /* 215 */ { 8, CNST_LIMB(0x210a3af8e926bb78), CNST_LIMB(0xf7f1322182cf15d1), CNST_LIMB(0x3f5ca2e692eaf841), CNST_LIMB(0x294092d370a900b) },
+ /* 216 */ { 8, CNST_LIMB(0x2102edb3d00e29a6), CNST_LIMB(0xf82809d5be7072db), CNST_LIMB(0x41c21cb8e1000000), CNST_LIMB(0xf24f62335024a295) },
+ /* 217 */ { 8, CNST_LIMB(0x20fbac44d5b6edc2), CNST_LIMB(0xf85ea0b0b27b2610), CNST_LIMB(0x443bcb714399a5c1), CNST_LIMB(0xe03b98f103fad6d2) },
+ /* 218 */ { 8, CNST_LIMB(0x20f4768a4348ad08), CNST_LIMB(0xf894f74b06ef8b40), CNST_LIMB(0x46ca406c81af2100), CNST_LIMB(0xcee3d32cad2a9049) },
+ /* 219 */ { 8, CNST_LIMB(0x20ed4c62ea57b1f0), CNST_LIMB(0xf8cb0e3b4b3bbdb3), CNST_LIMB(0x496e106ac22aaae1), CNST_LIMB(0xbe3f9df9277fdada) },
+ /* 220 */ { 8, CNST_LIMB(0x20e62dae221c087a), CNST_LIMB(0xf900e6160002ccfe), CNST_LIMB(0x4c27d39fa5410000), CNST_LIMB(0xae46f0d94c05e933) },
+ /* 221 */ { 8, CNST_LIMB(0x20df1a4bc4ba6525), CNST_LIMB(0xf9367f6da0ab2e9c), CNST_LIMB(0x4ef825c296e43ca1), CNST_LIMB(0x9ef2280fb437a33d) },
+ /* 222 */ { 8, CNST_LIMB(0x20d8121c2c9e506e), CNST_LIMB(0xf96bdad2acb5f5ef), CNST_LIMB(0x51dfa61f5ad88100), CNST_LIMB(0x9039ff426d3f284b) },
+ /* 223 */ { 8, CNST_LIMB(0x20d1150031e51549), CNST_LIMB(0xf9a0f8d3b0e04fde), CNST_LIMB(0x54def7a6d2f16901), CNST_LIMB(0x82178c6d6b51f8f4) },
+ /* 224 */ { 8, CNST_LIMB(0x20ca22d927d8f54d), CNST_LIMB(0xf9d5d9fd5010b366), CNST_LIMB(0x57f6c10000000000), CNST_LIMB(0x74843b1ee4c1e053) },
+ /* 225 */ { 8, CNST_LIMB(0x20c33b88da7c29aa), CNST_LIMB(0xfa0a7eda4c112ce6), CNST_LIMB(0x5b27ac993df97701), CNST_LIMB(0x6779c7f90dc42f48) },
+ /* 226 */ { 8, CNST_LIMB(0x20bc5ef18c233bdf), CNST_LIMB(0xfa3ee7f38e181ed0), CNST_LIMB(0x5e7268b9bbdf8100), CNST_LIMB(0x5af23c74f9ad9fe9) },
+ /* 227 */ { 8, CNST_LIMB(0x20b58cf5f31e4526), CNST_LIMB(0xfa7315d02f20c7bd), CNST_LIMB(0x61d7a7932ff3d6a1), CNST_LIMB(0x4ee7eae2acdc617e) },
+ /* 228 */ { 8, CNST_LIMB(0x20aec5793770a74d), CNST_LIMB(0xfaa708f58014d37c), CNST_LIMB(0x65581f53c8c10000), CNST_LIMB(0x43556aa2ac262a0b) },
+ /* 229 */ { 8, CNST_LIMB(0x20a8085ef096d530), CNST_LIMB(0xfadac1e711c832d1), CNST_LIMB(0x68f48a385b8320e1), CNST_LIMB(0x3835949593b8ddd1) },
+ /* 230 */ { 8, CNST_LIMB(0x20a1558b2359c4b1), CNST_LIMB(0xfb0e4126bcc86bd7), CNST_LIMB(0x6cada69ed07c2100), CNST_LIMB(0x2d837fbe78458762) },
+ /* 231 */ { 8, CNST_LIMB(0x209aace23fafa72e), CNST_LIMB(0xfb418734a9008bd9), CNST_LIMB(0x70843718cdbf27c1), CNST_LIMB(0x233a7e150a54a555) },
+ /* 232 */ { 8, CNST_LIMB(0x20940e491ea988d7), CNST_LIMB(0xfb74948f5532da4b), CNST_LIMB(0x7479027ea1000000), CNST_LIMB(0x19561984a50ff8fe) },
+ /* 233 */ { 8, CNST_LIMB(0x208d79a5006d7a47), CNST_LIMB(0xfba769b39e49640e), CNST_LIMB(0x788cd40268f39641), CNST_LIMB(0xfd211159fe3490f) },
+ /* 234 */ { 8, CNST_LIMB(0x2086eedb8a3cead3), CNST_LIMB(0xfbda071cc67e6db5), CNST_LIMB(0x7cc07b437ecf6100), CNST_LIMB(0x6aa563e655033e3) },
+ /* 235 */ { 8, CNST_LIMB(0x20806dd2c486dcc6), CNST_LIMB(0xfc0c6d447c5dd362), CNST_LIMB(0x8114cc6220762061), CNST_LIMB(0xfbb614b3f2d3b14c) },
+ /* 236 */ { 8, CNST_LIMB(0x2079f67119059fae), CNST_LIMB(0xfc3e9ca2e1a05533), CNST_LIMB(0x858aa0135be10000), CNST_LIMB(0xeac0f8837fb05773) },
+ /* 237 */ { 8, CNST_LIMB(0x2073889d50e7bf63), CNST_LIMB(0xfc7095ae91e1c760), CNST_LIMB(0x8a22d3b53c54c321), CNST_LIMB(0xda6e4c10e8615ca5) },
+ /* 238 */ { 8, CNST_LIMB(0x206d243e9303d929), CNST_LIMB(0xfca258dca9331635), CNST_LIMB(0x8ede496339f34100), CNST_LIMB(0xcab755a8d01fa67f) },
+ /* 239 */ { 8, CNST_LIMB(0x2066c93c62170aa8), CNST_LIMB(0xfcd3e6a0ca8906c2), CNST_LIMB(0x93bde80aec3a1481), CNST_LIMB(0xbb95a9ae71aa3e0c) },
+ /* 240 */ { 8, CNST_LIMB(0x2060777e9b0db0f6), CNST_LIMB(0xfd053f6d26089673), CNST_LIMB(0x98c29b8100000000), CNST_LIMB(0xad0326c296b4f529) },
+ /* 241 */ { 8, CNST_LIMB(0x205a2eed73563032), CNST_LIMB(0xfd3663b27f31d529), CNST_LIMB(0x9ded549671832381), CNST_LIMB(0x9ef9f21eed31b7c1) },
+ /* 242 */ { 8, CNST_LIMB(0x2053ef71773d7e6a), CNST_LIMB(0xfd6753e032ea0efe), CNST_LIMB(0xa33f092e0b1ac100), CNST_LIMB(0x91747422be14b0b2) },
+ /* 243 */ { 8, CNST_LIMB(0x204db8f388552ea9), CNST_LIMB(0xfd9810643d6614c3), CNST_LIMB(0xa8b8b452291fe821), CNST_LIMB(0x846d550e37b5063d) },
+ /* 244 */ { 8, CNST_LIMB(0x20478b5cdbe2bb2f), CNST_LIMB(0xfdc899ab3ff56c5e), CNST_LIMB(0xae5b564ac3a10000), CNST_LIMB(0x77df79e9a96c06f6) },
+ /* 245 */ { 8, CNST_LIMB(0x20416696f957cfbf), CNST_LIMB(0xfdf8f02086af2c4b), CNST_LIMB(0xb427f4b3be74c361), CNST_LIMB(0x6bc6019636c7d0c2) },
+ /* 246 */ { 8, CNST_LIMB(0x203b4a8bb8d356e7), CNST_LIMB(0xfe29142e0e01401f), CNST_LIMB(0xba1f9a938041e100), CNST_LIMB(0x601c4205aebd9e47) },
+ /* 247 */ { 8, CNST_LIMB(0x2035372541ab0f0d), CNST_LIMB(0xfe59063c8822ce56), CNST_LIMB(0xc0435871d1110f41), CNST_LIMB(0x54ddc59756f05016) },
+ /* 248 */ { 8, CNST_LIMB(0x202f2c4e08fd6dcc), CNST_LIMB(0xfe88c6b3626a72aa), CNST_LIMB(0xc694446f01000000), CNST_LIMB(0x4a0648979c838c18) },
+ /* 249 */ { 8, CNST_LIMB(0x202929f0d04b99e9), CNST_LIMB(0xfeb855f8ca88fb0d), CNST_LIMB(0xcd137a5b57ac3ec1), CNST_LIMB(0x3f91b6e0bb3a053d) },
+ /* 250 */ { 8, CNST_LIMB(0x20232ff8a41b45eb), CNST_LIMB(0xfee7b471b3a9507d), CNST_LIMB(0xd3c21bcecceda100), CNST_LIMB(0x357c299a88ea76a5) },
+ /* 251 */ { 8, CNST_LIMB(0x201d3e50daa036db), CNST_LIMB(0xff16e281db76303b), CNST_LIMB(0xdaa150410b788de1), CNST_LIMB(0x2bc1e517aecc56e3) },
+ /* 252 */ { 8, CNST_LIMB(0x201754e5126d446d), CNST_LIMB(0xff45e08bcf06554e), CNST_LIMB(0xe1b24521be010000), CNST_LIMB(0x225f56ceb3da9f5d) },
+ /* 253 */ { 8, CNST_LIMB(0x201173a1312ca135), CNST_LIMB(0xff74aef0efafadd7), CNST_LIMB(0xe8f62df12777c1a1), CNST_LIMB(0x1951136d53ad63ac) },
+ /* 254 */ { 8, CNST_LIMB(0x200b9a71625f3b13), CNST_LIMB(0xffa34e1177c23362), CNST_LIMB(0xf06e445906fc0100), CNST_LIMB(0x1093d504b3cd7d93) },
+ /* 255 */ { 8, CNST_LIMB(0x2005c94216230568), CNST_LIMB(0xffd1be4c7f2af942), CNST_LIMB(0xf81bc845c81bf801), CNST_LIMB(0x824794d1ec1814f) },
+ /* 256 */ { 8, CNST_LIMB(0x1fffffffffffffff), CNST_LIMB(0xffffffffffffffff), CNST_LIMB(0x8), CNST_LIMB(0x0) },
+};
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mul_1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mul_1.s
new file mode 100644
index 0000000..1644074
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mul_1.s
@@ -0,0 +1,205 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_mul_1c
+ .type __gmpn_mul_1c,@function
+
+__gmpn_mul_1c:
+
+
+
+
+ push %rbx
+ mov %r8, %r10
+
+ jmp .Lcommon
+ .size __gmpn_mul_1c,.-__gmpn_mul_1c
+
+ .globl __gmpn_mul_1
+ .type __gmpn_mul_1,@function
+
+__gmpn_mul_1:
+
+
+
+
+
+ push %rbx
+ xor %r10, %r10
+.Lcommon:
+ mov (%rsi), %rax
+ mov %rdx, %rbx
+
+ mul %rcx
+ mov %rbx, %r11
+
+ add %r10, %rax
+ adc $0, %rdx
+
+ and $3, %ebx
+ jz .Lb0
+ cmp $2, %ebx
+ jz .Lb2
+ jg .Lb3
+
+.Lb1: dec %r11
+ jne .Lgt1
+ mov %rax, (%rdi)
+ jmp .Lret
+.Lgt1: lea 8(%rsi,%r11,8), %rsi
+ lea -8(%rdi,%r11,8), %rdi
+ neg %r11
+ xor %r10, %r10
+ xor %ebx, %ebx
+ mov %rax, %r9
+ mov (%rsi,%r11,8), %rax
+ mov %rdx, %r8
+ jmp .LL1
+
+.Lb0: lea (%rsi,%r11,8), %rsi
+ lea -16(%rdi,%r11,8), %rdi
+ neg %r11
+ xor %r10, %r10
+ mov %rax, %r8
+ mov %rdx, %rbx
+ jmp .LL0
+
+.Lb3: lea -8(%rsi,%r11,8), %rsi
+ lea -24(%rdi,%r11,8), %rdi
+ neg %r11
+ mov %rax, %rbx
+ mov %rdx, %r10
+ jmp .LL3
+
+.Lb2: lea -16(%rsi,%r11,8), %rsi
+ lea -32(%rdi,%r11,8), %rdi
+ neg %r11
+ xor %r8, %r8
+ xor %ebx, %ebx
+ mov %rax, %r10
+ mov 24(%rsi,%r11,8), %rax
+ mov %rdx, %r9
+ jmp .LL2
+
+ .align 16, 0x90
+.Ltop: mov %r10, (%rdi,%r11,8)
+ add %rax, %r9
+ mov (%rsi,%r11,8), %rax
+ adc %rdx, %r8
+ mov $0, %r10d
+.LL1: mul %rcx
+ mov %r9, 8(%rdi,%r11,8)
+ add %rax, %r8
+ adc %rdx, %rbx
+.LL0: mov 8(%rsi,%r11,8), %rax
+ mul %rcx
+ mov %r8, 16(%rdi,%r11,8)
+ add %rax, %rbx
+ adc %rdx, %r10
+.LL3: mov 16(%rsi,%r11,8), %rax
+ mul %rcx
+ mov %rbx, 24(%rdi,%r11,8)
+ mov $0, %r8d
+ mov %r8, %rbx
+ add %rax, %r10
+ mov 24(%rsi,%r11,8), %rax
+ mov %r8, %r9
+ adc %rdx, %r9
+.LL2: mul %rcx
+ add $4, %r11
+ js .Ltop
+
+ mov %r10, (%rdi,%r11,8)
+ add %rax, %r9
+ adc %r8, %rdx
+ mov %r9, 8(%rdi,%r11,8)
+ add %r8, %rdx
+.Lret: mov %rdx, %rax
+
+ pop %rbx
+
+
+ ret
+ .size __gmpn_mul_1,.-__gmpn_mul_1
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mul_2.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mul_2.s
new file mode 100644
index 0000000..0c3310d
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mul_2.s
@@ -0,0 +1,218 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_mul_2
+ .type __gmpn_mul_2,@function
+
+__gmpn_mul_2:
+
+
+ push %rbx
+ push %rbp
+
+ mov (%rcx), %r8
+ mov 8(%rcx), %r9
+
+ mov (%rsi), %rax
+
+ mov %rdx, %r11
+ neg %r11
+ lea -8(%rsi,%rdx,8), %rsi
+ lea -8(%rdi,%rdx,8), %rdi
+
+ and $3, %edx
+ jz .Lm2p0
+ cmp $2, %edx
+ jc .Lm2p1
+ jz .Lm2p2
+.Lm2p3:
+ mul %r8
+ xor %r10d, %r10d
+ mov %rax, %rcx
+ mov %rdx, %rbp
+ mov 8(%rsi,%r11,8), %rax
+ add $-1, %r11
+ mul %r9
+ add %rax, %rbp
+ jmp .Lm23
+.Lm2p0:
+ mul %r8
+ xor %ebp, %ebp
+ mov %rax, %rbx
+ mov %rdx, %rcx
+ jmp .Lm20
+.Lm2p1:
+ mul %r8
+ xor %r10d, %r10d
+ xor %ebx, %ebx
+ xor %ecx, %ecx
+ add $1, %r11
+ jmp .Lm2top
+.Lm2p2:
+ mul %r8
+ xor %ebx, %ebx
+ xor %ecx, %ecx
+ mov %rax, %rbp
+ mov %rdx, %r10
+ mov 8(%rsi,%r11,8), %rax
+ add $-2, %r11
+ jmp .Lm22
+
+
+ .align 32, 0x90
+.Lm2top:
+ add %rax, %r10
+ adc %rdx, %rbx
+ mov 0(%rsi,%r11,8), %rax
+ adc $0, %ecx
+ mov $0, %ebp
+ mul %r9
+ add %rax, %rbx
+ mov %r10, 0(%rdi,%r11,8)
+ adc %rdx, %rcx
+ mov 8(%rsi,%r11,8), %rax
+ mul %r8
+ add %rax, %rbx
+ adc %rdx, %rcx
+ adc $0, %ebp
+.Lm20: mov 8(%rsi,%r11,8), %rax
+ mul %r9
+ add %rax, %rcx
+ adc %rdx, %rbp
+ mov 16(%rsi,%r11,8), %rax
+ mov $0, %r10d
+ mul %r8
+ add %rax, %rcx
+ mov 16(%rsi,%r11,8), %rax
+ adc %rdx, %rbp
+ adc $0, %r10d
+ mul %r9
+ add %rax, %rbp
+ mov %rbx, 8(%rdi,%r11,8)
+.Lm23: adc %rdx, %r10
+ mov 24(%rsi,%r11,8), %rax
+ mul %r8
+ mov $0, %ebx
+ add %rax, %rbp
+ adc %rdx, %r10
+ mov %rcx, 16(%rdi,%r11,8)
+ mov 24(%rsi,%r11,8), %rax
+ mov $0, %ecx
+ adc $0, %ebx
+.Lm22: mul %r9
+ add %rax, %r10
+ mov %rbp, 24(%rdi,%r11,8)
+ adc %rdx, %rbx
+ mov 32(%rsi,%r11,8), %rax
+ mul %r8
+ add $4, %r11
+ js .Lm2top
+
+
+ add %rax, %r10
+ adc %rdx, %rbx
+ adc $0, %ecx
+ mov (%rsi), %rax
+ mul %r9
+ mov %r10, (%rdi)
+ add %rax, %rbx
+ adc %rdx, %rcx
+ mov %rbx, 8(%rdi)
+ mov %rcx, %rax
+
+ pop %rbp
+ pop %rbx
+
+ ret
+ .size __gmpn_mul_2,.-__gmpn_mul_2
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mul_basecase.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mul_basecase.s
new file mode 100644
index 0000000..2cfb7aa
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mul_basecase.s
@@ -0,0 +1,483 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_mul_basecase
+ .type __gmpn_mul_basecase,@function
+
+__gmpn_mul_basecase:
+
+
+
+ push %rbx
+ push %rbp
+ push %r12
+ push %r13
+ push %r14
+ push %r15
+
+ xor %r13d, %r13d
+ mov (%rsi), %rax
+ mov (%rcx), %r12
+
+ sub %rdx, %r13
+ mov %r13, %r11
+ mov %edx, %ebx
+
+ lea (%rdi,%rdx,8), %rdi
+ lea (%rsi,%rdx,8), %rsi
+
+ mul %r12
+
+ test $1, %r8b
+ jz .Lmul_2
+
+
+
+
+.Lmul_1:
+ and $3, %ebx
+ jz .Lmul_1_prologue_0
+ cmp $2, %ebx
+ jc .Lmul_1_prologue_1
+ jz .Lmul_1_prologue_2
+
+.Lmul_1_prologue_3:
+ add $-1, %r11
+ lea .Laddmul_outer_3(%rip), %r14
+ mov %rax, %r10
+ mov %rdx, %rbx
+ jmp .Lmul_1_entry_3
+
+.Lmul_1_prologue_0:
+ mov %rax, %rbp
+ mov %rdx, %r10
+ lea .Laddmul_outer_0(%rip), %r14
+ jmp .Lmul_1_entry_0
+
+.Lmul_1_prologue_1:
+ cmp $-1, %r13
+ jne 2f
+ mov %rax, -8(%rdi)
+ mov %rdx, (%rdi)
+ jmp .Lret
+2: add $1, %r11
+ lea .Laddmul_outer_1(%rip), %r14
+ mov %rax, %r15
+ mov %rdx, %rbp
+ xor %r10d, %r10d
+ mov (%rsi,%r11,8), %rax
+ jmp .Lmul_1_entry_1
+
+.Lmul_1_prologue_2:
+ add $-2, %r11
+ lea .Laddmul_outer_2(%rip), %r14
+ mov %rax, %rbx
+ mov %rdx, %r15
+ mov 24(%rsi,%r11,8), %rax
+ xor %ebp, %ebp
+ xor %r10d, %r10d
+ jmp .Lmul_1_entry_2
+
+
+
+
+ .align 16, 0x90
+.Lmul_1_top:
+ mov %rbx, -16(%rdi,%r11,8)
+ add %rax, %r15
+ mov (%rsi,%r11,8), %rax
+ adc %rdx, %rbp
+.Lmul_1_entry_1:
+ xor %ebx, %ebx
+ mul %r12
+ mov %r15, -8(%rdi,%r11,8)
+ add %rax, %rbp
+ adc %rdx, %r10
+.Lmul_1_entry_0:
+ mov 8(%rsi,%r11,8), %rax
+ mul %r12
+ mov %rbp, (%rdi,%r11,8)
+ add %rax, %r10
+ adc %rdx, %rbx
+.Lmul_1_entry_3:
+ mov 16(%rsi,%r11,8), %rax
+ mul %r12
+ mov %r10, 8(%rdi,%r11,8)
+ xor %ebp, %ebp
+ mov %rbp, %r10
+ add %rax, %rbx
+ mov 24(%rsi,%r11,8), %rax
+ mov %rbp, %r15
+ adc %rdx, %r15
+.Lmul_1_entry_2:
+ mul %r12
+ add $4, %r11
+ js .Lmul_1_top
+
+ mov %rbx, -16(%rdi)
+ add %rax, %r15
+ mov %r15, -8(%rdi)
+ adc %rdx, %rbp
+ mov %rbp, (%rdi)
+
+ add $-1, %r8
+ jz .Lret
+
+ mov 8(%rcx), %r12
+ mov 16(%rcx), %r9
+
+ lea 8(%rcx), %rcx
+ lea 8(%rdi), %rdi
+
+ jmp *%r14
+
+
+
+
+ .align 16, 0x90
+.Lmul_2:
+ mov 8(%rcx), %r9
+
+ and $3, %ebx
+ jz .Lmul_2_prologue_0
+ cmp $2, %ebx
+ jz .Lmul_2_prologue_2
+ jc .Lmul_2_prologue_1
+
+.Lmul_2_prologue_3:
+ lea .Laddmul_outer_3(%rip), %r14
+ add $2, %r11
+ mov %rax, -16(%rdi,%r11,8)
+ mov %rdx, %rbp
+ xor %r10d, %r10d
+ xor %ebx, %ebx
+ mov -16(%rsi,%r11,8), %rax
+ jmp .Lmul_2_entry_3
+
+ .align 16, 0x90
+.Lmul_2_prologue_0:
+ add $3, %r11
+ mov %rax, %rbx
+ mov %rdx, %r15
+ xor %ebp, %ebp
+ mov -24(%rsi,%r11,8), %rax
+ lea .Laddmul_outer_0(%rip), %r14
+ jmp .Lmul_2_entry_0
+
+ .align 16, 0x90
+.Lmul_2_prologue_1:
+ mov %rax, %r10
+ mov %rdx, %rbx
+ xor %r15d, %r15d
+ lea .Laddmul_outer_1(%rip), %r14
+ jmp .Lmul_2_entry_1
+
+ .align 16, 0x90
+.Lmul_2_prologue_2:
+ add $1, %r11
+ lea .Laddmul_outer_2(%rip), %r14
+ mov $0, %ebx
+ mov $0, %r15d
+ mov %rax, %rbp
+ mov -8(%rsi,%r11,8), %rax
+ mov %rdx, %r10
+ jmp .Lmul_2_entry_2
+
+
+
+ .align 16, 0x90
+.Lmul_2_top:
+ mov -32(%rsi,%r11,8), %rax
+ mul %r9
+ add %rax, %rbx
+ adc %rdx, %r15
+ mov -24(%rsi,%r11,8), %rax
+ xor %ebp, %ebp
+ mul %r12
+ add %rax, %rbx
+ mov -24(%rsi,%r11,8), %rax
+ adc %rdx, %r15
+ adc $0, %ebp
+.Lmul_2_entry_0:
+ mul %r9
+ add %rax, %r15
+ mov %rbx, -24(%rdi,%r11,8)
+ adc %rdx, %rbp
+ mov -16(%rsi,%r11,8), %rax
+ mul %r12
+ mov $0, %r10d
+ add %rax, %r15
+ adc %rdx, %rbp
+ mov -16(%rsi,%r11,8), %rax
+ adc $0, %r10d
+ mov $0, %ebx
+ mov %r15, -16(%rdi,%r11,8)
+.Lmul_2_entry_3:
+ mul %r9
+ add %rax, %rbp
+ mov -8(%rsi,%r11,8), %rax
+ adc %rdx, %r10
+ mov $0, %r15d
+ mul %r12
+ add %rax, %rbp
+ mov -8(%rsi,%r11,8), %rax
+ adc %rdx, %r10
+ adc %r15d, %ebx
+.Lmul_2_entry_2:
+ mul %r9
+ add %rax, %r10
+ mov %rbp, -8(%rdi,%r11,8)
+ adc %rdx, %rbx
+ mov (%rsi,%r11,8), %rax
+ mul %r12
+ add %rax, %r10
+ adc %rdx, %rbx
+ adc $0, %r15d
+.Lmul_2_entry_1:
+ add $4, %r11
+ mov %r10, -32(%rdi,%r11,8)
+ js .Lmul_2_top
+
+ mov -32(%rsi,%r11,8), %rax
+ mul %r9
+ add %rax, %rbx
+ mov %rbx, (%rdi)
+ adc %rdx, %r15
+ mov %r15, 8(%rdi)
+
+ add $-2, %r8
+ jz .Lret
+
+ mov 16(%rcx), %r12
+ mov 24(%rcx), %r9
+
+ lea 16(%rcx), %rcx
+ lea 16(%rdi), %rdi
+
+ jmp *%r14
+
+
+
+
+
+
+
+
+.Laddmul_outer_0:
+ add $3, %r13
+ lea 0(%rip), %r14
+
+ mov %r13, %r11
+ mov -24(%rsi,%r13,8), %rax
+ mul %r12
+ mov %rax, %rbx
+ mov -24(%rsi,%r13,8), %rax
+ mov %rdx, %r15
+ xor %ebp, %ebp
+ jmp .Laddmul_entry_0
+
+.Laddmul_outer_1:
+ mov %r13, %r11
+ mov (%rsi,%r13,8), %rax
+ mul %r12
+ mov %rax, %r10
+ mov (%rsi,%r13,8), %rax
+ mov %rdx, %rbx
+ xor %r15d, %r15d
+ jmp .Laddmul_entry_1
+
+.Laddmul_outer_2:
+ add $1, %r13
+ lea 0(%rip), %r14
+
+ mov %r13, %r11
+ mov -8(%rsi,%r13,8), %rax
+ mul %r12
+ xor %ebx, %ebx
+ mov %rax, %rbp
+ xor %r15d, %r15d
+ mov %rdx, %r10
+ mov -8(%rsi,%r13,8), %rax
+ jmp .Laddmul_entry_2
+
+.Laddmul_outer_3:
+ add $2, %r13
+ lea 0(%rip), %r14
+
+ mov %r13, %r11
+ mov -16(%rsi,%r13,8), %rax
+ xor %r10d, %r10d
+ mul %r12
+ mov %rax, %r15
+ mov -16(%rsi,%r13,8), %rax
+ mov %rdx, %rbp
+ jmp .Laddmul_entry_3
+
+
+
+ .align 16, 0x90
+.Laddmul_top:
+ add %r10, -32(%rdi,%r11,8)
+ adc %rax, %rbx
+ mov -24(%rsi,%r11,8), %rax
+ adc %rdx, %r15
+ xor %ebp, %ebp
+ mul %r12
+ add %rax, %rbx
+ mov -24(%rsi,%r11,8), %rax
+ adc %rdx, %r15
+ adc %ebp, %ebp
+.Laddmul_entry_0:
+ mul %r9
+ xor %r10d, %r10d
+ add %rbx, -24(%rdi,%r11,8)
+ adc %rax, %r15
+ mov -16(%rsi,%r11,8), %rax
+ adc %rdx, %rbp
+ mul %r12
+ add %rax, %r15
+ mov -16(%rsi,%r11,8), %rax
+ adc %rdx, %rbp
+ adc $0, %r10d
+.Laddmul_entry_3:
+ mul %r9
+ add %r15, -16(%rdi,%r11,8)
+ adc %rax, %rbp
+ mov -8(%rsi,%r11,8), %rax
+ adc %rdx, %r10
+ mul %r12
+ xor %ebx, %ebx
+ add %rax, %rbp
+ adc %rdx, %r10
+ mov $0, %r15d
+ mov -8(%rsi,%r11,8), %rax
+ adc %r15d, %ebx
+.Laddmul_entry_2:
+ mul %r9
+ add %rbp, -8(%rdi,%r11,8)
+ adc %rax, %r10
+ adc %rdx, %rbx
+ mov (%rsi,%r11,8), %rax
+ mul %r12
+ add %rax, %r10
+ mov (%rsi,%r11,8), %rax
+ adc %rdx, %rbx
+ adc $0, %r15d
+.Laddmul_entry_1:
+ mul %r9
+ add $4, %r11
+ js .Laddmul_top
+
+ add %r10, -8(%rdi)
+ adc %rax, %rbx
+ mov %rbx, (%rdi)
+ adc %rdx, %r15
+ mov %r15, 8(%rdi)
+
+ add $-2, %r8
+ jz .Lret
+
+ lea 16(%rdi), %rdi
+ lea 16(%rcx), %rcx
+
+ mov (%rcx), %r12
+ mov 8(%rcx), %r9
+
+ jmp *%r14
+
+ .align 16, 0x90
+.Lret: pop %r15
+ pop %r14
+ pop %r13
+ pop %r12
+ pop %rbp
+ pop %rbx
+
+ ret
+
+ .size __gmpn_mul_basecase,.-__gmpn_mul_basecase
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mullo_basecase.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mullo_basecase.s
new file mode 100644
index 0000000..d76272c
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mullo_basecase.s
@@ -0,0 +1,439 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_mullo_basecase
+ .type __gmpn_mullo_basecase,@function
+
+__gmpn_mullo_basecase:
+
+
+ cmp $4, %rcx
+ jge .Lgen
+ mov (%rsi), %rax
+ mov (%rdx), %r8
+
+ lea .Ltab(%rip), %r9
+ movslq (%r9,%rcx,4), %r10
+ add %r10, %r9
+ jmp *%r9
+
+ .section .data.rel.ro.local,"a",@progbits
+ .align 8, 0x90
+.Ltab: .long .Ltab-.Ltab
+ .long .L1-.Ltab
+ .long .L2-.Ltab
+ .long .L3-.Ltab
+ .text
+
+.L1: imul %r8, %rax
+ mov %rax, (%rdi)
+
+ ret
+
+.L2: mov 8(%rdx), %r11
+ imul %rax, %r11
+ mul %r8
+ mov %rax, (%rdi)
+ imul 8(%rsi), %r8
+ lea (%r11, %rdx), %rax
+ add %r8, %rax
+ mov %rax, 8(%rdi)
+
+ ret
+
+.L3: mov 8(%rdx), %r9
+ mov 16(%rdx), %r11
+ mul %r8
+ mov %rax, (%rdi)
+ mov (%rsi), %rax
+ mov %rdx, %rcx
+ mul %r9
+ imul 8(%rsi), %r9
+ mov 16(%rsi), %r10
+ imul %r8, %r10
+ add %rax, %rcx
+ adc %rdx, %r9
+ add %r10, %r9
+ mov 8(%rsi), %rax
+ mul %r8
+ add %rax, %rcx
+ adc %rdx, %r9
+ mov %r11, %rax
+ imul (%rsi), %rax
+ add %rax, %r9
+ mov %rcx, 8(%rdi)
+ mov %r9, 16(%rdi)
+
+ ret
+
+.L0m4:
+.L1m4:
+.L2m4:
+.L3m4:
+.Lgen: push %rbx
+ push %rbp
+ push %r13
+ push %r14
+ push %r15
+
+ mov (%rsi), %rax
+ mov (%rdx), %r13
+ mov %rdx, %r11
+
+ lea (%rdi,%rcx,8), %rdi
+ lea (%rsi,%rcx,8), %rsi
+ neg %rcx
+
+ mul %r13
+
+ test $1, %cl
+ jz .Lmul_2
+
+.Lmul_1:
+ lea -8(%rdi), %rdi
+ lea -8(%rsi), %rsi
+ test $2, %cl
+ jnz .Lmul_1_prologue_3
+
+.Lmul_1_prologue_2:
+ lea -1(%rcx), %r9
+ lea .Laddmul_outer_1(%rip), %r8
+ mov %rax, %rbx
+ mov %rdx, %r15
+ xor %ebp, %ebp
+ xor %r10d, %r10d
+ mov 16(%rsi,%rcx,8), %rax
+ jmp .Lmul_1_entry_2
+
+.Lmul_1_prologue_3:
+ lea 1(%rcx), %r9
+ lea .Laddmul_outer_3(%rip), %r8
+ mov %rax, %rbp
+ mov %rdx, %r10
+ xor %ebx, %ebx
+ jmp .Lmul_1_entry_0
+
+ .align 16, 0x90
+.Lmul_1_top:
+ mov %rbx, -16(%rdi,%r9,8)
+ add %rax, %r15
+ mov (%rsi,%r9,8), %rax
+ adc %rdx, %rbp
+ xor %ebx, %ebx
+ mul %r13
+ mov %r15, -8(%rdi,%r9,8)
+ add %rax, %rbp
+ adc %rdx, %r10
+.Lmul_1_entry_0:
+ mov 8(%rsi,%r9,8), %rax
+ mul %r13
+ mov %rbp, (%rdi,%r9,8)
+ add %rax, %r10
+ adc %rdx, %rbx
+ mov 16(%rsi,%r9,8), %rax
+ mul %r13
+ mov %r10, 8(%rdi,%r9,8)
+ xor %ebp, %ebp
+ mov %rbp, %r10
+ add %rax, %rbx
+ mov 24(%rsi,%r9,8), %rax
+ mov %rbp, %r15
+ adc %rdx, %r15
+.Lmul_1_entry_2:
+ mul %r13
+ add $4, %r9
+ js .Lmul_1_top
+
+ mov %rbx, -16(%rdi)
+ add %rax, %r15
+ mov %r15, -8(%rdi)
+ adc %rdx, %rbp
+
+ imul (%rsi), %r13
+ add %r13, %rbp
+ mov %rbp, (%rdi)
+
+ add $1, %rcx
+ jz .Lret
+
+ mov 8(%r11), %r13
+ mov 16(%r11), %r14
+
+ lea 16(%rsi), %rsi
+ lea 8(%r11), %r11
+ lea 24(%rdi), %rdi
+
+ jmp *%r8
+
+
+.Lmul_2:
+ mov 8(%r11), %r14
+ test $2, %cl
+ jz .Lmul_2_prologue_3
+
+ .align 16, 0x90
+.Lmul_2_prologue_1:
+ lea 0(%rcx), %r9
+ mov %rax, %r10
+ mov %rdx, %rbx
+ xor %r15d, %r15d
+ mov (%rsi,%rcx,8), %rax
+ lea .Laddmul_outer_3(%rip), %r8
+ jmp .Lmul_2_entry_1
+
+ .align 16, 0x90
+.Lmul_2_prologue_3:
+ lea 2(%rcx), %r9
+ mov $0, %r10d
+ mov %rax, %r15
+ mov (%rsi,%rcx,8), %rax
+ mov %rdx, %rbp
+ lea .Laddmul_outer_1(%rip), %r8
+ jmp .Lmul_2_entry_3
+
+ .align 16, 0x90
+.Lmul_2_top:
+ mov -32(%rsi,%r9,8), %rax
+ mul %r14
+ add %rax, %rbx
+ adc %rdx, %r15
+ mov -24(%rsi,%r9,8), %rax
+ xor %ebp, %ebp
+ mul %r13
+ add %rax, %rbx
+ mov -24(%rsi,%r9,8), %rax
+ adc %rdx, %r15
+ adc $0, %ebp
+ mul %r14
+ add %rax, %r15
+ mov %rbx, -24(%rdi,%r9,8)
+ adc %rdx, %rbp
+ mov -16(%rsi,%r9,8), %rax
+ mul %r13
+ mov $0, %r10d
+ add %rax, %r15
+ adc %rdx, %rbp
+ mov -16(%rsi,%r9,8), %rax
+ adc $0, %r10d
+.Lmul_2_entry_3:
+ mov $0, %ebx
+ mov %r15, -16(%rdi,%r9,8)
+ mul %r14
+ add %rax, %rbp
+ mov -8(%rsi,%r9,8), %rax
+ adc %rdx, %r10
+ mov $0, %r15d
+ mul %r13
+ add %rax, %rbp
+ mov -8(%rsi,%r9,8), %rax
+ adc %rdx, %r10
+ adc %r15d, %ebx
+ mul %r14
+ add %rax, %r10
+ mov %rbp, -8(%rdi,%r9,8)
+ adc %rdx, %rbx
+ mov (%rsi,%r9,8), %rax
+ mul %r13
+ add %rax, %r10
+ adc %rdx, %rbx
+ adc $0, %r15d
+.Lmul_2_entry_1:
+ add $4, %r9
+ mov %r10, -32(%rdi,%r9,8)
+ js .Lmul_2_top
+
+ imul -16(%rsi), %r14
+ add %r14, %rbx
+ imul -8(%rsi), %r13
+ add %r13, %rbx
+ mov %rbx, -8(%rdi)
+
+ add $2, %rcx
+ jz .Lret
+
+ mov 16(%r11), %r13
+ mov 24(%r11), %r14
+
+ lea 16(%r11), %r11
+ lea 16(%rdi), %rdi
+
+ jmp *%r8
+
+
+.Laddmul_outer_1:
+ lea -2(%rcx), %r9
+ mov -16(%rsi,%rcx,8), %rax
+ mul %r13
+ mov %rax, %r10
+ mov -16(%rsi,%rcx,8), %rax
+ mov %rdx, %rbx
+ xor %r15d, %r15d
+ lea .Laddmul_outer_3(%rip), %r8
+ jmp .Laddmul_entry_1
+
+.Laddmul_outer_3:
+ lea 0(%rcx), %r9
+ mov -16(%rsi,%rcx,8), %rax
+ xor %r10d, %r10d
+ mul %r13
+ mov %rax, %r15
+ mov -16(%rsi,%rcx,8), %rax
+ mov %rdx, %rbp
+ lea .Laddmul_outer_1(%rip), %r8
+ jmp .Laddmul_entry_3
+
+ .align 16, 0x90
+.Laddmul_top:
+ add %r10, -32(%rdi,%r9,8)
+ adc %rax, %rbx
+ mov -24(%rsi,%r9,8), %rax
+ adc %rdx, %r15
+ xor %ebp, %ebp
+ mul %r13
+ add %rax, %rbx
+ mov -24(%rsi,%r9,8), %rax
+ adc %rdx, %r15
+ adc %ebp, %ebp
+ mul %r14
+ xor %r10d, %r10d
+ add %rbx, -24(%rdi,%r9,8)
+ adc %rax, %r15
+ mov -16(%rsi,%r9,8), %rax
+ adc %rdx, %rbp
+ mul %r13
+ add %rax, %r15
+ mov -16(%rsi,%r9,8), %rax
+ adc %rdx, %rbp
+ adc $0, %r10d
+.Laddmul_entry_3:
+ mul %r14
+ add %r15, -16(%rdi,%r9,8)
+ adc %rax, %rbp
+ mov -8(%rsi,%r9,8), %rax
+ adc %rdx, %r10
+ mul %r13
+ xor %ebx, %ebx
+ add %rax, %rbp
+ adc %rdx, %r10
+ mov $0, %r15d
+ mov -8(%rsi,%r9,8), %rax
+ adc %r15d, %ebx
+ mul %r14
+ add %rbp, -8(%rdi,%r9,8)
+ adc %rax, %r10
+ adc %rdx, %rbx
+ mov (%rsi,%r9,8), %rax
+ mul %r13
+ add %rax, %r10
+ mov (%rsi,%r9,8), %rax
+ adc %rdx, %rbx
+ adc $0, %r15d
+.Laddmul_entry_1:
+ mul %r14
+ add $4, %r9
+ js .Laddmul_top
+
+ add %r10, -32(%rdi)
+ adc %rax, %rbx
+
+ imul -24(%rsi), %r13
+ add %r13, %rbx
+ add %rbx, -24(%rdi)
+
+ add $2, %rcx
+ jns .Lret
+
+ lea 16(%r11), %r11
+
+ mov (%r11), %r13
+ mov 8(%r11), %r14
+
+ lea -16(%rsi), %rsi
+
+ jmp *%r8
+
+.Lret: pop %r15
+ pop %r14
+ pop %r13
+ pop %rbp
+ pop %rbx
+
+ ret
+ .size __gmpn_mullo_basecase,.-__gmpn_mullo_basecase
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/mulmid_basecase.s b/vere/ext/gmp/gen/x86_64-linux/mpn/mulmid_basecase.s
new file mode 100644
index 0000000..b607e84
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/mulmid_basecase.s
@@ -0,0 +1,573 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_mulmid_basecase
+ .type __gmpn_mulmid_basecase,@function
+
+__gmpn_mulmid_basecase:
+
+
+
+ push %rbx
+ push %rbp
+ push %r12
+ push %r13
+ push %r14
+ push %r15
+
+ mov %rcx, %r15
+
+
+ lea 1(%rdx), %r13
+ sub %r8, %r13
+
+ lea (%rdi,%r13,8), %rdi
+
+ cmp $4, %r13
+ jc .Ldiagonal
+
+ lea (%rsi,%rdx,8), %rsi
+
+ test $1, %r8
+ jz .Lmul_2
+
+
+
+
+.Lmul_1:
+ mov %r13d, %ebx
+
+ neg %r13
+ mov (%rsi,%r13,8), %rax
+ mov (%r15), %r12
+ mul %r12
+
+ and $-4, %r13
+ mov %r13, %r11
+
+ and $3, %ebx
+ jz .Lmul_1_prologue_0
+ cmp $2, %ebx
+ jc .Lmul_1_prologue_1
+ jz .Lmul_1_prologue_2
+
+.Lmul_1_prologue_3:
+ mov %rax, %r10
+ mov %rdx, %rbx
+ lea .Laddmul_prologue_3(%rip), %r14
+ jmp .Lmul_1_entry_3
+
+ .align 16, 0x90
+.Lmul_1_prologue_0:
+ mov %rax, %rbp
+ mov %rdx, %r10
+ lea .Laddmul_prologue_0(%rip), %r14
+ jmp .Lmul_1_entry_0
+
+ .align 16, 0x90
+.Lmul_1_prologue_1:
+ add $4, %r11
+ mov %rax, %rcx
+ mov %rdx, %rbp
+ mov $0, %r10d
+ mov (%rsi,%r11,8), %rax
+ lea .Laddmul_prologue_1(%rip), %r14
+ jmp .Lmul_1_entry_1
+
+ .align 16, 0x90
+.Lmul_1_prologue_2:
+ mov %rax, %rbx
+ mov %rdx, %rcx
+ mov 24(%rsi,%r11,8), %rax
+ mov $0, %ebp
+ mov $0, %r10d
+ lea .Laddmul_prologue_2(%rip), %r14
+ jmp .Lmul_1_entry_2
+
+
+
+
+ .align 16, 0x90
+.Lmul_1_top:
+ mov %rbx, -16(%rdi,%r11,8)
+ add %rax, %rcx
+ mov (%rsi,%r11,8), %rax
+ adc %rdx, %rbp
+.Lmul_1_entry_1:
+ mov $0, %ebx
+ mul %r12
+ mov %rcx, -8(%rdi,%r11,8)
+ add %rax, %rbp
+ adc %rdx, %r10
+.Lmul_1_entry_0:
+ mov 8(%rsi,%r11,8), %rax
+ mul %r12
+ mov %rbp, (%rdi,%r11,8)
+ add %rax, %r10
+ adc %rdx, %rbx
+.Lmul_1_entry_3:
+ mov 16(%rsi,%r11,8), %rax
+ mul %r12
+ mov %r10, 8(%rdi,%r11,8)
+ mov $0, %ebp
+ mov %rbp, %r10
+ add %rax, %rbx
+ mov 24(%rsi,%r11,8), %rax
+ mov %rbp, %rcx
+ adc %rdx, %rcx
+.Lmul_1_entry_2:
+ mul %r12
+ add $4, %r11
+ js .Lmul_1_top
+
+ mov %rbx, -16(%rdi)
+ add %rax, %rcx
+ mov %rcx, -8(%rdi)
+ mov %rbp, 8(%rdi)
+ adc %rdx, %rbp
+ mov %rbp, (%rdi)
+
+ dec %r8
+ jz .Lret
+
+ lea -8(%rsi), %rsi
+ lea 8(%r15), %r15
+
+ mov %r13, %r11
+ mov (%r15), %r12
+ mov 8(%r15), %r9
+
+ jmp *%r14
+
+
+
+
+ .align 16, 0x90
+.Lmul_2:
+ mov %r13d, %ebx
+
+ neg %r13
+ mov -8(%rsi,%r13,8), %rax
+ mov (%r15), %r12
+ mov 8(%r15), %r9
+ mul %r9
+
+ and $-4, %r13
+ mov %r13, %r11
+
+ and $3, %ebx
+ jz .Lmul_2_prologue_0
+ cmp $2, %ebx
+ jc .Lmul_2_prologue_1
+ jz .Lmul_2_prologue_2
+
+.Lmul_2_prologue_3:
+ mov %rax, %rcx
+ mov %rdx, %rbp
+ lea .Laddmul_prologue_3(%rip), %r14
+ jmp .Lmul_2_entry_3
+
+ .align 16, 0x90
+.Lmul_2_prologue_0:
+ mov %rax, %rbx
+ mov %rdx, %rcx
+ lea .Laddmul_prologue_0(%rip), %r14
+ jmp .Lmul_2_entry_0
+
+ .align 16, 0x90
+.Lmul_2_prologue_1:
+ mov %rax, %r10
+ mov %rdx, %rbx
+ mov $0, %ecx
+ lea .Laddmul_prologue_1(%rip), %r14
+ jmp .Lmul_2_entry_1
+
+ .align 16, 0x90
+.Lmul_2_prologue_2:
+ mov %rax, %rbp
+ mov %rdx, %r10
+ mov $0, %ebx
+ mov 16(%rsi,%r11,8), %rax
+ lea .Laddmul_prologue_2(%rip), %r14
+ jmp .Lmul_2_entry_2
+
+
+
+
+ .align 16, 0x90
+.Lmul_2_top:
+ mov -8(%rsi,%r11,8), %rax
+ mul %r9
+ add %rax, %rbx
+ adc %rdx, %rcx
+.Lmul_2_entry_0:
+ mov $0, %ebp
+ mov (%rsi,%r11,8), %rax
+ mul %r12
+ add %rax, %rbx
+ mov (%rsi,%r11,8), %rax
+ adc %rdx, %rcx
+ adc $0, %ebp
+ mul %r9
+ add %rax, %rcx
+ mov %rbx, (%rdi,%r11,8)
+ adc %rdx, %rbp
+.Lmul_2_entry_3:
+ mov 8(%rsi,%r11,8), %rax
+ mul %r12
+ mov $0, %r10d
+ add %rax, %rcx
+ adc %rdx, %rbp
+ mov $0, %ebx
+ adc $0, %r10d
+ mov 8(%rsi,%r11,8), %rax
+ mov %rcx, 8(%rdi,%r11,8)
+ mul %r9
+ add %rax, %rbp
+ mov 16(%rsi,%r11,8), %rax
+ adc %rdx, %r10
+.Lmul_2_entry_2:
+ mov $0, %ecx
+ mul %r12
+ add %rax, %rbp
+ mov 16(%rsi,%r11,8), %rax
+ adc %rdx, %r10
+ adc $0, %ebx
+ mul %r9
+ add %rax, %r10
+ mov %rbp, 16(%rdi,%r11,8)
+ adc %rdx, %rbx
+.Lmul_2_entry_1:
+ mov 24(%rsi,%r11,8), %rax
+ mul %r12
+ add %rax, %r10
+ adc %rdx, %rbx
+ adc $0, %ecx
+ add $4, %r11
+ mov %r10, -8(%rdi,%r11,8)
+ jnz .Lmul_2_top
+
+ mov %rbx, (%rdi)
+ mov %rcx, 8(%rdi)
+
+ sub $2, %r8
+ jz .Lret
+
+ lea 16(%r15), %r15
+ lea -16(%rsi), %rsi
+
+ mov %r13, %r11
+ mov (%r15), %r12
+ mov 8(%r15), %r9
+
+ jmp *%r14
+
+
+
+
+ .align 16, 0x90
+.Laddmul_prologue_0:
+ mov -8(%rsi,%r11,8), %rax
+ mul %r9
+ mov %rax, %rcx
+ mov %rdx, %rbp
+ mov $0, %r10d
+ jmp .Laddmul_entry_0
+
+ .align 16, 0x90
+.Laddmul_prologue_1:
+ mov 16(%rsi,%r11,8), %rax
+ mul %r9
+ mov %rax, %rbx
+ mov %rdx, %rcx
+ mov $0, %ebp
+ mov 24(%rsi,%r11,8), %rax
+ jmp .Laddmul_entry_1
+
+ .align 16, 0x90
+.Laddmul_prologue_2:
+ mov 8(%rsi,%r11,8), %rax
+ mul %r9
+ mov %rax, %r10
+ mov %rdx, %rbx
+ mov $0, %ecx
+ jmp .Laddmul_entry_2
+
+ .align 16, 0x90
+.Laddmul_prologue_3:
+ mov (%rsi,%r11,8), %rax
+ mul %r9
+ mov %rax, %rbp
+ mov %rdx, %r10
+ mov $0, %ebx
+ mov $0, %ecx
+ jmp .Laddmul_entry_3
+
+
+
+ .align 16, 0x90
+.Laddmul_top:
+ mov $0, %r10d
+ add %rax, %rbx
+ mov -8(%rsi,%r11,8), %rax
+ adc %rdx, %rcx
+ adc $0, %ebp
+ mul %r9
+ add %rbx, -8(%rdi,%r11,8)
+ adc %rax, %rcx
+ adc %rdx, %rbp
+.Laddmul_entry_0:
+ mov (%rsi,%r11,8), %rax
+ mul %r12
+ add %rax, %rcx
+ mov (%rsi,%r11,8), %rax
+ adc %rdx, %rbp
+ adc $0, %r10d
+ mul %r9
+ add %rcx, (%rdi,%r11,8)
+ mov $0, %ecx
+ adc %rax, %rbp
+ mov $0, %ebx
+ adc %rdx, %r10
+.Laddmul_entry_3:
+ mov 8(%rsi,%r11,8), %rax
+ mul %r12
+ add %rax, %rbp
+ mov 8(%rsi,%r11,8), %rax
+ adc %rdx, %r10
+ adc $0, %ebx
+ mul %r9
+ add %rbp, 8(%rdi,%r11,8)
+ adc %rax, %r10
+ adc %rdx, %rbx
+.Laddmul_entry_2:
+ mov 16(%rsi,%r11,8), %rax
+ mul %r12
+ add %rax, %r10
+ mov 16(%rsi,%r11,8), %rax
+ adc %rdx, %rbx
+ adc $0, %ecx
+ mul %r9
+ add %r10, 16(%rdi,%r11,8)
+ nop
+ adc %rax, %rbx
+ mov $0, %ebp
+ mov 24(%rsi,%r11,8), %rax
+ adc %rdx, %rcx
+.Laddmul_entry_1:
+ mul %r12
+ add $4, %r11
+ jnz .Laddmul_top
+
+ add %rax, %rbx
+ adc %rdx, %rcx
+ adc $0, %ebp
+
+ add %rbx, -8(%rdi)
+ adc %rcx, (%rdi)
+ adc %rbp, 8(%rdi)
+
+ sub $2, %r8
+ jz .Lret
+
+ lea 16(%r15), %r15
+ lea -16(%rsi), %rsi
+
+ mov %r13, %r11
+ mov (%r15), %r12
+ mov 8(%r15), %r9
+
+ jmp *%r14
+
+
+
+
+ .align 16, 0x90
+.Ldiagonal:
+ xor %ebx, %ebx
+ xor %ecx, %ecx
+ xor %ebp, %ebp
+
+ neg %r13
+
+ mov %r8d, %eax
+ and $3, %eax
+ jz .Ldiag_prologue_0
+ cmp $2, %eax
+ jc .Ldiag_prologue_1
+ jz .Ldiag_prologue_2
+
+.Ldiag_prologue_3:
+ lea -8(%r15), %r15
+ mov %r15, %r10
+ add $1, %r8
+ mov %r8, %r11
+ lea .Ldiag_entry_3(%rip), %r14
+ jmp .Ldiag_entry_3
+
+.Ldiag_prologue_0:
+ mov %r15, %r10
+ mov %r8, %r11
+ lea 0(%rip), %r14
+ mov -8(%rsi,%r11,8), %rax
+ jmp .Ldiag_entry_0
+
+.Ldiag_prologue_1:
+ lea 8(%r15), %r15
+ mov %r15, %r10
+ add $3, %r8
+ mov %r8, %r11
+ lea 0(%rip), %r14
+ mov -8(%r10), %rax
+ jmp .Ldiag_entry_1
+
+.Ldiag_prologue_2:
+ lea -16(%r15), %r15
+ mov %r15, %r10
+ add $2, %r8
+ mov %r8, %r11
+ lea 0(%rip), %r14
+ mov 16(%r10), %rax
+ jmp .Ldiag_entry_2
+
+
+
+
+ .align 16, 0x90
+.Ldiag_top:
+ add %rax, %rbx
+ adc %rdx, %rcx
+ mov -8(%rsi,%r11,8), %rax
+ adc $0, %rbp
+.Ldiag_entry_0:
+ mulq (%r10)
+ add %rax, %rbx
+ adc %rdx, %rcx
+ adc $0, %rbp
+.Ldiag_entry_3:
+ mov -16(%rsi,%r11,8), %rax
+ mulq 8(%r10)
+ add %rax, %rbx
+ mov 16(%r10), %rax
+ adc %rdx, %rcx
+ adc $0, %rbp
+.Ldiag_entry_2:
+ mulq -24(%rsi,%r11,8)
+ add %rax, %rbx
+ mov 24(%r10), %rax
+ adc %rdx, %rcx
+ lea 32(%r10), %r10
+ adc $0, %rbp
+.Ldiag_entry_1:
+ mulq -32(%rsi,%r11,8)
+ sub $4, %r11
+ jnz .Ldiag_top
+
+ add %rax, %rbx
+ adc %rdx, %rcx
+ adc $0, %rbp
+
+ mov %rbx, (%rdi,%r13,8)
+
+ inc %r13
+ jz .Ldiag_end
+
+ mov %r8, %r11
+ mov %r15, %r10
+
+ lea 8(%rsi), %rsi
+ mov %rcx, %rbx
+ mov %rbp, %rcx
+ xor %ebp, %ebp
+
+ jmp *%r14
+
+.Ldiag_end:
+ mov %rcx, (%rdi)
+ mov %rbp, 8(%rdi)
+
+.Lret: pop %r15
+ pop %r14
+ pop %r13
+ pop %r12
+ pop %rbp
+ pop %rbx
+
+ ret
+ .size __gmpn_mulmid_basecase,.-__gmpn_mulmid_basecase
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/nand_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/nand_n.s
new file mode 100644
index 0000000..04593b9
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/nand_n.s
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 32, 0x90
+ .globl __gmpn_nand_n
+ .type __gmpn_nand_n,@function
+
+__gmpn_nand_n:
+
+
+ mov (%rdx), %r8
+ mov %ecx, %eax
+ lea (%rdx,%rcx,8), %rdx
+ lea (%rsi,%rcx,8), %rsi
+ lea (%rdi,%rcx,8), %rdi
+ neg %rcx
+ and $3, %eax
+ je .Lb00
+ cmp $2, %eax
+ jc .Lb01
+ je .Lb10
+
+.Lb11: and (%rsi,%rcx,8), %r8
+ not %r8
+ mov %r8, (%rdi,%rcx,8)
+ dec %rcx
+ jmp .Le11
+.Lb10: add $-2, %rcx
+ jmp .Le10
+ .byte 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90
+.Lb01: and (%rsi,%rcx,8), %r8
+ not %r8
+ mov %r8, (%rdi,%rcx,8)
+ inc %rcx
+ jz .Lret
+
+.Ltop: mov (%rdx,%rcx,8), %r8
+.Lb00: mov 8(%rdx,%rcx,8), %r9
+ and (%rsi,%rcx,8), %r8
+ not %r8
+ and 8(%rsi,%rcx,8), %r9
+ not %r9
+ mov %r8, (%rdi,%rcx,8)
+ mov %r9, 8(%rdi,%rcx,8)
+.Le11: mov 16(%rdx,%rcx,8), %r8
+.Le10: mov 24(%rdx,%rcx,8), %r9
+ and 16(%rsi,%rcx,8), %r8
+ not %r8
+ and 24(%rsi,%rcx,8), %r9
+ not %r9
+ mov %r8, 16(%rdi,%rcx,8)
+ mov %r9, 24(%rdi,%rcx,8)
+ add $4, %rcx
+ jnc .Ltop
+
+.Lret:
+ ret
+ .size __gmpn_nand_n,.-__gmpn_nand_n
+
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/nior_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/nior_n.s
new file mode 100644
index 0000000..8ea0437
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/nior_n.s
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 32, 0x90
+ .globl __gmpn_nior_n
+ .type __gmpn_nior_n,@function
+
+__gmpn_nior_n:
+
+
+ mov (%rdx), %r8
+ mov %ecx, %eax
+ lea (%rdx,%rcx,8), %rdx
+ lea (%rsi,%rcx,8), %rsi
+ lea (%rdi,%rcx,8), %rdi
+ neg %rcx
+ and $3, %eax
+ je .Lb00
+ cmp $2, %eax
+ jc .Lb01
+ je .Lb10
+
+.Lb11: or (%rsi,%rcx,8), %r8
+ not %r8
+ mov %r8, (%rdi,%rcx,8)
+ dec %rcx
+ jmp .Le11
+.Lb10: add $-2, %rcx
+ jmp .Le10
+ .byte 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90
+.Lb01: or (%rsi,%rcx,8), %r8
+ not %r8
+ mov %r8, (%rdi,%rcx,8)
+ inc %rcx
+ jz .Lret
+
+.Ltop: mov (%rdx,%rcx,8), %r8
+.Lb00: mov 8(%rdx,%rcx,8), %r9
+ or (%rsi,%rcx,8), %r8
+ not %r8
+ or 8(%rsi,%rcx,8), %r9
+ not %r9
+ mov %r8, (%rdi,%rcx,8)
+ mov %r9, 8(%rdi,%rcx,8)
+.Le11: mov 16(%rdx,%rcx,8), %r8
+.Le10: mov 24(%rdx,%rcx,8), %r9
+ or 16(%rsi,%rcx,8), %r8
+ not %r8
+ or 24(%rsi,%rcx,8), %r9
+ not %r9
+ mov %r8, 16(%rdi,%rcx,8)
+ mov %r9, 24(%rdi,%rcx,8)
+ add $4, %rcx
+ jnc .Ltop
+
+.Lret:
+ ret
+ .size __gmpn_nior_n,.-__gmpn_nior_n
+
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/perfsqr.h b/vere/ext/gmp/gen/x86_64-linux/mpn/perfsqr.h
new file mode 100644
index 0000000..80c5eb7
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/perfsqr.h
@@ -0,0 +1,46 @@
+/* This file generated by gen-psqr.c - DO NOT EDIT. */
+
+#if GMP_LIMB_BITS != 64 || GMP_NAIL_BITS != 0
+Error, error, this data is for 64 bit limb and 0 bit nail
+#endif
+
+/* Non-zero bit indicates a quadratic residue mod 0x100.
+ This test identifies 82.81% as non-squares (212/256). */
+static const mp_limb_t
+sq_res_0x100[4] = {
+ CNST_LIMB(0x202021202030213),
+ CNST_LIMB(0x202021202020213),
+ CNST_LIMB(0x202021202030212),
+ CNST_LIMB(0x202021202020212),
+};
+
+/* 2^48-1 = 3^2 * 5 * 7 * 13 * 17 * 97 ... */
+#define PERFSQR_MOD_BITS 49
+
+/* This test identifies 97.81% as non-squares. */
+#define PERFSQR_MOD_TEST(up, usize) \
+ do { \
+ mp_limb_t r; \
+ PERFSQR_MOD_34 (r, up, usize); \
+ \
+ /* 69.23% */ \
+ PERFSQR_MOD_2 (r, CNST_LIMB(91), CNST_LIMB(0xfd2fd2fd2fd3), \
+ CNST_LIMB(0x2191240), CNST_LIMB(0x8850a206953820e1)); \
+ \
+ /* 68.24% */ \
+ PERFSQR_MOD_2 (r, CNST_LIMB(85), CNST_LIMB(0xfcfcfcfcfcfd), \
+ CNST_LIMB(0x82158), CNST_LIMB(0x10b48c4b4206a105)); \
+ \
+ /* 55.56% */ \
+ PERFSQR_MOD_1 (r, CNST_LIMB( 9), CNST_LIMB(0xe38e38e38e39), \
+ CNST_LIMB(0x93)); \
+ \
+ /* 49.48% */ \
+ PERFSQR_MOD_2 (r, CNST_LIMB(97), CNST_LIMB(0xfd5c5f02a3a1), \
+ CNST_LIMB(0x1eb628b47), CNST_LIMB(0x6067981b8b451b5f)); \
+ } while (0)
+
+/* Grand total sq_res_0x100 and PERFSQR_MOD_TEST, 99.62% non-squares. */
+
+/* helper for tests/mpz/t-perfsqr.c */
+#define PERFSQR_DIVISORS { 256, 91, 85, 9, 97, }
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/popcount.s b/vere/ext/gmp/gen/x86_64-linux/mpn/popcount.s
new file mode 100644
index 0000000..243219e
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/popcount.s
@@ -0,0 +1,160 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 32, 0x90
+ .globl __gmpn_popcount
+ .type __gmpn_popcount,@function
+
+__gmpn_popcount:
+
+
+ push %rbx
+ mov $0x5555555555555555, %r10
+ push %rbp
+ mov $0x3333333333333333, %r11
+ lea (%rdi,%rsi,8), %rdi
+ mov $0x0f0f0f0f0f0f0f0f, %rcx
+ neg %rsi
+ mov $0x0101010101010101, %rdx
+ xor %eax, %eax
+ test $1, %sil
+ jz .Ltop
+
+ mov (%rdi,%rsi,8), %r8
+
+ mov %r8, %r9
+ shr %r8
+ and %r10, %r8
+ sub %r8, %r9
+
+ mov %r9, %r8
+ shr $2, %r9
+ and %r11, %r8
+ and %r11, %r9
+ add %r8, %r9
+
+ dec %rsi
+ jmp .Lmid
+
+ .align 16, 0x90
+.Ltop: mov (%rdi,%rsi,8), %r8
+ mov 8(%rdi,%rsi,8), %rbx
+
+ mov %r8, %r9
+ mov %rbx, %rbp
+ shr %r8
+ shr %rbx
+ and %r10, %r8
+ and %r10, %rbx
+ sub %r8, %r9
+ sub %rbx, %rbp
+
+ mov %r9, %r8
+ mov %rbp, %rbx
+ shr $2, %r9
+ shr $2, %rbp
+ and %r11, %r8
+ and %r11, %r9
+ and %r11, %rbx
+ and %r11, %rbp
+ add %r8, %r9
+ add %rbx, %rbp
+
+ add %rbp, %r9
+.Lmid: mov %r9, %r8
+ shr $4, %r9
+ and %rcx, %r8
+ and %rcx, %r9
+ add %r8, %r9
+
+ imul %rdx, %r9
+ shr $56, %r9
+
+ add %r9, %rax
+ add $2, %rsi
+ jnc .Ltop
+
+.Lend:
+ pop %rbp
+ pop %rbx
+
+ ret
+ .size __gmpn_popcount,.-__gmpn_popcount
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/redc_1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/redc_1.s
new file mode 100644
index 0000000..da7fd88
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/redc_1.s
@@ -0,0 +1,603 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 32, 0x90
+ .globl __gmpn_redc_1
+ .type __gmpn_redc_1,@function
+
+__gmpn_redc_1:
+
+
+
+ push %rbp
+ mov (%rsi), %rbp
+ push %rbx
+ imul %r8, %rbp
+ push %r12
+ push %r13
+ push %r14
+ push %r15
+
+ mov %rcx, %r12
+ neg %r12
+ lea (%rdx,%rcx,8), %r13
+ lea -16(%rsi,%rcx,8), %rsi
+
+ mov %ecx, %eax
+ and $3, %eax
+ lea 4(%rax), %r9
+ cmp $4, %ecx
+ cmovg %r9, %rax
+ lea .Ltab(%rip), %r9
+
+ movslq (%r9,%rax,4), %rax
+ add %r9, %rax
+ jmp *%rax
+
+
+ .section .data.rel.ro.local,"a",@progbits
+ .align 8, 0x90
+.Ltab: .long .L0-.Ltab
+ .long .L1-.Ltab
+ .long .L2-.Ltab
+ .long .L3-.Ltab
+ .long .L0m4-.Ltab
+ .long .L1m4-.Ltab
+ .long .L2m4-.Ltab
+ .long .L3m4-.Ltab
+ .text
+
+ .align 16, 0x90
+.L1: mov (%rdx), %rax
+ mul %rbp
+ add 8(%rsi), %rax
+ adc 16(%rsi), %rdx
+ mov %rdx, (%rdi)
+ mov $0, %eax
+ adc %eax, %eax
+ jmp .Lret
+
+
+ .align 16, 0x90
+.L2: mov (%rdx), %rax
+ mul %rbp
+ xor %r14d, %r14d
+ mov %rax, %r10
+ mov -8(%r13), %rax
+ mov %rdx, %r9
+ mul %rbp
+ add (%rsi), %r10
+ adc %rax, %r9
+ adc %rdx, %r14
+ add 8(%rsi), %r9
+ adc $0, %r14
+ mov %r9, %rbp
+ imul %r8, %rbp
+ mov -16(%r13), %rax
+ mul %rbp
+ xor %ebx, %ebx
+ mov %rax, %r10
+ mov -8(%r13), %rax
+ mov %rdx, %r11
+ mul %rbp
+ add %r9, %r10
+ adc %rax, %r11
+ adc %rdx, %rbx
+ add 16(%rsi), %r11
+ adc $0, %rbx
+ xor %eax, %eax
+ add %r11, %r14
+ adc 24(%rsi), %rbx
+ mov %r14, (%rdi)
+ mov %rbx, 8(%rdi)
+ adc %eax, %eax
+ jmp .Lret
+
+
+.L3: mov (%rdx), %rax
+ mul %rbp
+ mov %rax, %rbx
+ mov %rdx, %r10
+ mov -16(%r13), %rax
+ mul %rbp
+ xor %r9d, %r9d
+ xor %r14d, %r14d
+ add -8(%rsi), %rbx
+ adc %rax, %r10
+ mov -8(%r13), %rax
+ adc %rdx, %r9
+ mul %rbp
+ add (%rsi), %r10
+ mov %r10, (%rsi)
+ adc %rax, %r9
+ adc %rdx, %r14
+ mov %r10, %rbp
+ imul %r8, %rbp
+ add %r9, 8(%rsi)
+ adc $0, %r14
+ mov %r14, -8(%rsi)
+
+ mov -24(%r13), %rax
+ mul %rbp
+ mov %rax, %rbx
+ mov %rdx, %r10
+ mov -16(%r13), %rax
+ mul %rbp
+ xor %r9d, %r9d
+ xor %r14d, %r14d
+ add (%rsi), %rbx
+ adc %rax, %r10
+ mov -8(%r13), %rax
+ adc %rdx, %r9
+ mul %rbp
+ add 8(%rsi), %r10
+ mov %r10, 8(%rsi)
+ adc %rax, %r9
+ adc %rdx, %r14
+ mov %r10, %rbp
+ imul %r8, %rbp
+ add %r9, 16(%rsi)
+ adc $0, %r14
+ mov %r14, (%rsi)
+
+ mov -24(%r13), %rax
+ mul %rbp
+ mov %rax, %rbx
+ mov %rdx, %r10
+ mov -16(%r13), %rax
+ mul %rbp
+ xor %r9d, %r9d
+ xor %r14d, %r14d
+ add 8(%rsi), %rbx
+ adc %rax, %r10
+ mov -8(%r13), %rax
+ adc %rdx, %r9
+ mul %rbp
+ add 16(%rsi), %r10
+ adc %rax, %r9
+ adc %rdx, %r14
+ add 24(%rsi), %r9
+ adc $0, %r14
+
+ xor %eax, %eax
+ add -8(%rsi), %r10
+ adc (%rsi), %r9
+ adc 32(%rsi), %r14
+ mov %r10, (%rdi)
+ mov %r9, 8(%rdi)
+ mov %r14, 16(%rdi)
+ adc %eax, %eax
+ jmp .Lret
+
+
+ .align 16, 0x90
+.L2m4:
+.Llo2: mov (%r13,%r12,8), %rax
+ mul %rbp
+ xor %r14d, %r14d
+ xor %ebx, %ebx
+ mov %rax, %r10
+ mov 8(%r13,%r12,8), %rax
+ mov 24(%rsi,%r12,8), %r15
+ mov %rdx, %r9
+ mul %rbp
+ add 16(%rsi,%r12,8), %r10
+ adc %rax, %r9
+ mov 16(%r13,%r12,8), %rax
+ adc %rdx, %r14
+ mul %rbp
+ mov $0, %r10d
+ lea 2(%r12), %r11
+ add %r9, %r15
+ imul %r8, %r15
+ jmp .Le2
+
+ .align 16, 0x90
+.Lli2: add %r10, (%rsi,%r11,8)
+ adc %rax, %r9
+ mov (%r13,%r11,8), %rax
+ adc %rdx, %r14
+ xor %r10d, %r10d
+ mul %rbp
+.Le2: add %r9, 8(%rsi,%r11,8)
+ adc %rax, %r14
+ adc %rdx, %rbx
+ mov 8(%r13,%r11,8), %rax
+ mul %rbp
+ add %r14, 16(%rsi,%r11,8)
+ adc %rax, %rbx
+ adc %rdx, %r10
+ mov 16(%r13,%r11,8), %rax
+ mul %rbp
+ add %rbx, 24(%rsi,%r11,8)
+ mov $0, %r14d
+ mov %r14, %rbx
+ adc %rax, %r10
+ mov 24(%r13,%r11,8), %rax
+ mov %r14, %r9
+ adc %rdx, %r9
+ mul %rbp
+ add $4, %r11
+ js .Lli2
+
+.Lle2: add %r10, (%rsi)
+ adc %rax, %r9
+ adc %r14, %rdx
+ add %r9, 8(%rsi)
+ adc $0, %rdx
+ mov %rdx, 16(%rsi,%r12,8)
+ add $8, %rsi
+ mov %r15, %rbp
+ dec %rcx
+ jnz .Llo2
+
+ mov %r12, %rcx
+ sar $2, %rcx
+ lea 32(%rsi,%r12,8), %rsi
+ lea (%rsi,%r12,8), %rdx
+
+ mov -16(%rsi), %r8
+ mov -8(%rsi), %r9
+ add -16(%rdx), %r8
+ adc -8(%rdx), %r9
+ mov %r8, (%rdi)
+ mov %r9, 8(%rdi)
+ lea 16(%rdi), %rdi
+ jmp .Laddx
+
+
+ .align 16, 0x90
+.L1m4:
+.Llo1: mov (%r13,%r12,8), %rax
+ xor %r9, %r9
+ xor %ebx, %ebx
+ mul %rbp
+ mov %rax, %r9
+ mov 8(%r13,%r12,8), %rax
+ mov 24(%rsi,%r12,8), %r15
+ mov %rdx, %r14
+ mov $0, %r10d
+ mul %rbp
+ add 16(%rsi,%r12,8), %r9
+ adc %rax, %r14
+ adc %rdx, %rbx
+ mov 16(%r13,%r12,8), %rax
+ mul %rbp
+ lea 1(%r12), %r11
+ add %r14, %r15
+ imul %r8, %r15
+ jmp .Le1
+
+ .align 16, 0x90
+.Lli1: add %r10, (%rsi,%r11,8)
+ adc %rax, %r9
+ mov (%r13,%r11,8), %rax
+ adc %rdx, %r14
+ xor %r10d, %r10d
+ mul %rbp
+ add %r9, 8(%rsi,%r11,8)
+ adc %rax, %r14
+ adc %rdx, %rbx
+ mov 8(%r13,%r11,8), %rax
+ mul %rbp
+.Le1: add %r14, 16(%rsi,%r11,8)
+ adc %rax, %rbx
+ adc %rdx, %r10
+ mov 16(%r13,%r11,8), %rax
+ mul %rbp
+ add %rbx, 24(%rsi,%r11,8)
+ mov $0, %r14d
+ mov %r14, %rbx
+ adc %rax, %r10
+ mov 24(%r13,%r11,8), %rax
+ mov %r14, %r9
+ adc %rdx, %r9
+ mul %rbp
+ add $4, %r11
+ js .Lli1
+
+.Lle1: add %r10, (%rsi)
+ adc %rax, %r9
+ adc %r14, %rdx
+ add %r9, 8(%rsi)
+ adc $0, %rdx
+ mov %rdx, 16(%rsi,%r12,8)
+ add $8, %rsi
+ mov %r15, %rbp
+ dec %rcx
+ jnz .Llo1
+
+ mov %r12, %rcx
+ sar $2, %rcx
+ lea 24(%rsi,%r12,8), %rsi
+ lea (%rsi,%r12,8), %rdx
+
+ mov -8(%rsi), %r8
+ add -8(%rdx), %r8
+ mov %r8, (%rdi)
+ lea 8(%rdi), %rdi
+ jmp .Laddx
+
+
+ .align 16, 0x90
+.L0:
+.L0m4:
+.Llo0: mov (%r13,%r12,8), %rax
+ mov %r12, %r11
+ mul %rbp
+ xor %r10d, %r10d
+ mov %rax, %r14
+ mov %rdx, %rbx
+ mov 8(%r13,%r12,8), %rax
+ mov 24(%rsi,%r12,8), %r15
+ mul %rbp
+ add 16(%rsi,%r12,8), %r14
+ adc %rax, %rbx
+ adc %rdx, %r10
+ add %rbx, %r15
+ imul %r8, %r15
+ jmp .Le0
+
+ .align 16, 0x90
+.Lli0: add %r10, (%rsi,%r11,8)
+ adc %rax, %r9
+ mov (%r13,%r11,8), %rax
+ adc %rdx, %r14
+ xor %r10d, %r10d
+ mul %rbp
+ add %r9, 8(%rsi,%r11,8)
+ adc %rax, %r14
+ adc %rdx, %rbx
+ mov 8(%r13,%r11,8), %rax
+ mul %rbp
+ add %r14, 16(%rsi,%r11,8)
+ adc %rax, %rbx
+ adc %rdx, %r10
+.Le0: mov 16(%r13,%r11,8), %rax
+ mul %rbp
+ add %rbx, 24(%rsi,%r11,8)
+ mov $0, %r14d
+ mov %r14, %rbx
+ adc %rax, %r10
+ mov 24(%r13,%r11,8), %rax
+ mov %r14, %r9
+ adc %rdx, %r9
+ mul %rbp
+ add $4, %r11
+ js .Lli0
+
+.Lle0: add %r10, (%rsi)
+ adc %rax, %r9
+ adc %r14, %rdx
+ add %r9, 8(%rsi)
+ adc $0, %rdx
+ mov %rdx, 16(%rsi,%r12,8)
+ add $8, %rsi
+ mov %r15, %rbp
+ dec %rcx
+ jnz .Llo0
+
+ mov %r12, %rcx
+ sar $2, %rcx
+ clc
+ lea 16(%rsi,%r12,8), %rsi
+ lea (%rsi,%r12,8), %rdx
+ jmp .Laddy
+
+
+ .align 16, 0x90
+.L3m4:
+.Llo3: mov (%r13,%r12,8), %rax
+ mul %rbp
+ mov %rax, %rbx
+ mov %rdx, %r10
+ mov 8(%r13,%r12,8), %rax
+ mov 24(%rsi,%r12,8), %r15
+ mul %rbp
+ add 16(%rsi,%r12,8), %rbx
+ mov $0, %ebx
+ mov %rbx, %r14
+ adc %rax, %r10
+ mov 16(%r13,%r12,8), %rax
+ mov %r14, %r9
+ adc %rdx, %r9
+ add %r10, %r15
+ mul %rbp
+ lea 3(%r12), %r11
+ imul %r8, %r15
+
+
+ .align 16, 0x90
+.Lli3: add %r10, (%rsi,%r11,8)
+ adc %rax, %r9
+ mov (%r13,%r11,8), %rax
+ adc %rdx, %r14
+ xor %r10d, %r10d
+ mul %rbp
+ add %r9, 8(%rsi,%r11,8)
+ adc %rax, %r14
+ adc %rdx, %rbx
+ mov 8(%r13,%r11,8), %rax
+ mul %rbp
+ add %r14, 16(%rsi,%r11,8)
+ adc %rax, %rbx
+ adc %rdx, %r10
+ mov 16(%r13,%r11,8), %rax
+ mul %rbp
+ add %rbx, 24(%rsi,%r11,8)
+ mov $0, %r14d
+ mov %r14, %rbx
+ adc %rax, %r10
+ mov 24(%r13,%r11,8), %rax
+ mov %r14, %r9
+ adc %rdx, %r9
+ mul %rbp
+ add $4, %r11
+ js .Lli3
+
+.Lle3: add %r10, (%rsi)
+ adc %rax, %r9
+ adc %r14, %rdx
+ add %r9, 8(%rsi)
+ adc $0, %rdx
+ mov %rdx, 16(%rsi,%r12,8)
+ mov %r15, %rbp
+ lea 8(%rsi), %rsi
+ dec %rcx
+ jnz .Llo3
+
+
+
+ mov %r12, %rcx
+ sar $2, %rcx
+ lea 40(%rsi,%r12,8), %rsi
+ lea (%rsi,%r12,8), %rdx
+
+ mov -24(%rsi), %r8
+ mov -16(%rsi), %r9
+ mov -8(%rsi), %r10
+ add -24(%rdx), %r8
+ adc -16(%rdx), %r9
+ adc -8(%rdx), %r10
+ mov %r8, (%rdi)
+ mov %r9, 8(%rdi)
+ mov %r10, 16(%rdi)
+ lea 24(%rdi), %rdi
+
+.Laddx:inc %rcx
+ jz .Lad3
+
+.Laddy:mov (%rsi), %r8
+ mov 8(%rsi), %r9
+ inc %rcx
+ jmp .Lmid
+
+
+.Lal3: adc (%rdx), %r8
+ adc 8(%rdx), %r9
+ adc 16(%rdx), %r10
+ adc 24(%rdx), %r11
+ mov %r8, (%rdi)
+ lea 32(%rsi), %rsi
+ mov %r9, 8(%rdi)
+ mov %r10, 16(%rdi)
+ inc %rcx
+ mov %r11, 24(%rdi)
+ lea 32(%rdx), %rdx
+ mov (%rsi), %r8
+ mov 8(%rsi), %r9
+ lea 32(%rdi), %rdi
+.Lmid: mov 16(%rsi), %r10
+ mov 24(%rsi), %r11
+ jnz .Lal3
+
+.Lae3: adc (%rdx), %r8
+ adc 8(%rdx), %r9
+ adc 16(%rdx), %r10
+ adc 24(%rdx), %r11
+ mov %r8, (%rdi)
+ mov %r9, 8(%rdi)
+ mov %r10, 16(%rdi)
+ mov %r11, 24(%rdi)
+
+.Lad3: mov %ecx, %eax
+ adc %eax, %eax
+
+.Lret: pop %r15
+ pop %r14
+ pop %r13
+ pop %r12
+ pop %rbx
+ pop %rbp
+
+ ret
+ .size __gmpn_redc_1,.-__gmpn_redc_1
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh1_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh1_n.s
new file mode 100644
index 0000000..ac1323b
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh1_n.s
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_rsblsh1_n
+ .type __gmpn_rsblsh1_n,@function
+
+__gmpn_rsblsh1_n:
+
+
+ push %rbp
+
+ mov (%rdx), %r8
+ mov %ecx, %eax
+ lea (%rdi,%rcx,8), %rdi
+ lea (%rsi,%rcx,8), %rsi
+ lea (%rdx,%rcx,8), %rdx
+ neg %rcx
+ xor %ebp, %ebp
+ and $3, %eax
+ je .Lb00
+ cmp $2, %eax
+ jc .Lb01
+ je .Lb10
+
+.Lb11: add %r8, %r8
+ mov 8(%rdx,%rcx,8), %r9
+ adc %r9, %r9
+ mov 16(%rdx,%rcx,8), %r10
+ adc %r10, %r10
+ sbb %eax, %eax
+ sub (%rsi,%rcx,8), %r8
+ sbb 8(%rsi,%rcx,8), %r9
+ mov %r8, (%rdi,%rcx,8)
+ mov %r9, 8(%rdi,%rcx,8)
+ sbb 16(%rsi,%rcx,8), %r10
+ mov %r10, 16(%rdi,%rcx,8)
+ sbb %ebp, %ebp
+ add $3, %rcx
+ jmp .Lent
+
+.Lb10: add %r8, %r8
+ mov 8(%rdx,%rcx,8), %r9
+ adc %r9, %r9
+ sbb %eax, %eax
+ sub (%rsi,%rcx,8), %r8
+ sbb 8(%rsi,%rcx,8), %r9
+ mov %r8, (%rdi,%rcx,8)
+ mov %r9, 8(%rdi,%rcx,8)
+ sbb %ebp, %ebp
+ add $2, %rcx
+ jmp .Lent
+
+.Lb01: add %r8, %r8
+ sbb %eax, %eax
+ sub (%rsi,%rcx,8), %r8
+ mov %r8, (%rdi,%rcx,8)
+ sbb %ebp, %ebp
+ inc %rcx
+.Lent: jns .Lend
+
+ .align 16, 0x90
+.Ltop: add %eax, %eax
+
+ mov (%rdx,%rcx,8), %r8
+.Lb00: adc %r8, %r8
+ mov 8(%rdx,%rcx,8), %r9
+ adc %r9, %r9
+ mov 16(%rdx,%rcx,8), %r10
+ adc %r10, %r10
+ mov 24(%rdx,%rcx,8), %r11
+ adc %r11, %r11
+
+ sbb %eax, %eax
+ add %ebp, %ebp
+
+ sbb (%rsi,%rcx,8), %r8
+ nop
+ sbb 8(%rsi,%rcx,8), %r9
+ mov %r8, (%rdi,%rcx,8)
+ mov %r9, 8(%rdi,%rcx,8)
+ sbb 16(%rsi,%rcx,8), %r10
+ sbb 24(%rsi,%rcx,8), %r11
+ mov %r10, 16(%rdi,%rcx,8)
+ mov %r11, 24(%rdi,%rcx,8)
+
+ sbb %ebp, %ebp
+ add $4, %rcx
+ js .Ltop
+
+.Lend:
+
+
+ sub %eax, %ebp
+ movslq %ebp, %rax
+
+ pop %rbp
+
+ ret
+ .size __gmpn_rsblsh1_n,.-__gmpn_rsblsh1_n
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh2_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh2_n.s
new file mode 100644
index 0000000..e9f079a
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh2_n.s
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_rsblsh2_n
+ .type __gmpn_rsblsh2_n,@function
+
+__gmpn_rsblsh2_n:
+
+
+ push %r12
+ push %r13
+ push %r14
+ push %r15
+
+ mov (%rdx), %r8
+ lea (,%r8,4), %r12
+ shr $62, %r8
+
+ mov %ecx, %eax
+ lea (%rdi,%rcx,8), %rdi
+ lea (%rsi,%rcx,8), %rsi
+ lea (%rdx,%rcx,8), %rdx
+ neg %rcx
+ and $3, %al
+ je .Lb00
+ cmp $2, %al
+ jc .Lb01
+ je .Lb10
+
+.Lb11: mov 8(%rdx,%rcx,8), %r10
+ lea (%r8,%r10,4), %r14
+ shr $62, %r10
+ mov 16(%rdx,%rcx,8), %r11
+ lea (%r10,%r11,4), %r15
+ shr $62, %r11
+ sub (%rsi,%rcx,8), %r12
+ sbb 8(%rsi,%rcx,8), %r14
+ sbb 16(%rsi,%rcx,8), %r15
+ sbb %eax, %eax
+ mov %r12, (%rdi,%rcx,8)
+ mov %r14, 8(%rdi,%rcx,8)
+ mov %r15, 16(%rdi,%rcx,8)
+ add $3, %rcx
+ js .Ltop
+ jmp .Lend
+
+.Lb01: mov %r8, %r11
+ sub (%rsi,%rcx,8), %r12
+ sbb %eax, %eax
+ mov %r12, (%rdi,%rcx,8)
+ add $1, %rcx
+ js .Ltop
+ jmp .Lend
+
+.Lb10: mov 8(%rdx,%rcx,8), %r11
+ lea (%r8,%r11,4), %r15
+ shr $62, %r11
+ sub (%rsi,%rcx,8), %r12
+ sbb 8(%rsi,%rcx,8), %r15
+ sbb %eax, %eax
+ mov %r12, (%rdi,%rcx,8)
+ mov %r15, 8(%rdi,%rcx,8)
+ add $2, %rcx
+ js .Ltop
+ jmp .Lend
+
+.Lb00: mov 8(%rdx,%rcx,8), %r9
+ mov 16(%rdx,%rcx,8), %r10
+ jmp .Le00
+
+ .align 16, 0x90
+.Ltop: mov 16(%rdx,%rcx,8), %r10
+ mov (%rdx,%rcx,8), %r8
+ mov 8(%rdx,%rcx,8), %r9
+ lea (%r11,%r8,4), %r12
+ shr $62, %r8
+.Le00: lea (%r8,%r9,4), %r13
+ shr $62, %r9
+ mov 24(%rdx,%rcx,8), %r11
+ lea (%r9,%r10,4), %r14
+ shr $62, %r10
+ lea (%r10,%r11,4), %r15
+ shr $62, %r11
+ add %eax, %eax
+ sbb (%rsi,%rcx,8), %r12
+ sbb 8(%rsi,%rcx,8), %r13
+ sbb 16(%rsi,%rcx,8), %r14
+ sbb 24(%rsi,%rcx,8), %r15
+ mov %r12, (%rdi,%rcx,8)
+ mov %r13, 8(%rdi,%rcx,8)
+ mov %r14, 16(%rdi,%rcx,8)
+ sbb %eax, %eax
+ mov %r15, 24(%rdi,%rcx,8)
+ add $4, %rcx
+ js .Ltop
+.Lend:
+
+
+ add %r11d, %eax
+ movslq %eax, %rax
+
+ pop %r15
+ pop %r14
+ pop %r13
+ pop %r12
+
+ ret
+ .size __gmpn_rsblsh2_n,.-__gmpn_rsblsh2_n
+
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh_n.s
new file mode 100644
index 0000000..d439217
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/rsblsh_n.s
@@ -0,0 +1,228 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_rsblsh_n
+ .type __gmpn_rsblsh_n,@function
+
+__gmpn_rsblsh_n:
+
+
+
+ push %r12
+ push %rbp
+ push %rbx
+
+ mov (%rdx), %rax
+
+ mov $0, %ebp
+ sub %rcx, %rbp
+
+ lea -16(%rsi,%rcx,8), %rsi
+ lea -16(%rdi,%rcx,8), %rdi
+ lea 16(%rdx,%rcx,8), %r12
+
+ mov %rcx, %r9
+
+ mov %r8, %rcx
+ mov $1, %r8d
+ shl %cl, %r8
+
+ mul %r8
+
+ and $3, %r9d
+ jz .Lb0
+ cmp $2, %r9d
+ jc .Lb1
+ jz .Lb2
+
+.Lb3: mov %rax, %r11
+ sub 16(%rsi,%rbp,8), %r11
+ mov -8(%r12,%rbp,8), %rax
+ sbb %ecx, %ecx
+ mov %rdx, %rbx
+ mul %r8
+ or %rax, %rbx
+ mov (%r12,%rbp,8), %rax
+ mov %rdx, %r9
+ mul %r8
+ or %rax, %r9
+ add $3, %rbp
+ jnz .Llo3
+ jmp .Lcj3
+
+.Lb2: mov %rax, %rbx
+ mov -8(%r12,%rbp,8), %rax
+ mov %rdx, %r9
+ mul %r8
+ or %rax, %r9
+ add $2, %rbp
+ jz .Lcj2
+ mov %rdx, %r10
+ mov -16(%r12,%rbp,8), %rax
+ mul %r8
+ or %rax, %r10
+ xor %ecx, %ecx
+ jmp .Llo2
+
+.Lb1: mov %rax, %r9
+ mov %rdx, %r10
+ add $1, %rbp
+ jnz .Lgt1
+ sub 8(%rsi,%rbp,8), %r9
+ jmp .Lcj1
+.Lgt1: mov -16(%r12,%rbp,8), %rax
+ mul %r8
+ or %rax, %r10
+ mov %rdx, %r11
+ mov -8(%r12,%rbp,8), %rax
+ mul %r8
+ or %rax, %r11
+ sub 8(%rsi,%rbp,8), %r9
+ sbb 16(%rsi,%rbp,8), %r10
+ sbb 24(%rsi,%rbp,8), %r11
+ mov (%r12,%rbp,8), %rax
+ sbb %ecx, %ecx
+ jmp .Llo1
+
+.Lb0: mov %rax, %r10
+ mov %rdx, %r11
+ mov -8(%r12,%rbp,8), %rax
+ mul %r8
+ or %rax, %r11
+ sub 16(%rsi,%rbp,8), %r10
+ sbb 24(%rsi,%rbp,8), %r11
+ mov (%r12,%rbp,8), %rax
+ sbb %ecx, %ecx
+ mov %rdx, %rbx
+ mul %r8
+ or %rax, %rbx
+ mov 8(%r12,%rbp,8), %rax
+ add $4, %rbp
+ jz .Lend
+
+ .align 8, 0x90
+.Ltop: mov %rdx, %r9
+ mul %r8
+ or %rax, %r9
+ mov %r10, -16(%rdi,%rbp,8)
+.Llo3: mov %rdx, %r10
+ mov -16(%r12,%rbp,8), %rax
+ mul %r8
+ or %rax, %r10
+ mov %r11, -8(%rdi,%rbp,8)
+.Llo2: mov %rdx, %r11
+ mov -8(%r12,%rbp,8), %rax
+ mul %r8
+ or %rax, %r11
+ add %ecx, %ecx
+ sbb (%rsi,%rbp,8), %rbx
+ sbb 8(%rsi,%rbp,8), %r9
+ sbb 16(%rsi,%rbp,8), %r10
+ sbb 24(%rsi,%rbp,8), %r11
+ mov (%r12,%rbp,8), %rax
+ sbb %ecx, %ecx
+ mov %rbx, (%rdi,%rbp,8)
+.Llo1: mov %rdx, %rbx
+ mul %r8
+ or %rax, %rbx
+ mov %r9, 8(%rdi,%rbp,8)
+.Llo0: mov 8(%r12,%rbp,8), %rax
+ add $4, %rbp
+ jnz .Ltop
+
+.Lend: mov %rdx, %r9
+ mul %r8
+ or %rax, %r9
+ mov %r10, -16(%rdi,%rbp,8)
+.Lcj3: mov %r11, -8(%rdi,%rbp,8)
+.Lcj2: add %ecx, %ecx
+ sbb (%rsi,%rbp,8), %rbx
+ sbb 8(%rsi,%rbp,8), %r9
+ mov %rbx, (%rdi,%rbp,8)
+.Lcj1: mov %r9, 8(%rdi,%rbp,8)
+ mov %rdx, %rax
+ sbb $0, %rax
+ pop %rbx
+ pop %rbp
+ pop %r12
+
+ ret
+ .size __gmpn_rsblsh_n,.-__gmpn_rsblsh_n
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/rsh1add_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/rsh1add_n.s
new file mode 100644
index 0000000..8554f6f
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/rsh1add_n.s
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_rsh1add_nc
+ .type __gmpn_rsh1add_nc,@function
+
+__gmpn_rsh1add_nc:
+
+
+
+ push %rbx
+
+ xor %eax, %eax
+ neg %r8
+ mov (%rsi), %rbx
+ adc (%rdx), %rbx
+ jmp .Lent
+ .size __gmpn_rsh1add_nc,.-__gmpn_rsh1add_nc
+
+ .align 16, 0x90
+ .globl __gmpn_rsh1add_n
+ .type __gmpn_rsh1add_n,@function
+
+__gmpn_rsh1add_n:
+
+
+ push %rbx
+
+ xor %eax, %eax
+ mov (%rsi), %rbx
+ add (%rdx), %rbx
+.Lent:
+ rcr %rbx
+ adc %eax, %eax
+
+ mov %ecx, %r11d
+ and $3, %r11d
+
+ cmp $1, %r11d
+ je .Ldo
+
+.Ln1: cmp $2, %r11d
+ jne .Ln2
+ add %rbx, %rbx
+ mov 8(%rsi), %r10
+ adc 8(%rdx), %r10
+ lea 8(%rsi), %rsi
+ lea 8(%rdx), %rdx
+ lea 8(%rdi), %rdi
+ rcr %r10
+ rcr %rbx
+ mov %rbx, -8(%rdi)
+ jmp .Lcj1
+
+.Ln2: cmp $3, %r11d
+ jne .Ln3
+ add %rbx, %rbx
+ mov 8(%rsi), %r9
+ mov 16(%rsi), %r10
+ adc 8(%rdx), %r9
+ adc 16(%rdx), %r10
+ lea 16(%rsi), %rsi
+ lea 16(%rdx), %rdx
+ lea 16(%rdi), %rdi
+ rcr %r10
+ rcr %r9
+ rcr %rbx
+ mov %rbx, -16(%rdi)
+ jmp .Lcj2
+
+.Ln3: dec %rcx
+ add %rbx, %rbx
+ mov 8(%rsi), %r8
+ mov 16(%rsi), %r9
+ adc 8(%rdx), %r8
+ adc 16(%rdx), %r9
+ mov 24(%rsi), %r10
+ adc 24(%rdx), %r10
+ lea 24(%rsi), %rsi
+ lea 24(%rdx), %rdx
+ lea 24(%rdi), %rdi
+ rcr %r10
+ rcr %r9
+ rcr %r8
+ rcr %rbx
+ mov %rbx, -24(%rdi)
+ mov %r8, -16(%rdi)
+.Lcj2: mov %r9, -8(%rdi)
+.Lcj1: mov %r10, %rbx
+
+.Ldo:
+ shr $2, %rcx
+ je .Lend
+ .align 16, 0x90
+.Ltop: add %rbx, %rbx
+
+ mov 8(%rsi), %r8
+ mov 16(%rsi), %r9
+ adc 8(%rdx), %r8
+ adc 16(%rdx), %r9
+ mov 24(%rsi), %r10
+ mov 32(%rsi), %r11
+ adc 24(%rdx), %r10
+ adc 32(%rdx), %r11
+
+ lea 32(%rsi), %rsi
+ lea 32(%rdx), %rdx
+
+ rcr %r11
+ rcr %r10
+ rcr %r9
+ rcr %r8
+
+ rcr %rbx
+ mov %rbx, (%rdi)
+ mov %r8, 8(%rdi)
+ mov %r9, 16(%rdi)
+ mov %r10, 24(%rdi)
+ mov %r11, %rbx
+
+ lea 32(%rdi), %rdi
+ dec %rcx
+ jne .Ltop
+
+.Lend: mov %rbx, (%rdi)
+ pop %rbx
+
+ ret
+ .size __gmpn_rsh1add_n,.-__gmpn_rsh1add_n
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/rsh1sub_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/rsh1sub_n.s
new file mode 100644
index 0000000..ff06ece
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/rsh1sub_n.s
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_rsh1sub_nc
+ .type __gmpn_rsh1sub_nc,@function
+
+__gmpn_rsh1sub_nc:
+
+
+
+ push %rbx
+
+ xor %eax, %eax
+ neg %r8
+ mov (%rsi), %rbx
+ sbb (%rdx), %rbx
+ jmp .Lent
+ .size __gmpn_rsh1sub_nc,.-__gmpn_rsh1sub_nc
+
+ .align 16, 0x90
+ .globl __gmpn_rsh1sub_n
+ .type __gmpn_rsh1sub_n,@function
+
+__gmpn_rsh1sub_n:
+
+
+ push %rbx
+
+ xor %eax, %eax
+ mov (%rsi), %rbx
+ sub (%rdx), %rbx
+.Lent:
+ rcr %rbx
+ adc %eax, %eax
+
+ mov %ecx, %r11d
+ and $3, %r11d
+
+ cmp $1, %r11d
+ je .Ldo
+
+.Ln1: cmp $2, %r11d
+ jne .Ln2
+ add %rbx, %rbx
+ mov 8(%rsi), %r10
+ sbb 8(%rdx), %r10
+ lea 8(%rsi), %rsi
+ lea 8(%rdx), %rdx
+ lea 8(%rdi), %rdi
+ rcr %r10
+ rcr %rbx
+ mov %rbx, -8(%rdi)
+ jmp .Lcj1
+
+.Ln2: cmp $3, %r11d
+ jne .Ln3
+ add %rbx, %rbx
+ mov 8(%rsi), %r9
+ mov 16(%rsi), %r10
+ sbb 8(%rdx), %r9
+ sbb 16(%rdx), %r10
+ lea 16(%rsi), %rsi
+ lea 16(%rdx), %rdx
+ lea 16(%rdi), %rdi
+ rcr %r10
+ rcr %r9
+ rcr %rbx
+ mov %rbx, -16(%rdi)
+ jmp .Lcj2
+
+.Ln3: dec %rcx
+ add %rbx, %rbx
+ mov 8(%rsi), %r8
+ mov 16(%rsi), %r9
+ sbb 8(%rdx), %r8
+ sbb 16(%rdx), %r9
+ mov 24(%rsi), %r10
+ sbb 24(%rdx), %r10
+ lea 24(%rsi), %rsi
+ lea 24(%rdx), %rdx
+ lea 24(%rdi), %rdi
+ rcr %r10
+ rcr %r9
+ rcr %r8
+ rcr %rbx
+ mov %rbx, -24(%rdi)
+ mov %r8, -16(%rdi)
+.Lcj2: mov %r9, -8(%rdi)
+.Lcj1: mov %r10, %rbx
+
+.Ldo:
+ shr $2, %rcx
+ je .Lend
+ .align 16, 0x90
+.Ltop: add %rbx, %rbx
+
+ mov 8(%rsi), %r8
+ mov 16(%rsi), %r9
+ sbb 8(%rdx), %r8
+ sbb 16(%rdx), %r9
+ mov 24(%rsi), %r10
+ mov 32(%rsi), %r11
+ sbb 24(%rdx), %r10
+ sbb 32(%rdx), %r11
+
+ lea 32(%rsi), %rsi
+ lea 32(%rdx), %rdx
+
+ rcr %r11
+ rcr %r10
+ rcr %r9
+ rcr %r8
+
+ rcr %rbx
+ mov %rbx, (%rdi)
+ mov %r8, 8(%rdi)
+ mov %r9, 16(%rdi)
+ mov %r10, 24(%rdi)
+ mov %r11, %rbx
+
+ lea 32(%rdi), %rdi
+ dec %rcx
+ jne .Ltop
+
+.Lend: mov %rbx, (%rdi)
+ pop %rbx
+
+ ret
+ .size __gmpn_rsh1sub_n,.-__gmpn_rsh1sub_n
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/rshift.s b/vere/ext/gmp/gen/x86_64-linux/mpn/rshift.s
new file mode 100644
index 0000000..8ddd7b5
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/rshift.s
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 32, 0x90
+ .globl __gmpn_rshift
+ .type __gmpn_rshift,@function
+
+__gmpn_rshift:
+
+
+ neg %ecx
+ mov (%rsi), %rax
+ shl %cl, %rax
+ neg %ecx
+
+ lea 1(%rdx), %r8d
+
+ lea -8(%rsi,%rdx,8), %rsi
+ lea -8(%rdi,%rdx,8), %rdi
+ neg %rdx
+
+ and $3, %r8d
+ je .Lrlx
+
+ dec %r8d
+ jne .L1
+
+ mov 8(%rsi,%rdx,8), %r10
+ shr %cl, %r10
+ neg %ecx
+ mov 16(%rsi,%rdx,8), %r8
+ shl %cl, %r8
+ or %r8, %r10
+ mov %r10, 8(%rdi,%rdx,8)
+ inc %rdx
+ jmp .Lrll
+
+.L1: dec %r8d
+ je .L1x
+
+ mov 8(%rsi,%rdx,8), %r10
+ shr %cl, %r10
+ neg %ecx
+ mov 16(%rsi,%rdx,8), %r8
+ shl %cl, %r8
+ or %r8, %r10
+ mov %r10, 8(%rdi,%rdx,8)
+ inc %rdx
+ neg %ecx
+.L1x:
+ cmp $-1, %rdx
+ je .Last
+ mov 8(%rsi,%rdx,8), %r10
+ shr %cl, %r10
+ mov 16(%rsi,%rdx,8), %r11
+ shr %cl, %r11
+ neg %ecx
+ mov 16(%rsi,%rdx,8), %r8
+ mov 24(%rsi,%rdx,8), %r9
+ shl %cl, %r8
+ or %r8, %r10
+ shl %cl, %r9
+ or %r9, %r11
+ mov %r10, 8(%rdi,%rdx,8)
+ mov %r11, 16(%rdi,%rdx,8)
+ add $2, %rdx
+
+.Lrll: neg %ecx
+.Lrlx: mov 8(%rsi,%rdx,8), %r10
+ shr %cl, %r10
+ mov 16(%rsi,%rdx,8), %r11
+ shr %cl, %r11
+
+ add $4, %rdx
+ jb .Lend
+ .align 16, 0x90
+.Ltop:
+
+ neg %ecx
+ mov -16(%rsi,%rdx,8), %r8
+ mov -8(%rsi,%rdx,8), %r9
+ shl %cl, %r8
+ or %r8, %r10
+ shl %cl, %r9
+ or %r9, %r11
+ mov %r10, -24(%rdi,%rdx,8)
+ mov %r11, -16(%rdi,%rdx,8)
+
+ mov (%rsi,%rdx,8), %r8
+ mov 8(%rsi,%rdx,8), %r9
+ shl %cl, %r8
+ shl %cl, %r9
+
+
+ neg %ecx
+ mov -8(%rsi,%rdx,8), %r10
+ mov 0(%rsi,%rdx,8), %r11
+ shr %cl, %r10
+ or %r10, %r8
+ shr %cl, %r11
+ or %r11, %r9
+ mov %r8, -8(%rdi,%rdx,8)
+ mov %r9, 0(%rdi,%rdx,8)
+
+ mov 8(%rsi,%rdx,8), %r10
+ mov 16(%rsi,%rdx,8), %r11
+ shr %cl, %r10
+ shr %cl, %r11
+
+ add $4, %rdx
+ jae .Ltop
+.Lend:
+ neg %ecx
+ mov -8(%rsi), %r8
+ shl %cl, %r8
+ or %r8, %r10
+ mov (%rsi), %r9
+ shl %cl, %r9
+ or %r9, %r11
+ mov %r10, -16(%rdi)
+ mov %r11, -8(%rdi)
+
+ neg %ecx
+.Last: mov (%rsi), %r10
+ shr %cl, %r10
+ mov %r10, (%rdi)
+
+ ret
+ .size __gmpn_rshift,.-__gmpn_rshift
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/sec_tabselect.s b/vere/ext/gmp/gen/x86_64-linux/mpn/sec_tabselect.s
new file mode 100644
index 0000000..7a50a70
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/sec_tabselect.s
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_sec_tabselect
+ .type __gmpn_sec_tabselect,@function
+
+__gmpn_sec_tabselect:
+
+
+
+
+ push %rbx
+ push %rbp
+ push %r12
+ push %r13
+ push %r14
+ push %r15
+
+ mov %rdx, %r9
+ add $-4, %r9
+ js .Louter_end
+
+.Louter_top:
+ mov %rcx, %rbp
+ push %rsi
+ xor %r12d, %r12d
+ xor %r13d, %r13d
+ xor %r14d, %r14d
+ xor %r15d, %r15d
+ mov %r8, %rbx
+
+ .align 16, 0x90
+.Ltop: sub $1, %rbx
+ sbb %rax, %rax
+ mov 0(%rsi), %r10
+ mov 8(%rsi), %r11
+ and %rax, %r10
+ and %rax, %r11
+ or %r10, %r12
+ or %r11, %r13
+ mov 16(%rsi), %r10
+ mov 24(%rsi), %r11
+ and %rax, %r10
+ and %rax, %r11
+ or %r10, %r14
+ or %r11, %r15
+ lea (%rsi,%rdx,8), %rsi
+ add $-1, %rbp
+ jne .Ltop
+
+ mov %r12, 0(%rdi)
+ mov %r13, 8(%rdi)
+ mov %r14, 16(%rdi)
+ mov %r15, 24(%rdi)
+ pop %rsi
+ lea 32(%rsi), %rsi
+ lea 32(%rdi), %rdi
+ add $-4, %r9
+ jns .Louter_top
+.Louter_end:
+
+ test $2, %dl
+ jz .Lb0x
+.Lb1x: mov %rcx, %rbp
+ push %rsi
+ xor %r12d, %r12d
+ xor %r13d, %r13d
+ mov %r8, %rbx
+ .align 16, 0x90
+.Ltp2: sub $1, %rbx
+ sbb %rax, %rax
+ mov 0(%rsi), %r10
+ mov 8(%rsi), %r11
+ and %rax, %r10
+ and %rax, %r11
+ or %r10, %r12
+ or %r11, %r13
+ lea (%rsi,%rdx,8), %rsi
+ add $-1, %rbp
+ jne .Ltp2
+ mov %r12, 0(%rdi)
+ mov %r13, 8(%rdi)
+ pop %rsi
+ lea 16(%rsi), %rsi
+ lea 16(%rdi), %rdi
+
+.Lb0x: test $1, %dl
+ jz .Lb00
+.Lb01: mov %rcx, %rbp
+ xor %r12d, %r12d
+ mov %r8, %rbx
+ .align 16, 0x90
+.Ltp1: sub $1, %rbx
+ sbb %rax, %rax
+ mov 0(%rsi), %r10
+ and %rax, %r10
+ or %r10, %r12
+ lea (%rsi,%rdx,8), %rsi
+ add $-1, %rbp
+ jne .Ltp1
+ mov %r12, 0(%rdi)
+
+.Lb00: pop %r15
+ pop %r14
+ pop %r13
+ pop %r12
+ pop %rbp
+ pop %rbx
+
+ ret
+ .size __gmpn_sec_tabselect,.-__gmpn_sec_tabselect
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/sqr_basecase.s b/vere/ext/gmp/gen/x86_64-linux/mpn/sqr_basecase.s
new file mode 100644
index 0000000..eb24851
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/sqr_basecase.s
@@ -0,0 +1,818 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_sqr_basecase
+ .type __gmpn_sqr_basecase,@function
+
+__gmpn_sqr_basecase:
+
+
+ mov %edx, %ecx
+ mov %edx, %r11d
+
+ add $-40, %rsp
+
+ and $3, %ecx
+ cmp $4, %edx
+ lea 4(%rcx), %r8
+
+ mov %rbx, 32(%rsp)
+ mov %rbp, 24(%rsp)
+ mov %r12, 16(%rsp)
+ mov %r13, 8(%rsp)
+ mov %r14, (%rsp)
+
+ cmovg %r8, %rcx
+
+ lea .Ltab(%rip), %rax
+ movslq (%rax,%rcx,4), %r10
+ add %r10, %rax
+ jmp *%rax
+
+ .section .data.rel.ro.local,"a",@progbits
+ .align 8, 0x90
+.Ltab: .long .L4-.Ltab
+ .long .L1-.Ltab
+ .long .L2-.Ltab
+ .long .L3-.Ltab
+ .long .L0m4-.Ltab
+ .long .L1m4-.Ltab
+ .long .L2m4-.Ltab
+ .long .L3m4-.Ltab
+ .text
+
+.L1: mov (%rsi), %rax
+ mul %rax
+ add $40, %rsp
+ mov %rax, (%rdi)
+ mov %rdx, 8(%rdi)
+
+ ret
+
+.L2: mov (%rsi), %rax
+ mov %rax, %r8
+ mul %rax
+ mov 8(%rsi), %r11
+ mov %rax, (%rdi)
+ mov %r11, %rax
+ mov %rdx, %r9
+ mul %rax
+ add $40, %rsp
+ mov %rax, %r10
+ mov %r11, %rax
+ mov %rdx, %r11
+ mul %r8
+ xor %r8, %r8
+ add %rax, %r9
+ adc %rdx, %r10
+ adc %r8, %r11
+ add %rax, %r9
+ mov %r9, 8(%rdi)
+ adc %rdx, %r10
+ mov %r10, 16(%rdi)
+ adc %r8, %r11
+ mov %r11, 24(%rdi)
+
+ ret
+
+.L3: mov (%rsi), %rax
+ mov %rax, %r10
+ mul %rax
+ mov 8(%rsi), %r11
+ mov %rax, (%rdi)
+ mov %r11, %rax
+ mov %rdx, 8(%rdi)
+ mul %rax
+ mov 16(%rsi), %rcx
+ mov %rax, 16(%rdi)
+ mov %rcx, %rax
+ mov %rdx, 24(%rdi)
+ mul %rax
+ mov %rax, 32(%rdi)
+ mov %rdx, 40(%rdi)
+
+ mov %r11, %rax
+ mul %r10
+ mov %rax, %r8
+ mov %rcx, %rax
+ mov %rdx, %r9
+ mul %r10
+ xor %r10, %r10
+ add %rax, %r9
+ mov %r11, %rax
+ mov %r10, %r11
+ adc %rdx, %r10
+
+ mul %rcx
+ add $40, %rsp
+ add %rax, %r10
+ adc %r11, %rdx
+ add %r8, %r8
+ adc %r9, %r9
+ adc %r10, %r10
+ adc %rdx, %rdx
+ adc %r11, %r11
+ add %r8, 8(%rdi)
+ adc %r9, 16(%rdi)
+ adc %r10, 24(%rdi)
+ adc %rdx, 32(%rdi)
+ adc %r11, 40(%rdi)
+
+ ret
+
+.L4: mov (%rsi), %rax
+ mov %rax, %r11
+ mul %rax
+ mov 8(%rsi), %rbx
+ mov %rax, (%rdi)
+ mov %rbx, %rax
+ mov %rdx, 8(%rdi)
+ mul %rax
+ mov %rax, 16(%rdi)
+ mov %rdx, 24(%rdi)
+ mov 16(%rsi), %rax
+ mul %rax
+ mov %rax, 32(%rdi)
+ mov %rdx, 40(%rdi)
+ mov 24(%rsi), %rax
+ mul %rax
+ mov %rax, 48(%rdi)
+ mov %rbx, %rax
+ mov %rdx, 56(%rdi)
+
+ mul %r11
+ add $32, %rsp
+ mov %rax, %r8
+ mov %rdx, %r9
+ mov 16(%rsi), %rax
+ mul %r11
+ xor %r10, %r10
+ add %rax, %r9
+ adc %rdx, %r10
+ mov 24(%rsi), %rax
+ mul %r11
+ xor %r11, %r11
+ add %rax, %r10
+ adc %rdx, %r11
+ mov 16(%rsi), %rax
+ mul %rbx
+ xor %rcx, %rcx
+ add %rax, %r10
+ adc %rdx, %r11
+ adc $0, %rcx
+ mov 24(%rsi), %rax
+ mul %rbx
+ pop %rbx
+ add %rax, %r11
+ adc %rdx, %rcx
+ mov 16(%rsi), %rdx
+ mov 24(%rsi), %rax
+ mul %rdx
+ add %rax, %rcx
+ adc $0, %rdx
+
+ add %r8, %r8
+ adc %r9, %r9
+ adc %r10, %r10
+ adc %r11, %r11
+ adc %rcx, %rcx
+ mov $0, %eax
+ adc %rdx, %rdx
+
+ adc %rax, %rax
+ add %r8, 8(%rdi)
+ adc %r9, 16(%rdi)
+ adc %r10, 24(%rdi)
+ adc %r11, 32(%rdi)
+ adc %rcx, 40(%rdi)
+ adc %rdx, 48(%rdi)
+ adc %rax, 56(%rdi)
+
+ ret
+
+
+.L0m4:
+ lea -16(%rdi,%r11,8), %r12
+ mov (%rsi), %r13
+ mov 8(%rsi), %rax
+ lea (%rsi,%r11,8), %rsi
+
+ lea -4(%r11), %r8
+
+ xor %r9d, %r9d
+ sub %r11, %r9
+
+ mul %r13
+ xor %ebp, %ebp
+ mov %rax, %rbx
+ mov 16(%rsi,%r9,8), %rax
+ mov %rdx, %r10
+ jmp .LL3
+
+ .align 16, 0x90
+.Lmul_1_m3_top:
+ add %rax, %rbp
+ mov %r10, (%r12,%r9,8)
+ mov (%rsi,%r9,8), %rax
+ adc %rdx, %rcx
+ xor %ebx, %ebx
+ mul %r13
+ xor %r10d, %r10d
+ mov %rbp, 8(%r12,%r9,8)
+ add %rax, %rcx
+ adc %rdx, %rbx
+ mov 8(%rsi,%r9,8), %rax
+ mov %rcx, 16(%r12,%r9,8)
+ xor %ebp, %ebp
+ mul %r13
+ add %rax, %rbx
+ mov 16(%rsi,%r9,8), %rax
+ adc %rdx, %r10
+.LL3: xor %ecx, %ecx
+ mul %r13
+ add %rax, %r10
+ mov 24(%rsi,%r9,8), %rax
+ adc %rdx, %rbp
+ mov %rbx, 24(%r12,%r9,8)
+ mul %r13
+ add $4, %r9
+ js .Lmul_1_m3_top
+
+ add %rax, %rbp
+ mov %r10, (%r12)
+ adc %rdx, %rcx
+ mov %rbp, 8(%r12)
+ mov %rcx, 16(%r12)
+
+ lea 16(%r12), %r12
+ lea -8(%rsi), %rsi
+ jmp .Ldowhile
+
+
+.L1m4:
+ lea 8(%rdi,%r11,8), %r12
+ mov (%rsi), %r13
+ mov 8(%rsi), %rax
+ lea 8(%rsi,%r11,8), %rsi
+
+ lea -3(%r11), %r8
+
+ lea -3(%r11), %r9
+ neg %r9
+
+ mov %rax, %r14
+ mul %r13
+ mov %rdx, %rcx
+ xor %ebp, %ebp
+ mov %rax, 8(%rdi)
+ jmp .Lm0
+
+ .align 16, 0x90
+.Lmul_2_m0_top:
+ mul %r14
+ add %rax, %rbx
+ adc %rdx, %rcx
+ mov -24(%rsi,%r9,8), %rax
+ mov $0, %ebp
+ mul %r13
+ add %rax, %rbx
+ mov -24(%rsi,%r9,8), %rax
+ adc %rdx, %rcx
+ adc $0, %ebp
+ mul %r14
+ add %rax, %rcx
+ mov %rbx, -24(%r12,%r9,8)
+ adc %rdx, %rbp
+.Lm0: mov -16(%rsi,%r9,8), %rax
+ mul %r13
+ mov $0, %r10d
+ add %rax, %rcx
+ adc %rdx, %rbp
+ mov -16(%rsi,%r9,8), %rax
+ adc $0, %r10d
+ mov $0, %ebx
+ mov %rcx, -16(%r12,%r9,8)
+ mul %r14
+ add %rax, %rbp
+ mov -8(%rsi,%r9,8), %rax
+ adc %rdx, %r10
+ mov $0, %ecx
+ mul %r13
+ add %rax, %rbp
+ mov -8(%rsi,%r9,8), %rax
+ adc %rdx, %r10
+ adc $0, %ebx
+ mul %r14
+ add %rax, %r10
+ mov %rbp, -8(%r12,%r9,8)
+ adc %rdx, %rbx
+.Lm2x: mov (%rsi,%r9,8), %rax
+ mul %r13
+ add %rax, %r10
+ adc %rdx, %rbx
+ adc $0, %ecx
+ add $4, %r9
+ mov -32(%rsi,%r9,8), %rax
+ mov %r10, -32(%r12,%r9,8)
+ js .Lmul_2_m0_top
+
+ mul %r14
+ add %rax, %rbx
+ adc %rdx, %rcx
+ mov %rbx, -8(%r12)
+ mov %rcx, (%r12)
+
+ lea -16(%rsi), %rsi
+ lea 0(%r12), %r12
+ jmp .Ldowhile_end
+
+
+.L2m4:
+ lea -16(%rdi,%r11,8), %r12
+ mov (%rsi), %r13
+ mov 8(%rsi), %rax
+ lea (%rsi,%r11,8), %rsi
+
+ lea -4(%r11), %r8
+
+ lea -2(%r11), %r9
+ neg %r9
+
+ mul %r13
+ mov %rax, %rbp
+ mov (%rsi,%r9,8), %rax
+ mov %rdx, %rcx
+ jmp .LL1
+
+ .align 16, 0x90
+.Lmul_1_m1_top:
+ add %rax, %rbp
+ mov %r10, (%r12,%r9,8)
+ mov (%rsi,%r9,8), %rax
+ adc %rdx, %rcx
+.LL1: xor %ebx, %ebx
+ mul %r13
+ xor %r10d, %r10d
+ mov %rbp, 8(%r12,%r9,8)
+ add %rax, %rcx
+ adc %rdx, %rbx
+ mov 8(%rsi,%r9,8), %rax
+ mov %rcx, 16(%r12,%r9,8)
+ xor %ebp, %ebp
+ mul %r13
+ add %rax, %rbx
+ mov 16(%rsi,%r9,8), %rax
+ adc %rdx, %r10
+ xor %ecx, %ecx
+ mul %r13
+ add %rax, %r10
+ mov 24(%rsi,%r9,8), %rax
+ adc %rdx, %rbp
+ mov %rbx, 24(%r12,%r9,8)
+ mul %r13
+ add $4, %r9
+ js .Lmul_1_m1_top
+
+ add %rax, %rbp
+ mov %r10, (%r12)
+ adc %rdx, %rcx
+ mov %rbp, 8(%r12)
+ mov %rcx, 16(%r12)
+
+ lea 16(%r12), %r12
+ lea -8(%rsi), %rsi
+ jmp .Ldowhile_mid
+
+
+.L3m4:
+ lea 8(%rdi,%r11,8), %r12
+ mov (%rsi), %r13
+ mov 8(%rsi), %rax
+ lea 8(%rsi,%r11,8), %rsi
+
+ lea -5(%r11), %r8
+
+ lea -1(%r11), %r9
+ neg %r9
+
+ mov %rax, %r14
+ mul %r13
+ mov %rdx, %r10
+ xor %ebx, %ebx
+ xor %ecx, %ecx
+ mov %rax, 8(%rdi)
+ jmp .Lm2
+
+ .align 16, 0x90
+.Lmul_2_m2_top:
+ mul %r14
+ add %rax, %rbx
+ adc %rdx, %rcx
+ mov -24(%rsi,%r9,8), %rax
+ mov $0, %ebp
+ mul %r13
+ add %rax, %rbx
+ mov -24(%rsi,%r9,8), %rax
+ adc %rdx, %rcx
+ adc $0, %ebp
+ mul %r14
+ add %rax, %rcx
+ mov %rbx, -24(%r12,%r9,8)
+ adc %rdx, %rbp
+ mov -16(%rsi,%r9,8), %rax
+ mul %r13
+ mov $0, %r10d
+ add %rax, %rcx
+ adc %rdx, %rbp
+ mov -16(%rsi,%r9,8), %rax
+ adc $0, %r10d
+ mov $0, %ebx
+ mov %rcx, -16(%r12,%r9,8)
+ mul %r14
+ add %rax, %rbp
+ mov -8(%rsi,%r9,8), %rax
+ adc %rdx, %r10
+ mov $0, %ecx
+ mul %r13
+ add %rax, %rbp
+ mov -8(%rsi,%r9,8), %rax
+ adc %rdx, %r10
+ adc $0, %ebx
+ mul %r14
+ add %rax, %r10
+ mov %rbp, -8(%r12,%r9,8)
+ adc %rdx, %rbx
+.Lm2: mov (%rsi,%r9,8), %rax
+ mul %r13
+ add %rax, %r10
+ adc %rdx, %rbx
+ adc $0, %ecx
+ add $4, %r9
+ mov -32(%rsi,%r9,8), %rax
+ mov %r10, -32(%r12,%r9,8)
+ js .Lmul_2_m2_top
+
+ mul %r14
+ add %rax, %rbx
+ adc %rdx, %rcx
+ mov %rbx, -8(%r12)
+ mov %rcx, (%r12)
+
+ lea -16(%rsi), %rsi
+ jmp .Ldowhile_mid
+
+.Ldowhile:
+
+ lea 4(%r8), %r9
+ neg %r9
+
+ mov 16(%rsi,%r9,8), %r13
+ mov 24(%rsi,%r9,8), %r14
+ mov 24(%rsi,%r9,8), %rax
+ mul %r13
+ xor %r10d, %r10d
+ add %rax, 24(%r12,%r9,8)
+ adc %rdx, %r10
+ xor %ebx, %ebx
+ xor %ecx, %ecx
+ jmp .Lam2
+
+ .align 16, 0x90
+.Laddmul_2_m2_top:
+ add %r10, (%r12,%r9,8)
+ adc %rax, %rbx
+ mov 8(%rsi,%r9,8), %rax
+ adc %rdx, %rcx
+ mov $0, %ebp
+ mul %r13
+ add %rax, %rbx
+ mov 8(%rsi,%r9,8), %rax
+ adc %rdx, %rcx
+ adc $0, %ebp
+ mul %r14
+ add %rbx, 8(%r12,%r9,8)
+ adc %rax, %rcx
+ adc %rdx, %rbp
+ mov 16(%rsi,%r9,8), %rax
+ mov $0, %r10d
+ mul %r13
+ add %rax, %rcx
+ mov 16(%rsi,%r9,8), %rax
+ adc %rdx, %rbp
+ adc $0, %r10d
+ mul %r14
+ add %rcx, 16(%r12,%r9,8)
+ adc %rax, %rbp
+ mov 24(%rsi,%r9,8), %rax
+ adc %rdx, %r10
+ mul %r13
+ mov $0, %ebx
+ add %rax, %rbp
+ adc %rdx, %r10
+ mov $0, %ecx
+ mov 24(%rsi,%r9,8), %rax
+ adc $0, %ebx
+ mul %r14
+ add %rbp, 24(%r12,%r9,8)
+ adc %rax, %r10
+ adc %rdx, %rbx
+.Lam2: mov 32(%rsi,%r9,8), %rax
+ mul %r13
+ add %rax, %r10
+ mov 32(%rsi,%r9,8), %rax
+ adc %rdx, %rbx
+ adc $0, %ecx
+ mul %r14
+ add $4, %r9
+ js .Laddmul_2_m2_top
+
+ add %r10, (%r12)
+ adc %rax, %rbx
+ adc %rdx, %rcx
+ mov %rbx, 8(%r12)
+ mov %rcx, 16(%r12)
+
+ lea 16(%r12), %r12
+
+ add $-2, %r8d
+
+.Ldowhile_mid:
+
+ lea 2(%r8), %r9
+ neg %r9
+
+ mov (%rsi,%r9,8), %r13
+ mov 8(%rsi,%r9,8), %r14
+ mov 8(%rsi,%r9,8), %rax
+ mul %r13
+ xor %ecx, %ecx
+ add %rax, 8(%r12,%r9,8)
+ adc %rdx, %rcx
+ xor %ebp, %ebp
+ jmp .L20
+
+ .align 16, 0x90
+.Laddmul_2_m0_top:
+ add %r10, (%r12,%r9,8)
+ adc %rax, %rbx
+ mov 8(%rsi,%r9,8), %rax
+ adc %rdx, %rcx
+ mov $0, %ebp
+ mul %r13
+ add %rax, %rbx
+ mov 8(%rsi,%r9,8), %rax
+ adc %rdx, %rcx
+ adc $0, %ebp
+ mul %r14
+ add %rbx, 8(%r12,%r9,8)
+ adc %rax, %rcx
+ adc %rdx, %rbp
+.L20: mov 16(%rsi,%r9,8), %rax
+ mov $0, %r10d
+ mul %r13
+ add %rax, %rcx
+ mov 16(%rsi,%r9,8), %rax
+ adc %rdx, %rbp
+ adc $0, %r10d
+ mul %r14
+ add %rcx, 16(%r12,%r9,8)
+ adc %rax, %rbp
+ mov 24(%rsi,%r9,8), %rax
+ adc %rdx, %r10
+ mul %r13
+ mov $0, %ebx
+ add %rax, %rbp
+ adc %rdx, %r10
+ mov $0, %ecx
+ mov 24(%rsi,%r9,8), %rax
+ adc $0, %ebx
+ mul %r14
+ add %rbp, 24(%r12,%r9,8)
+ adc %rax, %r10
+ adc %rdx, %rbx
+ mov 32(%rsi,%r9,8), %rax
+ mul %r13
+ add %rax, %r10
+ mov 32(%rsi,%r9,8), %rax
+ adc %rdx, %rbx
+ adc $0, %ecx
+ mul %r14
+ add $4, %r9
+ js .Laddmul_2_m0_top
+
+ add %r10, (%r12)
+ adc %rax, %rbx
+ adc %rdx, %rcx
+ mov %rbx, 8(%r12)
+ mov %rcx, 16(%r12)
+
+ lea 16(%r12), %r12
+.Ldowhile_end:
+
+ add $-2, %r8d
+ jne .Ldowhile
+
+
+ mov -16(%rsi), %r13
+ mov -8(%rsi), %r14
+ mov -8(%rsi), %rax
+ mul %r13
+ xor %r10d, %r10d
+ add %rax, -8(%r12)
+ adc %rdx, %r10
+ xor %ebx, %ebx
+ xor %ecx, %ecx
+ mov (%rsi), %rax
+ mul %r13
+ add %rax, %r10
+ mov (%rsi), %rax
+ adc %rdx, %rbx
+ mul %r14
+ add %r10, (%r12)
+ adc %rax, %rbx
+ adc %rdx, %rcx
+ mov %rbx, 8(%r12)
+ mov %rcx, 16(%r12)
+
+
+ lea -4(%r11,%r11), %r9
+
+ mov 8(%rdi), %r11
+ lea -8(%rsi), %rsi
+ lea (%rdi,%r9,8), %rdi
+ neg %r9
+ mov (%rsi,%r9,4), %rax
+ mul %rax
+ test $2, %r9b
+ jnz .Lodd
+
+.Levn: add %r11, %r11
+ sbb %ebx, %ebx
+ add %rdx, %r11
+ mov %rax, (%rdi,%r9,8)
+ jmp .Ld0
+
+.Lodd: add %r11, %r11
+ sbb %ebp, %ebp
+ add %rdx, %r11
+ mov %rax, (%rdi,%r9,8)
+ lea -2(%r9), %r9
+ jmp .Ld1
+
+ .align 16, 0x90
+.Ltop: mov (%rsi,%r9,4), %rax
+ mul %rax
+ add %ebp, %ebp
+ adc %rax, %r10
+ adc %rdx, %r11
+ mov %r10, (%rdi,%r9,8)
+.Ld0: mov %r11, 8(%rdi,%r9,8)
+ mov 16(%rdi,%r9,8), %r10
+ adc %r10, %r10
+ mov 24(%rdi,%r9,8), %r11
+ adc %r11, %r11
+ nop
+ sbb %ebp, %ebp
+ mov 8(%rsi,%r9,4), %rax
+ mul %rax
+ add %ebx, %ebx
+ adc %rax, %r10
+ adc %rdx, %r11
+ mov %r10, 16(%rdi,%r9,8)
+.Ld1: mov %r11, 24(%rdi,%r9,8)
+ mov 32(%rdi,%r9,8), %r10
+ adc %r10, %r10
+ mov 40(%rdi,%r9,8), %r11
+ adc %r11, %r11
+ sbb %ebx, %ebx
+ add $4, %r9
+ js .Ltop
+
+ mov (%rsi), %rax
+ mul %rax
+ add %ebp, %ebp
+ adc %rax, %r10
+ adc %rdx, %r11
+ mov %r10, (%rdi)
+ mov %r11, 8(%rdi)
+ mov 16(%rdi), %r10
+ adc %r10, %r10
+ sbb %ebp, %ebp
+ neg %ebp
+ mov 8(%rsi), %rax
+ mul %rax
+ add %ebx, %ebx
+ adc %rax, %r10
+ adc %rbp, %rdx
+ mov %r10, 16(%rdi)
+ mov %rdx, 24(%rdi)
+
+ pop %r14
+ pop %r13
+ pop %r12
+ pop %rbp
+ pop %rbx
+
+ ret
+ .size __gmpn_sqr_basecase,.-__gmpn_sqr_basecase
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/sqr_diag_addlsh1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/sqr_diag_addlsh1.s
new file mode 100644
index 0000000..7203603
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/sqr_diag_addlsh1.s
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 32, 0x90
+ .globl __gmpn_sqr_diag_addlsh1
+ .type __gmpn_sqr_diag_addlsh1,@function
+
+__gmpn_sqr_diag_addlsh1:
+
+
+ push %rbx
+
+ dec %rcx
+ shl %rcx
+
+ mov (%rdx), %rax
+
+ lea (%rdi,%rcx,8), %rdi
+ lea (%rsi,%rcx,8), %rsi
+ lea (%rdx,%rcx,4), %r11
+ neg %rcx
+
+ mul %rax
+ mov %rax, (%rdi,%rcx,8)
+
+ xor %ebx, %ebx
+ jmp .Lmid
+
+ .align 16, 0x90
+.Ltop: add %r10, %r8
+ adc %rax, %r9
+ mov %r8, -8(%rdi,%rcx,8)
+ mov %r9, (%rdi,%rcx,8)
+.Lmid: mov 8(%r11,%rcx,4), %rax
+ mov (%rsi,%rcx,8), %r8
+ mov 8(%rsi,%rcx,8), %r9
+ adc %r8, %r8
+ adc %r9, %r9
+ lea (%rdx,%rbx), %r10
+ setc %bl
+ mul %rax
+ add $2, %rcx
+ js .Ltop
+
+.Lend: add %r10, %r8
+ adc %rax, %r9
+ mov %r8, -8(%rdi)
+ mov %r9, (%rdi)
+ adc %rbx, %rdx
+ mov %rdx, 8(%rdi)
+
+ pop %rbx
+
+ ret
+ .size __gmpn_sqr_diag_addlsh1,.-__gmpn_sqr_diag_addlsh1
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/sub_err1_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/sub_err1_n.s
new file mode 100644
index 0000000..cbef8af
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/sub_err1_n.s
@@ -0,0 +1,237 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_sub_err1_n
+ .type __gmpn_sub_err1_n,@function
+
+__gmpn_sub_err1_n:
+
+ mov 8(%rsp), %rax
+
+ push %rbx
+ push %rbp
+ push %r12
+ push %r13
+ push %r14
+ push %r15
+
+ lea (%rsi,%r9,8), %rsi
+ lea (%rdx,%r9,8), %rdx
+ lea (%rdi,%r9,8), %rdi
+
+ mov %r9d, %r10d
+ and $3, %r10d
+ jz .L0mod4
+ cmp $2, %r10d
+ jc .L1mod4
+ jz .L2mod4
+.L3mod4:
+ xor %ebx, %ebx
+ xor %ebp, %ebp
+ xor %r10d, %r10d
+ xor %r11d, %r11d
+ lea -24(%r8,%r9,8), %r8
+ neg %r9
+
+ shr $1, %al
+ mov (%rsi,%r9,8), %r14
+ mov 8(%rsi,%r9,8), %r15
+ sbb (%rdx,%r9,8), %r14
+ mov %r14, (%rdi,%r9,8)
+ cmovc 16(%r8), %rbx
+ sbb 8(%rdx,%r9,8), %r15
+ mov %r15, 8(%rdi,%r9,8)
+ cmovc 8(%r8), %r10
+ mov 16(%rsi,%r9,8), %r14
+ sbb 16(%rdx,%r9,8), %r14
+ mov %r14, 16(%rdi,%r9,8)
+ cmovc (%r8), %r11
+ setc %al
+ add %r10, %rbx
+ adc $0, %rbp
+ add %r11, %rbx
+ adc $0, %rbp
+
+ add $3, %r9
+ jnz .Lloop
+ jmp .Lend
+
+ .align 16, 0x90
+.L0mod4:
+ xor %ebx, %ebx
+ xor %ebp, %ebp
+ lea (%r8,%r9,8), %r8
+ neg %r9
+ jmp .Lloop
+
+ .align 16, 0x90
+.L1mod4:
+ xor %ebx, %ebx
+ xor %ebp, %ebp
+ lea -8(%r8,%r9,8), %r8
+ neg %r9
+
+ shr $1, %al
+ mov (%rsi,%r9,8), %r14
+ sbb (%rdx,%r9,8), %r14
+ mov %r14, (%rdi,%r9,8)
+ cmovc (%r8), %rbx
+ setc %al
+
+ add $1, %r9
+ jnz .Lloop
+ jmp .Lend
+
+ .align 16, 0x90
+.L2mod4:
+ xor %ebx, %ebx
+ xor %ebp, %ebp
+ xor %r10d, %r10d
+ lea -16(%r8,%r9,8), %r8
+ neg %r9
+
+ shr $1, %al
+ mov (%rsi,%r9,8), %r14
+ mov 8(%rsi,%r9,8), %r15
+ sbb (%rdx,%r9,8), %r14
+ mov %r14, (%rdi,%r9,8)
+ cmovc 8(%r8), %rbx
+ sbb 8(%rdx,%r9,8), %r15
+ mov %r15, 8(%rdi,%r9,8)
+ cmovc (%r8), %r10
+ setc %al
+ add %r10, %rbx
+ adc $0, %rbp
+
+ add $2, %r9
+ jnz .Lloop
+ jmp .Lend
+
+ .align 32, 0x90
+.Lloop:
+ shr $1, %al
+ mov -8(%r8), %r10
+ mov $0, %r13d
+ mov (%rsi,%r9,8), %r14
+ mov 8(%rsi,%r9,8), %r15
+ sbb (%rdx,%r9,8), %r14
+ cmovnc %r13, %r10
+ sbb 8(%rdx,%r9,8), %r15
+ mov -16(%r8), %r11
+ mov %r14, (%rdi,%r9,8)
+ mov 16(%rsi,%r9,8), %r14
+ mov %r15, 8(%rdi,%r9,8)
+ cmovnc %r13, %r11
+ mov -24(%r8), %r12
+ sbb 16(%rdx,%r9,8), %r14
+ cmovnc %r13, %r12
+ mov 24(%rsi,%r9,8), %r15
+ sbb 24(%rdx,%r9,8), %r15
+ cmovc -32(%r8), %r13
+ setc %al
+ add %r10, %rbx
+ adc $0, %rbp
+ add %r11, %rbx
+ adc $0, %rbp
+ add %r12, %rbx
+ adc $0, %rbp
+ mov %r14, 16(%rdi,%r9,8)
+ add %r13, %rbx
+ lea -32(%r8), %r8
+ adc $0, %rbp
+ mov %r15, 24(%rdi,%r9,8)
+ add $4, %r9
+ jnz .Lloop
+
+.Lend:
+ mov %rbx, (%rcx)
+ mov %rbp, 8(%rcx)
+
+ pop %r15
+ pop %r14
+ pop %r13
+ pop %r12
+ pop %rbp
+ pop %rbx
+ ret
+ .size __gmpn_sub_err1_n,.-__gmpn_sub_err1_n
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/sub_err2_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/sub_err2_n.s
new file mode 100644
index 0000000..77ebcb7
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/sub_err2_n.s
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_sub_err2_n
+ .type __gmpn_sub_err2_n,@function
+
+__gmpn_sub_err2_n:
+
+ mov 16(%rsp), %rax
+ mov 8(%rsp), %r10
+
+ push %rbx
+ push %rbp
+ push %r12
+ push %r13
+ push %r14
+
+ xor %ebp, %ebp
+ xor %r11d, %r11d
+ xor %r12d, %r12d
+ xor %r13d, %r13d
+
+ sub %r8, %r9
+
+ lea (%rdi,%r10,8), %rdi
+ lea (%rsi,%r10,8), %rsi
+ lea (%rdx,%r10,8), %rdx
+
+ test $1, %r10
+ jnz .Lodd
+
+ lea -8(%r8,%r10,8), %r8
+ neg %r10
+ jmp .Ltop
+
+ .align 16, 0x90
+.Lodd:
+ lea -16(%r8,%r10,8), %r8
+ neg %r10
+ shr $1, %rax
+ mov (%rsi,%r10,8), %rbx
+ sbb (%rdx,%r10,8), %rbx
+ cmovc 8(%r8), %rbp
+ cmovc 8(%r8,%r9), %r12
+ mov %rbx, (%rdi,%r10,8)
+ sbb %rax, %rax
+ inc %r10
+ jz .Lend
+
+ .align 16, 0x90
+.Ltop:
+ mov (%rsi,%r10,8), %rbx
+ shr $1, %rax
+ sbb (%rdx,%r10,8), %rbx
+ mov %rbx, (%rdi,%r10,8)
+ sbb %r14, %r14
+
+ mov 8(%rsi,%r10,8), %rbx
+ sbb 8(%rdx,%r10,8), %rbx
+ mov %rbx, 8(%rdi,%r10,8)
+ sbb %rax, %rax
+
+ mov (%r8), %rbx
+ and %r14, %rbx
+ add %rbx, %rbp
+ adc $0, %r11
+
+ and (%r8,%r9), %r14
+ add %r14, %r12
+ adc $0, %r13
+
+ mov -8(%r8), %rbx
+ and %rax, %rbx
+ add %rbx, %rbp
+ adc $0, %r11
+
+ mov -8(%r8,%r9), %rbx
+ and %rax, %rbx
+ add %rbx, %r12
+ adc $0, %r13
+
+ add $2, %r10
+ lea -16(%r8), %r8
+ jnz .Ltop
+.Lend:
+
+ mov %rbp, (%rcx)
+ mov %r11, 8(%rcx)
+ mov %r12, 16(%rcx)
+ mov %r13, 24(%rcx)
+
+ and $1, %eax
+
+ pop %r14
+ pop %r13
+ pop %r12
+ pop %rbp
+ pop %rbx
+ ret
+ .size __gmpn_sub_err2_n,.-__gmpn_sub_err2_n
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/sub_err3_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/sub_err3_n.s
new file mode 100644
index 0000000..b995ec7
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/sub_err3_n.s
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_sub_err3_n
+ .type __gmpn_sub_err3_n,@function
+
+__gmpn_sub_err3_n:
+
+ mov 24(%rsp), %rax
+ mov 16(%rsp), %r10
+
+ push %rbx
+ push %rbp
+ push %r12
+ push %r13
+ push %r14
+ push %r15
+
+ push %rcx
+ mov 64(%rsp), %rcx
+
+ xor %ebp, %ebp
+ xor %r11d, %r11d
+ xor %r12d, %r12d
+ xor %r13d, %r13d
+ xor %r14d, %r14d
+ xor %r15d, %r15d
+
+ sub %r8, %r9
+ sub %r8, %rcx
+
+ lea -8(%r8,%r10,8), %r8
+ lea (%rdi,%r10,8), %rdi
+ lea (%rsi,%r10,8), %rsi
+ lea (%rdx,%r10,8), %rdx
+ neg %r10
+
+ .align 16, 0x90
+.Ltop:
+ shr $1, %rax
+ mov (%rsi,%r10,8), %rax
+ sbb (%rdx,%r10,8), %rax
+ mov %rax, (%rdi,%r10,8)
+ sbb %rax, %rax
+
+ mov (%r8), %rbx
+ and %rax, %rbx
+ add %rbx, %rbp
+ adc $0, %r11
+
+ mov (%r8,%r9), %rbx
+ and %rax, %rbx
+ add %rbx, %r12
+ adc $0, %r13
+
+ mov (%r8,%rcx), %rbx
+ and %rax, %rbx
+ add %rbx, %r14
+ adc $0, %r15
+
+ lea -8(%r8), %r8
+ inc %r10
+ jnz .Ltop
+
+.Lend:
+ and $1, %eax
+ pop %rcx
+
+ mov %rbp, (%rcx)
+ mov %r11, 8(%rcx)
+ mov %r12, 16(%rcx)
+ mov %r13, 24(%rcx)
+ mov %r14, 32(%rcx)
+ mov %r15, 40(%rcx)
+
+ pop %r15
+ pop %r14
+ pop %r13
+ pop %r12
+ pop %rbp
+ pop %rbx
+ ret
+ .size __gmpn_sub_err3_n,.-__gmpn_sub_err3_n
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/sub_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/sub_n.s
new file mode 100644
index 0000000..8c1db0a
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/sub_n.s
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_sub_nc
+ .type __gmpn_sub_nc,@function
+
+__gmpn_sub_nc:
+
+
+
+ mov %ecx, %eax
+ shr $2, %rcx
+ and $3, %eax
+ bt $0, %r8
+ jrcxz .Llt4
+
+ mov (%rsi), %r8
+ mov 8(%rsi), %r9
+ dec %rcx
+ jmp .Lmid
+
+ .size __gmpn_sub_nc,.-__gmpn_sub_nc
+ .align 16, 0x90
+ .globl __gmpn_sub_n
+ .type __gmpn_sub_n,@function
+
+__gmpn_sub_n:
+
+
+ mov %ecx, %eax
+ shr $2, %rcx
+ and $3, %eax
+ jrcxz .Llt4
+
+ mov (%rsi), %r8
+ mov 8(%rsi), %r9
+ dec %rcx
+ jmp .Lmid
+
+.Llt4: dec %eax
+ mov (%rsi), %r8
+ jnz .L2
+ sbb (%rdx), %r8
+ mov %r8, (%rdi)
+ adc %eax, %eax
+
+ ret
+
+.L2: dec %eax
+ mov 8(%rsi), %r9
+ jnz .L3
+ sbb (%rdx), %r8
+ sbb 8(%rdx), %r9
+ mov %r8, (%rdi)
+ mov %r9, 8(%rdi)
+ adc %eax, %eax
+
+ ret
+
+.L3: mov 16(%rsi), %r10
+ sbb (%rdx), %r8
+ sbb 8(%rdx), %r9
+ sbb 16(%rdx), %r10
+ mov %r8, (%rdi)
+ mov %r9, 8(%rdi)
+ mov %r10, 16(%rdi)
+ setc %al
+
+ ret
+
+ .align 16, 0x90
+.Ltop: sbb (%rdx), %r8
+ sbb 8(%rdx), %r9
+ sbb 16(%rdx), %r10
+ sbb 24(%rdx), %r11
+ mov %r8, (%rdi)
+ lea 32(%rsi), %rsi
+ mov %r9, 8(%rdi)
+ mov %r10, 16(%rdi)
+ dec %rcx
+ mov %r11, 24(%rdi)
+ lea 32(%rdx), %rdx
+ mov (%rsi), %r8
+ mov 8(%rsi), %r9
+ lea 32(%rdi), %rdi
+.Lmid: mov 16(%rsi), %r10
+ mov 24(%rsi), %r11
+ jnz .Ltop
+
+.Lend: lea 32(%rsi), %rsi
+ sbb (%rdx), %r8
+ sbb 8(%rdx), %r9
+ sbb 16(%rdx), %r10
+ sbb 24(%rdx), %r11
+ lea 32(%rdx), %rdx
+ mov %r8, (%rdi)
+ mov %r9, 8(%rdi)
+ mov %r10, 16(%rdi)
+ mov %r11, 24(%rdi)
+ lea 32(%rdi), %rdi
+
+ inc %eax
+ dec %eax
+ jnz .Llt4
+ adc %eax, %eax
+
+ ret
+ .size __gmpn_sub_n,.-__gmpn_sub_n
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/sublsh1_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/sublsh1_n.s
new file mode 100644
index 0000000..d257a05
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/sublsh1_n.s
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_sublsh1_n
+ .type __gmpn_sublsh1_n,@function
+
+__gmpn_sublsh1_n:
+
+
+ push %rbx
+ push %rbp
+
+ mov (%rdx), %r8
+ mov %ecx, %eax
+ lea (%rdi,%rcx,8), %rdi
+ lea (%rsi,%rcx,8), %rsi
+ lea (%rdx,%rcx,8), %rdx
+ neg %rcx
+ xor %ebp, %ebp
+ and $3, %eax
+ je .Lb00
+ cmp $2, %eax
+ jc .Lb01
+ je .Lb10
+
+.Lb11: add %r8, %r8
+ mov 8(%rdx,%rcx,8), %r9
+ adc %r9, %r9
+ mov 16(%rdx,%rcx,8), %r10
+ adc %r10, %r10
+ sbb %eax, %eax
+ mov (%rsi,%rcx,8), %rbp
+ mov 8(%rsi,%rcx,8), %rbx
+ sub %r8, %rbp
+ sbb %r9, %rbx
+ mov %rbp, (%rdi,%rcx,8)
+ mov %rbx, 8(%rdi,%rcx,8)
+ mov 16(%rsi,%rcx,8), %rbp
+ sbb %r10, %rbp
+ mov %rbp, 16(%rdi,%rcx,8)
+ sbb %ebp, %ebp
+ add $3, %rcx
+ jmp .Lent
+
+.Lb10: add %r8, %r8
+ mov 8(%rdx,%rcx,8), %r9
+ adc %r9, %r9
+ sbb %eax, %eax
+ mov (%rsi,%rcx,8), %rbp
+ mov 8(%rsi,%rcx,8), %rbx
+ sub %r8, %rbp
+ sbb %r9, %rbx
+ mov %rbp, (%rdi,%rcx,8)
+ mov %rbx, 8(%rdi,%rcx,8)
+ sbb %ebp, %ebp
+ add $2, %rcx
+ jmp .Lent
+
+.Lb01: add %r8, %r8
+ sbb %eax, %eax
+ mov (%rsi,%rcx,8), %rbp
+ sub %r8, %rbp
+ mov %rbp, (%rdi,%rcx,8)
+ sbb %ebp, %ebp
+ inc %rcx
+.Lent: jns .Lend
+
+ .align 16, 0x90
+.Ltop: add %eax, %eax
+
+ mov (%rdx,%rcx,8), %r8
+.Lb00: adc %r8, %r8
+ mov 8(%rdx,%rcx,8), %r9
+ adc %r9, %r9
+ mov 16(%rdx,%rcx,8), %r10
+ adc %r10, %r10
+ mov 24(%rdx,%rcx,8), %r11
+ adc %r11, %r11
+
+ sbb %eax, %eax
+ add %ebp, %ebp
+
+ mov (%rsi,%rcx,8), %rbp
+ mov 8(%rsi,%rcx,8), %rbx
+ sbb %r8, %rbp
+ sbb %r9, %rbx
+ mov %rbp, (%rdi,%rcx,8)
+ mov %rbx, 8(%rdi,%rcx,8)
+ mov 16(%rsi,%rcx,8), %rbp
+ mov 24(%rsi,%rcx,8), %rbx
+ sbb %r10, %rbp
+ sbb %r11, %rbx
+ mov %rbp, 16(%rdi,%rcx,8)
+ mov %rbx, 24(%rdi,%rcx,8)
+
+ sbb %ebp, %ebp
+ add $4, %rcx
+ js .Ltop
+
+.Lend: add %ebp, %eax
+ neg %eax
+
+ pop %rbp
+ pop %rbx
+
+ ret
+ .size __gmpn_sublsh1_n,.-__gmpn_sublsh1_n
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/submul_1.s b/vere/ext/gmp/gen/x86_64-linux/mpn/submul_1.s
new file mode 100644
index 0000000..5e34932
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/submul_1.s
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 16, 0x90
+ .globl __gmpn_submul_1
+ .type __gmpn_submul_1,@function
+
+__gmpn_submul_1:
+
+
+
+
+
+
+ mov (%rsi), %rax
+ push %rbx
+ mov %rdx, %rbx
+
+ mul %rcx
+ mov %rbx, %r11
+
+ and $3, %ebx
+ jz .Lb0
+ cmp $2, %ebx
+ jz .Lb2
+ jg .Lb3
+
+.Lb1: dec %r11
+ jne .Lgt1
+ sub %rax, (%rdi)
+ jmp .Lret
+.Lgt1: lea 8(%rsi,%r11,8), %rsi
+ lea -8(%rdi,%r11,8), %rdi
+ neg %r11
+ xor %r10, %r10
+ xor %ebx, %ebx
+ mov %rax, %r9
+ mov (%rsi,%r11,8), %rax
+ mov %rdx, %r8
+ jmp .LL1
+
+.Lb0: lea (%rsi,%r11,8), %rsi
+ lea -16(%rdi,%r11,8), %rdi
+ neg %r11
+ xor %r10, %r10
+ mov %rax, %r8
+ mov %rdx, %rbx
+ jmp .LL0
+
+.Lb3: lea -8(%rsi,%r11,8), %rsi
+ lea -24(%rdi,%r11,8), %rdi
+ neg %r11
+ mov %rax, %rbx
+ mov %rdx, %r10
+ jmp .LL3
+
+.Lb2: lea -16(%rsi,%r11,8), %rsi
+ lea -32(%rdi,%r11,8), %rdi
+ neg %r11
+ xor %r8, %r8
+ xor %ebx, %ebx
+ mov %rax, %r10
+ mov 24(%rsi,%r11,8), %rax
+ mov %rdx, %r9
+ jmp .LL2
+
+ .align 16, 0x90
+.Ltop: sub %r10, (%rdi,%r11,8)
+ adc %rax, %r9
+ mov (%rsi,%r11,8), %rax
+ adc %rdx, %r8
+ mov $0, %r10d
+.LL1: mul %rcx
+ sub %r9, 8(%rdi,%r11,8)
+ adc %rax, %r8
+ adc %rdx, %rbx
+.LL0: mov 8(%rsi,%r11,8), %rax
+ mul %rcx
+ sub %r8, 16(%rdi,%r11,8)
+ adc %rax, %rbx
+ adc %rdx, %r10
+.LL3: mov 16(%rsi,%r11,8), %rax
+ mul %rcx
+ sub %rbx, 24(%rdi,%r11,8)
+ mov $0, %r8d
+ mov %r8, %rbx
+ adc %rax, %r10
+ mov 24(%rsi,%r11,8), %rax
+ mov %r8, %r9
+ adc %rdx, %r9
+.LL2: mul %rcx
+ add $4, %r11
+ js .Ltop
+
+ sub %r10, (%rdi,%r11,8)
+ adc %rax, %r9
+ adc %r8, %rdx
+ sub %r9, 8(%rdi,%r11,8)
+.Lret: adc $0, %rdx
+ mov %rdx, %rax
+
+ pop %rbx
+
+
+ ret
+ .size __gmpn_submul_1,.-__gmpn_submul_1
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/xnor_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/xnor_n.s
new file mode 100644
index 0000000..4db0497
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/xnor_n.s
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 32, 0x90
+ .globl __gmpn_xnor_n
+ .type __gmpn_xnor_n,@function
+
+__gmpn_xnor_n:
+
+
+ mov (%rdx), %r8
+ not %r8
+ mov %ecx, %eax
+ lea (%rdx,%rcx,8), %rdx
+ lea (%rsi,%rcx,8), %rsi
+ lea (%rdi,%rcx,8), %rdi
+ neg %rcx
+ and $3, %eax
+ je .Lb00
+ cmp $2, %eax
+ jc .Lb01
+ je .Lb10
+
+.Lb11: xor (%rsi,%rcx,8), %r8
+ mov %r8, (%rdi,%rcx,8)
+ dec %rcx
+ jmp .Le11
+.Lb10: add $-2, %rcx
+ jmp .Le10
+ .byte 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90
+.Lb01: xor (%rsi,%rcx,8), %r8
+ mov %r8, (%rdi,%rcx,8)
+ inc %rcx
+ jz .Lret
+
+.Ltop: mov (%rdx,%rcx,8), %r8
+ not %r8
+.Lb00: mov 8(%rdx,%rcx,8), %r9
+ not %r9
+ xor (%rsi,%rcx,8), %r8
+ xor 8(%rsi,%rcx,8), %r9
+ mov %r8, (%rdi,%rcx,8)
+ mov %r9, 8(%rdi,%rcx,8)
+.Le11: mov 16(%rdx,%rcx,8), %r8
+ not %r8
+.Le10: mov 24(%rdx,%rcx,8), %r9
+ not %r9
+ xor 16(%rsi,%rcx,8), %r8
+ xor 24(%rsi,%rcx,8), %r9
+ mov %r8, 16(%rdi,%rcx,8)
+ mov %r9, 24(%rdi,%rcx,8)
+ add $4, %rcx
+ jnc .Ltop
+
+.Lret:
+ ret
+ .size __gmpn_xnor_n,.-__gmpn_xnor_n
+
+
+
diff --git a/vere/ext/gmp/gen/x86_64-linux/mpn/xor_n.s b/vere/ext/gmp/gen/x86_64-linux/mpn/xor_n.s
new file mode 100644
index 0000000..8ef14d0
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/mpn/xor_n.s
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+ .align 32, 0x90
+ .globl __gmpn_xor_n
+ .type __gmpn_xor_n,@function
+
+__gmpn_xor_n:
+
+
+ mov (%rdx), %r8
+ mov %ecx, %eax
+ lea (%rdx,%rcx,8), %rdx
+ lea (%rsi,%rcx,8), %rsi
+ lea (%rdi,%rcx,8), %rdi
+ neg %rcx
+ and $3, %eax
+ je .Lb00
+ cmp $2, %eax
+ jc .Lb01
+ je .Lb10
+
+.Lb11: xor (%rsi,%rcx,8), %r8
+ mov %r8, (%rdi,%rcx,8)
+ dec %rcx
+ jmp .Le11
+.Lb10: add $-2, %rcx
+ jmp .Le10
+.Lb01: xor (%rsi,%rcx,8), %r8
+ mov %r8, (%rdi,%rcx,8)
+ inc %rcx
+ jz .Lret
+
+.Ltop: mov (%rdx,%rcx,8), %r8
+.Lb00: mov 8(%rdx,%rcx,8), %r9
+ xor (%rsi,%rcx,8), %r8
+ xor 8(%rsi,%rcx,8), %r9
+ nop
+ mov %r8, (%rdi,%rcx,8)
+ mov %r9, 8(%rdi,%rcx,8)
+.Le11: mov 16(%rdx,%rcx,8), %r8
+.Le10: mov 24(%rdx,%rcx,8), %r9
+ xor 16(%rsi,%rcx,8), %r8
+ xor 24(%rsi,%rcx,8), %r9
+ mov %r8, 16(%rdi,%rcx,8)
+ mov %r9, 24(%rdi,%rcx,8)
+ add $4, %rcx
+ jnc .Ltop
+
+.Lret:
+ ret
+ .size __gmpn_xor_n,.-__gmpn_xor_n
+
+
+
+
+
diff --git a/vere/ext/gmp/gen/x86_64-linux/sieve_table.h b/vere/ext/gmp/gen/x86_64-linux/sieve_table.h
new file mode 100644
index 0000000..ee9ac14
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/sieve_table.h
@@ -0,0 +1,46 @@
+/* This file generated by gen-sieve.c - DO NOT EDIT. */
+
+#if GMP_LIMB_BITS != 64
+Error, error, this data is for 64 bits
+#endif
+
+#define PRIMESIEVE_INIT_TABLE \
+ CNST_LIMB (0x3294C9E069128480), /* 5 - 196 (42 primes) */ \
+ CNST_LIMB (0x95A35E1EC4AB21DC), /* 197 - 388 (32 primes) */ \
+ CNST_LIMB (0x4AD7CE99B8693366), /* 389 - 580 (30 primes) */ \
+ CNST_LIMB (0x6595B6DA728DC52B), /* 581 - 772 (30 primes) */ \
+ CNST_LIMB (0xEA6D9F8787B0CEDE), /* 773 - 964 (26 primes) */ \
+ CNST_LIMB (0x3F56A1F4CD3275A9), /* 965 - 1156 (29 primes) */ \
+ CNST_LIMB (0xFD3848FB74A76ADB), /* 1157 - 1348 (26 primes) */ \
+ CNST_LIMB (0xDBBA0DD1A1EDF6AF), /* 1349 - 1540 (25 primes) */ \
+ CNST_LIMB (0xCEC7F17ED22799A5), /* 1541 - 1732 (27 primes) */ \
+ CNST_LIMB (0xEAEC17BDBB717D56), /* 1733 - 1924 (24 primes) */ \
+ CNST_LIMB (0x3B0EB7B3585AFCF3), /* 1925 - 2116 (26 primes) */ \
+ CNST_LIMB (0xE563D8F69FDF6C4F), /* 2117 - 2308 (23 primes) */ \
+ CNST_LIMB (0xFE5BA7ABA45E92FC), /* 2309 - 2500 (25 primes) */ \
+ CNST_LIMB (0x158DEE6F3BF49B7D), /* 2501 - 2692 (24 primes) */ \
+ CNST_LIMB (0xBE5A7BC4EDE6CD1A), /* 2693 - 2884 (26 primes) */ \
+ CNST_LIMB (0xD7679B3FCA7BB6AD), /* 2885 - 3076 (22 primes) */ \
+ CNST_LIMB (0xC3F66B971FEF37E9), /* 3077 - 3268 (22 primes) */ \
+ CNST_LIMB (0x6F7EBCF339C953FD), /* 3269 - 3460 (22 primes) */ \
+ CNST_LIMB (0xD5A5ECDCD235DBF0), /* 3461 - 3652 (27 primes) */ \
+ CNST_LIMB (0xECFA7B2FD5B65E3B), /* 3653 - 3844 (22 primes) */ \
+ CNST_LIMB (0xD28EFDF9C89F67B1), /* 3845 - 4036 (25 primes) */ \
+ CNST_LIMB (0xCB7F7C7A3DD3AF4F), /* 4037 - 4228 (21 primes) */ \
+ CNST_LIMB (0xEEBED6CDFF6B32CC), /* 4229 - 4420 (22 primes) */ \
+ CNST_LIMB (0xD5BD73F85ECFA97C), /* 4421 - 4612 (23 primes) */ \
+ CNST_LIMB (0x21FDBE4FBBAD48F7), /* 4613 - 4804 (24 primes) */ \
+ CNST_LIMB (0x5E35A3B5EEB7FDE7), /* 4805 - 4996 (21 primes) */ \
+ CNST_LIMB (0xD9EBFD53A7DBBCC9), /* 4997 - 5188 (22 primes) */ \
+ CNST_LIMB (0xFF9EDEAF2EFE1F76), /* 5189 - 5380 (18 primes) */
+#define PRIMESIEVE_NUMBEROF_TABLE 28
+/* #define PRIMESIEVE_PRIMES_IN_TABLE 706 */
+#define PRIMESIEVE_HIGHEST_PRIME 5351
+/* #define PRIMESIEVE_FIRST_UNCHECKED 5381 */
+
+#define SIEVE_MASK1 CNST_LIMB(0x3204C1A049120485)
+#define SIEVE_MASKT CNST_LIMB(0xA1204892058)
+#define SIEVE_2MSK1 CNST_LIMB(0x29048402110840A)
+#define SIEVE_2MSK2 CNST_LIMB(0x9402180C40230184)
+#define SIEVE_2MSKT CNST_LIMB(0x5021088402120)
+
diff --git a/vere/ext/gmp/gen/x86_64-linux/trialdivtab.h b/vere/ext/gmp/gen/x86_64-linux/trialdivtab.h
new file mode 100644
index 0000000..eb81d7f
--- /dev/null
+++ b/vere/ext/gmp/gen/x86_64-linux/trialdivtab.h
@@ -0,0 +1,1214 @@
+#if GMP_LIMB_BITS != 64
+#error This table is for GMP_LIMB_BITS = 64
+#endif
+
+#if GMP_NAIL_BITS != 0
+#error This table does not support nails
+#endif
+
+#ifdef WANT_dtab
+ P(3,CNST_LIMB(0xaaaaaaaaaaaaaaab),CNST_LIMB(0x5555555555555555)),
+ P(5,CNST_LIMB(0xcccccccccccccccd),CNST_LIMB(0x3333333333333333)),
+ P(7,CNST_LIMB(0x6db6db6db6db6db7),CNST_LIMB(0x2492492492492492)),
+ P(11,CNST_LIMB(0x2e8ba2e8ba2e8ba3),CNST_LIMB(0x1745d1745d1745d1)),
+ P(13,CNST_LIMB(0x4ec4ec4ec4ec4ec5),CNST_LIMB(0x13b13b13b13b13b1)),
+ P(17,CNST_LIMB(0xf0f0f0f0f0f0f0f1),CNST_LIMB(0xf0f0f0f0f0f0f0f)),
+ P(19,CNST_LIMB(0x86bca1af286bca1b),CNST_LIMB(0xd79435e50d79435)),
+ P(23,CNST_LIMB(0xd37a6f4de9bd37a7),CNST_LIMB(0xb21642c8590b216)),
+ P(29,CNST_LIMB(0x34f72c234f72c235),CNST_LIMB(0x8d3dcb08d3dcb08)),
+ P(31,CNST_LIMB(0xef7bdef7bdef7bdf),CNST_LIMB(0x842108421084210)),
+ P(37,CNST_LIMB(0x14c1bacf914c1bad),CNST_LIMB(0x6eb3e45306eb3e4)),
+ P(41,CNST_LIMB(0x8f9c18f9c18f9c19),CNST_LIMB(0x63e7063e7063e70)),
+ P(43,CNST_LIMB(0x82fa0be82fa0be83),CNST_LIMB(0x5f417d05f417d05)),
+ P(47,CNST_LIMB(0x51b3bea3677d46cf),CNST_LIMB(0x572620ae4c415c9)),
+ P(53,CNST_LIMB(0x21cfb2b78c13521d),CNST_LIMB(0x4d4873ecade304d)),
+ P(59,CNST_LIMB(0xcbeea4e1a08ad8f3),CNST_LIMB(0x456c797dd49c341)),
+ P(61,CNST_LIMB(0x4fbcda3ac10c9715),CNST_LIMB(0x4325c53ef368eb0)),
+ P(67,CNST_LIMB(0xf0b7672a07a44c6b),CNST_LIMB(0x3d226357e16ece5)),
+ P(71,CNST_LIMB(0x193d4bb7e327a977),CNST_LIMB(0x39b0ad12073615a)),
+ P(73,CNST_LIMB(0x7e3f1f8fc7e3f1f9),CNST_LIMB(0x381c0e070381c0e)),
+ P(79,CNST_LIMB(0x9b8b577e613716af),CNST_LIMB(0x33d91d2a2067b23)),
+ P(83,CNST_LIMB(0xa3784a062b2e43db),CNST_LIMB(0x3159721ed7e7534)),
+ P(89,CNST_LIMB(0xf47e8fd1fa3f47e9),CNST_LIMB(0x2e05c0b81702e05)),
+ P(97,CNST_LIMB(0xa3a0fd5c5f02a3a1),CNST_LIMB(0x2a3a0fd5c5f02a3)),
+ P(101,CNST_LIMB(0x3a4c0a237c32b16d),CNST_LIMB(0x288df0cac5b3f5d)),
+ P(103,CNST_LIMB(0xdab7ec1dd3431b57),CNST_LIMB(0x27c45979c95204f)),
+ P(107,CNST_LIMB(0x77a04c8f8d28ac43),CNST_LIMB(0x2647c69456217ec)),
+ P(109,CNST_LIMB(0xa6c0964fda6c0965),CNST_LIMB(0x2593f69b02593f6)),
+ P(113,CNST_LIMB(0x90fdbc090fdbc091),CNST_LIMB(0x243f6f0243f6f02)),
+ P(127,CNST_LIMB(0x7efdfbf7efdfbf7f),CNST_LIMB(0x204081020408102)),
+ P(131,CNST_LIMB(0x3e88cb3c9484e2b),CNST_LIMB(0x1f44659e4a42715)),
+ P(137,CNST_LIMB(0xe21a291c077975b9),CNST_LIMB(0x1de5d6e3f8868a4)),
+ P(139,CNST_LIMB(0x3aef6ca970586723),CNST_LIMB(0x1d77b654b82c339)),
+ P(149,CNST_LIMB(0xdf5b0f768ce2cabd),CNST_LIMB(0x1b7d6c3dda338b2)),
+ P(151,CNST_LIMB(0x6fe4dfc9bf937f27),CNST_LIMB(0x1b2036406c80d90)),
+ P(157,CNST_LIMB(0x5b4fe5e92c0685b5),CNST_LIMB(0x1a16d3f97a4b01a)),
+ P(163,CNST_LIMB(0x1f693a1c451ab30b),CNST_LIMB(0x1920fb49d0e228d)),
+ P(167,CNST_LIMB(0x8d07aa27db35a717),CNST_LIMB(0x1886e5f0abb0499)),
+ P(173,CNST_LIMB(0x882383b30d516325),CNST_LIMB(0x17ad2208e0ecc35)),
+ P(179,CNST_LIMB(0xed6866f8d962ae7b),CNST_LIMB(0x16e1f76b4337c6c)),
+ P(181,CNST_LIMB(0x3454dca410f8ed9d),CNST_LIMB(0x16a13cd15372904)),
+ P(191,CNST_LIMB(0x1d7ca632ee936f3f),CNST_LIMB(0x1571ed3c506b39a)),
+ P(193,CNST_LIMB(0x70bf015390948f41),CNST_LIMB(0x15390948f40feac)),
+ P(197,CNST_LIMB(0xc96bdb9d3d137e0d),CNST_LIMB(0x14cab88725af6e7)),
+ P(199,CNST_LIMB(0x2697cc8aef46c0f7),CNST_LIMB(0x149539e3b2d066e)),
+ P(211,CNST_LIMB(0xc0e8f2a76e68575b),CNST_LIMB(0x13698df3de07479)),
+ P(223,CNST_LIMB(0x687763dfdb43bb1f),CNST_LIMB(0x125e22708092f11)),
+ P(227,CNST_LIMB(0x1b10ea929ba144cb),CNST_LIMB(0x120b470c67c0d88)),
+ P(229,CNST_LIMB(0x1d10c4c0478bbced),CNST_LIMB(0x11e2ef3b3fb8744)),
+ P(233,CNST_LIMB(0x63fb9aeb1fdcd759),CNST_LIMB(0x119453808ca29c0)),
+ P(239,CNST_LIMB(0x64afaa4f437b2e0f),CNST_LIMB(0x112358e75d30336)),
+ P(241,CNST_LIMB(0xf010fef010fef011),CNST_LIMB(0x10fef010fef010f)),
+ P(251,CNST_LIMB(0x28cbfbeb9a020a33),CNST_LIMB(0x105197f7d734041)),
+ P(257,CNST_LIMB(0xff00ff00ff00ff01),CNST_LIMB(0xff00ff00ff00ff)),
+ P(263,CNST_LIMB(0xd624fd1470e99cb7),CNST_LIMB(0xf92fb2211855a8)),
+ P(269,CNST_LIMB(0x8fb3ddbd6205b5c5),CNST_LIMB(0xf3a0d52cba8723)),
+ P(271,CNST_LIMB(0xd57da36ca27acdef),CNST_LIMB(0xf1d48bcee0d399)),
+ P(277,CNST_LIMB(0xee70c03b25e4463d),CNST_LIMB(0xec979118f3fc4d)),
+ P(281,CNST_LIMB(0xc5b1a6b80749cb29),CNST_LIMB(0xe939651fe2d8d3)),
+ P(283,CNST_LIMB(0x47768073c9b97113),CNST_LIMB(0xe79372e225fe30)),
+ P(293,CNST_LIMB(0x2591e94884ce32ad),CNST_LIMB(0xdfac1f74346c57)),
+ P(307,CNST_LIMB(0xf02806abc74be1fb),CNST_LIMB(0xd578e97c3f5fe5)),
+ P(311,CNST_LIMB(0x7ec3e8f3a7198487),CNST_LIMB(0xd2ba083b445250)),
+ P(313,CNST_LIMB(0x58550f8a39409d09),CNST_LIMB(0xd161543e28e502)),
+ P(317,CNST_LIMB(0xec9e48ae6f71de15),CNST_LIMB(0xcebcf8bb5b4169)),
+ P(331,CNST_LIMB(0x2ff3a018bfce8063),CNST_LIMB(0xc5fe740317f9d0)),
+ P(337,CNST_LIMB(0x7f9ec3fcf61fe7b1),CNST_LIMB(0xc2780613c0309e)),
+ P(347,CNST_LIMB(0x89f5abe570e046d3),CNST_LIMB(0xbcdd535db1cc5b)),
+ P(349,CNST_LIMB(0xda971b23f1545af5),CNST_LIMB(0xbbc8408cd63069)),
+ P(353,CNST_LIMB(0x79d5f00b9a7862a1),CNST_LIMB(0xb9a7862a0ff465)),
+ P(359,CNST_LIMB(0x4dba1df32a128a57),CNST_LIMB(0xb68d31340e4307)),
+ P(367,CNST_LIMB(0x87530217b7747d8f),CNST_LIMB(0xb2927c29da5519)),
+ P(373,CNST_LIMB(0x30baae53bb5e06dd),CNST_LIMB(0xafb321a1496fdf)),
+ P(379,CNST_LIMB(0xee70206c12e9b5b3),CNST_LIMB(0xaceb0f891e6551)),
+ P(383,CNST_LIMB(0xcdde9462ec9dbe7f),CNST_LIMB(0xab1cbdd3e2970f)),
+ P(389,CNST_LIMB(0xafb64b05ec41cf4d),CNST_LIMB(0xa87917088e262b)),
+ P(397,CNST_LIMB(0x2944ff5aec02945),CNST_LIMB(0xa513fd6bb00a51)),
+ P(401,CNST_LIMB(0x2cb033128382df71),CNST_LIMB(0xa36e71a2cb0331)),
+ P(409,CNST_LIMB(0x1ccacc0c84b1c2a9),CNST_LIMB(0xa03c1688732b30)),
+ P(419,CNST_LIMB(0x19a93db575eb3a0b),CNST_LIMB(0x9c69169b30446d)),
+ P(421,CNST_LIMB(0xcebeef94fa86fe2d),CNST_LIMB(0x9baade8e4a2f6e)),
+ P(431,CNST_LIMB(0x6faa77fb3f8df54f),CNST_LIMB(0x980e4156201301)),
+ P(433,CNST_LIMB(0x68a58af00975a751),CNST_LIMB(0x975a750ff68a58)),
+ P(439,CNST_LIMB(0xd56e36d0c3efac07),CNST_LIMB(0x9548e4979e0829)),
+ P(443,CNST_LIMB(0xd8b44c47a8299b73),CNST_LIMB(0x93efd1c50e726b)),
+ P(449,CNST_LIMB(0x2d9ccaf9ba70e41),CNST_LIMB(0x91f5bcb8bb02d9)),
+ P(457,CNST_LIMB(0x985e1c023d9e879),CNST_LIMB(0x8f67a1e3fdc261)),
+ P(461,CNST_LIMB(0x2a343316c494d305),CNST_LIMB(0x8e2917e0e702c6)),
+ P(463,CNST_LIMB(0x70cb7916ab67652f),CNST_LIMB(0x8d8be33f95d715)),
+ P(467,CNST_LIMB(0xd398f132fb10fe5b),CNST_LIMB(0x8c55841c815ed5)),
+ P(479,CNST_LIMB(0x6f2a38a6bf54fa1f),CNST_LIMB(0x88d180cd3a4133)),
+ P(487,CNST_LIMB(0x211df689b98f81d7),CNST_LIMB(0x869222b1acf1ce)),
+ P(491,CNST_LIMB(0xe994983e90f1ec3),CNST_LIMB(0x85797b917765ab)),
+ P(499,CNST_LIMB(0xad671e44bed87f3b),CNST_LIMB(0x8355ace3c897db)),
+ P(503,CNST_LIMB(0xf9623a0516e70fc7),CNST_LIMB(0x824a4e60b3262b)),
+ P(509,CNST_LIMB(0x4b7129be9dece355),CNST_LIMB(0x80c121b28bd1ba)),
+ P(521,CNST_LIMB(0x190f3b7473f62c39),CNST_LIMB(0x7dc9f3397d4c29)),
+ P(523,CNST_LIMB(0x63dacc9aad46f9a3),CNST_LIMB(0x7d4ece8fe88139)),
+ P(541,CNST_LIMB(0xc1108fda24e8d035),CNST_LIMB(0x79237d65bcce50)),
+ P(547,CNST_LIMB(0xb77578472319bd8b),CNST_LIMB(0x77cf53c5f7936c)),
+ P(557,CNST_LIMB(0x473d20a1c7ed9da5),CNST_LIMB(0x75a8accfbdd11e)),
+ P(563,CNST_LIMB(0xfbe85af0fea2c8fb),CNST_LIMB(0x7467ac557c228e)),
+ P(569,CNST_LIMB(0x58a1f7e6ce0f4c09),CNST_LIMB(0x732d70ed8db8e9)),
+ P(571,CNST_LIMB(0x1a00e58c544986f3),CNST_LIMB(0x72c62a24c3797f)),
+ P(577,CNST_LIMB(0x7194a17f55a10dc1),CNST_LIMB(0x7194a17f55a10d)),
+ P(587,CNST_LIMB(0x7084944785e33763),CNST_LIMB(0x6fa549b41da7e7)),
+ P(593,CNST_LIMB(0xba10679bd84886b1),CNST_LIMB(0x6e8419e6f61221)),
+ P(599,CNST_LIMB(0xebe9c6bb31260967),CNST_LIMB(0x6d68b5356c207b)),
+ P(601,CNST_LIMB(0x97a3fe4bd1ff25e9),CNST_LIMB(0x6d0b803685c01b)),
+ P(607,CNST_LIMB(0x6c6388395b84d99f),CNST_LIMB(0x6bf790a8b2d207)),
+ P(613,CNST_LIMB(0x8c51da6a1335df6d),CNST_LIMB(0x6ae907ef4b96c2)),
+ P(617,CNST_LIMB(0x46f3234475d5add9),CNST_LIMB(0x6a37991a23aead)),
+ P(619,CNST_LIMB(0x905605ca3c619a43),CNST_LIMB(0x69dfbdd4295b66)),
+ P(631,CNST_LIMB(0xcee8dff304767747),CNST_LIMB(0x67dc4c45c8033e)),
+ P(641,CNST_LIMB(0xff99c27f00663d81),CNST_LIMB(0x663d80ff99c27f)),
+ P(643,CNST_LIMB(0xacca407f671ddc2b),CNST_LIMB(0x65ec17e3559948)),
+ P(647,CNST_LIMB(0xe71298bac1e12337),CNST_LIMB(0x654ac835cfba5c)),
+ P(653,CNST_LIMB(0xfa1e94309cd09045),CNST_LIMB(0x645c854ae10772)),
+ P(659,CNST_LIMB(0xbebccb8e91496b9b),CNST_LIMB(0x6372990e5f901f)),
+ P(661,CNST_LIMB(0x312fa30cc7d7b8bd),CNST_LIMB(0x6325913c07beef)),
+ P(673,CNST_LIMB(0x6160ff9e9f006161),CNST_LIMB(0x6160ff9e9f0061)),
+ P(677,CNST_LIMB(0x6b03673b5e28152d),CNST_LIMB(0x60cdb520e5e88e)),
+ P(683,CNST_LIMB(0xfe802ffa00bfe803),CNST_LIMB(0x5ff4017fd005ff)),
+ P(691,CNST_LIMB(0xe66fe25c9e907c7b),CNST_LIMB(0x5ed79e31a4dccd)),
+ P(701,CNST_LIMB(0x3f8b236c76528895),CNST_LIMB(0x5d7d42d48ac5ef)),
+ P(709,CNST_LIMB(0xf6f923bf01ce2c0d),CNST_LIMB(0x5c6f35ccba5028)),
+ P(719,CNST_LIMB(0x6c3d3d98bed7c42f),CNST_LIMB(0x5b2618ec6ad0a5)),
+ P(727,CNST_LIMB(0x30981efcd4b010e7),CNST_LIMB(0x5a2553748e42e7)),
+ P(733,CNST_LIMB(0x6f691fc81ebbe575),CNST_LIMB(0x59686cf744cd5b)),
+ P(739,CNST_LIMB(0xb10480ddb47b52cb),CNST_LIMB(0x58ae97bab79976)),
+ P(743,CNST_LIMB(0x74cd59ed64f3f0d7),CNST_LIMB(0x58345f1876865f)),
+ P(751,CNST_LIMB(0x105cb81316d6c0f),CNST_LIMB(0x5743d5bb24795a)),
+ P(757,CNST_LIMB(0x9be64c6d91c1195d),CNST_LIMB(0x5692c4d1ab74ab)),
+ P(761,CNST_LIMB(0x71b3f945a27b1f49),CNST_LIMB(0x561e46a4d5f337)),
+ P(769,CNST_LIMB(0x77d80d50e508fd01),CNST_LIMB(0x5538ed06533997)),
+ P(773,CNST_LIMB(0xa5eb778e133551cd),CNST_LIMB(0x54c807f2c0bec2)),
+ P(787,CNST_LIMB(0x18657d3c2d8a3f1b),CNST_LIMB(0x5345efbc572d36)),
+ P(797,CNST_LIMB(0x2e40e220c34ad735),CNST_LIMB(0x523a758f941345)),
+ P(809,CNST_LIMB(0xa76593c70a714919),CNST_LIMB(0x5102370f816c89)),
+ P(811,CNST_LIMB(0x1eef452124eea383),CNST_LIMB(0x50cf129fb94acf)),
+ P(821,CNST_LIMB(0x38206dc242ba771d),CNST_LIMB(0x4fd31941cafdd1)),
+ P(823,CNST_LIMB(0x4cd4c35807772287),CNST_LIMB(0x4fa1704aa75945)),
+ P(827,CNST_LIMB(0x83de917d5e69ddf3),CNST_LIMB(0x4f3ed6d45a63ad)),
+ P(829,CNST_LIMB(0x882ef0403b4a6c15),CNST_LIMB(0x4f0de57154ebed)),
+ P(839,CNST_LIMB(0xf8fb6c51c606b677),CNST_LIMB(0x4e1cae8815f811)),
+ P(853,CNST_LIMB(0xb4abaac446d3e1fd),CNST_LIMB(0x4cd47ba5f6ff19)),
+ P(857,CNST_LIMB(0xa9f83bbe484a14e9),CNST_LIMB(0x4c78ae734df709)),
+ P(859,CNST_LIMB(0xbebbc0d1ce874d3),CNST_LIMB(0x4c4b19ed85cfb8)),
+ P(863,CNST_LIMB(0xbd418eaf0473189f),CNST_LIMB(0x4bf093221d1218)),
+ P(877,CNST_LIMB(0x44e3af6f372b7e65),CNST_LIMB(0x4aba3c21dc633f)),
+ P(881,CNST_LIMB(0xc87fdace4f9e5d91),CNST_LIMB(0x4a6360c344de00)),
+ P(883,CNST_LIMB(0xec93479c446bd9bb),CNST_LIMB(0x4a383e9f74d68a)),
+ P(887,CNST_LIMB(0xdac4d592e777c647),CNST_LIMB(0x49e28fbabb9940)),
+ P(907,CNST_LIMB(0xa63ea8c8f61f0c23),CNST_LIMB(0x48417b57c78cd7)),
+ P(911,CNST_LIMB(0xe476062ea5cbbb6f),CNST_LIMB(0x47f043713f3a2b)),
+ P(919,CNST_LIMB(0xdf68761c69daac27),CNST_LIMB(0x474ff2a10281cf)),
+ P(929,CNST_LIMB(0xb813d737637aa061),CNST_LIMB(0x468b6f9a978f91)),
+ P(937,CNST_LIMB(0xa3a77aac1fb15099),CNST_LIMB(0x45f13f1caff2e2)),
+ P(941,CNST_LIMB(0x17f0c3e0712c5825),CNST_LIMB(0x45a5228cec23e9)),
+ P(947,CNST_LIMB(0xfd912a70ff30637b),CNST_LIMB(0x45342c556c66b9)),
+ P(953,CNST_LIMB(0xfbb3b5dc01131289),CNST_LIMB(0x44c4a23feeced7)),
+ P(967,CNST_LIMB(0x856d560a0f5acdf7),CNST_LIMB(0x43c5c20d3c9fe6)),
+ P(971,CNST_LIMB(0x96472f314d3f89e3),CNST_LIMB(0x437e494b239798)),
+ P(977,CNST_LIMB(0xa76f5c7ed2253531),CNST_LIMB(0x43142d118e47cb)),
+ P(983,CNST_LIMB(0x816eae7c7bf69fe7),CNST_LIMB(0x42ab5c73a13458)),
+ P(991,CNST_LIMB(0xb6a2bea4cfb1781f),CNST_LIMB(0x4221950db0f3db)),
+ P(997,CNST_LIMB(0xa3900c53318e81ed),CNST_LIMB(0x41bbb2f80a4553)),
+ P(1009,CNST_LIMB(0x60aa7f5d9f148d11),CNST_LIMB(0x40f391612c6680)),
+ P(1013,CNST_LIMB(0x6be8c0102c7a505d),CNST_LIMB(0x40b1e94173fefd)),
+ P(1019,CNST_LIMB(0x8ff3f0ed28728f33),CNST_LIMB(0x4050647d9d0445)),
+ P(1021,CNST_LIMB(0x680e0a87e5ec7155),CNST_LIMB(0x4030241b144f3b)),
+ P(1031,CNST_LIMB(0xbbf70fa49fe829b7),CNST_LIMB(0x3f90c2ab542cb1)),
+ P(1033,CNST_LIMB(0xd69d1e7b6a50ca39),CNST_LIMB(0x3f71412d59f597)),
+ P(1039,CNST_LIMB(0x1a1e0f46b6d26aef),CNST_LIMB(0x3f137701b98841)),
+ P(1049,CNST_LIMB(0x7429f9a7a8251829),CNST_LIMB(0x3e79886b60e278)),
+ P(1051,CNST_LIMB(0xd9c2219d1b863613),CNST_LIMB(0x3e5b1916a7181d)),
+ P(1061,CNST_LIMB(0x91406c1820d077ad),CNST_LIMB(0x3dc4a50968f524)),
+ P(1063,CNST_LIMB(0x521f4ec02e3d2b97),CNST_LIMB(0x3da6e4c9550321)),
+ P(1069,CNST_LIMB(0xbb8283b63dc8eba5),CNST_LIMB(0x3d4e4f06f1def3)),
+ P(1087,CNST_LIMB(0x431eda153229ebbf),CNST_LIMB(0x3c4a6bdd24f9a4)),
+ P(1091,CNST_LIMB(0xaf0bf78d7e01686b),CNST_LIMB(0x3c11d54b525c73)),
+ P(1093,CNST_LIMB(0xa9ced0742c086e8d),CNST_LIMB(0x3bf5b1c5721065)),
+ P(1097,CNST_LIMB(0xc26458ad9f632df9),CNST_LIMB(0x3bbdb9862f23b4)),
+ P(1103,CNST_LIMB(0xbbff1255dff892af),CNST_LIMB(0x3b6a8801db5440)),
+ P(1109,CNST_LIMB(0xcbd49a333f04d8fd),CNST_LIMB(0x3b183cf0fed886)),
+ P(1117,CNST_LIMB(0xec84ed6f9cfdeff5),CNST_LIMB(0x3aabe394bdc3f4)),
+ P(1123,CNST_LIMB(0x97980cc40bda9d4b),CNST_LIMB(0x3a5ba3e76156da)),
+ P(1129,CNST_LIMB(0x777f34d524f5cbd9),CNST_LIMB(0x3a0c3e953378db)),
+ P(1151,CNST_LIMB(0x2797051d94cbbb7f),CNST_LIMB(0x38f03561320b1e)),
+ P(1153,CNST_LIMB(0xea769051b4f43b81),CNST_LIMB(0x38d6ecaef5908a)),
+ P(1163,CNST_LIMB(0xce7910f3034d4323),CNST_LIMB(0x3859cf221e6069)),
+ P(1171,CNST_LIMB(0x92791d1374f5b99b),CNST_LIMB(0x37f7415dc9588a)),
+ P(1181,CNST_LIMB(0x89a5645cc68ea1b5),CNST_LIMB(0x377df0d3902626)),
+ P(1187,CNST_LIMB(0x5f8aacf796c0cf0b),CNST_LIMB(0x373622136907fa)),
+ P(1193,CNST_LIMB(0xf2e90a15e33edf99),CNST_LIMB(0x36ef0c3b39b92f)),
+ P(1201,CNST_LIMB(0x8e99e5feb897c451),CNST_LIMB(0x36915f47d55e6d)),
+ P(1213,CNST_LIMB(0xaca2eda38fb91695),CNST_LIMB(0x36072cf3f866fd)),
+ P(1217,CNST_LIMB(0x5d9b737be5ea8b41),CNST_LIMB(0x35d9b737be5ea8)),
+ P(1223,CNST_LIMB(0x4aefe1db93fd7cf7),CNST_LIMB(0x35961559cc81c7)),
+ P(1229,CNST_LIMB(0xa0994ef20b3f8805),CNST_LIMB(0x35531c897a4592)),
+ P(1231,CNST_LIMB(0x103890bda912822f),CNST_LIMB(0x353ceebd3e98a4)),
+ P(1237,CNST_LIMB(0xb441659d13a9147d),CNST_LIMB(0x34fad381585e5e)),
+ P(1249,CNST_LIMB(0x1e2134440c4c3f21),CNST_LIMB(0x347884d1103130)),
+ P(1259,CNST_LIMB(0x263a27727a6883c3),CNST_LIMB(0x340dd3ac39bf56)),
+ P(1277,CNST_LIMB(0x78e221472ab33855),CNST_LIMB(0x3351fdfecc140c)),
+ P(1279,CNST_LIMB(0x95eac88e82e6faff),CNST_LIMB(0x333d72b089b524)),
+ P(1283,CNST_LIMB(0xf66c258317be8dab),CNST_LIMB(0x33148d44d6b261)),
+ P(1289,CNST_LIMB(0x9ee202c7cb91939),CNST_LIMB(0x32d7aef8412458)),
+ P(1291,CNST_LIMB(0x8d2fca1042a09ea3),CNST_LIMB(0x32c3850e79c0f1)),
+ P(1297,CNST_LIMB(0x82779c856d8b8bf1),CNST_LIMB(0x328766d59048a2)),
+ P(1301,CNST_LIMB(0x3879361cba8a223d),CNST_LIMB(0x325fa18cb11833)),
+ P(1303,CNST_LIMB(0xf23f43639c3182a7),CNST_LIMB(0x324bd659327e22)),
+ P(1307,CNST_LIMB(0xa03868fc474bcd13),CNST_LIMB(0x32246e784360f4)),
+ P(1319,CNST_LIMB(0x651e78b8c5311a97),CNST_LIMB(0x31afa5f1a33a08)),
+ P(1321,CNST_LIMB(0x8ffce639c00c6719),CNST_LIMB(0x319c63ff398e70)),
+ P(1327,CNST_LIMB(0xf7b460754b0b61cf),CNST_LIMB(0x3162f7519a86a7)),
+ P(1361,CNST_LIMB(0x7b03f3359b8e63b1),CNST_LIMB(0x30271fc9d3fc3c)),
+ P(1367,CNST_LIMB(0xa55c5326041eb667),CNST_LIMB(0x2ff104ae89750b)),
+ P(1373,CNST_LIMB(0x647f88ab896a76f5),CNST_LIMB(0x2fbb62a236d133)),
+ P(1381,CNST_LIMB(0x8fd971434a55a46d),CNST_LIMB(0x2f74997d2070b4)),
+ P(1399,CNST_LIMB(0x9fbf969958046447),CNST_LIMB(0x2ed84aa8b6fce3)),
+ P(1409,CNST_LIMB(0x9986feba69be3a81),CNST_LIMB(0x2e832df7a46dbd)),
+ P(1423,CNST_LIMB(0xa668b3e6d053796f),CNST_LIMB(0x2e0e0846857cab)),
+ P(1427,CNST_LIMB(0x97694e6589f4e09b),CNST_LIMB(0x2decfbdfb55ee6)),
+ P(1429,CNST_LIMB(0x37890c00b7721dbd),CNST_LIMB(0x2ddc876f3ff488)),
+ P(1433,CNST_LIMB(0x5ac094a235f37ea9),CNST_LIMB(0x2dbbc1d4c482c4)),
+ P(1439,CNST_LIMB(0x31cff775f2d5d65f),CNST_LIMB(0x2d8af0e0de0556)),
+ P(1447,CNST_LIMB(0xddad8e6b36505217),CNST_LIMB(0x2d4a7b7d14b30a)),
+ P(1451,CNST_LIMB(0x5a27df897062cd03),CNST_LIMB(0x2d2a85073bcf4e)),
+ P(1453,CNST_LIMB(0xe2396fe0fdb5a625),CNST_LIMB(0x2d1a9ab13e8be4)),
+ P(1459,CNST_LIMB(0xb352a4957e82317b),CNST_LIMB(0x2ceb1eb4b9fd8b)),
+ P(1471,CNST_LIMB(0xd8ab3f2c60c2ea3f),CNST_LIMB(0x2c8d503a79794c)),
+ P(1481,CNST_LIMB(0x6893f702f0452479),CNST_LIMB(0x2c404d708784ed)),
+ P(1483,CNST_LIMB(0x9686fdc182acf7e3),CNST_LIMB(0x2c31066315ec52)),
+ P(1487,CNST_LIMB(0x6854037173dce12f),CNST_LIMB(0x2c1297d80f2664)),
+ P(1489,CNST_LIMB(0x7f0ded1685c27331),CNST_LIMB(0x2c037044c55f6b)),
+ P(1493,CNST_LIMB(0xeeda72e1fe490b7d),CNST_LIMB(0x2be5404cd13086)),
+ P(1499,CNST_LIMB(0x9e7bfc959a8e6e53),CNST_LIMB(0x2bb845adaf0cce)),
+ P(1511,CNST_LIMB(0x49b314d6d4753dd7),CNST_LIMB(0x2b5f62c639f16d)),
+ P(1523,CNST_LIMB(0x2e8f8c5ac4aa1b3b),CNST_LIMB(0x2b07e6734f2b88)),
+ P(1531,CNST_LIMB(0xb8ef723481163d33),CNST_LIMB(0x2ace569d8342b7)),
+ P(1543,CNST_LIMB(0x6a2ec96a594287b7),CNST_LIMB(0x2a791d5dbd4dcf)),
+ P(1549,CNST_LIMB(0xdba41c6d13aab8c5),CNST_LIMB(0x2a4eff8113017c)),
+ P(1553,CNST_LIMB(0xc2adbe648dc3aaf1),CNST_LIMB(0x2a3319e156df32)),
+ P(1559,CNST_LIMB(0x87a2bade565f91a7),CNST_LIMB(0x2a0986286526ea)),
+ P(1567,CNST_LIMB(0x4d6fe8798c01f5df),CNST_LIMB(0x29d29551d91e39)),
+ P(1571,CNST_LIMB(0x3791310c8c23d98b),CNST_LIMB(0x29b7529e109f0a)),
+ P(1579,CNST_LIMB(0xf80e446b01228883),CNST_LIMB(0x298137491ea465)),
+ P(1583,CNST_LIMB(0x9aed1436fbf500cf),CNST_LIMB(0x29665e1eb9f9da)),
+ P(1597,CNST_LIMB(0x7839b54cc8b24115),CNST_LIMB(0x2909752e019a5e)),
+ P(1601,CNST_LIMB(0xc128c646ad0309c1),CNST_LIMB(0x28ef35e2e5efb0)),
+ P(1607,CNST_LIMB(0x14de631624a3c377),CNST_LIMB(0x28c815aa4b8278)),
+ P(1609,CNST_LIMB(0x3f7b9fe68b0ecbf9),CNST_LIMB(0x28bb1b867199da)),
+ P(1613,CNST_LIMB(0x284ffd75ec00a285),CNST_LIMB(0x28a13ff5d7b002)),
+ P(1619,CNST_LIMB(0x37803cb80dea2ddb),CNST_LIMB(0x287ab3f173e755)),
+ P(1621,CNST_LIMB(0x86b63f7c9ac4c6fd),CNST_LIMB(0x286dead67713bd)),
+ P(1627,CNST_LIMB(0x8b6851d1bd99b9d3),CNST_LIMB(0x2847bfcda6503e)),
+ P(1637,CNST_LIMB(0xb62fda77ca343b6d),CNST_LIMB(0x2808c1ea6b4777)),
+ P(1657,CNST_LIMB(0x1f0dc009e34383c9),CNST_LIMB(0x278d0e0f23ff61)),
+ P(1663,CNST_LIMB(0x496dc21ddd35b97f),CNST_LIMB(0x2768863c093c7f)),
+ P(1667,CNST_LIMB(0xb0e96ce17090f82b),CNST_LIMB(0x27505115a73ca8)),
+ P(1669,CNST_LIMB(0xaadf05acdd7d024d),CNST_LIMB(0x274441a61dc1b9)),
+ P(1693,CNST_LIMB(0xcb138196746eafb5),CNST_LIMB(0x26b5c166113cf0)),
+ P(1697,CNST_LIMB(0x347f523736755d61),CNST_LIMB(0x269e65ad07b18e)),
+ P(1699,CNST_LIMB(0xd14a48a051f7dd0b),CNST_LIMB(0x2692c25f877560)),
+ P(1709,CNST_LIMB(0x474d71b1ce914d25),CNST_LIMB(0x2658fa7523cd11)),
+ P(1721,CNST_LIMB(0x386063f5e28c1f89),CNST_LIMB(0x26148710cf0f9e)),
+ P(1723,CNST_LIMB(0x1db7325e32d04e73),CNST_LIMB(0x2609363b22524f)),
+ P(1733,CNST_LIMB(0xfef748d3893b880d),CNST_LIMB(0x25d1065a1c1122)),
+ P(1741,CNST_LIMB(0x2f3351506e935605),CNST_LIMB(0x25a48a382b863f)),
+ P(1747,CNST_LIMB(0x7a3637fa2376415b),CNST_LIMB(0x25837190eccdbc)),
+ P(1753,CNST_LIMB(0x4ac525d2baa21969),CNST_LIMB(0x256292e95d510c)),
+ P(1759,CNST_LIMB(0x3a11c16b42cd351f),CNST_LIMB(0x2541eda98d068c)),
+ P(1777,CNST_LIMB(0x6c7abde0049c2a11),CNST_LIMB(0x24e15087fed8f5)),
+ P(1783,CNST_LIMB(0x54dad0303e069ac7),CNST_LIMB(0x24c18b20979e5d)),
+ P(1787,CNST_LIMB(0xebf1ac9fdfe91433),CNST_LIMB(0x24ac7b336de0c5)),
+ P(1789,CNST_LIMB(0xfafdda8237cec655),CNST_LIMB(0x24a1fc478c60bb)),
+ P(1801,CNST_LIMB(0xdce3ff6e71ffb739),CNST_LIMB(0x2463801231c009)),
+ P(1811,CNST_LIMB(0xbed5737d6286db1b),CNST_LIMB(0x24300fd506ed33)),
+ P(1823,CNST_LIMB(0xe479e431fe08b4df),CNST_LIMB(0x23f314a494da81)),
+ P(1831,CNST_LIMB(0x9dd9b0dd7742f897),CNST_LIMB(0x23cadedd2fad3a)),
+ P(1847,CNST_LIMB(0x8f09d7402c5a5e87),CNST_LIMB(0x237b7ed2664a03)),
+ P(1861,CNST_LIMB(0x9216d5c4d958738d),CNST_LIMB(0x23372967dbaf1d)),
+ P(1867,CNST_LIMB(0xb3139ba11d34ca63),CNST_LIMB(0x231a308a371f20)),
+ P(1871,CNST_LIMB(0x47d54f7ed644afaf),CNST_LIMB(0x2306fa63e1e600)),
+ P(1873,CNST_LIMB(0x92a81d85cf11a1b1),CNST_LIMB(0x22fd6731575684)),
+ P(1877,CNST_LIMB(0x754b26533253bdfd),CNST_LIMB(0x22ea507805749c)),
+ P(1879,CNST_LIMB(0xbbe0efc980bfd467),CNST_LIMB(0x22e0cce8b3d720)),
+ P(1889,CNST_LIMB(0xc0d8d594f024dca1),CNST_LIMB(0x22b1887857d161)),
+ P(1901,CNST_LIMB(0x8238d43bcaac1a65),CNST_LIMB(0x227977fcc49cc0)),
+ P(1907,CNST_LIMB(0x27779c1fae6175bb),CNST_LIMB(0x225db37b5e5f4f)),
+ P(1913,CNST_LIMB(0xa746ca9af708b2c9),CNST_LIMB(0x22421b91322ed6)),
+ P(1931,CNST_LIMB(0x93f3cd9f389be823),CNST_LIMB(0x21f05b35f52102)),
+ P(1933,CNST_LIMB(0x5cb4a4c04c489345),CNST_LIMB(0x21e75de5c70d60)),
+ P(1949,CNST_LIMB(0xbf6047743e85b6b5),CNST_LIMB(0x21a01d6c19be96)),
+ P(1951,CNST_LIMB(0x61c147831563545f),CNST_LIMB(0x21974a6615c81a)),
+ P(1973,CNST_LIMB(0xedb47c0ae62dee9d),CNST_LIMB(0x213767697cf36a)),
+ P(1979,CNST_LIMB(0xa3824386673a573),CNST_LIMB(0x211d9f7fad35f1)),
+ P(1987,CNST_LIMB(0xa4a77d19e575a0eb),CNST_LIMB(0x20fb7d9dd36c18)),
+ P(1993,CNST_LIMB(0xa2bee045e066c279),CNST_LIMB(0x20e2123d661e0e)),
+ P(1997,CNST_LIMB(0xc23618de8ab43d05),CNST_LIMB(0x20d135b66ae990)),
+ P(1999,CNST_LIMB(0x266b515216cb9f2f),CNST_LIMB(0x20c8cded4d7a8e)),
+ P(2003,CNST_LIMB(0xe279edd9e9c2e85b),CNST_LIMB(0x20b80b3f43ddbf)),
+ P(2011,CNST_LIMB(0xd0c591c221dc9c53),CNST_LIMB(0x2096b9180f46a6)),
+ P(2017,CNST_LIMB(0x6da8ee9c9ee7c21),CNST_LIMB(0x207de7e28de5da)),
+ P(2027,CNST_LIMB(0x9dfebcaf4c27e8c3),CNST_LIMB(0x2054dec8cf1fb3)),
+ P(2029,CNST_LIMB(0x49aeff9f19dd6de5),CNST_LIMB(0x204cb630b3aab5)),
+ P(2039,CNST_LIMB(0x86976a57a296e9c7),CNST_LIMB(0x202428adc37beb)),
+ P(2053,CNST_LIMB(0xa3b9abf4872b84cd),CNST_LIMB(0x1fec0c7834def4)),
+ P(2063,CNST_LIMB(0x34fca6483895e6ef),CNST_LIMB(0x1fc46fae98a1d0)),
+ P(2069,CNST_LIMB(0x34b5a333988f873d),CNST_LIMB(0x1facda430ff619)),
+ P(2081,CNST_LIMB(0xd9dd4f19b5f17be1),CNST_LIMB(0x1f7e17dd8e15e5)),
+ P(2083,CNST_LIMB(0xb935b507fd0ce78b),CNST_LIMB(0x1f765a3556a4ee)),
+ P(2087,CNST_LIMB(0xb450f5540660e797),CNST_LIMB(0x1f66ea49d802f1)),
+ P(2089,CNST_LIMB(0x63ff82831ffc1419),CNST_LIMB(0x1f5f3800faf9c0)),
+ P(2099,CNST_LIMB(0x8992f718c22a32fb),CNST_LIMB(0x1f38f4e6c0f1f9)),
+ P(2111,CNST_LIMB(0x5f3253ad0d37e7bf),CNST_LIMB(0x1f0b8546752578)),
+ P(2113,CNST_LIMB(0x7c0ffe0fc007c1),CNST_LIMB(0x1f03ff83f001f0)),
+ P(2129,CNST_LIMB(0x4d8ebadc0c0640b1),CNST_LIMB(0x1ec853b0a3883c)),
+ P(2131,CNST_LIMB(0xe2729af831037bdb),CNST_LIMB(0x1ec0ee573723eb)),
+ P(2137,CNST_LIMB(0xb8f64bf30feebfe9),CNST_LIMB(0x1eaad38e6f6894)),
+ P(2141,CNST_LIMB(0xda93124b544c0bf5),CNST_LIMB(0x1e9c28a765fe53)),
+ P(2143,CNST_LIMB(0x9cf7ff0b593c539f),CNST_LIMB(0x1e94d8758c2003)),
+ P(2153,CNST_LIMB(0xd6bd8861fa0e07d9),CNST_LIMB(0x1e707ba8f65e68)),
+ P(2161,CNST_LIMB(0x5cfe75c0bd8ab891),CNST_LIMB(0x1e53a2a68f574e)),
+ P(2179,CNST_LIMB(0x43e808757c2e862b),CNST_LIMB(0x1e1380a56b438d)),
+ P(2203,CNST_LIMB(0x90caa96d595c9d93),CNST_LIMB(0x1dbf9f513a3802)),
+ P(2207,CNST_LIMB(0x8fd550625d07135f),CNST_LIMB(0x1db1d1d58bc600)),
+ P(2213,CNST_LIMB(0x76b010a86e209f2d),CNST_LIMB(0x1d9d358f53de38)),
+ P(2221,CNST_LIMB(0xecc0426447769b25),CNST_LIMB(0x1d81e6df6165c7)),
+ P(2237,CNST_LIMB(0xe381339caabe3295),CNST_LIMB(0x1d4bdf7fd40e30)),
+ P(2239,CNST_LIMB(0xd1b190a2d0c7673f),CNST_LIMB(0x1d452c7a1c958d)),
+ P(2243,CNST_LIMB(0xc3bce3cf26b0e7eb),CNST_LIMB(0x1d37cf9b902659)),
+ P(2251,CNST_LIMB(0x5f87e76f56c61ce3),CNST_LIMB(0x1d1d3a5791e97b)),
+ P(2267,CNST_LIMB(0xc06c6857a124b353),CNST_LIMB(0x1ce89fe6b47416)),
+ P(2269,CNST_LIMB(0x38c040fcba630f75),CNST_LIMB(0x1ce219f3235071)),
+ P(2273,CNST_LIMB(0xd078bc4fbd533b21),CNST_LIMB(0x1cd516dcf92139)),
+ P(2281,CNST_LIMB(0xde8e15c5dd354f59),CNST_LIMB(0x1cbb33bd1c2b8b)),
+ P(2287,CNST_LIMB(0xca61d53d7414260f),CNST_LIMB(0x1ca7e7d2546688)),
+ P(2293,CNST_LIMB(0xb56bf5ba8eae635d),CNST_LIMB(0x1c94b5c1b3dbd3)),
+ P(2297,CNST_LIMB(0x44a72cb0fb6e3949),CNST_LIMB(0x1c87f7f9c241c1)),
+ P(2309,CNST_LIMB(0x879839a714f45bcd),CNST_LIMB(0x1c6202706c35a9)),
+ P(2311,CNST_LIMB(0x2a8994fde5314b7),CNST_LIMB(0x1c5bb8a9437632)),
+ P(2333,CNST_LIMB(0xb971920cf2b90135),CNST_LIMB(0x1c174343b4111e)),
+ P(2339,CNST_LIMB(0x8a8fd0b7df9a6e8b),CNST_LIMB(0x1c04d0d3e46b42)),
+ P(2341,CNST_LIMB(0xb31f9a84c1c6eaad),CNST_LIMB(0x1bfeb00fbf4308)),
+ P(2347,CNST_LIMB(0x92293b02823c6d83),CNST_LIMB(0x1bec5dce0b202d)),
+ P(2351,CNST_LIMB(0xeee77ff20fe5ddcf),CNST_LIMB(0x1be03444620037)),
+ P(2357,CNST_LIMB(0xe1ea0f6c496c11d),CNST_LIMB(0x1bce09c66f6fc3)),
+ P(2371,CNST_LIMB(0xfdf2d3d6f88ccb6b),CNST_LIMB(0x1ba40228d02b30)),
+ P(2377,CNST_LIMB(0xfa9d74a3457738f9),CNST_LIMB(0x1b9225b1cf8919)),
+ P(2381,CNST_LIMB(0xefc3ca3db71a5785),CNST_LIMB(0x1b864a2ff3f53f)),
+ P(2383,CNST_LIMB(0x8e2071718d0d6daf),CNST_LIMB(0x1b80604150e49b)),
+ P(2389,CNST_LIMB(0xbc0fdbfeb6cfabfd),CNST_LIMB(0x1b6eb1aaeaacf3)),
+ P(2393,CNST_LIMB(0x1eeab613e5e5aee9),CNST_LIMB(0x1b62f48da3c8cc)),
+ P(2399,CNST_LIMB(0x2d2388e90e9e929f),CNST_LIMB(0x1b516babe96092)),
+ P(2411,CNST_LIMB(0x81dbafba588ddb43),CNST_LIMB(0x1b2e9cef1e0c87)),
+ P(2417,CNST_LIMB(0x52eebc51c4799791),CNST_LIMB(0x1b1d56bedc849b)),
+ P(2423,CNST_LIMB(0x1c6bc4693b45a047),CNST_LIMB(0x1b0c267546aec0)),
+ P(2437,CNST_LIMB(0x6eee0974498874d),CNST_LIMB(0x1ae45f62024fa0)),
+ P(2441,CNST_LIMB(0xd85b7377a9953cb9),CNST_LIMB(0x1ad917631b5f54)),
+ P(2447,CNST_LIMB(0x4b6df412d4caf56f),CNST_LIMB(0x1ac83d18cb608f)),
+ P(2459,CNST_LIMB(0x6b8afbbb4a053493),CNST_LIMB(0x1aa6c7ad8c063f)),
+ P(2467,CNST_LIMB(0xcc5299c96ac7720b),CNST_LIMB(0x1a90a7b1228e2a)),
+ P(2473,CNST_LIMB(0xadce84b5c710aa99),CNST_LIMB(0x1a8027c03ba059)),
+ P(2477,CNST_LIMB(0x9d673f5aa3804225),CNST_LIMB(0x1a7533289deb89)),
+ P(2503,CNST_LIMB(0xe6541268efbce7f7),CNST_LIMB(0x1a2ed7ce16b49f)),
+ P(2521,CNST_LIMB(0xfcf41e76cf5be669),CNST_LIMB(0x19fefc0a279a73)),
+ P(2531,CNST_LIMB(0x5c3eb5dc31c383cb),CNST_LIMB(0x19e4b0cd873b5f)),
+ P(2539,CNST_LIMB(0x301832d11d8ad6c3),CNST_LIMB(0x19cfcdfd60e514)),
+ P(2543,CNST_LIMB(0x2e9c0942f1ce450f),CNST_LIMB(0x19c56932d66c85)),
+ P(2549,CNST_LIMB(0x97f3f2be37a39a5d),CNST_LIMB(0x19b5e1ab6fc7c2)),
+ P(2551,CNST_LIMB(0xe8b7d8a9654187c7),CNST_LIMB(0x19b0b8a62f2a73)),
+ P(2557,CNST_LIMB(0xb5d024d7da5b1b55),CNST_LIMB(0x19a149fc98942c)),
+ P(2579,CNST_LIMB(0xb8ba9d6e7ae3501b),CNST_LIMB(0x1969517ec25b85)),
+ P(2591,CNST_LIMB(0xf50865f71b90f1df),CNST_LIMB(0x194b3083360ba8)),
+ P(2593,CNST_LIMB(0x739c1682847df9e1),CNST_LIMB(0x194631f4bebdc1)),
+ P(2609,CNST_LIMB(0xc470a4d842b90ed1),CNST_LIMB(0x191e84127268fd)),
+ P(2617,CNST_LIMB(0x1fb1be11698cc409),CNST_LIMB(0x190adbb543984f)),
+ P(2621,CNST_LIMB(0xd8d5512a7cd35d15),CNST_LIMB(0x1901130bd18200)),
+ P(2633,CNST_LIMB(0xa5496821723e07f9),CNST_LIMB(0x18e3e6b889ac94)),
+ P(2647,CNST_LIMB(0xbcc8c6d7abaa8167),CNST_LIMB(0x18c233420e1ec1)),
+ P(2657,CNST_LIMB(0x52c396c95eb619a1),CNST_LIMB(0x18aa5872d92bd6)),
+ P(2659,CNST_LIMB(0x6eb7e380878ec74b),CNST_LIMB(0x18a5989945ccf9)),
+ P(2663,CNST_LIMB(0x3d5513b504537157),CNST_LIMB(0x189c1e60b57f60)),
+ P(2671,CNST_LIMB(0x314391f8862e948f),CNST_LIMB(0x18893fbc8690b9)),
+ P(2677,CNST_LIMB(0xdc0b17cfcd81f5dd),CNST_LIMB(0x187b2bb3e1041c)),
+ P(2683,CNST_LIMB(0x2f6bea3ec89044b3),CNST_LIMB(0x186d27c9cdcfb8)),
+ P(2687,CNST_LIMB(0xce13a05869f1b57f),CNST_LIMB(0x1863d8bf4f2c1c)),
+ P(2689,CNST_LIMB(0x7593474e8ace3581),CNST_LIMB(0x185f33e2ad7593)),
+ P(2693,CNST_LIMB(0x7fc329295a05e4d),CNST_LIMB(0x1855ef75973e13)),
+ P(2699,CNST_LIMB(0xb05377cba4908d23),CNST_LIMB(0x1848160153f134)),
+ P(2707,CNST_LIMB(0xe7b2131a628aa39b),CNST_LIMB(0x1835b72e6f0656)),
+ P(2711,CNST_LIMB(0x9031dbed7de01527),CNST_LIMB(0x182c922d83eb39)),
+ P(2713,CNST_LIMB(0x76844b1c670aa9a9),CNST_LIMB(0x18280243c0365a)),
+ P(2719,CNST_LIMB(0x6a03f4533b08915f),CNST_LIMB(0x181a5cd5898e73)),
+ P(2729,CNST_LIMB(0x1dbca579db0a3999),CNST_LIMB(0x1803c0961773aa)),
+ P(2731,CNST_LIMB(0x2ffe800bffa003),CNST_LIMB(0x17ff4005ffd001)),
+ P(2741,CNST_LIMB(0x478ab1a3e936139d),CNST_LIMB(0x17e8d670433edb)),
+ P(2749,CNST_LIMB(0x66e722bc4c5cc095),CNST_LIMB(0x17d7066cf4bb5d)),
+ P(2753,CNST_LIMB(0x7a8f63c717278541),CNST_LIMB(0x17ce285b806b1f)),
+ P(2767,CNST_LIMB(0xdf6eee24d292bc2f),CNST_LIMB(0x17af52cdf27e02)),
+ P(2777,CNST_LIMB(0x9fc20d17237dd569),CNST_LIMB(0x17997d47d01039)),
+ P(2789,CNST_LIMB(0xcdf9932356bda2ed),CNST_LIMB(0x177f7ec2c6d0ba)),
+ P(2791,CNST_LIMB(0x97b5e332e80f68d7),CNST_LIMB(0x177b2f3cd00756)),
+ P(2797,CNST_LIMB(0x46eee26fd875e2e5),CNST_LIMB(0x176e4a22f692a0)),
+ P(2801,CNST_LIMB(0x3548a8e65157a611),CNST_LIMB(0x1765b94271e11b)),
+ P(2803,CNST_LIMB(0xc288d03be9b71e3b),CNST_LIMB(0x1761732b044ae4)),
+ P(2819,CNST_LIMB(0x8151186db38937ab),CNST_LIMB(0x173f7a5300a2bc)),
+ P(2833,CNST_LIMB(0x7800b910895a45f1),CNST_LIMB(0x1722112b48be1f)),
+ P(2837,CNST_LIMB(0xaee0b024182eec3d),CNST_LIMB(0x1719b7a16eb843)),
+ P(2843,CNST_LIMB(0x96323eda173b5713),CNST_LIMB(0x170d3c99cc5052)),
+ P(2851,CNST_LIMB(0xed0dbd03ae77c8b),CNST_LIMB(0x16fcad7aed3bb6)),
+ P(2857,CNST_LIMB(0xf73800b7828dc119),CNST_LIMB(0x16f051b8231ffd)),
+ P(2861,CNST_LIMB(0x1b61715ec22b7ca5),CNST_LIMB(0x16e81beae20643)),
+ P(2879,CNST_LIMB(0xa8533a991ead64bf),CNST_LIMB(0x16c3721584c1d8)),
+ P(2887,CNST_LIMB(0x7f6c7290e46c2e77),CNST_LIMB(0x16b34c2ba09663)),
+ P(2897,CNST_LIMB(0x6325e8d907b01db1),CNST_LIMB(0x169f3ce292ddcd)),
+ P(2903,CNST_LIMB(0x28909f70152a1067),CNST_LIMB(0x169344b2220a0d)),
+ P(2909,CNST_LIMB(0xea7077af0997a0f5),CNST_LIMB(0x1687592593c1b1)),
+ P(2917,CNST_LIMB(0x7e605cad10c32e6d),CNST_LIMB(0x167787f1418ec9)),
+ P(2927,CNST_LIMB(0x471b33570635b38f),CNST_LIMB(0x1663e190395ff2)),
+ P(2939,CNST_LIMB(0xab559fa997a61bb3),CNST_LIMB(0x164c7a4b6eb5b3)),
+ P(2953,CNST_LIMB(0xad4bdae562bddab9),CNST_LIMB(0x16316a061182fd)),
+ P(2957,CNST_LIMB(0x55e1b2f2ed62f45),CNST_LIMB(0x1629ba914584e4)),
+ P(2963,CNST_LIMB(0x3cd328b1a2dca9b),CNST_LIMB(0x161e3d57de21b2)),
+ P(2969,CNST_LIMB(0xd28f4e08733218a9),CNST_LIMB(0x1612cc01b977f0)),
+ P(2971,CNST_LIMB(0xb6800b077f186293),CNST_LIMB(0x160efe30c525ff)),
+ P(2999,CNST_LIMB(0x6fbd138c3fd9c207),CNST_LIMB(0x15da45249ec5de)),
+ P(3001,CNST_LIMB(0xb117ccd12ae88a89),CNST_LIMB(0x15d68ab4acff92)),
+ P(3011,CNST_LIMB(0x2f1a1a044046bceb),CNST_LIMB(0x15c3f989d1eb15)),
+ P(3019,CNST_LIMB(0x548aba0b060541e3),CNST_LIMB(0x15b535ad11b8f0)),
+ P(3023,CNST_LIMB(0xcf4e808cea111b2f),CNST_LIMB(0x15addb3f424ec1)),
+ P(3037,CNST_LIMB(0xdbec1b4fa855a475),CNST_LIMB(0x159445cb91be6b)),
+ P(3041,CNST_LIMB(0xe3f794eb600d7821),CNST_LIMB(0x158d0199771e63)),
+ P(3049,CNST_LIMB(0x34fae0d9a11f7c59),CNST_LIMB(0x157e87d9b69e04)),
+ P(3061,CNST_LIMB(0xf006b0ccbbac085d),CNST_LIMB(0x1568f58bc01ac3)),
+ P(3067,CNST_LIMB(0x3f45076dc3114733),CNST_LIMB(0x155e3c993fda9b)),
+ P(3079,CNST_LIMB(0xeef49bfa58a1a1b7),CNST_LIMB(0x1548eacc5e1e6e)),
+ P(3083,CNST_LIMB(0x12c4218bea691fa3),CNST_LIMB(0x1541d8f91ba6a7)),
+ P(3089,CNST_LIMB(0xbc7504e3bd5e64f1),CNST_LIMB(0x153747060cc340)),
+ P(3109,CNST_LIMB(0x4ee21c292bb92fad),CNST_LIMB(0x1514569f93f7c4)),
+ P(3119,CNST_LIMB(0x34338b7327a4bacf),CNST_LIMB(0x150309705d3d79)),
+ P(3121,CNST_LIMB(0x3fe5c0833d6fccd1),CNST_LIMB(0x14ff97020cf5bf)),
+ P(3137,CNST_LIMB(0xb1e70743535203c1),CNST_LIMB(0x14e42c114cf47e)),
+ P(3163,CNST_LIMB(0xefbb5dcdfb4e43d3),CNST_LIMB(0x14b835bdcb6447)),
+ P(3167,CNST_LIMB(0xca68467ca5394f9f),CNST_LIMB(0x14b182b53a9ab7)),
+ P(3169,CNST_LIMB(0x8c51c081408b97a1),CNST_LIMB(0x14ae2ad094a3d3)),
+ P(3181,CNST_LIMB(0x3275a899dfa5dd65),CNST_LIMB(0x149a320ea59f96)),
+ P(3187,CNST_LIMB(0x9e674cb62e1b78bb),CNST_LIMB(0x1490441de1a2fb)),
+ P(3191,CNST_LIMB(0xa37ff5bb2a998d47),CNST_LIMB(0x1489aacce57200)),
+ P(3203,CNST_LIMB(0x792a999db131a22b),CNST_LIMB(0x1475f82ad6ff99)),
+ P(3209,CNST_LIMB(0x1b48841bc30d29b9),CNST_LIMB(0x146c2cfe53204f)),
+ P(3217,CNST_LIMB(0xf06721d2011d3471),CNST_LIMB(0x145f2ca490d4a1)),
+ P(3221,CNST_LIMB(0x93fd2386dff85ebd),CNST_LIMB(0x1458b2aae0ec87)),
+ P(3229,CNST_LIMB(0x4ce72f54c07ed9b5),CNST_LIMB(0x144bcb0a3a3150)),
+ P(3251,CNST_LIMB(0xd6d0fd3e71dd827b),CNST_LIMB(0x1428a1e65441d4)),
+ P(3253,CNST_LIMB(0x856405fb1eed819d),CNST_LIMB(0x142575a6c210d7)),
+ P(3257,CNST_LIMB(0x8ea8aceb7c443989),CNST_LIMB(0x141f2025ba5c46)),
+ P(3259,CNST_LIMB(0x34a13026f62e5873),CNST_LIMB(0x141bf6e35420fd)),
+ P(3271,CNST_LIMB(0x1eea0208ec0af4f7),CNST_LIMB(0x1409141d1d313a)),
+ P(3299,CNST_LIMB(0x63679853cea598cb),CNST_LIMB(0x13dd8bc19c3513)),
+ P(3301,CNST_LIMB(0xc30b3ebd61f2d0ed),CNST_LIMB(0x13da76f714dc8f)),
+ P(3307,CNST_LIMB(0x7eb9037bc7f43bc3),CNST_LIMB(0x13d13e50f8f49e)),
+ P(3313,CNST_LIMB(0xa583e6f6ce016411),CNST_LIMB(0x13c80e37ca3819)),
+ P(3319,CNST_LIMB(0xf1938d895f1a74c7),CNST_LIMB(0x13bee69fa99ccf)),
+ P(3323,CNST_LIMB(0x80cf1491c1e81e33),CNST_LIMB(0x13b8d0ede55835)),
+ P(3329,CNST_LIMB(0x3c0f12886ba8f301),CNST_LIMB(0x13afb7680bb054)),
+ P(3331,CNST_LIMB(0xe4b786e0dfcc5ab),CNST_LIMB(0x13acb0c3841c96)),
+ P(3343,CNST_LIMB(0x672684c93f2d41ef),CNST_LIMB(0x139a9c5f434fde)),
+ P(3347,CNST_LIMB(0xe00757badb35c51b),CNST_LIMB(0x13949cf33a0d9d)),
+ P(3359,CNST_LIMB(0xd6d84afe66472edf),CNST_LIMB(0x1382b4a00c31b0)),
+ P(3361,CNST_LIMB(0xfbbc0eedcbbfb6e1),CNST_LIMB(0x137fbbc0eedcbb)),
+ P(3371,CNST_LIMB(0x250f43aa08a84983),CNST_LIMB(0x1370ecf047b069)),
+ P(3373,CNST_LIMB(0x4400e927b1acaa5),CNST_LIMB(0x136df9790e3155)),
+ P(3389,CNST_LIMB(0x56572be34b9d3215),CNST_LIMB(0x13567dd8defd5b)),
+ P(3391,CNST_LIMB(0x87964ef7781c62bf),CNST_LIMB(0x13539261fdbc34)),
+ P(3407,CNST_LIMB(0x29ed84051c06e9af),CNST_LIMB(0x133c564292d28a)),
+ P(3413,CNST_LIMB(0xb00acd11ed3f87fd),CNST_LIMB(0x1333ae178d6388)),
+ P(3433,CNST_LIMB(0x6307881744152d9),CNST_LIMB(0x13170ad00d1fd7)),
+ P(3449,CNST_LIMB(0x7a786459f5c1ccc9),CNST_LIMB(0x13005f01db0947)),
+ P(3457,CNST_LIMB(0x1308125d74563281),CNST_LIMB(0x12f51d40342210)),
+ P(3461,CNST_LIMB(0x395310a480b3e34d),CNST_LIMB(0x12ef815e4ed950)),
+ P(3463,CNST_LIMB(0x35985baa8b202837),CNST_LIMB(0x12ecb4abccd827)),
+ P(3467,CNST_LIMB(0x96304a6e052b3223),CNST_LIMB(0x12e71dc1d3d820)),
+ P(3469,CNST_LIMB(0xbd8265fc9af8fd45),CNST_LIMB(0x12e45389a16495)),
+ P(3491,CNST_LIMB(0x1b6d0b383ec58e0b),CNST_LIMB(0x12c5d9226476cc)),
+ P(3499,CNST_LIMB(0xc21a7c3b68b28503),CNST_LIMB(0x12badc391156fd)),
+ P(3511,CNST_LIMB(0x236fa180fbfd6007),CNST_LIMB(0x12aa78e412f522)),
+ P(3517,CNST_LIMB(0xc42accd440ed9595),CNST_LIMB(0x12a251f5f47fd1)),
+ P(3527,CNST_LIMB(0x7acf7128236ba3f7),CNST_LIMB(0x1294cb85c53534)),
+ P(3529,CNST_LIMB(0xf909367a987b9c79),CNST_LIMB(0x12921963beb65e)),
+ P(3533,CNST_LIMB(0xb64efb252bfba705),CNST_LIMB(0x128cb777c69ca8)),
+ P(3539,CNST_LIMB(0x980d4f5a7e4cd25b),CNST_LIMB(0x1284aa6cf07294)),
+ P(3541,CNST_LIMB(0xe1ecc4ef27b0c37d),CNST_LIMB(0x1281fcf6ac7f87)),
+ P(3547,CNST_LIMB(0x9111aebb81d72653),CNST_LIMB(0x1279f937367db9)),
+ P(3557,CNST_LIMB(0x8951f985cb2c67ed),CNST_LIMB(0x126cad0488be94)),
+ P(3559,CNST_LIMB(0xc439d4fc54e0b5d7),CNST_LIMB(0x126a06794646a2)),
+ P(3571,CNST_LIMB(0xe857bf31896d533b),CNST_LIMB(0x125a2f2bcd3e95)),
+ P(3581,CNST_LIMB(0xb614bb4cb5023755),CNST_LIMB(0x124d108389e6b1)),
+ P(3583,CNST_LIMB(0x938a89e5473bf1ff),CNST_LIMB(0x124a73083771ac)),
+ P(3593,CNST_LIMB(0xeac481aca34de039),CNST_LIMB(0x123d6acda0620a)),
+ P(3607,CNST_LIMB(0x14b961badf4809a7),CNST_LIMB(0x122b4b2917eafd)),
+ P(3613,CNST_LIMB(0x76784fecba352435),CNST_LIMB(0x122391bfce1e2f)),
+ P(3617,CNST_LIMB(0xefa689bb58aef5e1),CNST_LIMB(0x121e6f1ea579f2)),
+ P(3623,CNST_LIMB(0xb2b2c4db9c3a8197),CNST_LIMB(0x1216c09e471568)),
+ P(3631,CNST_LIMB(0x2503bc992279f8cf),CNST_LIMB(0x120c8cb9d93909)),
+ P(3637,CNST_LIMB(0xd2ab9aec5ca1541d),CNST_LIMB(0x1204ed58e64ef9)),
+ P(3643,CNST_LIMB(0x3e78ba1460f99af3),CNST_LIMB(0x11fd546578f00c)),
+ P(3659,CNST_LIMB(0xa01426572cfcb63),CNST_LIMB(0x11e9310b8b4c9c)),
+ P(3671,CNST_LIMB(0xbea857968f3cbd67),CNST_LIMB(0x11da3405db9911)),
+ P(3673,CNST_LIMB(0x78db213eefe659e9),CNST_LIMB(0x11d7b6f4eb055d)),
+ P(3677,CNST_LIMB(0x963e8541a74d35f5),CNST_LIMB(0x11d2bee748c145)),
+ P(3691,CNST_LIMB(0x9e22d152776f2e43),CNST_LIMB(0x11c1706ddce7a7)),
+ P(3697,CNST_LIMB(0x5d10d39d1e1f291),CNST_LIMB(0x11ba0fed2a4f14)),
+ P(3701,CNST_LIMB(0x374468dccaced1dd),CNST_LIMB(0x11b528538ed64a)),
+ P(3709,CNST_LIMB(0x8d145c7d110c5ad5),CNST_LIMB(0x11ab61404242ac)),
+ P(3719,CNST_LIMB(0x3251a39f5acb5737),CNST_LIMB(0x119f378ce81d2f)),
+ P(3727,CNST_LIMB(0xa66e50171443506f),CNST_LIMB(0x1195889ece79da)),
+ P(3733,CNST_LIMB(0x124f69ad91dd4cbd),CNST_LIMB(0x118e4c65387077)),
+ P(3739,CNST_LIMB(0xec24f8f2a61a2793),CNST_LIMB(0x1187161d70e725)),
+ P(3761,CNST_LIMB(0xb472148e656b7a51),CNST_LIMB(0x116cd6d1c85239)),
+ P(3767,CNST_LIMB(0xadf9570e1142f07),CNST_LIMB(0x1165bbe7ce86b1)),
+ P(3769,CNST_LIMB(0x89bf33b065119789),CNST_LIMB(0x11635ee344ce36)),
+ P(3779,CNST_LIMB(0x8f0149803cb291eb),CNST_LIMB(0x11579767b6d679)),
+ P(3793,CNST_LIMB(0x8334b63afd190a31),CNST_LIMB(0x114734711e2b54)),
+ P(3797,CNST_LIMB(0x920908d50d6aba7d),CNST_LIMB(0x11428b90147f05)),
+ P(3803,CNST_LIMB(0x57d8b018c5a33d53),CNST_LIMB(0x113b92f3021636)),
+ P(3821,CNST_LIMB(0xea1773092dc27ee5),CNST_LIMB(0x1126cabc886884)),
+ P(3823,CNST_LIMB(0xcae5f38b7bf2e00f),CNST_LIMB(0x11247eb1b85976)),
+ P(3833,CNST_LIMB(0x2bd02df34f695349),CNST_LIMB(0x11190bb01efd65)),
+ P(3847,CNST_LIMB(0xddfecd5be62e2eb7),CNST_LIMB(0x11091de0fd679c)),
+ P(3851,CNST_LIMB(0xdbf849ebec96c4a3),CNST_LIMB(0x1104963c7e4e0b)),
+ P(3853,CNST_LIMB(0xda31d4d0187357c5),CNST_LIMB(0x110253516420b0)),
+ P(3863,CNST_LIMB(0xe34e21cc2d5418a7),CNST_LIMB(0x10f70db7c41797)),
+ P(3877,CNST_LIMB(0x68ca5137a9e574ad),CNST_LIMB(0x10e75ee2bf9ecd)),
+ P(3881,CNST_LIMB(0x3eaa0d0f804bfd19),CNST_LIMB(0x10e2e91c6e0676)),
+ P(3889,CNST_LIMB(0x554fb753cc20e9d1),CNST_LIMB(0x10da049b9d428d)),
+ P(3907,CNST_LIMB(0x797afcca1300756b),CNST_LIMB(0x10c6248fe3b1a2)),
+ P(3911,CNST_LIMB(0x8b8d950b52eeea77),CNST_LIMB(0x10c1c03ed690eb)),
+ P(3917,CNST_LIMB(0xfb6cd166acabc185),CNST_LIMB(0x10bb2e1379e3a2)),
+ P(3919,CNST_LIMB(0x4eb6c5ed9437a7af),CNST_LIMB(0x10b8fe7f61228e)),
+ P(3923,CNST_LIMB(0xd1eddbd91b790cdb),CNST_LIMB(0x10b4a10d60a4f7)),
+ P(3929,CNST_LIMB(0x93d714ea4d8948e9),CNST_LIMB(0x10ae192681ec0f)),
+ P(3931,CNST_LIMB(0x3ca13ed8145188d3),CNST_LIMB(0x10abecfbe5b0ae)),
+ P(3943,CNST_LIMB(0x829086016da89c57),CNST_LIMB(0x109eefd568b96d)),
+ P(3947,CNST_LIMB(0xd7da1f432124a543),CNST_LIMB(0x109a9ff178b40c)),
+ P(3967,CNST_LIMB(0x7ead5581632fb07f),CNST_LIMB(0x108531e22f9ff9)),
+ P(3989,CNST_LIMB(0x35443837f63ec3bd),CNST_LIMB(0x106ddec1af4417)),
+ P(4001,CNST_LIMB(0x89e2b200e5519461),CNST_LIMB(0x10614174a4911d)),
+ P(4003,CNST_LIMB(0xe9ae44f0b7289c0b),CNST_LIMB(0x105f291f0448e7)),
+ P(4007,CNST_LIMB(0x94387a277b9fa817),CNST_LIMB(0x105afa0ef32891)),
+ P(4013,CNST_LIMB(0xc84f1a58abfc2c25),CNST_LIMB(0x1054b777bd2530)),
+ P(4019,CNST_LIMB(0x71101d8e3c83377b),CNST_LIMB(0x104e79a97fb69e)),
+ P(4021,CNST_LIMB(0xc024abe5c50ba69d),CNST_LIMB(0x104c661eafd845)),
+ P(4027,CNST_LIMB(0x15de4eb365a65d73),CNST_LIMB(0x10462ea939c933)),
+ P(4049,CNST_LIMB(0x9ed28a76bcca931),CNST_LIMB(0x102f8baa442836)),
+ P(4051,CNST_LIMB(0x816bffbf4a00205b),CNST_LIMB(0x102d7ff7e94004)),
+ P(4057,CNST_LIMB(0x1f5c71543d558069),CNST_LIMB(0x10275ff9f13c02)),
+ P(4073,CNST_LIMB(0xf25c64d0ec53b859),CNST_LIMB(0x1017213fcbb4d3)),
+ P(4079,CNST_LIMB(0x96c02c2ef1e0ff0f),CNST_LIMB(0x101112234579d1)),
+ P(4091,CNST_LIMB(0x19a804816870a333),CNST_LIMB(0x100501907d271c)),
+ P(4093,CNST_LIMB(0x6de49add0971c555),CNST_LIMB(0x100300901b0510)),
+ P(4099,CNST_LIMB(0x528087e684c71aab),CNST_LIMB(0xffd008fe5050f)),
+ P(4111,CNST_LIMB(0xa94152c269bcdeef),CNST_LIMB(0xff10e02dd5084)),
+ P(4127,CNST_LIMB(0x379450a3c2b6bdf),CNST_LIMB(0xfe13b9c80c67f)),
+ P(4129,CNST_LIMB(0xd2cd38bafe5373e1),CNST_LIMB(0xfdf4384be37ad)),
+ P(4133,CNST_LIMB(0xc29df2bea71d8bad),CNST_LIMB(0xfdb54cbe8766e)),
+ P(4139,CNST_LIMB(0xc15862775f302e83),CNST_LIMB(0xfd5725ca6ff32)),
+ P(4153,CNST_LIMB(0x1016af2fe55ede09),CNST_LIMB(0xfc7c84684c6fb)),
+ P(4157,CNST_LIMB(0x3d26dbd9d1910715),CNST_LIMB(0xfc3e5265dbaa8)),
+ P(4159,CNST_LIMB(0x621dab2dfaf3dfbf),CNST_LIMB(0xfc1f44e0cae12)),
+ P(4177,CNST_LIMB(0xb6f1d7ac287338b1),CNST_LIMB(0xfb0921c50a7af)),
+ P(4201,CNST_LIMB(0x8d9e9f0c3f9e7fd9),CNST_LIMB(0xf999fd70cbc6b)),
+ P(4211,CNST_LIMB(0x60a93f8762e914bb),CNST_LIMB(0xf9023fd5339d0)),
+ P(4217,CNST_LIMB(0xb14371f247c159c9),CNST_LIMB(0xf8a78ce671475)),
+ P(4219,CNST_LIMB(0x6dd3b484471d4eb3),CNST_LIMB(0xf8895fee86574)),
+ P(4229,CNST_LIMB(0xcd172f4701c1684d),CNST_LIMB(0xf7f2ecb084b10)),
+ P(4231,CNST_LIMB(0x372e686ed8bb537),CNST_LIMB(0xf7d4eb7d10c29)),
+ P(4241,CNST_LIMB(0xbc07f7ca65c5b071),CNST_LIMB(0xf73f52277a3c3)),
+ P(4243,CNST_LIMB(0xab2b6170c3f78d9b),CNST_LIMB(0xf7217c598961c)),
+ P(4253,CNST_LIMB(0xf3d74f461fe6f5b5),CNST_LIMB(0xf68cbb1448f42)),
+ P(4259,CNST_LIMB(0xdbc13f4b31f3230b),CNST_LIMB(0xf633d0276e4c5)),
+ P(4261,CNST_LIMB(0xd1420716e3f1572d),CNST_LIMB(0xf6163ac20ec79)),
+ P(4271,CNST_LIMB(0xd5be2fd4d805464f),CNST_LIMB(0xf582ba2bc16c6)),
+ P(4273,CNST_LIMB(0xc68b97c136943851),CNST_LIMB(0xf5654f43290a0)),
+ P(4283,CNST_LIMB(0x9e27918af7cfb473),CNST_LIMB(0xf4d2a23810bc6)),
+ P(4289,CNST_LIMB(0x5ec8ab6c36ac7f41),CNST_LIMB(0xf47af4d6a2f27)),
+ P(4297,CNST_LIMB(0x964076331dd90979),CNST_LIMB(0xf4066f2b6e652)),
+ P(4327,CNST_LIMB(0x30198eff77b002d7),CNST_LIMB(0xf2555048e3a92)),
+ P(4337,CNST_LIMB(0x3af7cb9583ece011),CNST_LIMB(0xf1c64588a5bf6)),
+ P(4339,CNST_LIMB(0x34ce06f643d9883b),CNST_LIMB(0xf1a9be09cb411)),
+ P(4349,CNST_LIMB(0x79f767e528708c55),CNST_LIMB(0xf11b7d5259d39)),
+ P(4357,CNST_LIMB(0x185332d2ef2313cd),CNST_LIMB(0xf0aa284e7f802)),
+ P(4363,CNST_LIMB(0x43b611b84c8332a3),CNST_LIMB(0xf0556e5e3b7f2)),
+ P(4373,CNST_LIMB(0xc2e215e4f43bb63d),CNST_LIMB(0xefc8bcbc808e5)),
+ P(4391,CNST_LIMB(0xf94b9dd22ce44e97),CNST_LIMB(0xeecd1a690efbb)),
+ P(4397,CNST_LIMB(0xd895834a1db166a5),CNST_LIMB(0xee79aed6d65f2)),
+ P(4409,CNST_LIMB(0x347d2f16d19b8d09),CNST_LIMB(0xedd386114d83a)),
+ P(4421,CNST_LIMB(0x1b54d4dc45b7d98d),CNST_LIMB(0xed2e44366e5e2)),
+ P(4423,CNST_LIMB(0x117ac30d9a044877),CNST_LIMB(0xed12cf8e17f64)),
+ P(4441,CNST_LIMB(0xe10b78a67a526e9),CNST_LIMB(0xec1cd284b2b2d)),
+ P(4447,CNST_LIMB(0x92da68a818688a9f),CNST_LIMB(0xebcb44cadda1e)),
+ P(4451,CNST_LIMB(0xcf2b6c87f741f84b),CNST_LIMB(0xeb9505943771d)),
+ P(4457,CNST_LIMB(0xd264f9bd41e18ed9),CNST_LIMB(0xeb43d57efeadc)),
+ P(4463,CNST_LIMB(0x733cbeaa97166d8f),CNST_LIMB(0xeaf2dd4c00b03)),
+ P(4481,CNST_LIMB(0xc9f475b021d22e81),CNST_LIMB(0xea0141c1ba6a6)),
+ P(4483,CNST_LIMB(0x731f76f2ec4c852b),CNST_LIMB(0xe9e68805f05a7)),
+ P(4493,CNST_LIMB(0xdaf6f0c978f69945),CNST_LIMB(0xe96142b87e431)),
+ P(4507,CNST_LIMB(0x749c8ad20c61ec93),CNST_LIMB(0xe8a7acd811b8c)),
+ P(4513,CNST_LIMB(0x9307ff8bd3c1261),CNST_LIMB(0xe8587db3e001d)),
+ P(4517,CNST_LIMB(0x334a69fb5a486e2d),CNST_LIMB(0xe823d186d44dc)),
+ P(4519,CNST_LIMB(0x1f36c7bf31578617),CNST_LIMB(0xe8098463ee194)),
+ P(4523,CNST_LIMB(0x31ebbcc279ea6103),CNST_LIMB(0xe7d4fbfb3ee1d)),
+ P(4547,CNST_LIMB(0x42e2aad119f466eb),CNST_LIMB(0xe69bba6981ffa)),
+ P(4549,CNST_LIMB(0x106ec05a0ab1450d),CNST_LIMB(0xe681c5cf7d707)),
+ P(4561,CNST_LIMB(0xb1b38db92a99e731),CNST_LIMB(0xe5e684930e334)),
+ P(4567,CNST_LIMB(0x784ae377e67071e7),CNST_LIMB(0xe5993247dc92d)),
+ P(4583,CNST_LIMB(0x3e9e1471ba6671d7),CNST_LIMB(0xe4cbfee201016)),
+ P(4591,CNST_LIMB(0x82c29b59d4d73d0f),CNST_LIMB(0xe465ee7daf979)),
+ P(4597,CNST_LIMB(0xc23dd07128b5525d),CNST_LIMB(0xe4199de07af5c)),
+ P(4603,CNST_LIMB(0x4d4e5ce0e9245133),CNST_LIMB(0xe3cd8031d4f40)),
+ P(4621,CNST_LIMB(0xc8fd1057c09f8cc5),CNST_LIMB(0xe2ea56c157eb2)),
+ P(4637,CNST_LIMB(0xea1516e94f394035),CNST_LIMB(0xe221e5d4d3c73)),
+ P(4639,CNST_LIMB(0xb5e3319c564ee9df),CNST_LIMB(0xe208f09a841c7)),
+ P(4643,CNST_LIMB(0x126a69f90d822d8b),CNST_LIMB(0xe1d716a945161)),
+ P(4649,CNST_LIMB(0x501ed6348857aa19),CNST_LIMB(0xe18c78ec8fd4d)),
+ P(4651,CNST_LIMB(0xde344a324eee1c83),CNST_LIMB(0xe173a4a162079)),
+ P(4657,CNST_LIMB(0x1dd9690cb2c406d1),CNST_LIMB(0xe1294881bb494)),
+ P(4663,CNST_LIMB(0x8d6c5178d5e4387),CNST_LIMB(0xe0df1d5f24661)),
+ P(4673,CNST_LIMB(0x4cea4050a3e8fdc1),CNST_LIMB(0xe063ec7f50b1e)),
+ P(4679,CNST_LIMB(0xc114a06acc83f777),CNST_LIMB(0xe01a4313dc53d)),
+ P(4691,CNST_LIMB(0x20b060ebc0ea01db),CNST_LIMB(0xdf8780f47c350)),
+ P(4703,CNST_LIMB(0xfe50045acb78c99f),CNST_LIMB(0xdef57e8eb9666)),
+ P(4721,CNST_LIMB(0x291a68705b196e91),CNST_LIMB(0xde1bdf3f63d46)),
+ P(4723,CNST_LIMB(0xc1042c724273e2bb),CNST_LIMB(0xde03cb5099809)),
+ P(4729,CNST_LIMB(0x2cee680bb165b7c9),CNST_LIMB(0xddbbaecc84bc9)),
+ P(4733,CNST_LIMB(0xfd2ff9f12e0776d5),CNST_LIMB(0xdd8bb5ca73db6)),
+ P(4751,CNST_LIMB(0x166a5da63af2cc6f),CNST_LIMB(0xdcb4d529a6e07)),
+ P(4759,CNST_LIMB(0xedd16a5930408d27),CNST_LIMB(0xdc55da73dea60)),
+ P(4783,CNST_LIMB(0x2adf30c26528844f),CNST_LIMB(0xdb3ad2585011f)),
+ P(4787,CNST_LIMB(0x9a48d6572b5eec7b),CNST_LIMB(0xdb0becf636a79)),
+ P(4789,CNST_LIMB(0x6e8bf2877503cb9d),CNST_LIMB(0xdaf481ca6fefb)),
+ P(4793,CNST_LIMB(0xea27a191a7045389),CNST_LIMB(0xdac5ba7565dae)),
+ P(4799,CNST_LIMB(0x6eb091f34dd45d3f),CNST_LIMB(0xda7fb4e419d19)),
+ P(4801,CNST_LIMB(0xdc8a6cabb2937d41),CNST_LIMB(0xda6867a88d327)),
+ P(4813,CNST_LIMB(0xbc2f04f254922a05),CNST_LIMB(0xd9dd005f50b02)),
+ P(4817,CNST_LIMB(0x41431f4d6eb38631),CNST_LIMB(0xd9aeb01f763f7)),
+ P(4831,CNST_LIMB(0x7bd717435a08291f),CNST_LIMB(0xd90d31dd5804a)),
+ P(4861,CNST_LIMB(0x4232df9c91fc1a55),CNST_LIMB(0xd7b6453358f31)),
+ P(4871,CNST_LIMB(0xa4651e1d5382eab7),CNST_LIMB(0xd744e69d900e4)),
+ P(4877,CNST_LIMB(0x7cfb5409de4cf3c5),CNST_LIMB(0xd7011a317260e)),
+ P(4889,CNST_LIMB(0xcdd636fb068b9929),CNST_LIMB(0xd67a0126e7c19)),
+ P(4903,CNST_LIMB(0xee8f95e740462c97),CNST_LIMB(0xd5dd39e775bd7)),
+ P(4909,CNST_LIMB(0x490f97b3a758b4a5),CNST_LIMB(0xd59a4f2990168)),
+ P(4919,CNST_LIMB(0x641431563c441287),CNST_LIMB(0xd52b24cb6269d)),
+ P(4931,CNST_LIMB(0xb743dad3ec45916b),CNST_LIMB(0xd4a6571da4f04)),
+ P(4933,CNST_LIMB(0x7b188be8f55c878d),CNST_LIMB(0xd49044eac6581)),
+ P(4937,CNST_LIMB(0xd805648b2ca54ef9),CNST_LIMB(0xd4642e40d1129)),
+ P(4943,CNST_LIMB(0x76dbe6eef60123af),CNST_LIMB(0xd4222e81fe723)),
+ P(4951,CNST_LIMB(0x3711525e6a9e8867),CNST_LIMB(0xd3ca6e8c89f41)),
+ P(4957,CNST_LIMB(0x85c2215cb383d8f5),CNST_LIMB(0xd388ce29d4edc)),
+ P(4967,CNST_LIMB(0xe58f554c89825857),CNST_LIMB(0xd31bc7b7d8013)),
+ P(4969,CNST_LIMB(0x8fbd3b17c01dacd9),CNST_LIMB(0xd306071c13fd5)),
+ P(4973,CNST_LIMB(0x4c8c39dc7aedee65),CNST_LIMB(0xd2da935479b1a)),
+ P(4987,CNST_LIMB(0x653ac6dda86cd3b3),CNST_LIMB(0xd2430aa043597)),
+ P(4993,CNST_LIMB(0xd61c6791a9c2c81),CNST_LIMB(0xd2025bc6c7db7)),
+ P(4999,CNST_LIMB(0xb627a30090354237),CNST_LIMB(0xd1c1d4ad1732b)),
+ P(5003,CNST_LIMB(0x83a89a539c527c23),CNST_LIMB(0xd196e5f46f8c8)),
+ P(5009,CNST_LIMB(0x28c8c09330e90d71),CNST_LIMB(0xd156a0c9293e8)),
+ P(5011,CNST_LIMB(0xee1178d27b1f029b),CNST_LIMB(0xd1413d26e0aee)),
+ P(5021,CNST_LIMB(0xcecc740b37860ab5),CNST_LIMB(0xd0d68c6a4128f)),
+ P(5023,CNST_LIMB(0x79736fde910c485f),CNST_LIMB(0xd0c142eaf3837)),
+ P(5039,CNST_LIMB(0x6873d51f2487234f),CNST_LIMB(0xd01792ab9d70d)),
+ P(5051,CNST_LIMB(0x2a112180614fb973),CNST_LIMB(0xcf990317775bc)),
+ P(5059,CNST_LIMB(0xcb04cea98508f4eb),CNST_LIMB(0xcf44f8c38790a)),
+ P(5077,CNST_LIMB(0xc2fcd2c527e28d7d),CNST_LIMB(0xce88d96d10e45)),
+ P(5081,CNST_LIMB(0x980203ee10393c69),CNST_LIMB(0xce5f39b07e906)),
+ P(5087,CNST_LIMB(0x3fa90a1d7d75681f),CNST_LIMB(0xce20e98148847)),
+ P(5099,CNST_LIMB(0xdbf3bfefef217cc3),CNST_LIMB(0xcda4b9c30ccd7)),
+ P(5101,CNST_LIMB(0x66a17fd3087b41e5),CNST_LIMB(0xcd9015ae32495)),
+ P(5107,CNST_LIMB(0x962195d496fbbd3b),CNST_LIMB(0xcd524244aca36)),
+ P(5113,CNST_LIMB(0xc705a86155443e49),CNST_LIMB(0xcd14940099cf6)),
+ P(5119,CNST_LIMB(0x3f298ee0be6febff),CNST_LIMB(0xccd70ac089a07)),
+ P(5147,CNST_LIMB(0xaa99b084e62fa613),CNST_LIMB(0xcbb9c535c4371)),
+ P(5153,CNST_LIMB(0x1f000cb7d0b46fe1),CNST_LIMB(0xcb7d0b46fe0ff)),
+ P(5167,CNST_LIMB(0x9ed7858637c9b2cf),CNST_LIMB(0xcaefe5d7135f4)),
+ P(5171,CNST_LIMB(0x4d871aaf27c106fb),CNST_LIMB(0xcac7b5f00f0cd)),
+ P(5179,CNST_LIMB(0x2e6a467cdc75a4f3),CNST_LIMB(0xca7785ceddbea)),
+ P(5189,CNST_LIMB(0xe9d938fb696dde8d),CNST_LIMB(0xca13a2a86e1db)),
+ P(5197,CNST_LIMB(0x40ec71b0b1554485),CNST_LIMB(0xc9c4009753007)),
+ P(5209,CNST_LIMB(0x3aae12f861e5f3e9),CNST_LIMB(0xc94d02e64bfab)),
+ P(5227,CNST_LIMB(0xa97565873959f843),CNST_LIMB(0xc89b8c9c875ef)),
+ P(5231,CNST_LIMB(0xb5a960c09fbca8f),CNST_LIMB(0xc87447737277e)),
+ P(5233,CNST_LIMB(0x463fe3d268012c91),CNST_LIMB(0xc860aaa2514e3)),
+ P(5237,CNST_LIMB(0xe59a6bd5f5ee1bdd),CNST_LIMB(0xc8397c813f1b9)),
+ P(5261,CNST_LIMB(0x6542e84d7775ce45),CNST_LIMB(0xc74fa805d6d56)),
+ P(5273,CNST_LIMB(0x8b6eef58fd9effa9),CNST_LIMB(0xc6db8a1f5cdfe)),
+ P(5279,CNST_LIMB(0x58993dbb9f98075f),CNST_LIMB(0xc6a1add9e2398)),
+ P(5281,CNST_LIMB(0x2997955a810acf61),CNST_LIMB(0xc68e6be826648)),
+ P(5297,CNST_LIMB(0x76e3d2f5077db451),CNST_LIMB(0xc5f4e25fc9df0)),
+ P(5303,CNST_LIMB(0xb37c1d2867e30907),CNST_LIMB(0xc5bb8bf2ad1cd)),
+ P(5309,CNST_LIMB(0x53ce6e09bd8d8695),CNST_LIMB(0xc58256b316ced)),
+ P(5323,CNST_LIMB(0x39db291ea2a6b0e3),CNST_LIMB(0xc4fd5ad917b5b)),
+ P(5333,CNST_LIMB(0xddd265ab9c58847d),CNST_LIMB(0xc49ecb3ea4d7a)),
+ P(5347,CNST_LIMB(0x5beca8562dddd0cb),CNST_LIMB(0xc41b00b7d950a)),
+ P(5351,CNST_LIMB(0xb69031c153ddbed7),CNST_LIMB(0xc3f57990b87a1)),
+ P(5381,CNST_LIMB(0xd03c2271b42a6fcd),CNST_LIMB(0xc2ddcb31250f8)),
+ P(5387,CNST_LIMB(0xcd6fd19e63e40ea3),CNST_LIMB(0xc2a63b3651432)),
+ P(5393,CNST_LIMB(0xf7687aa8e4fd7bf1),CNST_LIMB(0xc26ecae1db72e)),
+ P(5399,CNST_LIMB(0x649dfda112a272a7),CNST_LIMB(0xc2377a18c051e)),
+ P(5407,CNST_LIMB(0xecf7866a56d526df),CNST_LIMB(0xc1ede9efcec29)),
+ P(5413,CNST_LIMB(0x72bbf1cfdaebfead),CNST_LIMB(0xc1b6e258d13a0)),
+ P(5417,CNST_LIMB(0x55f6a48df7055719),CNST_LIMB(0xc19243f5399bb)),
+ P(5419,CNST_LIMB(0x80060bffcfa00183),CNST_LIMB(0xc17ff9f400305)),
+ P(5431,CNST_LIMB(0x8a104f309919b087),CNST_LIMB(0xc112865703b94)),
+ P(5437,CNST_LIMB(0x98fa7db7652f6a15),CNST_LIMB(0xc0dbfaea33225)),
+ P(5441,CNST_LIMB(0x5d7d1b3df70f7ac1),CNST_LIMB(0xc0b7af12ddfb9)),
+ P(5443,CNST_LIMB(0x16ab7b5e04cc1f6b),CNST_LIMB(0xc0a58e464462c)),
+ P(5449,CNST_LIMB(0x78a5bfd2e5ececf9),CNST_LIMB(0xc06f40512eef2)),
+ P(5471,CNST_LIMB(0x6506392e171d869f),CNST_LIMB(0xbfa9275a2b247)),
+ P(5477,CNST_LIMB(0xc3fc12e221ef146d),CNST_LIMB(0xbf7367402cdf0)),
+ P(5479,CNST_LIMB(0xf8aa132822c33657),CNST_LIMB(0xbf61833f4f921)),
+ P(5483,CNST_LIMB(0x894496574f536f43),CNST_LIMB(0xbf3dc543a74a1)),
+ P(5501,CNST_LIMB(0x8b2546b08fb4cbd5),CNST_LIMB(0xbe9d9302a7115)),
+ P(5503,CNST_LIMB(0x43bbb561bd1aa7f),CNST_LIMB(0xbe8bd6e051e01)),
+ P(5507,CNST_LIMB(0x2412c7cc4ea7a12b),CNST_LIMB(0xbe6868804d5a6)),
+ P(5519,CNST_LIMB(0x6f0bd406dd71696f),CNST_LIMB(0xbdfe6c4359f0e)),
+ P(5521,CNST_LIMB(0xad475c6988d54b71),CNST_LIMB(0xbdeccdb0b5c3a)),
+ P(5527,CNST_LIMB(0xd812e5d48dbbba27),CNST_LIMB(0xbdb8058ee429a)),
+ P(5531,CNST_LIMB(0x22aaca437ba04893),CNST_LIMB(0xbd94e5c1b371f)),
+ P(5557,CNST_LIMB(0xdba6ff1fecd5f09d),CNST_LIMB(0xbcb1d293b1af3)),
+ P(5563,CNST_LIMB(0x13016d3396286773),CNST_LIMB(0xbc7db8db0c1a5)),
+ P(5569,CNST_LIMB(0xc746494631bcfa41),CNST_LIMB(0xbc49bbdfd2662)),
+ P(5573,CNST_LIMB(0xd14888565bf6a10d),CNST_LIMB(0xbc2723240f402)),
+ P(5581,CNST_LIMB(0xc002ef885f0adf05),CNST_LIMB(0xbbe217c2b7c13)),
+ P(5591,CNST_LIMB(0xe5a04da7fee6ade7),CNST_LIMB(0xbb8c10aab27b2)),
+ P(5623,CNST_LIMB(0xc114ce5468593bc7),CNST_LIMB(0xba7ad528a7e79)),
+ P(5639,CNST_LIMB(0xbb6747dd7f577b7),CNST_LIMB(0xb9f3611b48c5e)),
+ P(5641,CNST_LIMB(0x395ce5a20f285839),CNST_LIMB(0xb9e2806e5e7c4)),
+ P(5647,CNST_LIMB(0x6eee8be66e8618ef),CNST_LIMB(0xb9aff0c4913fe)),
+ P(5651,CNST_LIMB(0x52acf64297f1241b),CNST_LIMB(0xb98e4aedd581c)),
+ P(5653,CNST_LIMB(0x361dcc48a364093d),CNST_LIMB(0xb97d7c94b7dc2)),
+ P(5657,CNST_LIMB(0x342d6f475d72e629),CNST_LIMB(0xb95be902d9d9e)),
+ P(5659,CNST_LIMB(0x5e978bd46410d413),CNST_LIMB(0xb94b23c872b90)),
+ P(5669,CNST_LIMB(0xcc3433d75ba015ad),CNST_LIMB(0xb8f77714d15a1)),
+ P(5683,CNST_LIMB(0x1c83b7628458d4fb),CNST_LIMB(0xb882d0beff6a1)),
+ P(5689,CNST_LIMB(0xf9ca45637e38f809),CNST_LIMB(0xb850ff9852703)),
+ P(5693,CNST_LIMB(0xcbed792ffaf6b115),CNST_LIMB(0xb82fd86db8806)),
+ P(5701,CNST_LIMB(0x9abd961d8c0e8c8d),CNST_LIMB(0xb7edadd32f76c)),
+ P(5711,CNST_LIMB(0xe69572fa659340af),CNST_LIMB(0xb79b3b4df3b7b)),
+ P(5717,CNST_LIMB(0x9187e7483a6436fd),CNST_LIMB(0xb769e6d59833f)),
+ P(5737,CNST_LIMB(0x1e9c726993bed9d9),CNST_LIMB(0xb6c636b5141ff)),
+ P(5741,CNST_LIMB(0x243554db91976365),CNST_LIMB(0xb6a59ceae8801)),
+ P(5743,CNST_LIMB(0x4d06ff994c0088f),CNST_LIMB(0xb6955461e38f7)),
+ P(5749,CNST_LIMB(0x25b76abcb74889dd),CNST_LIMB(0xb6648c2dc6bc2)),
+ P(5779,CNST_LIMB(0x3a409642893c779b),CNST_LIMB(0xb572282260209)),
+ P(5783,CNST_LIMB(0x8f8f620d8bc0c927),CNST_LIMB(0xb552072bde889)),
+ P(5791,CNST_LIMB(0x6f9f196b3369855f),CNST_LIMB(0xb511e7552f9c4)),
+ P(5801,CNST_LIMB(0x92a522bb0638ed99),CNST_LIMB(0xb4c1ff34a5c0e)),
+ P(5807,CNST_LIMB(0x96270f1efdd7004f),CNST_LIMB(0xb4922f58d4aa2)),
+ P(5813,CNST_LIMB(0xb4844b380fdaa79d),CNST_LIMB(0xb46278c16b967)),
+ P(5821,CNST_LIMB(0x108936aa5f9c1495),CNST_LIMB(0xb42301cd99b49)),
+ P(5827,CNST_LIMB(0xb60f606f104c9eb),CNST_LIMB(0xb3f385dd77e4e)),
+ P(5839,CNST_LIMB(0xc663dfe8263b302f),CNST_LIMB(0xb394d8ef8f0f6)),
+ P(5843,CNST_LIMB(0xc91a280b9110b15b),CNST_LIMB(0xb375601507c14)),
+ P(5849,CNST_LIMB(0x904287118d10969),CNST_LIMB(0xb3463f76be376)),
+ P(5851,CNST_LIMB(0x160d36a5d31bf553),CNST_LIMB(0xb3368f6c4a07c)),
+ P(5857,CNST_LIMB(0xe84f5fda3c67ad21),CNST_LIMB(0xb3078fc1c25f0)),
+ P(5861,CNST_LIMB(0xbd85701f72d4b6ed),CNST_LIMB(0xb2e84854e93e5)),
+ P(5867,CNST_LIMB(0x4c50cf5924dee1c3),CNST_LIMB(0xb2b971aa909a4)),
+ P(5869,CNST_LIMB(0x2455aaf1633bb6e5),CNST_LIMB(0xb2a9da39d6bc8)),
+ P(5879,CNST_LIMB(0xd775b39f549b8ac7),CNST_LIMB(0xb25c0dc29a0fc)),
+ P(5881,CNST_LIMB(0x87fcdda7a252cb49),CNST_LIMB(0xb24c8698449a7)),
+ P(5897,CNST_LIMB(0x53df2e3bd254a739),CNST_LIMB(0xb1d0ae579aefe)),
+ P(5903,CNST_LIMB(0x8915e69623a5f7ef),CNST_LIMB(0xb1a2698ea2f9e)),
+ P(5923,CNST_LIMB(0x1ef24c80742dd08b),CNST_LIMB(0xb108dc4186078)),
+ P(5927,CNST_LIMB(0xb4d87aaa6fb1e897),CNST_LIMB(0xb0ea463b00212)),
+ P(5939,CNST_LIMB(0x788573e8b92dbbfb),CNST_LIMB(0xb08ec37007962)),
+ P(5953,CNST_LIMB(0x2527b137b0878c1),CNST_LIMB(0xb024778cc023c)),
+ P(5981,CNST_LIMB(0x1870a7c8dee9f4f5),CNST_LIMB(0xaf515df36a88e)),
+ P(5987,CNST_LIMB(0x39b99e40910a224b),CNST_LIMB(0xaf24635f6561e)),
+ P(6007,CNST_LIMB(0x45821c0abd4df247),CNST_LIMB(0xae8f1b92baeaf)),
+ P(6011,CNST_LIMB(0x10fe2b2f50e02fb3),CNST_LIMB(0xae715eee11f8e)),
+ P(6029,CNST_LIMB(0x5762b90c043f0345),CNST_LIMB(0xadec0b0a3bb36)),
+ P(6037,CNST_LIMB(0x82a67b9193b27bbd),CNST_LIMB(0xadb10aa4c956f)),
+ P(6043,CNST_LIMB(0xa6e914e28ec37693),CNST_LIMB(0xad84e49752245)),
+ P(6047,CNST_LIMB(0x835d9a4facaf445f),CNST_LIMB(0xad6782597f0c2)),
+ P(6053,CNST_LIMB(0x48def8175884f82d),CNST_LIMB(0xad3b81a0d72fe)),
+ P(6067,CNST_LIMB(0xae900e2d7c9a6f7b),CNST_LIMB(0xacd52beced79e)),
+ P(6073,CNST_LIMB(0x1c08431bdd18be89),CNST_LIMB(0xaca9755063254)),
+ P(6079,CNST_LIMB(0xb370a66d684fd83f),CNST_LIMB(0xac7dd4cafb12a)),
+ P(6089,CNST_LIMB(0xb4be33e18f93b279),CNST_LIMB(0xac354f80dca44)),
+ P(6091,CNST_LIMB(0x310c50872a7dd5e3),CNST_LIMB(0xac26d5c2b8ad2)),
+ P(6101,CNST_LIMB(0x447ab1281276697d),CNST_LIMB(0xabde997dabd3d)),
+ P(6113,CNST_LIMB(0xc2f122216b2a6c21),CNST_LIMB(0xab883aa1100a0)),
+ P(6121,CNST_LIMB(0xab99c8b5ae1c3059),CNST_LIMB(0xab4ed637f5a0b)),
+ P(6131,CNST_LIMB(0xb78e17a2227d593b),CNST_LIMB(0xab074e9febf52)),
+ P(6133,CNST_LIMB(0xabf97d03f7269c5d),CNST_LIMB(0xaaf90778c2039)),
+ P(6143,CNST_LIMB(0x867aefc9fdbfe7ff),CNST_LIMB(0xaab1c7684f034)),
+ P(6151,CNST_LIMB(0xf7f7ad182e47d5b7),CNST_LIMB(0xaa78f20ebbb3e)),
+ P(6163,CNST_LIMB(0x50dff95a9847721b),CNST_LIMB(0xaa23f8dafd4cc)),
+ P(6173,CNST_LIMB(0xe4cb8a0e83cb6a35),CNST_LIMB(0xa9dd69cad5934)),
+ P(6197,CNST_LIMB(0x8da72ecdf9247a1d),CNST_LIMB(0xa935004a07302)),
+ P(6199,CNST_LIMB(0xc5b04bfc87f31d87),CNST_LIMB(0xa9270690f3d14)),
+ P(6203,CNST_LIMB(0xe2dcf622ea2b00f3),CNST_LIMB(0xa90b1a0aa5d30)),
+ P(6211,CNST_LIMB(0xb9ce9f2e4972f46b),CNST_LIMB(0xa8d35c9d731e9)),
+ P(6217,CNST_LIMB(0x1ed785c911bf59f9),CNST_LIMB(0xa8a9a6a51f16c)),
+ P(6221,CNST_LIMB(0x4ddb8a4eed70e085),CNST_LIMB(0xa88de370f596b)),
+ P(6229,CNST_LIMB(0x81e93b4df68c24fd),CNST_LIMB(0xa856786adae36)),
+ P(6247,CNST_LIMB(0xee0d0812afcd8357),CNST_LIMB(0xa7da4c77d3161)),
+ P(6257,CNST_LIMB(0xf62e3ba72268a891),CNST_LIMB(0xa7959f863d4a1)),
+ P(6263,CNST_LIMB(0x3194d367c8154147),CNST_LIMB(0xa76c85e80c195)),
+ P(6269,CNST_LIMB(0xd096ede8e30c20d5),CNST_LIMB(0xa743806dc44c4)),
+ P(6271,CNST_LIMB(0xd68624d27b87a77f),CNST_LIMB(0xa735d866dfa0a)),
+ P(6277,CNST_LIMB(0xb728fcdc11c8204d),CNST_LIMB(0xa70cedb02531e)),
+ P(6287,CNST_LIMB(0x9d6b6038077e066f),CNST_LIMB(0xa6c8e842c770f)),
+ P(6299,CNST_LIMB(0xaa732d7a4a360d93),CNST_LIMB(0xa67791215dd74)),
+ P(6301,CNST_LIMB(0x36af98a423972db5),CNST_LIMB(0xa66a0a51d363d)),
+ P(6311,CNST_LIMB(0xc31d00da12940f17),CNST_LIMB(0xa626893011861)),
+ P(6317,CNST_LIMB(0xed85352107410b25),CNST_LIMB(0xa5fe22c55c089)),
+ P(6323,CNST_LIMB(0x829c85ee6db8567b),CNST_LIMB(0xa5d5cffb77275)),
+ P(6329,CNST_LIMB(0xef60258952cc6d89),CNST_LIMB(0xa5ad90c4186e5)),
+ P(6337,CNST_LIMB(0xcf28c2e0da787741),CNST_LIMB(0xa578057e7c2eb)),
+ P(6343,CNST_LIMB(0x57567d8494af28f7),CNST_LIMB(0xa54ff3bb10e91)),
+ P(6353,CNST_LIMB(0x2c7c98518f174031),CNST_LIMB(0xa50d5683edc94)),
+ P(6359,CNST_LIMB(0xb28b363a36825ae7),CNST_LIMB(0xa4e57854b3df4)),
+ P(6361,CNST_LIMB(0xed1ffeb64f9ae769),CNST_LIMB(0xa4d8328c4b800)),
+ P(6367,CNST_LIMB(0xcbbb0115e9b9a31f),CNST_LIMB(0xa4b06e01d97b3)),
+ P(6373,CNST_LIMB(0x8d3c5fecb7f9e4ed),CNST_LIMB(0xa488bca2c4449)),
+ P(6379,CNST_LIMB(0x816271698195cfc3),CNST_LIMB(0xa4611e6132ed5)),
+ P(6389,CNST_LIMB(0x9ac939d1c2b1d35d),CNST_LIMB(0xa41f40f39e646)),
+ P(6397,CNST_LIMB(0xdd9fb7017b0ec455),CNST_LIMB(0xa3eab5c3e44e9)),
+ P(6421,CNST_LIMB(0xc94cab1e57276e3d),CNST_LIMB(0xa34ddd50561e0)),
+ P(6427,CNST_LIMB(0x8b8806b117c79913),CNST_LIMB(0xa326d60e94186)),
+ P(6449,CNST_LIMB(0xa9e63292a3269fd1),CNST_LIMB(0xa2985a81ce614)),
+ P(6451,CNST_LIMB(0x76da5710f1e989fb),CNST_LIMB(0xa28b72e26f82e)),
+ P(6469,CNST_LIMB(0xdded6688d83a918d),CNST_LIMB(0xa217aa3479693)),
+ P(6473,CNST_LIMB(0x4e446b6a305428f9),CNST_LIMB(0xa1fe05c62df4b)),
+ P(6481,CNST_LIMB(0x4ddaca7a3696cfb1),CNST_LIMB(0xa1cad538aebf9)),
+ P(6491,CNST_LIMB(0x7eadc4eb87f26ed3),CNST_LIMB(0xa18b05f490083)),
+ P(6521,CNST_LIMB(0x76c13a0ff04c00c9),CNST_LIMB(0xa0ccc4c28fc31)),
+ P(6529,CNST_LIMB(0xcbf800504d2a2681),CNST_LIMB(0xa09a544d01ffe)),
+ P(6547,CNST_LIMB(0x731dada6c4fec9b),CNST_LIMB(0xa0294aa53e9a2)),
+ P(6551,CNST_LIMB(0xbcb52a664e63f627),CNST_LIMB(0xa01041a6aaed5)),
+ P(6553,CNST_LIMB(0xf1f9abda071c2aa9),CNST_LIMB(0xa003c01680870)),
+ P(6563,CNST_LIMB(0xf262ffa620ffe20b),CNST_LIMB(0x9fc5558a971c8)),
+ P(6569,CNST_LIMB(0x93774a3d57199a99),CNST_LIMB(0x9f9ff9c3c03e5)),
+ P(6571,CNST_LIMB(0xfb3541cd467a1903),CNST_LIMB(0x9f9389b864ab9)),
+ P(6577,CNST_LIMB(0x6828cab6b4fe8f51),CNST_LIMB(0x9f6e4534bdca8)),
+ P(6581,CNST_LIMB(0x12ac03e3d624cc9d),CNST_LIMB(0x9f557687235c2)),
+ P(6599,CNST_LIMB(0x6363bd1e9bb7d7f7),CNST_LIMB(0x9ee633c0391ab)),
+ P(6607,CNST_LIMB(0x334cfd676a484d2f),CNST_LIMB(0x9eb4f28e0bb39)),
+ P(6619,CNST_LIMB(0xd511acd86f143a53),CNST_LIMB(0x9e6b49e92e4bb)),
+ P(6637,CNST_LIMB(0x73fc2490e0062be5),CNST_LIMB(0x9dfd4ccbd0045)),
+ P(6653,CNST_LIMB(0x10780dda36b78b55),CNST_LIMB(0x9d9c0828536c1)),
+ P(6659,CNST_LIMB(0xabf601274064e0ab),CNST_LIMB(0x9d77ad449f777)),
+ P(6661,CNST_LIMB(0x3ef3e4ca27e4a2cd),CNST_LIMB(0x9d6b92b28ee48)),
+ P(6673,CNST_LIMB(0x9216a26e690a16f1),CNST_LIMB(0x9d231a476ed51)),
+ P(6679,CNST_LIMB(0xbae4849e6034bda7),CNST_LIMB(0x9cfef711bf120)),
+ P(6689,CNST_LIMB(0xf943a0520e01e9e1),CNST_LIMB(0x9cc2e1448b765)),
+ P(6691,CNST_LIMB(0x7c89958f48f6658b),CNST_LIMB(0x9cb6e26cbc64d)),
+ P(6701,CNST_LIMB(0xe67128750e0545a5),CNST_LIMB(0x9c7b03b4a9c67)),
+ P(6703,CNST_LIMB(0xc6c9e1d414516ccf),CNST_LIMB(0x9c6f0fd980ab1)),
+ P(6709,CNST_LIMB(0x805307f996e9e81d),CNST_LIMB(0x9c4b3f3a30c3f)),
+ P(6719,CNST_LIMB(0x3eddd2cff46ad5bf),CNST_LIMB(0x9c0fb29436687)),
+ P(6733,CNST_LIMB(0x35582c1aeb5aae85),CNST_LIMB(0x9bbca025b7aec)),
+ P(6737,CNST_LIMB(0x4973c88573ef6eb1),CNST_LIMB(0x9ba4f4421e52c)),
+ P(6761,CNST_LIMB(0x3063f627c1e715d9),CNST_LIMB(0x9b1783809ff03)),
+ P(6763,CNST_LIMB(0x711ad679a8dcc243),CNST_LIMB(0x9b0bc5b4d2eac)),
+ P(6779,CNST_LIMB(0x51c224a17a3db4b3),CNST_LIMB(0x9aae172fd8b9c)),
+ P(6781,CNST_LIMB(0x612325ca50ddaed5),CNST_LIMB(0x9aa26954607ed)),
+ P(6791,CNST_LIMB(0x9929a7b6b7958b37),CNST_LIMB(0x9a681e758a022)),
+ P(6793,CNST_LIMB(0xa78d222e5a857bb9),CNST_LIMB(0x9a5c7b284942e)),
+ P(6803,CNST_LIMB(0x3ad0ffe3198d139b),CNST_LIMB(0x9a2264ecc5558)),
+ P(6823,CNST_LIMB(0x8b4659ac547ed17),CNST_LIMB(0x99aebb39be56f)),
+ P(6827,CNST_LIMB(0x1752e8904aff1003),CNST_LIMB(0x9997ae1a9faac)),
+ P(6829,CNST_LIMB(0x60745c37ee4e5925),CNST_LIMB(0x998c2a22b6900)),
+ P(6833,CNST_LIMB(0x29e2da1f6557ee51),CNST_LIMB(0x997527603f8a8)),
+ P(6841,CNST_LIMB(0x80d78c24ac49cb89),CNST_LIMB(0x99473685e4d50)),
+ P(6857,CNST_LIMB(0xc56c3b495c8d1f79),CNST_LIMB(0x98eba72512a13)),
+ P(6863,CNST_LIMB(0xcf5bdf9f5088ac2f),CNST_LIMB(0x98c96d8dee9e1)),
+ P(6869,CNST_LIMB(0x8a44800e4fae4e7d),CNST_LIMB(0x98a743453554e)),
+ P(6871,CNST_LIMB(0xdd76384277e578e7),CNST_LIMB(0x989be33c9e6bd)),
+ P(6883,CNST_LIMB(0x20b1562d2703facb),CNST_LIMB(0x9857c692e9a59)),
+ P(6899,CNST_LIMB(0xef56caf96e9d8e3b),CNST_LIMB(0x97fd540c05c9e)),
+ P(6907,CNST_LIMB(0xf54061416aede033),CNST_LIMB(0x97d04302ed944)),
+ P(6911,CNST_LIMB(0xe0bc78c21a26e4ff),CNST_LIMB(0x97b9c48289935)),
+ P(6917,CNST_LIMB(0x524f92731a179cd),CNST_LIMB(0x9798133ece717)),
+ P(6947,CNST_LIMB(0x5d3b4ad7deafec8b),CNST_LIMB(0x96f07c683689e)),
+ P(6949,CNST_LIMB(0x508828f744da88ad),CNST_LIMB(0x96e55d6393fc5)),
+ P(6959,CNST_LIMB(0x6e82014031710bcf),CNST_LIMB(0x96addad861696)),
+ P(6961,CNST_LIMB(0xadf3b77a22595dd1),CNST_LIMB(0x96a2c5a2cf0cf)),
+ P(6967,CNST_LIMB(0xd8f0c03f7ea8a87),CNST_LIMB(0x96818fc825eba)),
+ P(6971,CNST_LIMB(0x2c49e3483c3a05f3),CNST_LIMB(0x966b74027f48a)),
+ P(6977,CNST_LIMB(0xccecbc98c91274c1),CNST_LIMB(0x964a56850b8ed)),
+ P(6983,CNST_LIMB(0x273a08941bb71e77),CNST_LIMB(0x962947990eb36)),
+ P(6991,CNST_LIMB(0xdead5a1e3f341baf),CNST_LIMB(0x95fd4a4c885e0)),
+ P(6997,CNST_LIMB(0x83eee092593309fd),CNST_LIMB(0x95dc5d3954fde)),
+ P(7001,CNST_LIMB(0x4af5f1bd3ae87ce9),CNST_LIMB(0x95c671ddfe516)),
+ P(7013,CNST_LIMB(0x4ca85ad2301c9e6d),CNST_LIMB(0x9584d6340ddf1)),
+ P(7019,CNST_LIMB(0x1b19592cd31a3943),CNST_LIMB(0x95641de84afcc)),
+ P(7027,CNST_LIMB(0x3e7aa05e6dcd81bb),CNST_LIMB(0x953893c386521)),
+ P(7039,CNST_LIMB(0x86336cecb02ba47f),CNST_LIMB(0x94f7740d87794)),
+ P(7043,CNST_LIMB(0xa96b30d0c8a44b2b),CNST_LIMB(0x94e1cb70c9ce0)),
+ P(7057,CNST_LIMB(0xb7c63fa0cfca0571),CNST_LIMB(0x94962ecbcc7ce)),
+ P(7069,CNST_LIMB(0x8eaf59b405a642b5),CNST_LIMB(0x94559c69059cf)),
+ P(7079,CNST_LIMB(0xdf29e9cbb536dc17),CNST_LIMB(0x941ff7e640716)),
+ P(7103,CNST_LIMB(0xed14132c82c1d43f),CNST_LIMB(0x939fd7a24b099)),
+ P(7109,CNST_LIMB(0xaf68778e34caab0d),CNST_LIMB(0x937ff22c014bd)),
+ P(7121,CNST_LIMB(0xa4f04a3368941d31),CNST_LIMB(0x934050872c09e)),
+ P(7127,CNST_LIMB(0xe9960969357c07e7),CNST_LIMB(0x93209446d56f6)),
+ P(7129,CNST_LIMB(0xeb47b62b7360b469),CNST_LIMB(0x9316033b5bd22)),
+ P(7151,CNST_LIMB(0x64c653d779ae730f),CNST_LIMB(0x92a22b9a79374)),
+ P(7159,CNST_LIMB(0x479702d3319915c7),CNST_LIMB(0x927838edba206)),
+ P(7177,CNST_LIMB(0xef3c3eebc6803239),CNST_LIMB(0x921a2e7112833)),
+ P(7187,CNST_LIMB(0x93807b1a2e3c0e1b),CNST_LIMB(0x91e623d5660d0)),
+ P(7193,CNST_LIMB(0x8167e33e3f478029),CNST_LIMB(0x91c6fc0cab8b6)),
+ P(7207,CNST_LIMB(0x60cb76e38c339397),CNST_LIMB(0x917e7d88028eb)),
+ P(7211,CNST_LIMB(0xae34788ffe4bc283),CNST_LIMB(0x9169d455585cd)),
+ P(7213,CNST_LIMB(0x4b6246a0c6c093a5),CNST_LIMB(0x915f81ef2d529)),
+ P(7219,CNST_LIMB(0x872e594b12b03efb),CNST_LIMB(0x9140938595d3a)),
+ P(7229,CNST_LIMB(0xbc0ae83ce9045b15),CNST_LIMB(0x910d2360a450e)),
+ P(7237,CNST_LIMB(0xad30a3917e0968d),CNST_LIMB(0x90e417104eabd)),
+ P(7243,CNST_LIMB(0x124ef5a4e1c7cd63),CNST_LIMB(0x90c55d0fdea28)),
+ P(7247,CNST_LIMB(0x5b98fe0e9fe17aaf),CNST_LIMB(0x90b0e84c04f20)),
+ P(7253,CNST_LIMB(0x414306cfe45400fd),CNST_LIMB(0x909243fac6b70)),
+ P(7283,CNST_LIMB(0xa06d1b4fd391e8bb),CNST_LIMB(0x8ff9d0440d137)),
+ P(7297,CNST_LIMB(0x11939803a60c2381),CNST_LIMB(0x8fb3192789d73)),
+ P(7307,CNST_LIMB(0x668c11cc37ea6b23),CNST_LIMB(0x8f80c0d5031e3)),
+ P(7309,CNST_LIMB(0x83f9b2089dc10645),CNST_LIMB(0x8f76b3664f164)),
+ P(7321,CNST_LIMB(0x65dc8ae47af277a9),CNST_LIMB(0x8f3a80550abc3)),
+ P(7331,CNST_LIMB(0x6e2368b9c685770b),CNST_LIMB(0x8f087c50e00c4)),
+ P(7333,CNST_LIMB(0x3ea137aeba5a6b2d),CNST_LIMB(0x8efe7fb408cc2)),
+ P(7349,CNST_LIMB(0x735f57adca48f19d),CNST_LIMB(0x8eaecce5c4fd7)),
+ P(7351,CNST_LIMB(0x69a8de0ba1b18107),CNST_LIMB(0x8ea4dccaaec0b)),
+ P(7369,CNST_LIMB(0x8fb84bdf5822bd79),CNST_LIMB(0x8e4ba9fbc2ff0)),
+ P(7393,CNST_LIMB(0xb8fab3b748562721),CNST_LIMB(0x8dd5688a3b7d6)),
+ P(7411,CNST_LIMB(0xa6c658ea10a65c3b),CNST_LIMB(0x8d7d3821fd94f)),
+ P(7417,CNST_LIMB(0xe56381f33ab5e549),CNST_LIMB(0x8d5feb03c31d7)),
+ P(7433,CNST_LIMB(0xe3c224da14988139),CNST_LIMB(0x8d12033cc9d30)),
+ P(7451,CNST_LIMB(0x438c253e6d99f513),CNST_LIMB(0x8cbac4dec6a82)),
+ P(7457,CNST_LIMB(0xc1b99f8841a3a6e1),CNST_LIMB(0x8c9dc80ab604b)),
+ P(7459,CNST_LIMB(0x63fa18c79c54fa8b),CNST_LIMB(0x8c942115dcc96)),
+ P(7477,CNST_LIMB(0xe7f6f609619d0d1d),CNST_LIMB(0x8c3d7df67b539)),
+ P(7481,CNST_LIMB(0x7b39ef3b70afc109),CNST_LIMB(0x8c2a4bc35cb3b)),
+ P(7487,CNST_LIMB(0x73922c61ca7452bf),CNST_LIMB(0x8c0d8a4f1f264)),
+ P(7489,CNST_LIMB(0x28d96828332372c1),CNST_LIMB(0x8c03f71cbf906)),
+ P(7499,CNST_LIMB(0x6b6e92968c4e8463),CNST_LIMB(0x8bd42abd9a107)),
+ P(7507,CNST_LIMB(0x571861f084962edb),CNST_LIMB(0x8bae051d7f6ff)),
+ P(7517,CNST_LIMB(0xd935c64f140f1ef5),CNST_LIMB(0x8b7e735068135)),
+ P(7523,CNST_LIMB(0x96459f8fd72a4c4b),CNST_LIMB(0x8b61f82c5fb08)),
+ P(7529,CNST_LIMB(0x410ba9a2a18242d9),CNST_LIMB(0x8b4588a74a05a)),
+ P(7537,CNST_LIMB(0xcf90979f89870391),CNST_LIMB(0x8b1fb0a7ed403)),
+ P(7541,CNST_LIMB(0x10f94ff26bc00add),CNST_LIMB(0x8b0ccc5d8f5c8)),
+ P(7547,CNST_LIMB(0xa6619fbb9da139b3),CNST_LIMB(0x8af07f8ac5146)),
+ P(7549,CNST_LIMB(0x765a23334efb03d5),CNST_LIMB(0x8ae71328ffd49)),
+ P(7559,CNST_LIMB(0x6f2f613b5e631837),CNST_LIMB(0x8ab8086624822)),
+ P(7561,CNST_LIMB(0x666b99bfbcd368b9),CNST_LIMB(0x8aaea3ab5ae89)),
+ P(7573,CNST_LIMB(0x922b78eb01ed45bd),CNST_LIMB(0x8a7661f7020fe)),
+ P(7577,CNST_LIMB(0x7079a199c31de6a9),CNST_LIMB(0x8a63ab88aa8dd)),
+ P(7583,CNST_LIMB(0xa181abcda167be5f),CNST_LIMB(0x8a47a35d020f3)),
+ P(7589,CNST_LIMB(0x2f6dbbcab3a9822d),CNST_LIMB(0x8a2ba68a3cebf)),
+ P(7591,CNST_LIMB(0xc5a83ff0e43eba17),CNST_LIMB(0x8a2254c852497)),
+ P(7603,CNST_LIMB(0x28c68613dda7d97b),CNST_LIMB(0x89ea849898bb3)),
+ P(7607,CNST_LIMB(0x5cf33ed49efa5007),CNST_LIMB(0x89d7f3e285109)),
+ P(7621,CNST_LIMB(0x9125fdead661590d),CNST_LIMB(0x899720af36739)),
+ P(7639,CNST_LIMB(0xaee67f478c7325e7),CNST_LIMB(0x89442160d11dc)),
+ P(7643,CNST_LIMB(0x735b1274a0e89653),CNST_LIMB(0x8931bd5875a22)),
+ P(7649,CNST_LIMB(0x733b56eae1a4e621),CNST_LIMB(0x891630877aedf)),
+ P(7669,CNST_LIMB(0x1944ffb316ffe65d),CNST_LIMB(0x88baaad83e38f)),
+ P(7673,CNST_LIMB(0xf26bc3cfd2a01449),CNST_LIMB(0x88a86b9090aa4)),
+ P(7681,CNST_LIMB(0xb5827ba68b83e201),CNST_LIMB(0x8883fb99bf244)),
+ P(7687,CNST_LIMB(0xac139507e48eefb7),CNST_LIMB(0x8868b45e727ee)),
+ P(7691,CNST_LIMB(0xeb7676b25834fda3),CNST_LIMB(0x88568aef30d47)),
+ P(7699,CNST_LIMB(0xad898f4763da5c1b),CNST_LIMB(0x8832468f0bcdd)),
+ P(7703,CNST_LIMB(0xea906f224398f9a7),CNST_LIMB(0x88202b9a4df76)),
+ P(7717,CNST_LIMB(0xa8aff3caca28cdad),CNST_LIMB(0x87e0f31872e9b)),
+ P(7723,CNST_LIMB(0x46c53aa36b19b083),CNST_LIMB(0x87c5ecd731f42)),
+ P(7727,CNST_LIMB(0x9ada32b09603e8cf),CNST_LIMB(0x87b3eea3bb388)),
+ P(7741,CNST_LIMB(0xd31f842ef5d8e915),CNST_LIMB(0x87751a6c67d78)),
+ P(7753,CNST_LIMB(0x6124af44730a33f9),CNST_LIMB(0x873f6e2f9d34a)),
+ P(7757,CNST_LIMB(0x828ec4c2b6e64a85),CNST_LIMB(0x872d938dcfc01)),
+ P(7759,CNST_LIMB(0x3d6f49df999638af),CNST_LIMB(0x8724a80151dba)),
+ P(7789,CNST_LIMB(0x7641460a0ea89b65),CNST_LIMB(0x869f677f6cc1a)),
+ P(7793,CNST_LIMB(0x97703f98fb7fe291),CNST_LIMB(0x868db701df58d)),
+ P(7817,CNST_LIMB(0xd343c209e3e6b7b9),CNST_LIMB(0x8623f563a7d6d)),
+ P(7823,CNST_LIMB(0x4e5fc01f6a41406f),CNST_LIMB(0x86099ef0c8886)),
+ P(7829,CNST_LIMB(0xb78a05b08aa4bcbd),CNST_LIMB(0x85ef52d38fe87)),
+ P(7841,CNST_LIMB(0x3434a14919d34561),CNST_LIMB(0x85bad981c7847)),
+ P(7853,CNST_LIMB(0xccead7dee120f525),CNST_LIMB(0x8586893de7cfc)),
+ P(7867,CNST_LIMB(0xe1375a2bccd87673),CNST_LIMB(0x8549b491e9efe)),
+ P(7873,CNST_LIMB(0xf727d51420a57141),CNST_LIMB(0x852fb3859bea4)),
+ P(7877,CNST_LIMB(0x2c3b68cfbcebb00d),CNST_LIMB(0x851e631fc08f8)),
+ P(7879,CNST_LIMB(0xda91e2f3e17542f7),CNST_LIMB(0x8515bc9cde5f1)),
+ P(7883,CNST_LIMB(0xb55f6100ae95d6e3),CNST_LIMB(0x850472f6185b3)),
+ P(7901,CNST_LIMB(0x6a0c608e0bbaa975),CNST_LIMB(0x84b6defbc166b)),
+ P(7907,CNST_LIMB(0xac5f2fc151c016cb),CNST_LIMB(0x849d17159854b)),
+ P(7919,CNST_LIMB(0xb1e5af8146e4d00f),CNST_LIMB(0x8469a54a20645)),
+ P(7927,CNST_LIMB(0x6e283d3b112602c7),CNST_LIMB(0x84476f9401ade)),
+ P(7933,CNST_LIMB(0xf9a48bcb76c96e55),CNST_LIMB(0x842dd2e2dc25d)),
+ P(7937,CNST_LIMB(0xa776780ca4c0e101),CNST_LIMB(0x841cc543f58cb)),
+#define SMALLEST_OMITTED_PRIME 7949
+#endif
+#ifdef WANT_ptab
+ {CNST_LIMB(0x444437fed9a2349),{CNST_LIMB(0xe00056482545e92a),5,CNST_LIMB(0x2e044fdfbae4),CNST_LIMB(0x2c8f9615733fe6),CNST_LIMB(0x15319a745d44889),CNST_LIMB(0x30314bfee31fe08),CNST_LIMB(0x213845b5eb1d02b)},0,14},
+ {CNST_LIMB(0x34091fa96ffdf47b),{CNST_LIMB(0x3adc72bf62f96a49),2,CNST_LIMB(0x2fdb815a40082e14),CNST_LIMB(0xa2fb4713ee182be),CNST_LIMB(0x6691fcc7a3042b5),CNST_LIMB(0xd7baca281bd7bfe),CNST_LIMB(0x31645ad7700b6fe1)},14,10},
+ {CNST_LIMB(0x3c47d8d728a77ebb),{CNST_LIMB(0xfcb9aee19f3d0ca),2,CNST_LIMB(0xee09ca35d620514),CNST_LIMB(0x25e3c1639f7dc597),CNST_LIMB(0x176f977d1145f08f),CNST_LIMB(0x4a431b566c292ba),CNST_LIMB(0x100ae9d9482d6937)},24,9},
+ {CNST_LIMB(0x77ab7da9d709ea9),{CNST_LIMB(0x11d1e7012ab3aa25),5,CNST_LIMB(0x1b394f7170aed8e),CNST_LIMB(0x546efaf8f3107d0),CNST_LIMB(0x42ed2efa9db39d8),CNST_LIMB(0xcf1c08fc6f825e),CNST_LIMB(0x252dd3fc3932c60)},33,8},
+ {CNST_LIMB(0x310df3e7bd4bc897),{CNST_LIMB(0x4dfeef7ace095886),2,CNST_LIMB(0xaba3c794d85150d),CNST_LIMB(0x17a7ea757afc9b41),CNST_LIMB(0x27386bf8f31e3ba7),CNST_LIMB(0x14f913784ca1b09a),CNST_LIMB(0x19a5850266378808)},41,8},
+ {CNST_LIMB(0xd997f089e8af1f),{CNST_LIMB(0x2d2f79839e6b7329),8,CNST_LIMB(0x285a2dd96a188d),CNST_LIMB(0x334ffbd384a516),CNST_LIMB(0xd9f5c4d959d8c),CNST_LIMB(0x1a7b0c8f9e2a8),CNST_LIMB(0x51d4df5ea86eca)},49,7},
+ {CNST_LIMB(0x2514ab8fece6d79),{CNST_LIMB(0xb9d8ba8530d526d2),6,CNST_LIMB(0x111e482834cf602),CNST_LIMB(0x2099b9b4399ea77),CNST_LIMB(0xa7e65453d2c58b),CNST_LIMB(0x1543e97a71ba902),CNST_LIMB(0x13c9258fa65ea5c)},56,7},
+ {CNST_LIMB(0x690efbefde431f9),{CNST_LIMB(0x37e6fe9321e30a89),5,CNST_LIMB(0x67c69a65020950a),CNST_LIMB(0x3d4da34fd3fb29d),CNST_LIMB(0x4481530580bf270),CNST_LIMB(0x53418b541a702fb),CNST_LIMB(0x5a63ba140615695)},63,7},
+ {CNST_LIMB(0xf49e199a5f2f371),{CNST_LIMB(0xbe97cf50195e4cf),4,CNST_LIMB(0xb61e665a0d0c8f0),CNST_LIMB(0x12404319392532e),CNST_LIMB(0xc11fa27489010aa),CNST_LIMB(0x9486cdb3a063f1d),CNST_LIMB(0x90fb58fe1716f29)},70,7},
+ {CNST_LIMB(0x20e4ce7eee0a5edf),{CNST_LIMB(0xf216910d87cce9ec),2,CNST_LIMB(0x19be5a877db767e7),CNST_LIMB(0x14174edbad8e4db0),CNST_LIMB(0x13aa47a54ebc0ab3),CNST_LIMB(0x34e03d849eed1a0),CNST_LIMB(0x1c348c675b2b87a9)},77,7},
+ {CNST_LIMB(0x3c3b299a83e166e5),{CNST_LIMB(0x1004d8385b0845e0),2,CNST_LIMB(0xf135995f07a646c),CNST_LIMB(0x39f996f3e7c62cb6),CNST_LIMB(0x10e385c8b908ec46),CNST_LIMB(0x108780c61cd93a1),CNST_LIMB(0xece590a749ce9e6)},84,7},
+ {CNST_LIMB(0x7385117dabf89767),{CNST_LIMB(0x1ba83180cf48fd02),1,CNST_LIMB(0x18f5dd04a80ed132),CNST_LIMB(0x134aacf48cf374fd),CNST_LIMB(0x5f5e8ab304a603e1),CNST_LIMB(0x8196d4d84952f0b),CNST_LIMB(0x27fbce261e06981)},91,7},
+ {CNST_LIMB(0x6b1dd94152d113),{CNST_LIMB(0x31e8de86cb665558),9,CNST_LIMB(0x57c2791756ffa7),CNST_LIMB(0x155d1b6359e72e),CNST_LIMB(0x26e2dd434311d6),CNST_LIMB(0x2d6624583bf57f),CNST_LIMB(0x4b3c0311592466)},98,6},
+ {CNST_LIMB(0x9bed1488742f9b),{CNST_LIMB(0xa44d3b1c6d785d44),8,CNST_LIMB(0x2f0a502161e5b4),CNST_LIMB(0x9197cc3e5a5b04),CNST_LIMB(0x58ecad625341f6),CNST_LIMB(0x2c8e81222f4972),CNST_LIMB(0x1f80904334e61e)},104,6},
+ {CNST_LIMB(0xd851b0362c316b),{CNST_LIMB(0x2ef5b88db4540035),8,CNST_LIMB(0xcfa22017ddb3c6),CNST_LIMB(0x213062fd865691),CNST_LIMB(0x81822846481a0d),CNST_LIMB(0x4b3f5844dfd386),CNST_LIMB(0x746b08e79bff57)},110,6},
+ {CNST_LIMB(0x129e6025385b5e9),{CNST_LIMB(0xb7fd23d5247f5d33),7,CNST_LIMB(0x1283c028c9d61ad),CNST_LIMB(0x8a2496a2184268),CNST_LIMB(0x702aa9d6cae97c),CNST_LIMB(0x8700d0e7b38adb),CNST_LIMB(0x562031b42d3873)},116,6},
+ {CNST_LIMB(0x1b399405df9e1d9),{CNST_LIMB(0x2ce69e058ed22408),7,CNST_LIMB(0xc43448ef95aada),CNST_LIMB(0x2a35f6f5397332),CNST_LIMB(0x18bba0a2b06f9b5),CNST_LIMB(0x1bf0769bdd0a51),CNST_LIMB(0xdaf86a9dd4f157)},122,6},
+ {CNST_LIMB(0x26a9c83b1da0183),{CNST_LIMB(0xa7c312b1de2834bc),6,CNST_LIMB(0x245cdfc0d956145),CNST_LIMB(0xcfb5812fdbb80b),CNST_LIMB(0x7f9bd0fd4d9771),CNST_LIMB(0x206d41f157b339d),CNST_LIMB(0x1597d040f39bed6)},128,6},
+ {CNST_LIMB(0x36518f1ed35fae9),{CNST_LIMB(0x2da0bb538e68c61b),6,CNST_LIMB(0x161b11f812f7dbd),CNST_LIMB(0x1912054119f8337),CNST_LIMB(0x28b68baf0254a33),CNST_LIMB(0x1febc2a846ec627),CNST_LIMB(0x106e286e91657ac)},134,6},
+ {CNST_LIMB(0x499cea9952ffcb7),{CNST_LIMB(0xbd2398239911cb86),5,CNST_LIMB(0x2f49990f2b0b4af),CNST_LIMB(0x3efc376b6d3879a),CNST_LIMB(0x16bf595684e7cae),CNST_LIMB(0x2096f989291e15a),CNST_LIMB(0x3f877653fe30a29)},140,6},
+ {CNST_LIMB(0x603dc1f0578e36b),{CNST_LIMB(0x547a4d1f60bb6de6),5,CNST_LIMB(0x35de2e91a2ab072),CNST_LIMB(0x3ae19a039d933f9),CNST_LIMB(0x49f04fa32aed515),CNST_LIMB(0x49f39ce5e69737b),CNST_LIMB(0x48e7a8d6354cb3f)},146,6},
+ {CNST_LIMB(0x822f4ff1bb75c7d),{CNST_LIMB(0xf7684c1a915fd94f),4,CNST_LIMB(0x3c4551ba4cbccdd),CNST_LIMB(0x3e072857c5d22e8),CNST_LIMB(0x757d8256f24de27),CNST_LIMB(0x256d9df09b5df5c),CNST_LIMB(0x19974713584ab80)},152,6},
+ {CNST_LIMB(0xacfc9fbdf683023),{CNST_LIMB(0x7ad9852da99412df),4,CNST_LIMB(0x754da5eeda3acdb),CNST_LIMB(0x91f55d002dee623),CNST_LIMB(0x96936cc5e49d5ea),CNST_LIMB(0x766649a4996390),CNST_LIMB(0xaa8c52b8eea17dd)},158,6},
+ {CNST_LIMB(0xe09d410f1fe4edb),{CNST_LIMB(0x23c5744aa32cf453),4,CNST_LIMB(0x34f16cefc1e749a),CNST_LIMB(0x2668179180c1b62),CNST_LIMB(0xdb241be2f133397),CNST_LIMB(0xa7c11527a49744e),CNST_LIMB(0x67d18e0669fea5b)},164,6},
+ {CNST_LIMB(0x1149424a578f0ce7),{CNST_LIMB(0xd9e7a906d91cf1db),3,CNST_LIMB(0xdfe5fef362d4b5e),CNST_LIMB(0xcf056a84b77c77c),CNST_LIMB(0x985dfab0d2bd76b),CNST_LIMB(0xf57931f6922ec07),CNST_LIMB(0x44b19bfab74d6)},170,6},
+ {CNST_LIMB(0x15b025d5fd579777),{CNST_LIMB(0x79b813c3ed8f4fd2),3,CNST_LIMB(0x116e5fce1d3c7de3),CNST_LIMB(0x1468c60d0220a399),CNST_LIMB(0xf10192b1089742d),CNST_LIMB(0xeae0b108eba5be6),CNST_LIMB(0xf0e98ff5e4d57d4)},176,6},
+ {CNST_LIMB(0x1a5f81f6e38d3f1d),{CNST_LIMB(0x369eab91d724ae89),3,CNST_LIMB(0x12a46e520008c7fb),CNST_LIMB(0x638a97340d45e81),CNST_LIMB(0x12b4b0c893a62d44),CNST_LIMB(0x1072dcd55e5547d0),CNST_LIMB(0x18ce18c4a086d95f)},182,6},
+ {CNST_LIMB(0x23293bf9b6fe2259),{CNST_LIMB(0xd1f849a43b917c65),2,CNST_LIMB(0x9df5c2bff0d0f91),CNST_LIMB(0xff1fdef6c15b8c),CNST_LIMB(0xec1383d93946006),CNST_LIMB(0x20ce6fd4fbbb8838),CNST_LIMB(0x55871453993a979)},188,6},
+ {CNST_LIMB(0x2c1eaa6645e21b17),{CNST_LIMB(0x735a473662e09835),2,CNST_LIMB(0x2366ac00a295788d),CNST_LIMB(0xf8778468c26bac6),CNST_LIMB(0x10ecc751d2724c63),CNST_LIMB(0x4882fbd9d3d43e1),CNST_LIMB(0x2de76607a7f1541)},194,6},
+ {CNST_LIMB(0x3646542a1110061b),{CNST_LIMB(0x2ddf24b018173a2c),2,CNST_LIMB(0x26e6af57bbbfe794),CNST_LIMB(0x1974e8d33a8f431f),CNST_LIMB(0x34da7258db6f7b4f),CNST_LIMB(0x2af310e921f874f8),CNST_LIMB(0x3cfeed9d4afc97)},200,6},
+ {CNST_LIMB(0x4125602df5b7fa0b),{CNST_LIMB(0xf6fe47f7e339f3ce),1,CNST_LIMB(0x3c8fdf761ed811df),CNST_LIMB(0x145648c8769aba41),CNST_LIMB(0x3270209c06bd9a17),CNST_LIMB(0x2c03f98e45b9dca3),CNST_LIMB(0x3341dcfe340ee93e)},206,6},
+ {CNST_LIMB(0x4e06bb83aa64f48d),{CNST_LIMB(0xa3f6020ab0b7e0d3),1,CNST_LIMB(0x15ebcd7500d12259),CNST_LIMB(0x786bf28f0081f92),CNST_LIMB(0x15d832d09f03b587),CNST_LIMB(0xaa3e94d54c2a575),CNST_LIMB(0x471850a042d21386)},212,6},
+ {CNST_LIMB(0x6953db39a8298d8b),{CNST_LIMB(0x371b0bbe24632f20),1,CNST_LIMB(0x2d58498caface4ea),CNST_LIMB(0x557c399022219340),CNST_LIMB(0x2cb32a1a8fdd68c2),CNST_LIMB(0x122684249d42b9a9),CNST_LIMB(0x13c80507e77a929c)},218,6},
+ {CNST_LIMB(0x15fafabe1c1777),{CNST_LIMB(0x74b22475baab0cce),11,CNST_LIMB(0xc763842e2c34d),CNST_LIMB(0x77d3f710b457b),CNST_LIMB(0x155a43f5525196),CNST_LIMB(0x148e30e0a5dee3),CNST_LIMB(0x13aa97836b8150)},224,5},
+ {CNST_LIMB(0x18552ab4f8303b),{CNST_LIMB(0x50aaa1ed4d926e62),11,CNST_LIMB(0x815be492ca359),CNST_LIMB(0x1b55fe26d36ad),CNST_LIMB(0x113a54ceb7846),CNST_LIMB(0x1688511dfe47f),CNST_LIMB(0x66ccabff6c6c8)},229,5},
+ {CNST_LIMB(0x1a99c2502dda5f),{CNST_LIMB(0x33f675a22ebecef5),11,CNST_LIMB(0x12ab7e96d807ff),CNST_LIMB(0x1d3db891dce3b),CNST_LIMB(0x19511de2e3095c),CNST_LIMB(0x2741e555a0bff),CNST_LIMB(0x51c7d31a19281)},234,5},
+ {CNST_LIMB(0x1ebf9e78cd7ecb),{CNST_LIMB(0xa6b5da36fa2470c),11,CNST_LIMB(0xaebd869698c2f),CNST_LIMB(0x18e178fc70e26a),CNST_LIMB(0x64439ec9707b5),CNST_LIMB(0x116d1f70d29f20),CNST_LIMB(0xeea2317a9a585)},239,5},
+ {CNST_LIMB(0x2214c7d5d9ce07),{CNST_LIMB(0xe0bc0f6215d26cf9),10,CNST_LIMB(0x1ffbac72c32f72),CNST_LIMB(0x1447f31b055129),CNST_LIMB(0x122d28bd754f9a),CNST_LIMB(0x106685d95b6d85),CNST_LIMB(0x18c9fdf391bdff)},244,5},
+ {CNST_LIMB(0x25e2755d49ffa7),{CNST_LIMB(0xb078a0cae16506b6),10,CNST_LIMB(0x218554ef385919),CNST_LIMB(0xe00c975692d8e),CNST_LIMB(0x1afd2511d2f776),CNST_LIMB(0x108b0b031673f7),CNST_LIMB(0x8d919ed067cf0)},249,5},
+ {CNST_LIMB(0x2925e3d5425d41),{CNST_LIMB(0x8e2c20d6f8f795ce),10,CNST_LIMB(0x1c5f29cb4c13c8),CNST_LIMB(0x15e11f6e5f634),CNST_LIMB(0xb32166d7982b3),CNST_LIMB(0xa636cf5c4f642),CNST_LIMB(0x28f997d81938bc)},254,5},
+ {CNST_LIMB(0x2f39e99d11c26d),{CNST_LIMB(0x5aed08e710697213),10,CNST_LIMB(0x213b4a00c79b71),CNST_LIMB(0x1bd2737e294111),CNST_LIMB(0xd01c8aaaae314),CNST_LIMB(0xb00f1e27ed99e),CNST_LIMB(0x1d21748adab7e4)},259,5},
+ {CNST_LIMB(0x3502a3ce62a769),{CNST_LIMB(0x35126ab40383fc5c),10,CNST_LIMB(0xf411f8bafb90c),CNST_LIMB(0x1fa38c975e6347),CNST_LIMB(0xf4058b043df4e),CNST_LIMB(0x2af2733656b159),CNST_LIMB(0x196e94f446c597)},264,5},
+ {CNST_LIMB(0x3b357b23b014b1),{CNST_LIMB(0x14b711563eba7d77),10,CNST_LIMB(0x32f1ffd1469b4e),CNST_LIMB(0x197f48859c01a3),CNST_LIMB(0x29509dc5352d40),CNST_LIMB(0x335e5c9ef5d7fe),CNST_LIMB(0x284e1a5376a683)},269,5},
+ {CNST_LIMB(0x420d06773114d3),{CNST_LIMB(0xf01a36d7bbf66dfc),9,CNST_LIMB(0xd86f221cf4e60),CNST_LIMB(0x728955d2f4a8d),CNST_LIMB(0x1a631ed35adca5),CNST_LIMB(0x2d592810a2cd39),CNST_LIMB(0x1215b15f856f68)},274,5},
+ {CNST_LIMB(0x4c19f733c90d09),{CNST_LIMB(0xae954f9b28df48d8),9,CNST_LIMB(0xcab96d4cf28bb),CNST_LIMB(0x42b5fc3fd6e7ec),CNST_LIMB(0x2b7f897adc30de),CNST_LIMB(0x1a97bb06e110c0),CNST_LIMB(0x304db431256118)},279,5},
+ {CNST_LIMB(0x52f224bf890ffd),{CNST_LIMB(0x8b0d84b8653cb09f),9,CNST_LIMB(0x8c298ef08a942),CNST_LIMB(0x2999ac4ebb9e26),CNST_LIMB(0x3dd9eb9ca2c026),CNST_LIMB(0x43401c4563f790),CNST_LIMB(0x38d5e8bf6d2c89)},284,5},
+ {CNST_LIMB(0x5bf703dda941b1),{CNST_LIMB(0x644f51d4add132a4),9,CNST_LIMB(0x38fd3f81414bb8),CNST_LIMB(0x20049119d93b7c),CNST_LIMB(0x4e479d97844206),CNST_LIMB(0x294a3066f3b775),CNST_LIMB(0x1c21bda84cf2fc)},289,5},
+ {CNST_LIMB(0x68cf321fe6202f),{CNST_LIMB(0x38a4d27caeef8e91),9,CNST_LIMB(0x1e26a01f2b6d41),CNST_LIMB(0x9e9e8993d282b),CNST_LIMB(0x417ad2819cd4fb),CNST_LIMB(0x627fb183ab0b1a),CNST_LIMB(0x278b9f029564e7)},294,5},
+ {CNST_LIMB(0x71dad4e06cde9b),{CNST_LIMB(0x1fce1dcd4eb47a27),9,CNST_LIMB(0x457bdbeb7801db),CNST_LIMB(0x1f2b3df5db8f09),CNST_LIMB(0x2149ca25813ef0),CNST_LIMB(0x17d20c710e4487),CNST_LIMB(0x40ceb8ee4ca73d)},299,5},
+ {CNST_LIMB(0x7b5e9ca091c63d),{CNST_LIMB(0x99bc23041414782),9,CNST_LIMB(0x1ac11ef1a1cf79),CNST_LIMB(0x313f0652fefffc),CNST_LIMB(0x12f34ea4e7a5db),CNST_LIMB(0x2aa2b3b3300bfd),CNST_LIMB(0x3245caffd0690c)},304,5},
+ {CNST_LIMB(0x892f2017af4a77),{CNST_LIMB(0xddb91a666e887a07),8,CNST_LIMB(0x633133de624045),CNST_LIMB(0x7f207860875935),CNST_LIMB(0x702aff29ff7777),CNST_LIMB(0x1cc53fa2f53db9),CNST_LIMB(0x2c5ff88b6e27ee)},309,5},
+ {CNST_LIMB(0x93efab3d98e265),{CNST_LIMB(0xbb00736076c6c8fc),8,CNST_LIMB(0x42ac68703b39),CNST_LIMB(0x4d4d015d5d1bd7),CNST_LIMB(0x85c801afb0f411),CNST_LIMB(0x4579d8022d0a69),CNST_LIMB(0x32ea2e520e3d23)},314,5},
+ {CNST_LIMB(0x9fd1e9a289b8f9),{CNST_LIMB(0x9a0fb77008192e78),8,CNST_LIMB(0x9cfd1af6dc136),CNST_LIMB(0x23a28bc352c87c),CNST_LIMB(0x582383446e53c2),CNST_LIMB(0x3d52e0695b07e4),CNST_LIMB(0x83c6fc0e7cfd23)},319,5},
+ {CNST_LIMB(0xb3ffc82a3b00bb),{CNST_LIMB(0x6c17325c7676de1f),8,CNST_LIMB(0x104f63f41af61c),CNST_LIMB(0x838ff92da5d267),CNST_LIMB(0xb37001a22f0194),CNST_LIMB(0x4487295b668b16),CNST_LIMB(0xa06ce4ed65729d)},324,5},
+ {CNST_LIMB(0xc78aab3260ed67),{CNST_LIMB(0x486ec1d048657b5d),8,CNST_LIMB(0x5654a773cfd408),CNST_LIMB(0xb3f20a79edde43),CNST_LIMB(0xaebbd1a69724dd),CNST_LIMB(0x81191f0503a9),CNST_LIMB(0x3b54fc6e1ed034)},329,5},
+ {CNST_LIMB(0xd8b06a4b9eddc9),{CNST_LIMB(0x2e7147c081441aeb),8,CNST_LIMB(0x5fe29aca965ce2),CNST_LIMB(0x9cb19caad665ca),CNST_LIMB(0x147b04c65844fd),CNST_LIMB(0x7a1c878be8db45),CNST_LIMB(0x8f4f4d51c80dfd)},334,5},
+ {CNST_LIMB(0xe8f35bfe49ae4b),{CNST_LIMB(0x19547b44fa632b82),8,CNST_LIMB(0x4ce005e11fafad),CNST_LIMB(0x57f2d94de4ea00),CNST_LIMB(0xb885b9e976e473),CNST_LIMB(0x1eb25c197e9b39),CNST_LIMB(0xe2c45221f5cdb7)},339,5},
+ {CNST_LIMB(0xfcff7f19788a27),{CNST_LIMB(0x3099f4bf7423272),8,CNST_LIMB(0x982693b0c3a8b),CNST_LIMB(0xa6eee9dce0fc63),CNST_LIMB(0xf1290f2b74223c),CNST_LIMB(0x36c85e11826e0b),CNST_LIMB(0xbe15668a4d3771)},344,5},
+ {CNST_LIMB(0x10f681c21a80325),{CNST_LIMB(0xe2ef902951d2322d),7,CNST_LIMB(0x7efd8450d50a2b),CNST_LIMB(0x37c115b60abfde),CNST_LIMB(0x4a31517b3a2c0),CNST_LIMB(0x8ee426b2c25e26),CNST_LIMB(0xaf5e09c0582f8)},349,5},
+ {CNST_LIMB(0x11ffa8ecf7814fb),{CNST_LIMB(0xc7250b86192832ab),7,CNST_LIMB(0xa4d35e0885656f),CNST_LIMB(0x6d14e9be5101ec),CNST_LIMB(0x93b36726a244a),CNST_LIMB(0xb56f38bde55186),CNST_LIMB(0x11443988cbd610f)},354,5},
+ {CNST_LIMB(0x139b8ddf439b133),{CNST_LIMB(0xa1cbe52ffcdca969),7,CNST_LIMB(0x119cba991200690),CNST_LIMB(0xa8a1be12145159),CNST_LIMB(0x49831f7f1eb091),CNST_LIMB(0x5fe3a0bd210422),CNST_LIMB(0x11b90612ebf719f)},359,5},
+ {CNST_LIMB(0x15b90aaef040351),{CNST_LIMB(0x791d6da971f79fb1),7,CNST_LIMB(0xc1c278790d9084),CNST_LIMB(0xa6bc771172ca70),CNST_LIMB(0x1219044d36b161b),CNST_LIMB(0x9363a00d9d3f5f),CNST_LIMB(0x14079ec2a37ea93)},364,5},
+ {CNST_LIMB(0x17d664f86c88bd3),{CNST_LIMB(0x57a9176de3f40918),7,CNST_LIMB(0x13ca8e0f80a9a0f),CNST_LIMB(0xfc1ecc66c0c93b),CNST_LIMB(0x15be6192051cb1a),CNST_LIMB(0x136f263b7a50fcc),CNST_LIMB(0x3820db8623a7)},369,5},
+ {CNST_LIMB(0x1a44cc5ef4c16b5),{CNST_LIMB(0x37da80020a7d1f74),7,CNST_LIMB(0x18584281cee4069),CNST_LIMB(0x178a63d22596ba9),CNST_LIMB(0x6739c7c5ac4f2d),CNST_LIMB(0x14c57a38e4d612a),CNST_LIMB(0x13d2e7fd35623ae)},374,5},
+ {CNST_LIMB(0x1ca80b29773de79),{CNST_LIMB(0x1dde9f723a4f55dc),7,CNST_LIMB(0x1ac9ceffdba98e2),CNST_LIMB(0xf4618a5f0fdaa9),CNST_LIMB(0x17b96b4ded53ebb),CNST_LIMB(0x7faf749bdd9cb1),CNST_LIMB(0xfa9d50111fc549)},379,5},
+ {CNST_LIMB(0x1e7b019a7fa8931),{CNST_LIMB(0xcc3160c520cdb96),7,CNST_LIMB(0xb9d29212dc305a),CNST_LIMB(0x91586fa7d2facc),CNST_LIMB(0x2638c4c9135f19),CNST_LIMB(0x1c315565816b84a),CNST_LIMB(0xa92e9c918ad70f)},384,5},
+ {CNST_LIMB(0x1fd932c2a6c3463),{CNST_LIMB(0x137e41a0c0b8d4f),7,CNST_LIMB(0x13669eac9e5ce80),CNST_LIMB(0x94dc55b30276b5),CNST_LIMB(0x1c52a400cc7dae6),CNST_LIMB(0x1cd876c8023e81b),CNST_LIMB(0x8e06dbbb7e4c2d)},389,5},
+ {CNST_LIMB(0x2175e8bd7050e79),{CNST_LIMB(0xe9a698d03a5e604b),6,CNST_LIMB(0xdcf15b87971a56),CNST_LIMB(0x2e9e439e7517fb),CNST_LIMB(0x85bbfca7ac6da9),CNST_LIMB(0x500c9508abde31),CNST_LIMB(0x1c9d7aa292a48b0)},394,5},
+ {CNST_LIMB(0x24033b205fe4527),{CNST_LIMB(0xc6f39cee1695e79a),6,CNST_LIMB(0x1a92e6b5ac379c9),CNST_LIMB(0x1f1b86c0e7f8d15),CNST_LIMB(0x1e362d27d79fda9),CNST_LIMB(0x4dcd13ebf2a00a),CNST_LIMB(0x408b8bd354f1b4)},399,5},
+ {CNST_LIMB(0x265d2eb09cdc073),{CNST_LIMB(0xab112e468a91ceb0),6,CNST_LIMB(0x1d6aaadf0ce5062),CNST_LIMB(0x8cb5be41003782),CNST_LIMB(0x52b9980c0c4bec),CNST_LIMB(0x2228f2e6cbe8667),CNST_LIMB(0xca6f7400df044e)},404,5},
+ {CNST_LIMB(0x2953a0e65ca6a1d),{CNST_LIMB(0x8c7372d9ab5569c1),6,CNST_LIMB(0x4a8c6ea2b8f6c9),CNST_LIMB(0x3588f2393801ce),CNST_LIMB(0x1fce38ab648e336),CNST_LIMB(0x89544c1c4d5e80),CNST_LIMB(0x6e5d409692ed37)},409,5},
+ {CNST_LIMB(0x2c67f25a6bc9c63),{CNST_LIMB(0x70f57416f0cce89e),6,CNST_LIMB(0xaa4e781437cc6c),CNST_LIMB(0x1c38f9d456ca8d),CNST_LIMB(0x2682eae3a0afadb),CNST_LIMB(0x2b54835e8a4f4ca),CNST_LIMB(0x1ff894f600fa94f)},414,5},
+ {CNST_LIMB(0x2fdd1a7524ae76d),{CNST_LIMB(0x564e31abce2eba47),6,CNST_LIMB(0x1b96371ad2128cf),CNST_LIMB(0x35309a6895ab0d),CNST_LIMB(0x14de5531da96df1),CNST_LIMB(0x3a924ccc42ac90),CNST_LIMB(0x315a6b9b99a595)},419,5},
+ {CNST_LIMB(0x33770e6e18aeb53),{CNST_LIMB(0x3e5a14fd0434a100),6,CNST_LIMB(0x1e428c066216163),CNST_LIMB(0x93d03854bffefa),CNST_LIMB(0x77e62b6df8d4a1),CNST_LIMB(0x8a8b138bb2ed69),CNST_LIMB(0x292d249664af8db)},424,5},
+ {CNST_LIMB(0x379c7dff6334d3b),{CNST_LIMB(0x269dcc0c8d56e875),6,CNST_LIMB(0x2460122cb5efa2d),CNST_LIMB(0x28e51e3c7265f2e),CNST_LIMB(0x1efacb51926e686),CNST_LIMB(0xfc8248ae79bd5f),CNST_LIMB(0x2f3b91b1fe1f65)},429,5},
+ {CNST_LIMB(0x3b82f15f7249c49),{CNST_LIMB(0x134ee332d51f0306),6,CNST_LIMB(0x3137e2a5a467c9c),CNST_LIMB(0x79d488798b4960),CNST_LIMB(0xb436578d1069bb),CNST_LIMB(0x10ad84e585582d0),CNST_LIMB(0x3215616c9b153bf)},434,5},
+ {CNST_LIMB(0x3fff4dd17ad4ff9),{CNST_LIMB(0x2c8c1d50d30af),6,CNST_LIMB(0x2c8ba14ac01c0),CNST_LIMB(0x2bd06852b51e327),CNST_LIMB(0x30714e5452d2c1),CNST_LIMB(0x327ff42efc6d9c),CNST_LIMB(0x244bb5001864710)},439,5},
+ {CNST_LIMB(0x465670cc294b181),{CNST_LIMB(0xd1ddf947b9d55be0),5,CNST_LIMB(0x106a71bea4fc8c6),CNST_LIMB(0xa255b26c45d27f),CNST_LIMB(0x460d26a6240e466),CNST_LIMB(0x1dda425d1868b60),CNST_LIMB(0x3d6eff8580e97e1)},444,5},
+ {CNST_LIMB(0x4aaaab2fe3fee47),{CNST_LIMB(0xb6db6aa7d3a37a63),5,CNST_LIMB(0x3fffe3e5e83bd06),CNST_LIMB(0xa8a65f30809160),CNST_LIMB(0xbfd8fef4142370),CNST_LIMB(0x358c77f78c2a4d0),CNST_LIMB(0x3a89f0ee6796b95)},449,5},
+ {CNST_LIMB(0x4f8bbff17c95ef7),{CNST_LIMB(0x9bf032ee57751395),5,CNST_LIMB(0x2728c2e42e214cb),CNST_LIMB(0x37fb2686e89761e),CNST_LIMB(0x4a264029edea029),CNST_LIMB(0x1d504d3aecaaa50),CNST_LIMB(0x45b5a7b35031756)},454,5},
+ {CNST_LIMB(0x553ea1ce3216691),{CNST_LIMB(0x806643148e9063ef),5,CNST_LIMB(0x441a9569bcc4d0),CNST_LIMB(0x535ae4be3f071a1),CNST_LIMB(0x545a793067e09d8),CNST_LIMB(0xd5d15c09afe8cd),CNST_LIMB(0x4534c23a01c6a96)},459,5},
+ {CNST_LIMB(0x59f7c9a4fefb517),{CNST_LIMB(0x6c37fd6421ef50ed),5,CNST_LIMB(0x2f718dff2dd2af5),CNST_LIMB(0x4aea82d40c5cc72),CNST_LIMB(0x4f7cec2a6861199),CNST_LIMB(0xe868a369a42529),CNST_LIMB(0x40e610cd320b2f7)},464,5},
+ {CNST_LIMB(0x5e8d3fa86f95521),{CNST_LIMB(0x5a8fc0667cc240fe),5,CNST_LIMB(0x1e464eb541eb375),CNST_LIMB(0x3892fa43db27fd5),CNST_LIMB(0x4e5c7836ddc791a),CNST_LIMB(0x36e537bed96365e),CNST_LIMB(0x4375094ddcb8820)},469,5},
+ {CNST_LIMB(0x64157c62c33e31d),{CNST_LIMB(0x4767bbee2675bc54),5,CNST_LIMB(0x5ca490917e48378),CNST_LIMB(0x11867a67aa79db0),CNST_LIMB(0x6198c4cbcaf84e6),CNST_LIMB(0x4338ebe5ab25fcf),CNST_LIMB(0x11e91c53e48fd1e)},474,5},
+ {CNST_LIMB(0x6ceeed4c43f4183),{CNST_LIMB(0x2cced2b1dae4601a),5,CNST_LIMB(0x4177b3fa2db8811),CNST_LIMB(0x2b3db3648dc8a5),CNST_LIMB(0x50f060794aa127),CNST_LIMB(0x4f7cdc200df8c9a),CNST_LIMB(0x4525db055625df3)},479,5},
+ {CNST_LIMB(0x7287ee7e5f96919),{CNST_LIMB(0x1e1b2205d593e3a6),5,CNST_LIMB(0x576a64b8ee6a195),CNST_LIMB(0x7bd2ea513c7027),CNST_LIMB(0x17c4152c6d55daa),CNST_LIMB(0x39f7aac6f902f57),CNST_LIMB(0x14765413bf9b5ca)},484,5},
+ {CNST_LIMB(0x79886d10dfa5165),{CNST_LIMB(0xd9f57c223f379ca),5,CNST_LIMB(0x5569f0d32bb81fb),CNST_LIMB(0x6f08a7fc8e770a6),CNST_LIMB(0x2c14d325ec8479f),CNST_LIMB(0x4499d22e49d3c7),CNST_LIMB(0x53f1f1eecdc8c2)},489,5},
+ {CNST_LIMB(0x7e13347ac1526bf),{CNST_LIMB(0x3e8a375cf0fb774),5,CNST_LIMB(0x3d9970a7d5b2820),CNST_LIMB(0x3664c9d670bba16),CNST_LIMB(0x6ba929ee3cbcd5c),CNST_LIMB(0xd5d262e6d92452),CNST_LIMB(0x2f545142add8d05)},494,5},
+ {CNST_LIMB(0x8566f0377d15459),{CNST_LIMB(0xeb44411c1363bcf4),4,CNST_LIMB(0x5defd97f5781d92),CNST_LIMB(0x16eaae98cb00189),CNST_LIMB(0x986f4f6d77c243),CNST_LIMB(0x57c736925ddfd9),CNST_LIMB(0x10a756243dbe4ca)},499,5},
+ {CNST_LIMB(0x8bfc83897e6cdaf),{CNST_LIMB(0xd428ea393317b9f2),4,CNST_LIMB(0x2465196cadab32d),CNST_LIMB(0x7594e9e684d904a),CNST_LIMB(0x19cd4a75383b2d1),CNST_LIMB(0x6a0e9c23f177e64),CNST_LIMB(0x56f0f2ae36c5465)},504,5},
+ {CNST_LIMB(0x94ad790245385eb),{CNST_LIMB(0xb8cae8ae9a639526),4,CNST_LIMB(0x51b43cc2b30e037),CNST_LIMB(0x4cb133bb88b3adc),CNST_LIMB(0x3ede33df9c5e3e3),CNST_LIMB(0x665226a2d290ac4),CNST_LIMB(0x33db5ce835ec6e4)},509,5},
+ {CNST_LIMB(0x9c30734d93b1379),{CNST_LIMB(0xa397f073b55bde0b),4,CNST_LIMB(0x23144a1f00005b6),CNST_LIMB(0x826ad253a3ed324),CNST_LIMB(0x940ad5d52b4806c),CNST_LIMB(0x1729e9d2d022730),CNST_LIMB(0x20a978fb381a6c2)},514,5},
+ {CNST_LIMB(0xa57e1fd7a44fbb9),{CNST_LIMB(0x8c0164efd39df203),4,CNST_LIMB(0x7c2d03c898866a8),CNST_LIMB(0x4037558c6f1e4eb),CNST_LIMB(0x6694cdbbb8803c7),CNST_LIMB(0x99396c89bf97452),CNST_LIMB(0x436126c1b000fab)},519,5},
+ {CNST_LIMB(0xaf9b9be9c8401d1),{CNST_LIMB(0x7531f66eca55c19b),4,CNST_LIMB(0x3904fdff023d639),CNST_LIMB(0x962f9b532413fb3),CNST_LIMB(0x27ec74df2758058),CNST_LIMB(0x5836483d1e34f66),CNST_LIMB(0x8384a37fad8866d)},524,5},
+ {CNST_LIMB(0xb9ba711d6e4a84f),{CNST_LIMB(0x60dc0b5cc82154b3),4,CNST_LIMB(0x9fa47788598936),CNST_LIMB(0x82bd019c1fa5a56),CNST_LIMB(0x50db17c34711736),CNST_LIMB(0x739121f55c5b75d),CNST_LIMB(0x912fe4d49b6d56)},529,5},
+ {CNST_LIMB(0xc41a8a6c63a70d1),{CNST_LIMB(0x4e30c99728e3c197),4,CNST_LIMB(0xaded2f8836f2fac),CNST_LIMB(0xab84ac5c6d525d9),CNST_LIMB(0x488aa0b1f301ccb),CNST_LIMB(0x5fdf2905d976ad6),CNST_LIMB(0x5cb75a7adbb8561)},534,5},
+ {CNST_LIMB(0xcd79628a71801f7),{CNST_LIMB(0x3ef33887b9ad5b44),4,CNST_LIMB(0xbffdafb9937daab),CNST_LIMB(0x8c3722255b2b8c7),CNST_LIMB(0x63cd1bbc0e9c22a),CNST_LIMB(0xbd17bc2e12ad950),CNST_LIMB(0x15e9799e0d76f1e)},539,5},
+ {CNST_LIMB(0xd6f67d4726eaaf5),{CNST_LIMB(0x30df0c865cc92a96),4,CNST_LIMB(0xbb4b3b81c94fd1),CNST_LIMB(0x2a20ca76128ce99),CNST_LIMB(0x4a4022bdd8f612e),CNST_LIMB(0x3bafa50d5be5f8b),CNST_LIMB(0xb86a67f06630908)},544,5},
+ {CNST_LIMB(0xe5d3b047627f8e3),{CNST_LIMB(0x1d275ac8c78303ec),4,CNST_LIMB(0xbcf14b4275878ed),CNST_LIMB(0x5ee8b82b0662dd),CNST_LIMB(0x77e3de57e11f662),CNST_LIMB(0x5ed59e5dfb5cd16),CNST_LIMB(0xbe6a6366650aef1)},549,5},
+ {CNST_LIMB(0xef42ae515bfb29d),{CNST_LIMB(0x11e922af2e24e769),4,CNST_LIMB(0x1c926c98e452393),CNST_LIMB(0xd26a458c9c34765),CNST_LIMB(0x5da54b52a8aa98a),CNST_LIMB(0xa2ed4f828338df7),CNST_LIMB(0xe69ac190926521a)},554,5},
+ {CNST_LIMB(0xfd32459f0b3d4bb),{CNST_LIMB(0x2d5ace688e647e9),4,CNST_LIMB(0x2cdba60f4c2b450),CNST_LIMB(0x2577b742a8ed5db),CNST_LIMB(0x144ef4109272736),CNST_LIMB(0xbe9326c4f15e1a9),CNST_LIMB(0xb96de853277fb4f)},559,5},
+ {CNST_LIMB(0x10a16ef6c96a16c7),{CNST_LIMB(0xec9602538c0df011),3,CNST_LIMB(0x68a7f8a32c8aa57),CNST_LIMB(0x1445e7d17b921f3),CNST_LIMB(0x81c8debc8176f0b),CNST_LIMB(0xe3a1c5b816e4a65),CNST_LIMB(0xa52ad5bb93c9f4b)},564,5},
+ {CNST_LIMB(0x117c2fec47f5e013),{CNST_LIMB(0xd48355880989be17),3,CNST_LIMB(0xb356114108dbef6),CNST_LIMB(0xe7ddeca9ba6a20c),CNST_LIMB(0xf2d7618ea8a6953),CNST_LIMB(0x412256baaec5c27),CNST_LIMB(0x1f8e16ca6e5c0d7)},569,5},
+ {CNST_LIMB(0x129a8c10ae1f364b),{CNST_LIMB(0xb857af53b5b43644),3,CNST_LIMB(0xe26e327286a3e31),CNST_LIMB(0xeef9d55a9d06dbf),CNST_LIMB(0xe61febd3beb02b6),CNST_LIMB(0x10d018a00b7fd6a5),CNST_LIMB(0x32009c46e7c1314)},574,5},
+ {CNST_LIMB(0x134631392d507059),{CNST_LIMB(0xa9063d94bb92a978),3,CNST_LIMB(0x56f8018b2ea4b7b),CNST_LIMB(0x1270cb710b035935),CNST_LIMB(0x11033d859716c4f9),CNST_LIMB(0xd45bebac416a68c),CNST_LIMB(0xc08fe72fc6eef84)},579,5},
+ {CNST_LIMB(0x13fde7755d5fd9ed),{CNST_LIMB(0x99c48a788248a856),3,CNST_LIMB(0x1019267f9f81c8e4),CNST_LIMB(0x394e4098ea8549),CNST_LIMB(0x33c85c2a1514436),CNST_LIMB(0xa1e569d4432f4bb),CNST_LIMB(0x128bfbc862fb3c58)},584,5},
+ {CNST_LIMB(0x15698c0906cc26a5),{CNST_LIMB(0x7e957ed81f600c1e),3,CNST_LIMB(0x1476fb9cb53a56e9),CNST_LIMB(0xeff15504451beab),CNST_LIMB(0xdea55fc79c32599),CNST_LIMB(0x76a982d54d956a1),CNST_LIMB(0x4d131625675abd7)},589,5},
+ {CNST_LIMB(0x168a1ee80f6d92f5),{CNST_LIMB(0x6b73459d204359d1),3,CNST_LIMB(0x810ac07564aaf79),CNST_LIMB(0x874d5996e15561a),CNST_LIMB(0xb75c73837694b49),CNST_LIMB(0xd4645617d29779b),CNST_LIMB(0x12af15ef931be940)},594,5},
+ {CNST_LIMB(0x17daa6de32466fbf),{CNST_LIMB(0x576bc18853c72908),3,CNST_LIMB(0x11757b52093fa28a),CNST_LIMB(0xff4c0f212559944),CNST_LIMB(0x40af9872004a0a5),CNST_LIMB(0x2b2b7c424c54c2b),CNST_LIMB(0x1a2b7130739c4c7)},599,5},
+ {CNST_LIMB(0x18ea5f2dbe212911),{CNST_LIMB(0x48ca86c98010be89),3,CNST_LIMB(0x6d8483692b46556),CNST_LIMB(0x305d89220ec48d2),CNST_LIMB(0x1772200dfc1938dc),CNST_LIMB(0xded80c44ca87607),CNST_LIMB(0xb498b0490dc55dd)},604,5},
+ {CNST_LIMB(0x1a0fa1ef47787d1b),{CNST_LIMB(0x3a56b20c2d70e08a),3,CNST_LIMB(0x15734e967cc39a0d),CNST_LIMB(0x8fc968191dc0fd3),CNST_LIMB(0x1680d35f18721f8f),CNST_LIMB(0x197b4a3e18c9e8bc),CNST_LIMB(0xc0ad81d645f40c7)},609,5},
+ {CNST_LIMB(0x1b673b66a023a93f),{CNST_LIMB(0x2af150ff9195ac0f),3,CNST_LIMB(0x95ee9645ebf0cc9),CNST_LIMB(0x1717202bbc3e0a78),CNST_LIMB(0x126d365df320adf6),CNST_LIMB(0x137d63165361ab0e),CNST_LIMB(0x19ca69d84cc1417c)},614,5},
+ {CNST_LIMB(0x1ce34de10c258111),{CNST_LIMB(0x1b9430b6521be183),3,CNST_LIMB(0x18e590f79ed3f778),CNST_LIMB(0xbcbaeb9ec0a1624),CNST_LIMB(0x18f51ac04296ceb6),CNST_LIMB(0x161b15271d06a3e1),CNST_LIMB(0x5f0a62fb317dd86)},619,5},
+ {CNST_LIMB(0x1e19674e354f4667),{CNST_LIMB(0x102a99b0acd64358),3,CNST_LIMB(0xf34c58e5585ccc8),CNST_LIMB(0x15fad9b7ef3a5cbd),CNST_LIMB(0x1874ea34e3e274f9),CNST_LIMB(0x841598977c90581),CNST_LIMB(0x1c04690158b888d)},624,5},
+ {CNST_LIMB(0x1f3740adb603b24d),{CNST_LIMB(0x66e52892f80015e),3,CNST_LIMB(0x645fa924fe26d98),CNST_LIMB(0xc022a525d7f5a4f),CNST_LIMB(0x16d7e66846e5d65b),CNST_LIMB(0x10105a92c09c5aa9),CNST_LIMB(0xedddad56d23fc0e)},629,5},
+ {CNST_LIMB(0x20e7b3c0e3b73671),{CNST_LIMB(0xf1eabc8c8352c9af),2,CNST_LIMB(0x19aa15b9c5fd82e9),CNST_LIMB(0x10fd7c871bd5d222),CNST_LIMB(0x4ee89a76e1259e0),CNST_LIMB(0x1280d75e6bf3c134),CNST_LIMB(0x85e103f1853c3d)},634,5},
+ {CNST_LIMB(0x22b5b4fc40d4c35f),{CNST_LIMB(0xd807362226cc7e50),2,CNST_LIMB(0xd080d1a3a2ea867),CNST_LIMB(0x1f068368adc3fde1),CNST_LIMB(0x178240b1c3cf35a9),CNST_LIMB(0x1dc077b2ed00fd8c),CNST_LIMB(0x2e6e64a07f9c833)},639,5},
+ {CNST_LIMB(0x23cff30e6fb8f7fd),{CNST_LIMB(0xc97f150b60a9e71b),2,CNST_LIMB(0x5505a9af1f13815),CNST_LIMB(0x22434bb477153d47),CNST_LIMB(0x87670d53a068a58),CNST_LIMB(0x21b754fa0ae7b745),CNST_LIMB(0x2182750984e9f50b)},644,5},
+ {CNST_LIMB(0x266a30ee37cc7341),{CNST_LIMB(0xaa808f26b38df4ef),2,CNST_LIMB(0x1982da6ab1354c7a),CNST_LIMB(0xfda1381ca806f81),CNST_LIMB(0x1a31d30d06bd5b7b),CNST_LIMB(0xbc65e21d25000c6),CNST_LIMB(0x132d8167c6a0973b)},649,5},
+ {CNST_LIMB(0x283e6bddfbebab6d),{CNST_LIMB(0x971e4733b2e0d2bf),2,CNST_LIMB(0xe8978cc1879fb72),CNST_LIMB(0x1c9e26afc4d767da),CNST_LIMB(0x1e376fcf488c8249),CNST_LIMB(0x977e63f145b0e1d),CNST_LIMB(0xe2db9891e737aa1)},654,5},
+ {CNST_LIMB(0x298d29c47d06f16b),{CNST_LIMB(0x8a4e7f92da9842e7),2,CNST_LIMB(0x6b1056511d6577e),CNST_LIMB(0x592f6f3bbda49cc),CNST_LIMB(0x2692769f01fb0a5b),CNST_LIMB(0x5f3e5623e91d30d),CNST_LIMB(0x2104d5242a92b48d)},659,5},
+ {CNST_LIMB(0x2afa8c16de374c13),{CNST_LIMB(0x7d364b6556c2b905),2,CNST_LIMB(0x291b438da8eb83a1),CNST_LIMB(0x14222ff3cbf7d671),CNST_LIMB(0x126ac7f90facd4d3),CNST_LIMB(0x46d452f540a8d2),CNST_LIMB(0xb0b0fc23426b0b7)},664,5},
+ {CNST_LIMB(0x2c44b3413ab0dee7),{CNST_LIMB(0x721b37f337583151),2,CNST_LIMB(0x22a87fb9da8ba57d),CNST_LIMB(0x26943e2ad67b49d6),CNST_LIMB(0x1ef6cfa904bef1cd),CNST_LIMB(0x18e7d1baf5588938),CNST_LIMB(0x1ad24c5276c66d2f)},669,5},
+ {CNST_LIMB(0x2e88fa7433ac7823),{CNST_LIMB(0x60141b17275393e2),2,CNST_LIMB(0x17531bbafda1a751),CNST_LIMB(0xf3ea18441a36068),CNST_LIMB(0x130110257a01259a),CNST_LIMB(0x14122cf2cde8eecc),CNST_LIMB(0x24d25acd522c56b7)},674,5},
+ {CNST_LIMB(0x303fb77cc2bfe62b),{CNST_LIMB(0x539292e31ed6db25),2,CNST_LIMB(0xec16a9032408129),CNST_LIMB(0x22483ceeb16c18a3),CNST_LIMB(0x1dd1cf7128399e5a),CNST_LIMB(0x11b3d478af2cbe42),CNST_LIMB(0x2a86cb29ac9873d3)},679,5},
+ {CNST_LIMB(0x32eeac8f8d221e55),{CNST_LIMB(0x41ae89b9e560d65a),2,CNST_LIMB(0x156a1323e556857),CNST_LIMB(0x865eccdcf192078),CNST_LIMB(0x29e9014382ce253e),CNST_LIMB(0x737a633527d55ef),CNST_LIMB(0xe3223c22b887658)},684,5},
+ {CNST_LIMB(0x354d75b3270eaedd),{CNST_LIMB(0x336093f2bc204c55),2,CNST_LIMB(0x2aca293363c5448c),CNST_LIMB(0x17160152eb4aa39f),CNST_LIMB(0x16b50b70fa80acee),CNST_LIMB(0x2493bd25f34e1536),CNST_LIMB(0x18f710cf9496617c)},689,5},
+ {CNST_LIMB(0x37b26a3f703f6027),{CNST_LIMB(0x2629d54caca5a93b),2,CNST_LIMB(0x213657023f027f64),CNST_LIMB(0x257ed9007720600c),CNST_LIMB(0xaf3dcc0f043ce98),CNST_LIMB(0x115787f3ada80173),CNST_LIMB(0x7071885da2772a7)},694,5},
+ {CNST_LIMB(0x3a2d837d37f39e39),{CNST_LIMB(0x199e982941bda182),2,CNST_LIMB(0x1749f20b2031871c),CNST_LIMB(0x153d7d45eae3fbc6),CNST_LIMB(0x3035b3e81047b52f),CNST_LIMB(0x3096ed6d9a28fa5a),CNST_LIMB(0x221887c4142d7434)},699,5},
+ {CNST_LIMB(0x3d6201596c85db3f),{CNST_LIMB(0xaea3e9ef4bf14aa),2,CNST_LIMB(0xa77fa9a4de89304),CNST_LIMB(0x140df851fb641569),CNST_LIMB(0x275b27f619d2cffb),CNST_LIMB(0x16df2d5134102662),CNST_LIMB(0x10ab318b9b8a8aef)},704,5},
+ {CNST_LIMB(0x401080f68635f765),{CNST_LIMB(0xff7c1a4f020138fa),1,CNST_LIMB(0x3fce7d1c6d5e19d1),CNST_LIMB(0x1feb2b2abf929ebc),CNST_LIMB(0x279cb7a4291af740),CNST_LIMB(0x384bce4293f19637),CNST_LIMB(0x168a9776844c9b6f)},709,5},
+ {CNST_LIMB(0x41c3dea2c7c4509b),{CNST_LIMB(0xf2421126ad7a2852),1,CNST_LIMB(0x3ab46417a8b30e2f),CNST_LIMB(0x35206295938b9c19),CNST_LIMB(0x317d8909a9980afe),CNST_LIMB(0x195b889376db752f),CNST_LIMB(0xeb8a8f47083a08e)},714,5},
+ {CNST_LIMB(0x441255580dcabef7),{CNST_LIMB(0xe1601977719c2988),1,CNST_LIMB(0x33c8fff7d69fc31b),CNST_LIMB(0x3aa78ab59c61fb90),CNST_LIMB(0x3c41600b3a070fd7),CNST_LIMB(0x121266b65d774473),CNST_LIMB(0x5812c8f46959e7)},719,5},
+ {CNST_LIMB(0x467e90ff075dfa77),{CNST_LIMB(0xd0d4ccbfd7fdb2ae),1,CNST_LIMB(0x2c844d02e9e6109b),CNST_LIMB(0x395a6f0c5abc0a3c),CNST_LIMB(0x30393c08245d18c3),CNST_LIMB(0xac042a1b1191d06),CNST_LIMB(0x1d0c88b0cc347eed)},724,5},
+ {CNST_LIMB(0x35b7e6a52de6b),{CNST_LIMB(0x30ff8515bed6fc1f),14,CNST_LIMB(0x2f4533b937fab),CNST_LIMB(0xeb33cd2951b7),CNST_LIMB(0x28ce28b5e1739),CNST_LIMB(0x30d609f6bade3),CNST_LIMB(0x249a87bc9957)},729,4},
+ {CNST_LIMB(0x4b9237b1fac55af1),{CNST_LIMB(0xb19ac3ed68fa0441),1,CNST_LIMB(0x1d4958ea0fafef2d),CNST_LIMB(0x4ba7c350e3c499e),CNST_LIMB(0xe26c59f6a4a42e5),CNST_LIMB(0x4acd391ac5c14c62),CNST_LIMB(0x38a0169051f4a371)},733,5},
+ {CNST_LIMB(0x4fa265b31b73c6df),{CNST_LIMB(0x9b7b0be2fb2dbf62),1,CNST_LIMB(0x1118cee6ada4ab63),CNST_LIMB(0x2b4fe57f0434fb44),CNST_LIMB(0x2cffeb10b15bf6),CNST_LIMB(0xe12f06864906a7b),CNST_LIMB(0x2a0824475f11f823)},738,5},
+ {CNST_LIMB(0x516d33f3efe608d5),{CNST_LIMB(0x926c85237f2dc355),1,CNST_LIMB(0xbb86424304de581),CNST_LIMB(0x3ec190a9cee7a48e),CNST_LIMB(0xd7d8bfe60d52602),CNST_LIMB(0xdff7561c9c07756),CNST_LIMB(0x3c1d2db82b327710)},743,5},
+ {CNST_LIMB(0x545e342d68fbf683),{CNST_LIMB(0x8464ceb2fdd80297),1,CNST_LIMB(0x2e56377c50c1c77),CNST_LIMB(0x474ec2f4bd92576),CNST_LIMB(0x2a5da9663350db1),CNST_LIMB(0x220077cd63148dd2),CNST_LIMB(0x280dcbaf0c2ad61c)},748,5},
+ {CNST_LIMB(0x57e94c457826bd6b),{CNST_LIMB(0x74bd3fdb5c8280eb),1,CNST_LIMB(0x502d67750fb2852a),CNST_LIMB(0x45149579eaa28023),CNST_LIMB(0x3bb53a4c0c4db579),CNST_LIMB(0x3a96a3180f221b2),CNST_LIMB(0x27f9af8526a8cf70)},753,5},
+ {CNST_LIMB(0x5b9b45655ebf3b79),{CNST_LIMB(0x65b42a0f00510df2),1,CNST_LIMB(0x48c975354281890e),CNST_LIMB(0x2929df87cfd7453c),CNST_LIMB(0x1b6bb026965ae7ed),CNST_LIMB(0x52659a85b7df96c2),CNST_LIMB(0x21db715c0f72134)},758,5},
+ {CNST_LIMB(0x5e6ad0d2eaa14c25),{CNST_LIMB(0x5b0e2387ccda26c3),1,CNST_LIMB(0x432a5e5a2abd67b6),CNST_LIMB(0x14b7571d1a05b77d),CNST_LIMB(0x498547c0b3350ce8),CNST_LIMB(0x9d4e28ce05c6c27),CNST_LIMB(0x4913b5ba5c5edc8)},763,5},
+ {CNST_LIMB(0x60704759208cd21d),{CNST_LIMB(0x53c7ef8bdf16795b),1,CNST_LIMB(0x3f1f714dbee65bc6),CNST_LIMB(0x25fc61d1a473562),CNST_LIMB(0x158a2ce0171d5fd),CNST_LIMB(0x2f3bdc4b8520f24c),CNST_LIMB(0x4081386865e00703)},768,5},
+ {CNST_LIMB(0x63bc6b32a19c883b),{CNST_LIMB(0x488c1dcdc113150a),1,CNST_LIMB(0x3887299abcc6ef8a),CNST_LIMB(0x2aab5731e10d2529),CNST_LIMB(0x5eeeb60320f0bef4),CNST_LIMB(0x18e4d9f1c279596e),CNST_LIMB(0xf478370d7e2465f)},773,5},
+ {CNST_LIMB(0x47f6a9e8dab75),{CNST_LIMB(0xc7577d2a861d140e),13,CNST_LIMB(0x435dc14ffaf0e),CNST_LIMB(0x2557057e3745b),CNST_LIMB(0x450b5149277a6),CNST_LIMB(0xda1fae30c112),CNST_LIMB(0x3951ca3221a2d)},778,4},
+ {CNST_LIMB(0x6e373b550764872f),{CNST_LIMB(0x294ecadbf29bc1cb),1,CNST_LIMB(0x23918955f136f1a2),CNST_LIMB(0x29cffcf11c6e3647),CNST_LIMB(0x4af7d1191966b3e0),CNST_LIMB(0x38ebd581ce6f80c6),CNST_LIMB(0x14ebbbc9200a6d59)},782,5},
+ {CNST_LIMB(0x4ca8ed991d8b9),{CNST_LIMB(0xab7251b581f8c74d),13,CNST_LIMB(0x1639351769382),CNST_LIMB(0x3145f1b0a8e59),CNST_LIMB(0xff20704d1793),CNST_LIMB(0x1cd9e54d284e),CNST_LIMB(0x1602f3ac7db9c)},787,4},
+ {CNST_LIMB(0x74b13dc12b016dc1),{CNST_LIMB(0x18ce87a5c4d39e85),1,CNST_LIMB(0x169d847da9fd247e),CNST_LIMB(0x286e093dede24bb5),CNST_LIMB(0x1854fa948ad9109d),CNST_LIMB(0x6b81a8b81781577c),CNST_LIMB(0xad44a3d15bc6be5)},791,5},
+ {CNST_LIMB(0x78b0c5ae997e31ef),{CNST_LIMB(0xf811cf8a4bb1f80),1,CNST_LIMB(0xe9e74a2cd039c22),CNST_LIMB(0x30a04d242d0dfd11),CNST_LIMB(0x128fe81eea336414),CNST_LIMB(0x3639736d1defa144),CNST_LIMB(0x5eeb71b0497f58ff)},796,5},
+ {CNST_LIMB(0x7dcf3e856f4612d7),{CNST_LIMB(0x47509bc7743383b),1,CNST_LIMB(0x46182f52173da52),CNST_LIMB(0x430e9fd64eeb40e6),CNST_LIMB(0x2774902fd5f53d5b),CNST_LIMB(0x4f5c0d7033943d05),CNST_LIMB(0x3be559075217f3a8)},801,5},
+ {CNST_LIMB(0x550e24ca1a54b),{CNST_LIMB(0x81416693b884d74c),13,CNST_LIMB(0xee45b7c01c48),CNST_LIMB(0x3848946d8aec8),CNST_LIMB(0x541aec862a3ac),CNST_LIMB(0x4f2e818315dbc),CNST_LIMB(0xa8197f5fb2b)},806,4},
+ {CNST_LIMB(0x573c8f376a18d),{CNST_LIMB(0x779f50fc3a19a6c9),13,CNST_LIMB(0x4fc81955d5129),CNST_LIMB(0xe80abe2896a1),CNST_LIMB(0x3a505801c159e),CNST_LIMB(0x162eeea75d4cd),CNST_LIMB(0x20dd0efbe8570)},810,4},
+ {CNST_LIMB(0x589c3c614e917),{CNST_LIMB(0x71cc8c064f8788ee),13,CNST_LIMB(0x325d12375f7e1),CNST_LIMB(0x514f8f320e7d3),CNST_LIMB(0x55cf104cf51d3),CNST_LIMB(0x23278b29858c6),CNST_LIMB(0x3b956eecbdd30)},814,4},
+ {CNST_LIMB(0x5a494bafe993d),{CNST_LIMB(0x6aef2ee9b04422dc),13,CNST_LIMB(0x5111950929bd7),CNST_LIMB(0x2c3779cd17b37),CNST_LIMB(0x2b7f886fc6966),CNST_LIMB(0x4f0b47ffa902d),CNST_LIMB(0x10bd268a51d6c)},818,4},
+ {CNST_LIMB(0x5bdea84b0b73f),{CNST_LIMB(0x64adca063056bccb),13,CNST_LIMB(0x427b265a68455),CNST_LIMB(0x2ef4f15ac34a6),CNST_LIMB(0x493c4fd89b0ce),CNST_LIMB(0x7e61acb14b3a),CNST_LIMB(0x20d0328207c83)},822,4},
+ {CNST_LIMB(0x5d4c55a25a945),{CNST_LIMB(0x5f37ce4e679bb0c3),13,CNST_LIMB(0x5b08caebb5502),CNST_LIMB(0x3d0eab29a51f1),CNST_LIMB(0x3c9ac2f5a187d),CNST_LIMB(0x29304bdf75a79),CNST_LIMB(0x14d681f7ea1f0)},826,4},
+ {CNST_LIMB(0x5f286a042b527),{CNST_LIMB(0x585aa50035c6eb19),13,CNST_LIMB(0x1f74be8b4aa53),CNST_LIMB(0x47290f02b2679),CNST_LIMB(0x44c4bd1ee1378),CNST_LIMB(0x51286cbc40de1),CNST_LIMB(0xc379e189a860)},830,4},
+ {CNST_LIMB(0x62521adc68615),{CNST_LIMB(0x4d46d1e25221a4ef),13,CNST_LIMB(0x53d112a3ea538),CNST_LIMB(0x26e6ad330e6d8),CNST_LIMB(0x56830d4191021),CNST_LIMB(0xed06536bee19),CNST_LIMB(0x5ba5998aa1cbd)},834,4},
+ {CNST_LIMB(0x64f0108522a4b),{CNST_LIMB(0x44a2bea99b1fe52b),13,CNST_LIMB(0x22a1a59e3d4a4),CNST_LIMB(0x55422d57d71a4),CNST_LIMB(0x48b99527500ba),CNST_LIMB(0x5dffbfb3a890f),CNST_LIMB(0x618de61d17b82)},838,4},
+ {CNST_LIMB(0x684eced8d04ad),{CNST_LIMB(0x3a25a4304e45cd70),13,CNST_LIMB(0x498e06ad4670c),CNST_LIMB(0x6397605c9b1d3),CNST_LIMB(0x1107048baaf16),CNST_LIMB(0x6292ac8aeb164),CNST_LIMB(0x4def8ba3a7552)},842,4},
+ {CNST_LIMB(0x69e938da0b6b9),{CNST_LIMB(0x35644b98f3e9b802),13,CNST_LIMB(0x38dd6fce5c5b4),CNST_LIMB(0x6307e2db6000d),CNST_LIMB(0x56835d316819f),CNST_LIMB(0x2b1da7eb24a08),CNST_LIMB(0xf110b6d6a913)},846,4},
+ {CNST_LIMB(0x6bf4be42947af),{CNST_LIMB(0x2f87eee6ccd631e7),13,CNST_LIMB(0x6b0e021f080f0),CNST_LIMB(0x4b469e0f2c53a),CNST_LIMB(0x50664c269b5e3),CNST_LIMB(0x4139b73b961d6),CNST_LIMB(0x13dc91bdbee0f)},850,4},
+ {CNST_LIMB(0x6f54dbd6ccf57),{CNST_LIMB(0x26540878c92cd039),13,CNST_LIMB(0x382053afc295a),CNST_LIMB(0x2c8c19e89353d),CNST_LIMB(0x534384d9aa927),CNST_LIMB(0x249d03e328fc1),CNST_LIMB(0x2c57702938274)},854,4},
+ {CNST_LIMB(0x71632fdcf6c15),{CNST_LIMB(0x20fdcdbf333d83af),13,CNST_LIMB(0x5242218aef575),CNST_LIMB(0x9ab7cecd8cd3),CNST_LIMB(0x4ea4e8bc18b4d),CNST_LIMB(0x16d9320fd98f4),CNST_LIMB(0x2d2b50a730c10)},858,4},
+ {CNST_LIMB(0x7317fb257e1e1),{CNST_LIMB(0x1cb50c1361edfd6e),13,CNST_LIMB(0x489cb7c9fe32a),CNST_LIMB(0x258cf78a73422),CNST_LIMB(0x560fbee8c2cf2),CNST_LIMB(0x467156be8e294),CNST_LIMB(0xc593edc4d71f)},862,4},
+ {CNST_LIMB(0x75e5d5c5e4577),{CNST_LIMB(0x15ef86e1cee16113),13,CNST_LIMB(0x6eece492ce925),CNST_LIMB(0x561b9134c02bf),CNST_LIMB(0x596b2a81ab56d),CNST_LIMB(0x296835004dd20),CNST_LIMB(0x3160915ef8c65)},866,4},
+ {CNST_LIMB(0x788a813bc2fb1),{CNST_LIMB(0xfd74e4e944c107b),13,CNST_LIMB(0x6e15178139c26),CNST_LIMB(0x7828db84f90d2),CNST_LIMB(0x3e1e0cdc0bb1c),CNST_LIMB(0x4bbcd0685b013),CNST_LIMB(0x60b28bb37de31)},870,4},
+ {CNST_LIMB(0x7b02c02e67beb),{CNST_LIMB(0xa621b97c2ae6cdb),13,CNST_LIMB(0x2068f6d99eb3c),CNST_LIMB(0x4ba3bacf8ed2f),CNST_LIMB(0x79baf6516f06a),CNST_LIMB(0x34fac2ffdfb3b),CNST_LIMB(0x601bda55ddca3)},874,4},
+ {CNST_LIMB(0x7d0b0166731df),{CNST_LIMB(0x60dcab2ebe68654),13,CNST_LIMB(0x5a87235f786e1),CNST_LIMB(0x498c71a4f2c04),CNST_LIMB(0x6c4cf93aac90f),CNST_LIMB(0x2fc43a717ef2e),CNST_LIMB(0x61100c40f26dc)},878,4},
+ {CNST_LIMB(0x7f65827009e4b),{CNST_LIMB(0x13671d16472022c),13,CNST_LIMB(0x66a0a221f20de),CNST_LIMB(0x1863cc32757a5),CNST_LIMB(0x72205d2b707de),CNST_LIMB(0x41eb3856479f4),CNST_LIMB(0x62a869dadecf2)},882,4},
+ {CNST_LIMB(0x826267aca5d6b),{CNST_LIMB(0xf6a307f100c87643),12,CNST_LIMB(0x18b32a6e55cb2),CNST_LIMB(0x800c79d089746),CNST_LIMB(0x4df069eb6014f),CNST_LIMB(0xa67afd1d0f6b),CNST_LIMB(0x39654bc96e516)},886,4},
+ {CNST_LIMB(0x854fadbb02f0d),{CNST_LIMB(0xeb99f80c181c04d8),12,CNST_LIMB(0x530f8982a799b),CNST_LIMB(0x488a5468d8f30),CNST_LIMB(0xcb498b28c81),CNST_LIMB(0x1d791c8466f6a),CNST_LIMB(0x583d384518de9)},890,4},
+ {CNST_LIMB(0x86f75f67e5373),{CNST_LIMB(0xe592b4846fa38885),12,CNST_LIMB(0x16d1a804d8305),CNST_LIMB(0x3a9f7db1defba),CNST_LIMB(0x53fa43529d63d),CNST_LIMB(0x380980122856a),CNST_LIMB(0x59320408536cb)},894,4},
+ {CNST_LIMB(0x89110415e014b),{CNST_LIMB(0xde220b6a3ca63611),12,CNST_LIMB(0x1183ea4dd5cca),CNST_LIMB(0x6cd0a51299316),CNST_LIMB(0x2c53d4f8b0ee6),CNST_LIMB(0x39ef54aed56eb),CNST_LIMB(0x7f71b2a9bf0fd)},898,4},
+ {CNST_LIMB(0x8bbeefef93d97),{CNST_LIMB(0xd4f7338df110e1c1),12,CNST_LIMB(0x3ee5d151be367),CNST_LIMB(0x2e6b9dfc4bbcb),CNST_LIMB(0x225349b2e386e),CNST_LIMB(0x492ce15456b18),CNST_LIMB(0x856a0d6e68759)},902,4},
+ {CNST_LIMB(0x8fa29248f38e9),{CNST_LIMB(0xc84479a2d3ad73b2),12,CNST_LIMB(0x282c97bed2bdc),CNST_LIMB(0x86b44220fa8e0),CNST_LIMB(0x497c548d39ada),CNST_LIMB(0x6928a8433805d),CNST_LIMB(0x1d2f77b091c29)},906,4},
+ {CNST_LIMB(0x9311da8eb3ea1),{CNST_LIMB(0xbd9c9989aacc578d),12,CNST_LIMB(0x73d0b00fcee87),CNST_LIMB(0x44acd3ec00c9b),CNST_LIMB(0x3b8ead35b82f4),CNST_LIMB(0x7a1ca1fa55a8c),CNST_LIMB(0x98634149273d)},910,4},
+ {CNST_LIMB(0x96fc1b51999b5),{CNST_LIMB(0xb20e950936df3d71),12,CNST_LIMB(0x899afa996b260),CNST_LIMB(0x2d7d06dae3233),CNST_LIMB(0x143e323027e28),CNST_LIMB(0x8483b9a26498e),CNST_LIMB(0x689b7b1e2fc91)},914,4},
+ {CNST_LIMB(0x99d2dc5aa820b),{CNST_LIMB(0xaa0bd71d4333c056),12,CNST_LIMB(0x71d5124399b20),CNST_LIMB(0x62e94421a897f),CNST_LIMB(0x892c96c6ff4dc),CNST_LIMB(0x54dc6420d0ec4),CNST_LIMB(0x43a10331ebf4f)},918,4},
+ {CNST_LIMB(0x9c18c1a21f755),{CNST_LIMB(0xa3d7a1305040e509),12,CNST_LIMB(0x4a6f652c96ebf),CNST_LIMB(0x92a1dbc9a1bc4),CNST_LIMB(0x7856fe0adb2e7),CNST_LIMB(0x65020d02f02aa),CNST_LIMB(0x7983e2f6dcbd)},922,4},
+ {CNST_LIMB(0xa019a0d84ce05),{CNST_LIMB(0x99580856e1c2e36b),12,CNST_LIMB(0x5060429959a17),CNST_LIMB(0x8af3dd6c8fedb),CNST_LIMB(0x8521b97cefc72),CNST_LIMB(0x7289dc3848291),CNST_LIMB(0x51cb410c11cef)},926,4},
+ {CNST_LIMB(0xa3837104af50b),{CNST_LIMB(0x90cc816ca127f31c),12,CNST_LIMB(0x7fcd3ea8e707c),CNST_LIMB(0x1ea9bdca73534),CNST_LIMB(0x3d0d37ad79bcf),CNST_LIMB(0x78befa2ea5ef8),CNST_LIMB(0x8c7846571c14b)},930,4},
+ {CNST_LIMB(0xa74ba276e925b),{CNST_LIMB(0x87bcf3ca6aa1f420),12,CNST_LIMB(0x876dcb0272647),CNST_LIMB(0x63761f150b253),CNST_LIMB(0xa347a550c386b),CNST_LIMB(0xb7438cfe5ad4),CNST_LIMB(0x7bca2b8c0aabf)},934,4},
+ {CNST_LIMB(0xad0c05b3ae661),{CNST_LIMB(0x7ab7cf1782b58dcf),12,CNST_LIMB(0x54750c4f56635),CNST_LIMB(0x2eac67167559c),CNST_LIMB(0x563c222f2aff7),CNST_LIMB(0x7b738313b7ac1),CNST_LIMB(0x65d997bccd9d9)},938,4},
+ {CNST_LIMB(0xb0da5211cc3e7),{CNST_LIMB(0x72916ab867f7595c),12,CNST_LIMB(0xfa941ccadf01),CNST_LIMB(0x8d756d36295ea),CNST_LIMB(0x4f9f479e132fd),CNST_LIMB(0x18526df562fde),CNST_LIMB(0x434f07e1d9d33)},942,4},
+ {CNST_LIMB(0xb36ca8c3991af),{CNST_LIMB(0x6d41bd767e129ba0),12,CNST_LIMB(0x13836edce5114),CNST_LIMB(0xa52c71bc138ab),CNST_LIMB(0x339d5f264e899),CNST_LIMB(0x65473fc2cfa57),CNST_LIMB(0x4714fd9da5ac0)},946,4},
+ {CNST_LIMB(0xb6694790c60df),{CNST_LIMB(0x6746add17a9a2fee),12,CNST_LIMB(0x4c2521610f0f4),CNST_LIMB(0x1ef55755cab96),CNST_LIMB(0x3bb413c494cbb),CNST_LIMB(0x59bedca68abba),CNST_LIMB(0x618c95ba5598b)},950,4},
+ {CNST_LIMB(0xb89a345c48d7d),{CNST_LIMB(0x6302ff6c309d06ee),12,CNST_LIMB(0x2296406fcba90),CNST_LIMB(0x4d697f4e83909),CNST_LIMB(0xa16067eedb775),CNST_LIMB(0xa50f824607f2b),CNST_LIMB(0x3d3946b54c9f9)},954,4},
+ {CNST_LIMB(0xbb02a8b8a132b),{CNST_LIMB(0x5e70bfded3b337fc),12,CNST_LIMB(0x8c29c2d62d33),CNST_LIMB(0x3f082e296ef8f),CNST_LIMB(0x49afe57a19b90),CNST_LIMB(0xb7bd5be58da15),CNST_LIMB(0x8de61bd7e627f)},958,4},
+ {CNST_LIMB(0xbd6468bb171ff),{CNST_LIMB(0x5a0880d51b052fd7),12,CNST_LIMB(0x64a7322bed5a0),CNST_LIMB(0x3f94ed2b89267),CNST_LIMB(0x980b9bde44b2d),CNST_LIMB(0x4a6676c0e7d13),CNST_LIMB(0xb24baad1f0c40)},962,4},
+ {CNST_LIMB(0xc17671b548641),{CNST_LIMB(0x52c0b00a813a011e),12,CNST_LIMB(0x85095e7597d4),CNST_LIMB(0x55524352a702c),CNST_LIMB(0x868164742fab5),CNST_LIMB(0x3b3bcfdffb2cf),CNST_LIMB(0xab11b067d542f)},966,4},
+ {CNST_LIMB(0xc57f07d496e1b),{CNST_LIMB(0x4bd58ed22f4b2aac),12,CNST_LIMB(0x449a9c42f9a11),CNST_LIMB(0x2b9c2279a88de),CNST_LIMB(0xa905cf41733e1),CNST_LIMB(0x206b2bfa8b896),CNST_LIMB(0xb378d16c66efd)},970,4},
+ {CNST_LIMB(0xc814b88200ac3),{CNST_LIMB(0x478c251716699c98),12,CNST_LIMB(0x97df5b023b898),CNST_LIMB(0x5507d796eedc1),CNST_LIMB(0xb4a34312d58e3),CNST_LIMB(0x4324fc6d4f6f2),CNST_LIMB(0x29d3a7f3d88da)},974,4},
+ {CNST_LIMB(0xcb958ba8e9259),{CNST_LIMB(0x41e93d5390ce4a3c),12,CNST_LIMB(0x75906ffdbe592),CNST_LIMB(0x35d1e8b619b02),CNST_LIMB(0x5535c122a3ba7),CNST_LIMB(0xb2c9d287f29c8),CNST_LIMB(0x7f9a7f1adf9d9)},978,4},
+ {CNST_LIMB(0xcfaa956d67517),{CNST_LIMB(0x3b9549c76b39f2a8),12,CNST_LIMB(0x44a2e5454ad61),CNST_LIMB(0xa8d0541bab05b),CNST_LIMB(0x801e8693083d4),CNST_LIMB(0xc17c6af57bddf),CNST_LIMB(0xc7b4d9a0870d9)},982,4},
+ {CNST_LIMB(0xd56380a0e8273),{CNST_LIMB(0x331ecd3feca3d608),12,CNST_LIMB(0xc5686ff8a7efd),CNST_LIMB(0x61e35c54a4f3f),CNST_LIMB(0x4bf5dc73ede0f),CNST_LIMB(0x2bf7f029f09a5),CNST_LIMB(0x718dc3463c882)},986,4},
+ {CNST_LIMB(0xd9c8b65d94f5b),{CNST_LIMB(0x2cec062e71d179c4),12,CNST_LIMB(0xa3aaac38dbec6),CNST_LIMB(0x78cabf09fa56c),CNST_LIMB(0xcaf0fccc6b30b),CNST_LIMB(0xce30344eb1fac),CNST_LIMB(0x4ba46e5575b11)},990,4},
+ {CNST_LIMB(0xdc90a482debcb),{CNST_LIMB(0x2920b89d6fc02e7f),12,CNST_LIMB(0x9f0f9b3b403a),CNST_LIMB(0x619327b332542),CNST_LIMB(0xa75eae1f8ff9f),CNST_LIMB(0x62350a1cba491),CNST_LIMB(0x22ac2e8eb19f9)},994,4},
+ {CNST_LIMB(0xe0ac9922e6235),{CNST_LIMB(0x23b187206556b5c4),12,CNST_LIMB(0x157440c67a3c9),CNST_LIMB(0x696b5be3cc464),CNST_LIMB(0x2ebcde890e790),CNST_LIMB(0xae767f93832de),CNST_LIMB(0xcb1eade2d80a8)},998,4}
+#endif