packages feed

hsblst 0.0.4 → 0.0.5

raw patch · 52 files changed

+3328/−2363 lines, 52 filesdep +ramdep −memorydep ~base16-bytestringdep ~deepseqdep ~textPVP ok

version bump matches the API change (PVP)

Dependencies added: ram

Dependencies removed: memory

Dependency ranges changed: base16-bytestring, deepseq, text

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -3,6 +3,12 @@    - SPDX-License-Identifier: MPL-2.0    --> +## v0.0.5++* Moved to ram instead of memory+* Added ForeignFunctionInterface to extensions for cabal to build successfully+* Bundled blst version bumped to v0.3.16+ ## v0.0.4  * Bundled blst version bumped to v0.3.13
README.md view
@@ -11,6 +11,10 @@ This package includes sources from v0.3.13 version of BLST, licensed under [Apache License 2.0](https://github.com/supranational/blst/blob/master/LICENSE) +## Known Issues++- Fails to build on Windows with GHC 9.12.3, seems to be a GHC bug.+ ## Build Instructions [↑](#hsblst)  Run `make` to build everything.
c-source/README.md view
@@ -1,4 +1,4 @@-[![Build Status](https://api.travis-ci.com/supranational/blst.svg?branch=master)](https://travis-ci.com/github/supranational/blst) [![Actions status](https://github.com/supranational/blst/workflows/build/badge.svg)](https://github.com/supranational/blst/actions) [![CodeQL status](https://github.com/supranational/blst/workflows/CodeQL/badge.svg)](https://github.com/supranational/blst/actions/workflows/codeql-analysis.yml)+[![Actions status](https://github.com/supranational/blst/workflows/build/badge.svg)](https://github.com/supranational/blst/actions) [![CodeQL status](https://github.com/supranational/blst/workflows/CodeQL/badge.svg)](https://github.com/supranational/blst/actions/workflows/codeql-analysis.yml) <div align="left">   <img src=blst_logo_small.png> </div>@@ -212,7 +212,7 @@     * **Asm** - folder containing Perl scripts that are used to generate assembly code for different hardware platforms including x86 with ADX instructions, x86 without ADX instructions, and ARMv8, and [ABI](https://en.wikipedia.org/wiki/Application_binary_interface)[1] * **Build** - this folder containing a set of pre-generated assembly files for a variety of operating systems and maintenance scripts.     * **Cheri** - assembly code for use on [CHERI](https://www.cl.cam.ac.uk/research/security/ctsrd/cheri/) platforms-    * **Coff** - assembly code for use on Window systems with GNU toolchain+    * **Coff** - assembly code for use on Windows systems with GNU or LLVM toolchain     * **Elf** - assembly code for use on Unix systems     * **Mach-o** - assembly code for use on Apple operating systems     * **Win64** - assembly code for use on Windows systems with Microsoft toolchain
c-source/bindings/blst.h view
@@ -23,15 +23,17 @@  #ifdef __cplusplus extern "C" {-#elif defined(__BLST_CGO__)+#elif !defined(__STDC_VERSION__) || __STDC_VERSION__<202311+# if defined(__BLST_CGO__) typedef _Bool bool; /* it's assumed that cgo calls modern enough compiler */-#elif !defined(bool)-# if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901-#  define bool _Bool-# else-#  define bool int+# elif !defined(bool)+#  if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901+#   define bool _Bool+#  else+#   define bool int+#  endif+#  define __blst_h_bool__ # endif-# define __blst_h_bool__ #endif  #ifdef SWIG
c-source/build/cheri/add_mod_256-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text  .globl	add_mod_256@@ -5,6 +13,7 @@ .type	add_mod_256,%function .align	5 add_mod_256:+	hint	#34 	ldp	x8,x9,[c1] 	ldp	x12,x13,[c2] @@ -39,6 +48,7 @@ .type	mul_by_3_mod_256,%function .align	5 mul_by_3_mod_256:+	hint	#34 	ldp	x12,x13,[c1] 	ldp	x14,x15,[c1,#16] @@ -88,6 +98,7 @@ .type	lshift_mod_256,%function .align	5 lshift_mod_256:+	hint	#34 	ldp	x8,x9,[c1] 	ldp	x10,x11,[c1,#16] @@ -126,6 +137,7 @@ .type	rshift_mod_256,%function .align	5 rshift_mod_256:+	hint	#34 	ldp	x8,x9,[c1] 	ldp	x10,x11,[c1,#16] @@ -377,3 +389,13 @@  	ret .size	sub_n_check_mod_256,.-sub_n_check_mod_256++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section	.note.GNU-stack,"",@progbits+.section	.note.gnu.property,"a",@note+	.long	4,2f-1f,5+	.byte	0x47,0x4E,0x55,0+1:	.long	0xc0000000,4,3+.align  3+2:+#endif
c-source/build/cheri/add_mod_384-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text  .globl	add_mod_384@@ -5,7 +13,7 @@ .type	add_mod_384,%function .align	5 add_mod_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-6*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -25,7 +33,7 @@ 	ldp	c19,c20,[c29,#2*__SIZEOF_POINTER__] 	ldp	c21,c22,[c29,#4*__SIZEOF_POINTER__] 	ldr	c29,[csp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	add_mod_384,.-add_mod_384 @@ -71,7 +79,7 @@ .type	add_mod_384x,%function .align	5 add_mod_384x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-6*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -99,7 +107,7 @@ 	ldp	c19,c20,[c29,#2*__SIZEOF_POINTER__] 	ldp	c21,c22,[c29,#4*__SIZEOF_POINTER__] 	ldr	c29,[csp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	add_mod_384x,.-add_mod_384x @@ -108,7 +116,7 @@ .type	rshift_mod_384,%function .align	5 rshift_mod_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-6*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -135,7 +143,7 @@ 	ldp	c19,c20,[c29,#2*__SIZEOF_POINTER__] 	ldp	c21,c22,[c29,#4*__SIZEOF_POINTER__] 	ldr	c29,[csp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	rshift_mod_384,.-rshift_mod_384 @@ -170,7 +178,7 @@ .type	div_by_2_mod_384,%function .align	5 div_by_2_mod_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-6*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -194,7 +202,7 @@ 	ldp	c19,c20,[c29,#2*__SIZEOF_POINTER__] 	ldp	c21,c22,[c29,#4*__SIZEOF_POINTER__] 	ldr	c29,[csp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	div_by_2_mod_384,.-div_by_2_mod_384 @@ -203,7 +211,7 @@ .type	lshift_mod_384,%function .align	5 lshift_mod_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-6*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -230,7 +238,7 @@ 	ldp	c19,c20,[c29,#2*__SIZEOF_POINTER__] 	ldp	c21,c22,[c29,#4*__SIZEOF_POINTER__] 	ldr	c29,[csp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	lshift_mod_384,.-lshift_mod_384 @@ -268,7 +276,7 @@ .type	mul_by_3_mod_384,%function .align	5 mul_by_3_mod_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-6*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -298,7 +306,7 @@ 	ldp	c19,c20,[c29,#2*__SIZEOF_POINTER__] 	ldp	c21,c22,[c29,#4*__SIZEOF_POINTER__] 	ldr	c29,[csp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	mul_by_3_mod_384,.-mul_by_3_mod_384 @@ -307,7 +315,7 @@ .type	mul_by_8_mod_384,%function .align	5 mul_by_8_mod_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-6*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -333,7 +341,7 @@ 	ldp	c19,c20,[c29,#2*__SIZEOF_POINTER__] 	ldp	c21,c22,[c29,#4*__SIZEOF_POINTER__] 	ldr	c29,[csp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	mul_by_8_mod_384,.-mul_by_8_mod_384 @@ -342,7 +350,7 @@ .type	mul_by_3_mod_384x,%function .align	5 mul_by_3_mod_384x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-6*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -387,7 +395,7 @@ 	ldp	c19,c20,[c29,#2*__SIZEOF_POINTER__] 	ldp	c21,c22,[c29,#4*__SIZEOF_POINTER__] 	ldr	c29,[csp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	mul_by_3_mod_384x,.-mul_by_3_mod_384x @@ -396,7 +404,7 @@ .type	mul_by_8_mod_384x,%function .align	5 mul_by_8_mod_384x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-6*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -433,7 +441,7 @@ 	ldp	c19,c20,[c29,#2*__SIZEOF_POINTER__] 	ldp	c21,c22,[c29,#4*__SIZEOF_POINTER__] 	ldr	c29,[csp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	mul_by_8_mod_384x,.-mul_by_8_mod_384x @@ -442,7 +450,7 @@ .type	cneg_mod_384,%function .align	5 cneg_mod_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-6*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -484,7 +492,7 @@ 	ldp	c19,c20,[c29,#2*__SIZEOF_POINTER__] 	ldp	c21,c22,[c29,#4*__SIZEOF_POINTER__] 	ldr	c29,[csp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	cneg_mod_384,.-cneg_mod_384 @@ -493,7 +501,7 @@ .type	sub_mod_384,%function .align	5 sub_mod_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-6*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -513,7 +521,7 @@ 	ldp	c19,c20,[c29,#2*__SIZEOF_POINTER__] 	ldp	c21,c22,[c29,#4*__SIZEOF_POINTER__] 	ldr	c29,[csp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sub_mod_384,.-sub_mod_384 @@ -556,7 +564,7 @@ .type	sub_mod_384x,%function .align	5 sub_mod_384x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-6*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -584,7 +592,7 @@ 	ldp	c19,c20,[c29,#2*__SIZEOF_POINTER__] 	ldp	c21,c22,[c29,#4*__SIZEOF_POINTER__] 	ldr	c29,[csp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sub_mod_384x,.-sub_mod_384x @@ -593,7 +601,7 @@ .type	mul_by_1_plus_i_mod_384x,%function .align	5 mul_by_1_plus_i_mod_384x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-6*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -626,7 +634,7 @@ 	ldp	c19,c20,[c29,#2*__SIZEOF_POINTER__] 	ldp	c21,c22,[c29,#4*__SIZEOF_POINTER__] 	ldr	c29,[csp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	mul_by_1_plus_i_mod_384x,.-mul_by_1_plus_i_mod_384x @@ -635,6 +643,7 @@ .type	sgn0_pty_mod_384,%function .align	5 sgn0_pty_mod_384:+	hint	#34 	ldp	x10,x11,[c0] 	ldp	x12,x13,[c0,#16] 	ldp	x14,x15,[c0,#32]@@ -672,6 +681,7 @@ .type	sgn0_pty_mod_384x,%function .align	5 sgn0_pty_mod_384x:+	hint	#34 	ldp	x10,x11,[c0] 	ldp	x12,x13,[c0,#16] 	ldp	x14,x15,[c0,#32]@@ -753,14 +763,14 @@ .type	vec_select_32,%function .align	5 vec_select_32:+	hint	#34 	dup	v6.2d, x3-	ld1	{v0.2d, v1.2d, v2.2d}, [c1],#48+	ld1	{v0.2d, v1.2d}, [c1] 	cmeq	v6.2d, v6.2d, #0-	ld1	{v3.2d, v4.2d, v5.2d}, [c2],#48+	ld1	{v3.2d, v4.2d}, [c2] 	bit	v0.16b, v3.16b, v6.16b 	bit	v1.16b, v4.16b, v6.16b-	bit	v2.16b, v5.16b, v6.16b-	st1	{v0.2d, v1.2d, v2.2d}, [c0]+	st1	{v0.2d, v1.2d}, [c0] 	ret .size	vec_select_32,.-vec_select_32 .globl	vec_select_48@@ -768,6 +778,7 @@ .type	vec_select_48,%function .align	5 vec_select_48:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [c1],#48 	cmeq	v6.2d, v6.2d, #0@@ -783,6 +794,7 @@ .type	vec_select_96,%function .align	5 vec_select_96:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [c1],#48 	cmeq	v6.2d, v6.2d, #0@@ -804,6 +816,7 @@ .type	vec_select_192,%function .align	5 vec_select_192:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [c1],#48 	cmeq	v6.2d, v6.2d, #0@@ -837,6 +850,7 @@ .type	vec_select_144,%function .align	5 vec_select_144:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [c1],#48 	cmeq	v6.2d, v6.2d, #0@@ -864,6 +878,7 @@ .type	vec_select_288,%function .align	5 vec_select_288:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [c1],#48 	cmeq	v6.2d, v6.2d, #0@@ -909,6 +924,7 @@ .type	vec_prefetch,%function .align	5 vec_prefetch:+	hint	#34 	add	x1, x1, x0 	sub	x1, x1, #1 	mov	x2, #64@@ -949,6 +965,7 @@ .type	vec_is_zero_16x,%function .align	5 vec_is_zero_16x:+	hint	#34 	ld1	{v0.2d}, [c0], #16 	lsr	x1, x1, #4 	sub	x1, x1, #1@@ -974,6 +991,7 @@ .type	vec_is_equal_16x,%function .align	5 vec_is_equal_16x:+	hint	#34 	ld1	{v0.2d}, [c0], #16 	ld1	{v1.2d}, [c1], #16 	lsr	x2, x2, #4@@ -998,3 +1016,13 @@ 	csel	x0, x0, xzr, eq 	ret .size	vec_is_equal_16x,.-vec_is_equal_16x++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section	.note.GNU-stack,"",@progbits+.section	.note.gnu.property,"a",@note+	.long	4,2f-1f,5+	.byte	0x47,0x4E,0x55,0+1:	.long	0xc0000000,4,3+.align  3+2:+#endif
c-source/build/cheri/ct_inverse_mod_256-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text  .globl	ct_inverse_mod_256@@ -5,7 +13,7 @@ .type	ct_inverse_mod_256, %function .align	5 ct_inverse_mod_256:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29, c30, [csp,#-10*__SIZEOF_POINTER__]! 	add	c29, csp, #0 	stp	c19, c20, [csp,#2*__SIZEOF_POINTER__]@@ -48,7 +56,7 @@ 	mov	x13, x15			// |g1| 	add	c0,c0,#8*4 	bl	__smul_256_n_shift_by_31-	str	x12, [c0,#8*9]		// initialize |v| with |f1|+	str	x12, [c0,#8*10]		// initialize |v| with |f1|  	////////////////////////////////////////// second iteration 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -71,19 +79,17 @@ 	bl	__smul_256_n_shift_by_31  	ldr	x8, [c1,#8*8]		// |u|-	ldr	x9, [c1,#8*13]	// |v|+	ldr	x9, [c1,#8*14]	// |v| 	madd	x4, x16, x8, xzr	// |u|*|f0| 	madd	x4, x17, x9, x4	// |v|*|g0|-	str	x4, [c0,#8*4] 	asr	x5, x4, #63		// sign extension-	stp	x5, x5, [c0,#8*5]-	stp	x5, x5, [c0,#8*7]+	stp	x4, x5, [c0,#8*4]+	stp	x5, x5, [c0,#8*6]  	madd	x4, x12, x8, xzr	// |u|*|f1| 	madd	x4, x13, x9, x4	// |v|*|g1|-	str	x4, [c0,#8*9] 	asr	x5, x4, #63		// sign extension-	stp	x5, x5, [c0,#8*10]+	stp	x4, x5, [c0,#8*10] 	stp	x5, x5, [c0,#8*12] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__@@ -106,16 +112,10 @@  	add	c0,c0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [c0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	c0,c0,#8*5+	add	c0,c0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [c0,#8*4]-	stp	x22, x22, [c0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -137,16 +137,10 @@  	add	c0,c0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [c0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	c0,c0,#8*5+	add	c0,c0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [c0,#8*4]-	stp	x22, x22, [c0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -168,16 +162,10 @@  	add	c0,c0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [c0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	c0,c0,#8*5+	add	c0,c0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [c0,#8*4]-	stp	x22, x22, [c0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -199,16 +187,10 @@  	add	c0,c0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [c0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	c0,c0,#8*5+	add	c0,c0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [c0,#8*4]-	stp	x22, x22, [c0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -230,16 +212,10 @@  	add	c0,c0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [c0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	c0,c0,#8*5+	add	c0,c0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [c0,#8*4]-	stp	x22, x22, [c0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -261,16 +237,15 @@  	add	c0,c0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [c0,#8*4]-+	asr	x24, x24, #63+	str	x24, [c0,#8*4] 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	c0,c0,#8*5+	add	c0,c0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [c0,#8*4]-	stp	x22, x22, [c0,#8*6]+	asr	x24, x24, #63		// sign extension+	stp	x24, x24, [c0,#8*4]+	stp	x24, x24, [c0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -294,10 +269,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [c0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	c0,c0,#8*5+	add	c0,c0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -323,10 +297,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [c0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	c0,c0,#8*5+	add	c0,c0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -352,10 +325,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [c0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	c0,c0,#8*5+	add	c0,c0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -381,10 +353,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [c0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	c0,c0,#8*5+	add	c0,c0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -410,10 +381,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [c0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	c0,c0,#8*5+	add	c0,c0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -439,10 +409,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [c0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	c0,c0,#8*5+	add	c0,c0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -468,10 +437,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [c0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	c0,c0,#8*5+	add	c0,c0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	////////////////////////////////////////// two[!] last iterations@@ -541,7 +509,7 @@ 	ldp	c23, c24, [c29,#6*__SIZEOF_POINTER__] 	ldp	c25, c26, [c29,#8*__SIZEOF_POINTER__] 	ldr	c29, [csp],#10*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	ct_inverse_mod_256,.-ct_inverse_mod_256 @@ -579,11 +547,11 @@ 	adcs	x6, x6, x20 	adcs	x24, x24, x21 	adc	x26, xzr, xzr-	ldp	x8, x9, [c1,#8*0+104]	// load |u| (or |v|)+	ldp	x8, x9, [c1,#8*0+112]	// load |u| (or |v|) 	asr	x14, x17, #63		// |f_|'s sign as mask (or |g_|'s)-	ldp	x10, x11, [c1,#8*2+104]+	ldp	x10, x11, [c1,#8*2+112] 	eor	x17, x17, x14		// conditionally negate |f_| (or |g_|)-	ldr	x23, [c1,#8*4+104]+	ldr	x23, [c1,#8*4+112]  	eor	x8, x8, x14	// conditionally negate |u| (or |v|) 	sub	x17, x17, x14@@ -625,9 +593,9 @@ .align	5 __smul_512x63_tail: 	umulh	x24, x7, x16-	ldp	x5, x6, [c1,#8*18]	// load rest of |v|+	ldr	x5, [c1,#8*19]	// load rest of |v| 	adc	x26, x26, xzr-	ldr	x7, [c1,#8*20]+	ldp	x6, x7, [c1,#8*20] 	and	x22, x22, x16  	umulh	x11, x11, x17	// resume |v|*|g1| chain@@ -878,3 +846,13 @@  	ret .size	__inner_loop_62_256,.-__inner_loop_62_256++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section	.note.GNU-stack,"",@progbits+.section	.note.gnu.property,"a",@note+	.long	4,2f-1f,5+	.byte	0x47,0x4E,0x55,0+1:	.long	0xc0000000,4,3+.align  3+2:+#endif
c-source/build/cheri/ct_inverse_mod_384-armv8.S view
@@ -1,11 +1,19 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text -.globl	ct_inverse_mod_383-.hidden	ct_inverse_mod_383-.type	ct_inverse_mod_383, %function+.globl	ct_inverse_mod_384+.hidden	ct_inverse_mod_384+.type	ct_inverse_mod_384, %function .align	5-ct_inverse_mod_383:-	.inst	0xd503233f+ct_inverse_mod_384:+	hint	#PACI_HINT 	stp	c29, c30, [csp,#-16*__SIZEOF_POINTER__]! 	add	c29, csp, #0 	stp	c19, c20, [csp,#2*__SIZEOF_POINTER__]@@ -47,14 +55,14 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	str	x15,[c0,#8*12]		// initialize |u| with |f0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	c0,c0,#8*6-	bl	__smul_383_n_shift_by_62-	str	x15, [c0,#8*12]		// initialize |v| with |f1|+	bl	__smul_384_n_shift_by_62+	str	x15, [c0,#8*14]		// initialize |v| with |f1|  	////////////////////////////////////////// second iteration 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -68,17 +76,17 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	c0,c0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	ldr	x7, [c1,#8*12]	// |u|-	ldr	x8, [c1,#8*18]	// |v|+	ldr	x8, [c1,#8*20]	// |v| 	mul	x3, x20, x7		// |u|*|f0| 	smulh	x4, x20, x7 	mul	x5, x21, x8		// |v|*|g0|@@ -96,10 +104,10 @@ 	smulh	x6, x16, x8 	adds	x3, x3, x5 	adc	x4, x4, x6-	stp	x3, x4, [c0,#8*12]+	stp	x3, x4, [c0,#8*14] 	asr	x5, x4, #63		// sign extension-	stp	x5, x5, [c0,#8*14] 	stp	x5, x5, [c0,#8*16]+	stp	x5, x5, [c0,#8*18] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -111,22 +119,21 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	c0,c0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	c0,c0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	c0,c0,#8*6-	bl	__smul_383x63+	add	c0,c0,#8*8+	bl	__smul_384x63 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -138,22 +145,21 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	c0,c0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	c0,c0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	c0,c0,#8*6-	bl	__smul_383x63+	add	c0,c0,#8*8+	bl	__smul_384x63 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -165,22 +171,21 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	c0,c0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	c0,c0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	c0,c0,#8*6-	bl	__smul_383x63+	add	c0,c0,#8*8+	bl	__smul_384x63 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -192,22 +197,23 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	c0,c0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	c0,c0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	asr	x27, x27, #63+	str	x27, [c0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	c0,c0,#8*6-	bl	__smul_383x63+	add	c0,c0,#8*8+	bl	__smul_384x63 	asr	x27, x27, #63		// sign extension 	stp	x27, x27, [c0,#8*6] 	stp	x27, x27, [c0,#8*8]@@ -223,23 +229,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	c0,c0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	c0,c0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [c0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	c0,c0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	c0,c0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -251,23 +258,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	c0,c0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	c0,c0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [c0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	c0,c0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	c0,c0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -279,23 +287,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	c0,c0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	c0,c0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [c0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	c0,c0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	c0,c0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -307,23 +316,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	c0,c0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	c0,c0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [c0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	c0,c0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	c0,c0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -335,23 +345,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	c0,c0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	c0,c0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [c0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	c0,c0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	c0,c0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	////////////////////////////////////////// iteration before last 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__@@ -375,20 +386,22 @@ 	mov	x15, x17 	mov	x16, x19 	add	c0,c0,#8*12-	bl	__smul_383x63+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [c0,#8*6]  	mov	x20, x15			// exact |f1| 	mov	x21, x16			// exact |g1|-	add	c0,c0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	c0,c0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail  	////////////////////////////////////////// last iteration 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1 #endif-	mov	x2, #22			// 766 % 62+	mov	x2, #24			// 768 % 62 	//bl	__ab_approximation_62		// |a| and |b| are exact, 	ldr	x3, [c1,#8*0]		// just load 	eor	x8, x8, x8@@ -399,25 +412,60 @@ 	mov	x20, x17 	mov	x21, x19 	ldp	c0, c15, [csp]			// original out_ptr and n_ptr-	bl	__smul_383x63-	bl	__smul_767x63_tail+	bl	__smul_384x63+	bl	__smul_768x63_tail 	ldr	c30, [c29,#__SIZEOF_POINTER__] -	asr	x22, x8, #63		// sign as mask-	ldp	x9, x10, [c15,#8*0]+	smulh	x23, x8, x21		// figure out top-most limb+	adc	x26, x26, x28+	ldp	x9, x10, [c15,#8*0]	// load |mod|+	add	x23, x23, x26		// x23 is 1, 0 or -1 	ldp	x11, x12, [c15,#8*2]+	asr	x22, x23, #63		// sign as mask 	ldp	x13, x14, [c15,#8*4] -	and	x9, x9, x22		// add mod<<384 conditionally-	and	x10, x10, x22-	adds	x3, x3, x9-	and	x11, x11, x22+	and	x26,   x9, x22		// add mod<<384 conditionally+	and	x27,   x10, x22+	adds	x3, x3, x26+	and	x28,   x11, x22+	adcs	x4, x4, x27+	and	x2,   x12, x22+	adcs	x5, x5, x28+	and	x26,   x13, x22+	adcs	x6, x6, x2+	and	x27,   x14, x22+	adcs	x7, x7, x26+	adcs	x8, x25,   x27+	adc	x23, x23, xzr		// x23 is 1, 0 or -1++	neg	x22, x23+	orr	x23, x23, x22		// excess bit or sign as mask+	asr	x22, x22, #63		// excess bit as mask++	and	x9, x9, x23		// mask |mod|+	and	x10, x10, x23+	and	x11, x11, x23+	and	x12, x12, x23+	and	x13, x13, x23+	and	x14, x14, x23++	eor	x9,  x9, x22	// conditionally negate |mod|+	eor	x10,  x10, x22+	adds	x9,  x9, x22, lsr#63+	eor	x11,  x11, x22+	adcs	x10,  x10, xzr+	eor	x12,  x12, x22+	adcs	x11,  x11, xzr+	eor	x13, x13, x22+	adcs	x12,  x12, xzr+	eor	x14, x14, x22+	adcs	x13, x13, xzr+	adc	x14, x14, xzr++	adds	x3, x3, x9	// final adjustment for |mod|<<384 	adcs	x4, x4, x10-	and	x12, x12, x22 	adcs	x5, x5, x11-	and	x13, x13, x22 	adcs	x6, x6, x12-	and	x14, x14, x22 	stp	x3, x4, [c0,#8*6] 	adcs	x7, x7, x13 	stp	x5, x6, [c0,#8*8]@@ -431,15 +479,15 @@ 	ldp	c25, c26, [c29,#8*__SIZEOF_POINTER__] 	ldp	c27, c28, [c29,#10*__SIZEOF_POINTER__] 	ldr	c29, [csp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret-.size	ct_inverse_mod_383,.-ct_inverse_mod_383+.size	ct_inverse_mod_384,.-ct_inverse_mod_384  //////////////////////////////////////////////////////////////////////// // see corresponding commentary in ctx_inverse_mod_384-x86_64...-.type	__smul_383x63, %function+.type	__smul_384x63, %function .align	5-__smul_383x63:+__smul_384x63: 	ldp	x3, x4, [c1,#8*0+96]	// load |u| (or |v|) 	asr	x17, x20, #63		// |f_|'s sign as mask (or |g_|'s) 	ldp	x5, x6, [c1,#8*2+96]@@ -447,6 +495,7 @@ 	ldp	x7, x8, [c1,#8*4+96]  	eor	x3, x3, x17	// conditionally negate |u| (or |v|)+	ldr	x25, [c1,#8*6+96] 	sub	x20, x20, x17 	eor	x4, x4, x17 	adds	x3, x3, x17, lsr#63@@ -461,28 +510,33 @@ 	umulh	x23, x4, x20 	adcs	x7, x7, xzr 	umulh	x24, x5, x20-	adcs	x8, x8, xzr-	umulh	x25, x6, x20-	umulh	x26, x7, x20+	eor	x25, x25, x17 	mul	x3, x3, x20+	adcs	x8, x8, xzr 	mul	x4, x4, x20+	adcs	x25, x25, xzr+	cmp	x20, #0 	mul	x5, x5, x20+	csel	x25, x25, xzr, ne 	adds	x4, x4, x22-	mul	x6, x6, x20+	umulh	x22, x6, x20 	adcs	x5, x5, x23+	umulh	x23, x7, x20+	mul	x6, x6, x20 	mul	x7, x7, x20 	adcs	x6, x6, x24 	mul	x27,x8, x20-	adcs	x7, x7, x25-	adcs	x27,x27,x26+	adcs	x7, x7, x22+	adcs	x27,x27,x23 	adc	x2, xzr, xzr-	ldp	x9, x10, [c1,#8*0+144]	// load |u| (or |v|)+	ldp	x9, x10, [c1,#8*0+160]	// load |u| (or |v|) 	asr	x17, x21, #63		// |f_|'s sign as mask (or |g_|'s)-	ldp	x11, x12, [c1,#8*2+144]+	ldp	x11, x12, [c1,#8*2+160] 	eor	x21, x21, x17		// conditionally negate |f_| (or |g_|)-	ldp	x13, x14, [c1,#8*4+144]+	ldp	x13, x14, [c1,#8*4+160]  	eor	x9, x9, x17	// conditionally negate |u| (or |v|)+	ldr	x26, [c1,#8*6+160] 	sub	x21, x21, x17 	eor	x10, x10, x17 	adds	x9, x9, x17, lsr#63@@ -497,21 +551,25 @@ 	umulh	x23, x10, x21 	adcs	x13, x13, xzr 	umulh	x24, x11, x21-	adcs	x14, x14, xzr-	umulh	x25, x12, x21-	adc	x19, xzr, xzr		// used in __smul_767x63_tail-	umulh	x26, x13, x21+	eor	x26, x26, x17 	mul	x9, x9, x21+	adcs	x14, x14, xzr 	mul	x10, x10, x21+	adcs	x26, x26, xzr+	adc	x19, xzr, xzr		// used in __smul_768x63_tail+	cmp	x21, #0 	mul	x11, x11, x21+	csel	x26, x26, xzr, ne 	adds	x10, x10, x22-	mul	x12, x12, x21+	umulh	x22, x12, x21 	adcs	x11, x11, x23+	umulh	x23, x13, x21+	mul	x12, x12, x21 	mul	x13, x13, x21 	adcs	x12, x12, x24 	mul	x28,x14, x21-	adcs	x13, x13, x25-	adcs	x28,x28,x26+	adcs	x13, x13, x22+	adcs	x28,x28,x23 	adc	x2, x2, xzr  	adds	x3, x3, x9@@ -523,41 +581,41 @@ 	stp	x5, x6, [c0,#8*2] 	adcs	x27,   x27,   x28 	stp	x7, x27,   [c0,#8*4]-	adc	x28,   x2,   xzr	// used in __smul_767x63_tail  	ret-.size	__smul_383x63,.-__smul_383x63+.size	__smul_384x63,.-__smul_384x63 -.type	__smul_767x63_tail, %function+.type	__smul_768x63_tail, %function .align	5-__smul_767x63_tail:-	smulh	x27,   x8, x20-	ldp	x3, x4, [c1,#8*24]	// load rest of |v|-	umulh	x14,x14, x21-	ldp	x5, x6, [c1,#8*26]-	ldp	x7, x8, [c1,#8*28]+__smul_768x63_tail:+	umulh	x27, x8, x20+	ldr	x4, [c1,#8*27]// load rest of |v|+	adc	x2, x2, xzr+	ldp	x5, x6, [c1,#8*28]+	and	x25, x25, x20+	ldp	x7, x8, [c1,#8*30]+	sub	x27, x27, x25	// tie up |u|*|f1| chain -	eor	x3, x3, x17	// conditionally negate rest of |v|-	eor	x4, x4, x17+	umulh	x14, x14, x21	// resume |v|*|g1| chain+	eor	x4, x4, x17	// conditionally negate rest of |v| 	eor	x5, x5, x17-	adds	x3, x3, x19 	eor	x6, x6, x17-	adcs	x4, x4, xzr+	adds	x4, x4, x19 	eor	x7, x7, x17 	adcs	x5, x5, xzr 	eor	x8, x8, x17 	adcs	x6, x6, xzr-	umulh	x22, x3, x21+	umulh	x22, x26,   x21 	adcs	x7, x7, xzr 	umulh	x23, x4, x21 	adc	x8, x8, xzr  	umulh	x24, x5, x21-	add	x14, x14, x28+	add	x14, x14, x2 	umulh	x25, x6, x21 	asr	x28, x27, #63-	umulh	x26, x7, x21-	mul	x3, x3, x21+	umulh	x2, x7, x21+	mul	x3, x26,   x21 	mul	x4, x4, x21 	mul	x5, x5, x21 	adds	x3, x3, x14@@ -565,10 +623,11 @@ 	adcs	x4, x4, x22 	mul	x7, x7, x21 	adcs	x5, x5, x23-	mul	x8, x8, x21+	mul	x22,   x8, x21 	adcs	x6, x6, x24 	adcs	x7, x7, x25-	adc	x8, x8, x26+	adcs	x25,   x22, x2+	adc	x26, xzr, xzr		// used in the final step  	adds	x3, x3, x27 	adcs	x4, x4, x28@@ -577,15 +636,15 @@ 	stp	x3, x4, [c0,#8*6] 	adcs	x7, x7, x28 	stp	x5, x6, [c0,#8*8]-	adc	x8, x8, x28-	stp	x7, x8, [c0,#8*10]+	adcs	x25,   x25,   x28	// carry is used in the final step+	stp	x7, x25,   [c0,#8*10]  	ret-.size	__smul_767x63_tail,.-__smul_767x63_tail+.size	__smul_768x63_tail,.-__smul_768x63_tail -.type	__smul_383_n_shift_by_62, %function+.type	__smul_384_n_shift_by_62, %function .align	5-__smul_383_n_shift_by_62:+__smul_384_n_shift_by_62: 	ldp	x3, x4, [c1,#8*0+0]	// load |a| (or |b|) 	asr	x28, x15, #63		// |f0|'s sign as mask (or |g0|'s) 	ldp	x5, x6, [c1,#8*2+0]@@ -605,25 +664,27 @@ 	adcs	x6, x6, xzr 	umulh	x23, x4, x2 	eor	x8, x8, x28-	umulh	x24, x5, x2+	mul	x3, x3, x2 	adcs	x7, x7, xzr-	umulh	x25, x6, x2+	mul	x4, x4, x2 	adc	x8, x8, xzr -	umulh	x26, x7, x2-	smulh	x27, x8, x2-	mul	x3, x3, x2-	mul	x4, x4, x2-	mul	x5, x5, x2+	umulh	x24, x5, x2+	and	x28, x28, x2+	umulh	x25, x6, x2 	adds	x4, x4, x22+	mul	x5, x5, x2+	umulh	x22, x7, x2+	neg	x28, x28 	mul	x6, x6, x2 	adcs	x5, x5, x23+	umulh	x23, x8, x2 	mul	x7, x7, x2 	adcs	x6, x6, x24 	mul	x8, x8, x2 	adcs	x7, x7, x25-	adcs	x8, x8 ,x26-	adc	x27, x27, xzr+	adcs	x8, x8, x22+	adc	x27, x23, x28 	ldp	x9, x10, [c1,#8*0+48]	// load |a| (or |b|) 	asr	x28, x16, #63		// |f0|'s sign as mask (or |g0|'s) 	ldp	x11, x12, [c1,#8*2+48]@@ -643,25 +704,27 @@ 	adcs	x12, x12, xzr 	umulh	x23, x10, x2 	eor	x14, x14, x28-	umulh	x24, x11, x2+	mul	x9, x9, x2 	adcs	x13, x13, xzr-	umulh	x25, x12, x2+	mul	x10, x10, x2 	adc	x14, x14, xzr -	umulh	x26, x13, x2-	smulh	x28, x14, x2-	mul	x9, x9, x2-	mul	x10, x10, x2-	mul	x11, x11, x2+	umulh	x24, x11, x2+	and	x28, x28, x2+	umulh	x25, x12, x2 	adds	x10, x10, x22+	mul	x11, x11, x2+	umulh	x22, x13, x2+	neg	x28, x28 	mul	x12, x12, x2 	adcs	x11, x11, x23+	umulh	x23, x14, x2 	mul	x13, x13, x2 	adcs	x12, x12, x24 	mul	x14, x14, x2 	adcs	x13, x13, x25-	adcs	x14, x14 ,x26-	adc	x28, x28, xzr+	adcs	x14, x14, x22+	adc	x28, x23, x28 	adds	x3, x3, x9 	adcs	x4, x4, x10 	adcs	x5, x5, x11@@ -700,7 +763,7 @@ 	sub	x16, x16, x28  	ret-.size	__smul_383_n_shift_by_62,.-__smul_383_n_shift_by_62+.size	__smul_384_n_shift_by_62,.-__smul_384_n_shift_by_62 .type	__ab_approximation_62, %function .align	4 __ab_approximation_62:@@ -793,3 +856,13 @@  	ret .size	__inner_loop_62,.-__inner_loop_62++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section	.note.GNU-stack,"",@progbits+.section	.note.gnu.property,"a",@note+	.long	4,2f-1f,5+	.byte	0x47,0x4E,0x55,0+1:	.long	0xc0000000,4,3+.align  3+2:+#endif
c-source/build/cheri/ct_is_square_mod_384-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text  .globl	ct_is_square_mod_384@@ -5,7 +13,7 @@ .type	ct_is_square_mod_384, %function .align	5 ct_is_square_mod_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29, c30, [csp,#-16*__SIZEOF_POINTER__]! 	add	c29, csp, #0 	stp	c19, c20, [csp,#2*__SIZEOF_POINTER__]@@ -84,7 +92,7 @@ 	ldp	c25, c26, [c29,#8*__SIZEOF_POINTER__] 	ldp	c27, c28, [c29,#10*__SIZEOF_POINTER__] 	ldr	c29, [csp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	ct_is_square_mod_384,.-ct_is_square_mod_384 @@ -332,3 +340,13 @@  	ret .size	__inner_loop_48,.-__inner_loop_48++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section	.note.GNU-stack,"",@progbits+.section	.note.gnu.property,"a",@note+	.long	4,2f-1f,5+	.byte	0x47,0x4E,0x55,0+1:	.long	0xc0000000,4,3+.align  3+2:+#endif
c-source/build/cheri/div3w-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text  .globl	div_3_limbs@@ -5,6 +13,7 @@ .type	div_3_limbs,%function .align	5 div_3_limbs:+	hint	#34 	ldp	x4,x5,[c0]	// load R 	eor	x0,x0,x0	// Q = 0 	mov	x3,#64		// loop counter@@ -39,6 +48,7 @@ .type	quot_rem_128,%function .align	5 quot_rem_128:+	hint	#34 	ldp	x3,x4,[c1]  	mul	x5,x3,x2	// divisor[0:1} * quotient@@ -76,6 +86,7 @@ .type	quot_rem_64,%function .align	5 quot_rem_64:+	hint	#34 	ldr	x3,[c1] 	ldr	x8,[c0]	// load 1 limb of the dividend @@ -89,3 +100,13 @@  	ret .size	quot_rem_64,.-quot_rem_64++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section	.note.GNU-stack,"",@progbits+.section	.note.gnu.property,"a",@note+	.long	4,2f-1f,5+	.byte	0x47,0x4E,0x55,0+1:	.long	0xc0000000,4,3+.align  3+2:+#endif
c-source/build/cheri/mul_mont_256-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text  .globl	mul_mont_sparse_256@@ -5,6 +13,7 @@ .type	mul_mont_sparse_256,%function .align	5 mul_mont_sparse_256:+	hint	#34 	stp	c29,c30,[csp,#-8*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -196,7 +205,7 @@ .type	sqr_mont_sparse_256,%function .align	5 sqr_mont_sparse_256:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-6*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -297,7 +306,7 @@ 	ldp	c19,c20,[c29,#2*__SIZEOF_POINTER__] 	ldp	c21,c22,[c29,#4*__SIZEOF_POINTER__] 	ldr	c29,[csp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sqr_mont_sparse_256,.-sqr_mont_sparse_256 .globl	from_mont_256@@ -305,7 +314,7 @@ .type	from_mont_256,%function .align	5 from_mont_256:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-2*__SIZEOF_POINTER__]! 	add	c29,csp,#0 @@ -330,7 +339,7 @@ 	stp	x12,x13,[c0,#16]  	ldr	c29,[csp],#2*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	from_mont_256,.-from_mont_256 @@ -339,7 +348,7 @@ .type	redc_mont_256,%function .align	5 redc_mont_256:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-2*__SIZEOF_POINTER__]! 	add	c29,csp,#0 @@ -374,7 +383,7 @@ 	stp	x12,x13,[c0,#16]  	ldr	c29,[csp],#2*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	redc_mont_256,.-redc_mont_256 @@ -462,3 +471,13 @@  	ret .size	__mul_by_1_mont_256,.-__mul_by_1_mont_256++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section	.note.GNU-stack,"",@progbits+.section	.note.gnu.property,"a",@note+	.long	4,2f-1f,5+	.byte	0x47,0x4E,0x55,0+1:	.long	0xc0000000,4,3+.align  3+2:+#endif
c-source/build/cheri/mul_mont_384-armv8.S view
@@ -1,10 +1,19 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text  .globl	add_mod_384x384+.hidden	add_mod_384x384 .type	add_mod_384x384,%function .align	5 add_mod_384x384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-8*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -22,7 +31,7 @@ 	ldp	c21,c22,[c29,#4*__SIZEOF_POINTER__] 	ldp	c23,c24,[c29,#6*__SIZEOF_POINTER__] 	ldr	c29,[csp],#8*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	add_mod_384x384,.-add_mod_384x384 @@ -82,10 +91,11 @@ .size	__add_mod_384x384,.-__add_mod_384x384  .globl	sub_mod_384x384+.hidden	sub_mod_384x384 .type	sub_mod_384x384,%function .align	5 sub_mod_384x384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-8*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -103,7 +113,7 @@ 	ldp	c21,c22,[c29,#4*__SIZEOF_POINTER__] 	ldp	c23,c24,[c29,#6*__SIZEOF_POINTER__] 	ldr	c29,[csp],#8*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sub_mod_384x384,.-sub_mod_384x384 @@ -239,7 +249,7 @@ .type	mul_mont_384x,%function .align	5 mul_mont_384x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-16*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -312,7 +322,7 @@ 	ldp	c25,c26,[c29,#8*__SIZEOF_POINTER__] 	ldp	c27,c28,[c29,#10*__SIZEOF_POINTER__] 	ldr	c29,[csp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	mul_mont_384x,.-mul_mont_384x @@ -321,7 +331,7 @@ .type	sqr_mont_384x,%function .align	5 sqr_mont_384x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-16*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -397,7 +407,7 @@ 	ldp	c25,c26,[c29,#8*__SIZEOF_POINTER__] 	ldp	c27,c28,[c29,#10*__SIZEOF_POINTER__] 	ldr	c29,[csp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sqr_mont_384x,.-sqr_mont_384x @@ -406,7 +416,7 @@ .type	mul_mont_384,%function .align	5 mul_mont_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-16*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -438,7 +448,7 @@ 	ldp	c25,c26,[c29,#8*__SIZEOF_POINTER__] 	ldp	c27,c28,[c29,#10*__SIZEOF_POINTER__] 	ldr	c29,[csp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	mul_mont_384,.-mul_mont_384 @@ -819,7 +829,7 @@ .type	sqr_mont_384,%function .align	5 sqr_mont_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-16*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -856,7 +866,7 @@ 	ldp	c25,c26,[c29,#8*__SIZEOF_POINTER__] 	ldp	c27,c28,[c29,#10*__SIZEOF_POINTER__] 	ldr	c29,[csp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sqr_mont_384,.-sqr_mont_384 @@ -865,7 +875,7 @@ .type	sqr_n_mul_mont_383,%function .align	5 sqr_n_mul_mont_383:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-16*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -921,7 +931,7 @@ 	ldp	c25,c26,[c29,#8*__SIZEOF_POINTER__] 	ldp	c27,c28,[c29,#10*__SIZEOF_POINTER__] 	ldr	c29,[csp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sqr_n_mul_mont_383,.-sqr_n_mul_mont_383 .type	__sqr_384,%function@@ -1042,7 +1052,7 @@ .type	sqr_384,%function .align	5 sqr_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-16*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -1064,7 +1074,7 @@ 	ldp	c25,c26,[c29,#8*__SIZEOF_POINTER__] 	ldp	c27,c28,[c29,#10*__SIZEOF_POINTER__] 	ldr	c29,[csp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sqr_384,.-sqr_384 @@ -1073,7 +1083,7 @@ .type	redc_mont_384,%function .align	5 redc_mont_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-16*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -1097,7 +1107,7 @@ 	ldp	c25,c26,[c29,#8*__SIZEOF_POINTER__] 	ldp	c27,c28,[c29,#10*__SIZEOF_POINTER__] 	ldr	c29,[csp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	redc_mont_384,.-redc_mont_384 @@ -1106,7 +1116,7 @@ .type	from_mont_384,%function .align	5 from_mont_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-16*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -1147,7 +1157,7 @@ 	ldp	c25,c26,[c29,#8*__SIZEOF_POINTER__] 	ldp	c27,c28,[c29,#10*__SIZEOF_POINTER__] 	ldr	c29,[csp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	from_mont_384,.-from_mont_384 @@ -1365,7 +1375,7 @@ .type	mul_384,%function .align	5 mul_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-16*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -1383,7 +1393,7 @@ 	ldp	c25,c26,[c29,#8*__SIZEOF_POINTER__] 	ldp	c27,c28,[c29,#10*__SIZEOF_POINTER__] 	ldr	c29,[csp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	mul_384,.-mul_384 @@ -1569,7 +1579,7 @@ .type	mul_382x,%function .align	5 mul_382x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-16*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -1651,7 +1661,7 @@ 	ldp	c25,c26,[c29,#8*__SIZEOF_POINTER__] 	ldp	c27,c28,[c29,#10*__SIZEOF_POINTER__] 	ldr	c29,[csp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	mul_382x,.-mul_382x @@ -1660,7 +1670,7 @@ .type	sqr_382x,%function .align	5 sqr_382x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-16*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -1751,7 +1761,7 @@ 	ldp	c25,c26,[c29,#8*__SIZEOF_POINTER__] 	ldp	c27,c28,[c29,#10*__SIZEOF_POINTER__] 	ldr	c29,[csp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sqr_382x,.-sqr_382x @@ -1760,7 +1770,7 @@ .type	sqr_mont_382x,%function .align	5 sqr_mont_382x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-16*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -1875,7 +1885,7 @@ 	ldp	c25,c26,[c29,#8*__SIZEOF_POINTER__] 	ldp	c27,c28,[c29,#10*__SIZEOF_POINTER__] 	ldr	c29,[csp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sqr_mont_382x,.-sqr_mont_382x @@ -2224,7 +2234,7 @@ .type	sgn0_pty_mont_384,%function .align	5 sgn0_pty_mont_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-16*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -2269,7 +2279,7 @@ 	ldp	c25,c26,[c29,#8*__SIZEOF_POINTER__] 	ldp	c27,c28,[c29,#10*__SIZEOF_POINTER__] 	ldr	c29,[csp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sgn0_pty_mont_384,.-sgn0_pty_mont_384 @@ -2278,7 +2288,7 @@ .type	sgn0_pty_mont_384x,%function .align	5 sgn0_pty_mont_384x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	c29,c30,[csp,#-16*__SIZEOF_POINTER__]! 	add	c29,csp,#0 	stp	c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -2367,6 +2377,16 @@ 	ldp	c25,c26,[c29,#8*__SIZEOF_POINTER__] 	ldp	c27,c28,[c29,#10*__SIZEOF_POINTER__] 	ldr	c29,[csp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sgn0_pty_mont_384x,.-sgn0_pty_mont_384x++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section	.note.GNU-stack,"",@progbits+.section	.note.gnu.property,"a",@note+	.long	4,2f-1f,5+	.byte	0x47,0x4E,0x55,0+1:	.long	0xc0000000,4,3+.align  3+2:+#endif
c-source/build/cheri/sha256-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ // // Copyright Supranational LLC // Licensed under the Apache License, Version 2.0, see LICENSE for details.@@ -43,9 +51,11 @@ .align	2 .align	2 .globl	blst_sha256_block_armv8+.hidden	blst_sha256_block_armv8 .type	blst_sha256_block_armv8,%function .align	6 blst_sha256_block_armv8:+	hint	#34 .Lv8_entry: 	stp	c29,c30,[csp,#-2*__SIZEOF_POINTER__]! 	add	c29,csp,#0@@ -182,9 +192,11 @@ 	ret .size	blst_sha256_block_armv8,.-blst_sha256_block_armv8 .globl	blst_sha256_block_data_order+.hidden	blst_sha256_block_data_order .type	blst_sha256_block_data_order,%function .align	4 blst_sha256_block_data_order:+	hint	#34 	adrp	c16,__blst_platform_cap 	ldr	w16,[c16,#:lo12:__blst_platform_cap] 	tst	w16,#1@@ -1034,6 +1046,7 @@ .type	blst_sha256_emit,%function .align	4 blst_sha256_emit:+	hint	#34 	ldp	x4,x5,[c1] 	ldp	x6,x7,[c1,#16] #ifndef	__AARCH64EB__@@ -1062,6 +1075,7 @@ .type	blst_sha256_bcopy,%function .align	4 blst_sha256_bcopy:+	hint	#34 .Loop_bcopy: 	ldrb	w3,[c1],#1 	sub	x2,x2,#1@@ -1075,9 +1089,20 @@ .type	blst_sha256_hcopy,%function .align	4 blst_sha256_hcopy:+	hint	#34 	ldp	x4,x5,[c1] 	ldp	x6,x7,[c1,#16] 	stp	x4,x5,[c0] 	stp	x6,x7,[c0,#16] 	ret .size	blst_sha256_hcopy,.-blst_sha256_hcopy++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section	.note.GNU-stack,"",@progbits+.section	.note.gnu.property,"a",@note+	.long	4,2f-1f,5+	.byte	0x47,0x4E,0x55,0+1:	.long	0xc0000000,4,3+.align  3+2:+#endif
c-source/build/coff/add_mod_256-armv8.S view
@@ -7,6 +7,7 @@ .endef .p2align	5 add_mod_256:+	hint	#34 	ldp	x8,x9,[x1] 	ldp	x12,x13,[x2] @@ -43,6 +44,7 @@ .endef .p2align	5 mul_by_3_mod_256:+	hint	#34 	ldp	x12,x13,[x1] 	ldp	x14,x15,[x1,#16] @@ -94,6 +96,7 @@ .endef .p2align	5 lshift_mod_256:+	hint	#34 	ldp	x8,x9,[x1] 	ldp	x10,x11,[x1,#16] @@ -134,6 +137,7 @@ .endef .p2align	5 rshift_mod_256:+	hint	#34 	ldp	x8,x9,[x1] 	ldp	x10,x11,[x1,#16] 
c-source/build/coff/add_mod_384-armv8.S view
@@ -7,7 +7,7 @@ .endef .p2align	5 add_mod_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -27,7 +27,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -77,7 +77,7 @@ .endef .p2align	5 add_mod_384x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -105,7 +105,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -116,7 +116,7 @@ .endef .p2align	5 rshift_mod_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -143,7 +143,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -182,7 +182,7 @@ .endef .p2align	5 div_by_2_mod_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -206,7 +206,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -217,7 +217,7 @@ .endef .p2align	5 lshift_mod_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -244,7 +244,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -286,7 +286,7 @@ .endef .p2align	5 mul_by_3_mod_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -316,7 +316,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -327,7 +327,7 @@ .endef .p2align	5 mul_by_8_mod_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -353,7 +353,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -364,7 +364,7 @@ .endef .p2align	5 mul_by_3_mod_384x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -409,7 +409,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -420,7 +420,7 @@ .endef .p2align	5 mul_by_8_mod_384x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -457,7 +457,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -468,7 +468,7 @@ .endef .p2align	5 cneg_mod_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -510,7 +510,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -521,7 +521,7 @@ .endef .p2align	5 sub_mod_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -541,7 +541,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -588,7 +588,7 @@ .endef .p2align	5 sub_mod_384x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -616,7 +616,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -627,7 +627,7 @@ .endef .p2align	5 mul_by_1_plus_i_mod_384x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -660,7 +660,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -671,6 +671,7 @@ .endef .p2align	5 sgn0_pty_mod_384:+	hint	#34 	ldp	x10,x11,[x0] 	ldp	x12,x13,[x0,#16] 	ldp	x14,x15,[x0,#32]@@ -710,6 +711,7 @@ .endef .p2align	5 sgn0_pty_mod_384x:+	hint	#34 	ldp	x10,x11,[x0] 	ldp	x12,x13,[x0,#16] 	ldp	x14,x15,[x0,#32]@@ -793,14 +795,14 @@ .endef .p2align	5 vec_select_32:+	hint	#34 	dup	v6.2d, x3-	ld1	{v0.2d, v1.2d, v2.2d}, [x1],#48+	ld1	{v0.2d, v1.2d}, [x1] 	cmeq	v6.2d, v6.2d, #0-	ld1	{v3.2d, v4.2d, v5.2d}, [x2],#48+	ld1	{v3.2d, v4.2d}, [x2] 	bit	v0.16b, v3.16b, v6.16b 	bit	v1.16b, v4.16b, v6.16b-	bit	v2.16b, v5.16b, v6.16b-	st1	{v0.2d, v1.2d, v2.2d}, [x0]+	st1	{v0.2d, v1.2d}, [x0] 	ret  .globl	vec_select_48@@ -810,6 +812,7 @@ .endef .p2align	5 vec_select_48:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [x1],#48 	cmeq	v6.2d, v6.2d, #0@@ -827,6 +830,7 @@ .endef .p2align	5 vec_select_96:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [x1],#48 	cmeq	v6.2d, v6.2d, #0@@ -850,6 +854,7 @@ .endef .p2align	5 vec_select_192:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [x1],#48 	cmeq	v6.2d, v6.2d, #0@@ -885,6 +890,7 @@ .endef .p2align	5 vec_select_144:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [x1],#48 	cmeq	v6.2d, v6.2d, #0@@ -914,6 +920,7 @@ .endef .p2align	5 vec_select_288:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [x1],#48 	cmeq	v6.2d, v6.2d, #0@@ -961,6 +968,7 @@ .endef .p2align	5 vec_prefetch:+	hint	#34 	add	x1, x1, x0 	sub	x1, x1, #1 	mov	x2, #64@@ -1003,6 +1011,7 @@ .endef .p2align	5 vec_is_zero_16x:+	hint	#34 	ld1	{v0.2d}, [x0], #16 	lsr	x1, x1, #4 	sub	x1, x1, #1@@ -1030,6 +1039,7 @@ .endef .p2align	5 vec_is_equal_16x:+	hint	#34 	ld1	{v0.2d}, [x0], #16 	ld1	{v1.2d}, [x1], #16 	lsr	x2, x2, #4
c-source/build/coff/ct_inverse_mod_256-armv8.S view
@@ -7,7 +7,7 @@ .endef .p2align	5 ct_inverse_mod_256:-.long	3573752639+	hint	#25 	stp	x29, x30, [sp,#-10*__SIZEOF_POINTER__]! 	add	x29, sp, #0 	stp	x19, x20, [sp,#2*__SIZEOF_POINTER__]@@ -50,7 +50,7 @@ 	mov	x13, x15			// |g1| 	add	x0,x0,#8*4 	bl	__smul_256_n_shift_by_31-	str	x12, [x0,#8*9]		// initialize |v| with |f1|+	str	x12, [x0,#8*10]		// initialize |v| with |f1|  	////////////////////////////////////////// second iteration 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -73,19 +73,17 @@ 	bl	__smul_256_n_shift_by_31  	ldr	x8, [x1,#8*8]		// |u|-	ldr	x9, [x1,#8*13]	// |v|+	ldr	x9, [x1,#8*14]	// |v| 	madd	x4, x16, x8, xzr	// |u|*|f0| 	madd	x4, x17, x9, x4	// |v|*|g0|-	str	x4, [x0,#8*4] 	asr	x5, x4, #63		// sign extension-	stp	x5, x5, [x0,#8*5]-	stp	x5, x5, [x0,#8*7]+	stp	x4, x5, [x0,#8*4]+	stp	x5, x5, [x0,#8*6]  	madd	x4, x12, x8, xzr	// |u|*|f1| 	madd	x4, x13, x9, x4	// |v|*|g1|-	str	x4, [x0,#8*9] 	asr	x5, x4, #63		// sign extension-	stp	x5, x5, [x0,#8*10]+	stp	x4, x5, [x0,#8*10] 	stp	x5, x5, [x0,#8*12] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__@@ -108,16 +106,10 @@  	add	x0,x0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [x0,#8*4]-	stp	x22, x22, [x0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -139,16 +131,10 @@  	add	x0,x0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [x0,#8*4]-	stp	x22, x22, [x0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -170,16 +156,10 @@  	add	x0,x0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [x0,#8*4]-	stp	x22, x22, [x0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -201,16 +181,10 @@  	add	x0,x0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [x0,#8*4]-	stp	x22, x22, [x0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -232,16 +206,10 @@  	add	x0,x0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [x0,#8*4]-	stp	x22, x22, [x0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -263,16 +231,15 @@  	add	x0,x0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [x0,#8*4]-+	asr	x24, x24, #63+	str	x24, [x0,#8*4] 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [x0,#8*4]-	stp	x22, x22, [x0,#8*6]+	asr	x24, x24, #63		// sign extension+	stp	x24, x24, [x0,#8*4]+	stp	x24, x24, [x0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -296,10 +263,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -325,10 +291,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -354,10 +319,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -383,10 +347,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -412,10 +375,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -441,10 +403,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -470,10 +431,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	////////////////////////////////////////// two[!] last iterations@@ -543,7 +503,7 @@ 	ldp	x23, x24, [x29,#6*__SIZEOF_POINTER__] 	ldp	x25, x26, [x29,#8*__SIZEOF_POINTER__] 	ldr	x29, [sp],#10*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -583,11 +543,11 @@ 	adcs	x6, x6, x20 	adcs	x24, x24, x21 	adc	x26, xzr, xzr-	ldp	x8, x9, [x1,#8*0+104]	// load |u| (or |v|)+	ldp	x8, x9, [x1,#8*0+112]	// load |u| (or |v|) 	asr	x14, x17, #63		// |f_|'s sign as mask (or |g_|'s)-	ldp	x10, x11, [x1,#8*2+104]+	ldp	x10, x11, [x1,#8*2+112] 	eor	x17, x17, x14		// conditionally negate |f_| (or |g_|)-	ldr	x23, [x1,#8*4+104]+	ldr	x23, [x1,#8*4+112]  	eor	x8, x8, x14	// conditionally negate |u| (or |v|) 	sub	x17, x17, x14@@ -631,9 +591,9 @@ .p2align	5 __smul_512x63_tail: 	umulh	x24, x7, x16-	ldp	x5, x6, [x1,#8*18]	// load rest of |v|+	ldr	x5, [x1,#8*19]	// load rest of |v| 	adc	x26, x26, xzr-	ldr	x7, [x1,#8*20]+	ldp	x6, x7, [x1,#8*20] 	and	x22, x22, x16  	umulh	x11, x11, x17	// resume |v|*|g1| chain
c-source/build/coff/ct_inverse_mod_384-armv8.S view
@@ -1,13 +1,13 @@ .text -.globl	ct_inverse_mod_383+.globl	ct_inverse_mod_384 -.def	ct_inverse_mod_383;+.def	ct_inverse_mod_384; .type	32; .endef .p2align	5-ct_inverse_mod_383:-.long	3573752639+ct_inverse_mod_384:+	hint	#25 	stp	x29, x30, [sp,#-16*__SIZEOF_POINTER__]! 	add	x29, sp, #0 	stp	x19, x20, [sp,#2*__SIZEOF_POINTER__]@@ -49,14 +49,14 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	str	x15,[x0,#8*12]		// initialize |u| with |f0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62-	str	x15, [x0,#8*12]		// initialize |v| with |f1|+	bl	__smul_384_n_shift_by_62+	str	x15, [x0,#8*14]		// initialize |v| with |f1|  	////////////////////////////////////////// second iteration 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -70,17 +70,17 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	ldr	x7, [x1,#8*12]	// |u|-	ldr	x8, [x1,#8*18]	// |v|+	ldr	x8, [x1,#8*20]	// |v| 	mul	x3, x20, x7		// |u|*|f0| 	smulh	x4, x20, x7 	mul	x5, x21, x8		// |v|*|g0|@@ -98,10 +98,10 @@ 	smulh	x6, x16, x8 	adds	x3, x3, x5 	adc	x4, x4, x6-	stp	x3, x4, [x0,#8*12]+	stp	x3, x4, [x0,#8*14] 	asr	x5, x4, #63		// sign extension-	stp	x5, x5, [x0,#8*14] 	stp	x5, x5, [x0,#8*16]+	stp	x5, x5, [x0,#8*18] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -113,22 +113,21 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63+	add	x0,x0,#8*8+	bl	__smul_384x63 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -140,22 +139,21 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63+	add	x0,x0,#8*8+	bl	__smul_384x63 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -167,22 +165,21 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63+	add	x0,x0,#8*8+	bl	__smul_384x63 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -194,22 +191,23 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	asr	x27, x27, #63+	str	x27, [x0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63+	add	x0,x0,#8*8+	bl	__smul_384x63 	asr	x27, x27, #63		// sign extension 	stp	x27, x27, [x0,#8*6] 	stp	x27, x27, [x0,#8*8]@@ -225,23 +223,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [x0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	x0,x0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -253,23 +252,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [x0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	x0,x0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -281,23 +281,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [x0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	x0,x0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -309,23 +310,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [x0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	x0,x0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -337,23 +339,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [x0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	x0,x0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	////////////////////////////////////////// iteration before last 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__@@ -377,20 +380,22 @@ 	mov	x15, x17 	mov	x16, x19 	add	x0,x0,#8*12-	bl	__smul_383x63+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [x0,#8*6]  	mov	x20, x15			// exact |f1| 	mov	x21, x16			// exact |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	x0,x0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail  	////////////////////////////////////////// last iteration 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1 #endif-	mov	x2, #22			// 766 % 62+	mov	x2, #24			// 768 % 62 	//bl	__ab_approximation_62		// |a| and |b| are exact, 	ldr	x3, [x1,#8*0]		// just load 	eor	x8, x8, x8@@ -401,25 +406,60 @@ 	mov	x20, x17 	mov	x21, x19 	ldp	x0, x15, [sp]			// original out_ptr and n_ptr-	bl	__smul_383x63-	bl	__smul_767x63_tail+	bl	__smul_384x63+	bl	__smul_768x63_tail 	ldr	x30, [x29,#__SIZEOF_POINTER__] -	asr	x22, x8, #63		// sign as mask-	ldp	x9, x10, [x15,#8*0]+	smulh	x23, x8, x21		// figure out top-most limb+	adc	x26, x26, x28+	ldp	x9, x10, [x15,#8*0]	// load |mod|+	add	x23, x23, x26		// x23 is 1, 0 or -1 	ldp	x11, x12, [x15,#8*2]+	asr	x22, x23, #63		// sign as mask 	ldp	x13, x14, [x15,#8*4] -	and	x9, x9, x22		// add mod<<384 conditionally-	and	x10, x10, x22-	adds	x3, x3, x9-	and	x11, x11, x22+	and	x26,   x9, x22		// add mod<<384 conditionally+	and	x27,   x10, x22+	adds	x3, x3, x26+	and	x28,   x11, x22+	adcs	x4, x4, x27+	and	x2,   x12, x22+	adcs	x5, x5, x28+	and	x26,   x13, x22+	adcs	x6, x6, x2+	and	x27,   x14, x22+	adcs	x7, x7, x26+	adcs	x8, x25,   x27+	adc	x23, x23, xzr		// x23 is 1, 0 or -1++	neg	x22, x23+	orr	x23, x23, x22		// excess bit or sign as mask+	asr	x22, x22, #63		// excess bit as mask++	and	x9, x9, x23		// mask |mod|+	and	x10, x10, x23+	and	x11, x11, x23+	and	x12, x12, x23+	and	x13, x13, x23+	and	x14, x14, x23++	eor	x9,  x9, x22	// conditionally negate |mod|+	eor	x10,  x10, x22+	adds	x9,  x9, x22, lsr#63+	eor	x11,  x11, x22+	adcs	x10,  x10, xzr+	eor	x12,  x12, x22+	adcs	x11,  x11, xzr+	eor	x13, x13, x22+	adcs	x12,  x12, xzr+	eor	x14, x14, x22+	adcs	x13, x13, xzr+	adc	x14, x14, xzr++	adds	x3, x3, x9	// final adjustment for |mod|<<384 	adcs	x4, x4, x10-	and	x12, x12, x22 	adcs	x5, x5, x11-	and	x13, x13, x22 	adcs	x6, x6, x12-	and	x14, x14, x22 	stp	x3, x4, [x0,#8*6] 	adcs	x7, x7, x13 	stp	x5, x6, [x0,#8*8]@@ -433,17 +473,17 @@ 	ldp	x25, x26, [x29,#8*__SIZEOF_POINTER__] 	ldp	x27, x28, [x29,#10*__SIZEOF_POINTER__] 	ldr	x29, [sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret   //////////////////////////////////////////////////////////////////////// // see corresponding commentary in ctx_inverse_mod_384-x86_64...-.def	__smul_383x63;+.def	__smul_384x63; .type	32; .endef .p2align	5-__smul_383x63:+__smul_384x63: 	ldp	x3, x4, [x1,#8*0+96]	// load |u| (or |v|) 	asr	x17, x20, #63		// |f_|'s sign as mask (or |g_|'s) 	ldp	x5, x6, [x1,#8*2+96]@@ -451,6 +491,7 @@ 	ldp	x7, x8, [x1,#8*4+96]  	eor	x3, x3, x17	// conditionally negate |u| (or |v|)+	ldr	x25, [x1,#8*6+96] 	sub	x20, x20, x17 	eor	x4, x4, x17 	adds	x3, x3, x17, lsr#63@@ -465,28 +506,33 @@ 	umulh	x23, x4, x20 	adcs	x7, x7, xzr 	umulh	x24, x5, x20-	adcs	x8, x8, xzr-	umulh	x25, x6, x20-	umulh	x26, x7, x20+	eor	x25, x25, x17 	mul	x3, x3, x20+	adcs	x8, x8, xzr 	mul	x4, x4, x20+	adcs	x25, x25, xzr+	cmp	x20, #0 	mul	x5, x5, x20+	csel	x25, x25, xzr, ne 	adds	x4, x4, x22-	mul	x6, x6, x20+	umulh	x22, x6, x20 	adcs	x5, x5, x23+	umulh	x23, x7, x20+	mul	x6, x6, x20 	mul	x7, x7, x20 	adcs	x6, x6, x24 	mul	x27,x8, x20-	adcs	x7, x7, x25-	adcs	x27,x27,x26+	adcs	x7, x7, x22+	adcs	x27,x27,x23 	adc	x2, xzr, xzr-	ldp	x9, x10, [x1,#8*0+144]	// load |u| (or |v|)+	ldp	x9, x10, [x1,#8*0+160]	// load |u| (or |v|) 	asr	x17, x21, #63		// |f_|'s sign as mask (or |g_|'s)-	ldp	x11, x12, [x1,#8*2+144]+	ldp	x11, x12, [x1,#8*2+160] 	eor	x21, x21, x17		// conditionally negate |f_| (or |g_|)-	ldp	x13, x14, [x1,#8*4+144]+	ldp	x13, x14, [x1,#8*4+160]  	eor	x9, x9, x17	// conditionally negate |u| (or |v|)+	ldr	x26, [x1,#8*6+160] 	sub	x21, x21, x17 	eor	x10, x10, x17 	adds	x9, x9, x17, lsr#63@@ -501,21 +547,25 @@ 	umulh	x23, x10, x21 	adcs	x13, x13, xzr 	umulh	x24, x11, x21-	adcs	x14, x14, xzr-	umulh	x25, x12, x21-	adc	x19, xzr, xzr		// used in __smul_767x63_tail-	umulh	x26, x13, x21+	eor	x26, x26, x17 	mul	x9, x9, x21+	adcs	x14, x14, xzr 	mul	x10, x10, x21+	adcs	x26, x26, xzr+	adc	x19, xzr, xzr		// used in __smul_768x63_tail+	cmp	x21, #0 	mul	x11, x11, x21+	csel	x26, x26, xzr, ne 	adds	x10, x10, x22-	mul	x12, x12, x21+	umulh	x22, x12, x21 	adcs	x11, x11, x23+	umulh	x23, x13, x21+	mul	x12, x12, x21 	mul	x13, x13, x21 	adcs	x12, x12, x24 	mul	x28,x14, x21-	adcs	x13, x13, x25-	adcs	x28,x28,x26+	adcs	x13, x13, x22+	adcs	x28,x28,x23 	adc	x2, x2, xzr  	adds	x3, x3, x9@@ -527,43 +577,43 @@ 	stp	x5, x6, [x0,#8*2] 	adcs	x27,   x27,   x28 	stp	x7, x27,   [x0,#8*4]-	adc	x28,   x2,   xzr	// used in __smul_767x63_tail  	ret  -.def	__smul_767x63_tail;+.def	__smul_768x63_tail; .type	32; .endef .p2align	5-__smul_767x63_tail:-	smulh	x27,   x8, x20-	ldp	x3, x4, [x1,#8*24]	// load rest of |v|-	umulh	x14,x14, x21-	ldp	x5, x6, [x1,#8*26]-	ldp	x7, x8, [x1,#8*28]+__smul_768x63_tail:+	umulh	x27, x8, x20+	ldr	x4, [x1,#8*27]// load rest of |v|+	adc	x2, x2, xzr+	ldp	x5, x6, [x1,#8*28]+	and	x25, x25, x20+	ldp	x7, x8, [x1,#8*30]+	sub	x27, x27, x25	// tie up |u|*|f1| chain -	eor	x3, x3, x17	// conditionally negate rest of |v|-	eor	x4, x4, x17+	umulh	x14, x14, x21	// resume |v|*|g1| chain+	eor	x4, x4, x17	// conditionally negate rest of |v| 	eor	x5, x5, x17-	adds	x3, x3, x19 	eor	x6, x6, x17-	adcs	x4, x4, xzr+	adds	x4, x4, x19 	eor	x7, x7, x17 	adcs	x5, x5, xzr 	eor	x8, x8, x17 	adcs	x6, x6, xzr-	umulh	x22, x3, x21+	umulh	x22, x26,   x21 	adcs	x7, x7, xzr 	umulh	x23, x4, x21 	adc	x8, x8, xzr  	umulh	x24, x5, x21-	add	x14, x14, x28+	add	x14, x14, x2 	umulh	x25, x6, x21 	asr	x28, x27, #63-	umulh	x26, x7, x21-	mul	x3, x3, x21+	umulh	x2, x7, x21+	mul	x3, x26,   x21 	mul	x4, x4, x21 	mul	x5, x5, x21 	adds	x3, x3, x14@@ -571,10 +621,11 @@ 	adcs	x4, x4, x22 	mul	x7, x7, x21 	adcs	x5, x5, x23-	mul	x8, x8, x21+	mul	x22,   x8, x21 	adcs	x6, x6, x24 	adcs	x7, x7, x25-	adc	x8, x8, x26+	adcs	x25,   x22, x2+	adc	x26, xzr, xzr		// used in the final step  	adds	x3, x3, x27 	adcs	x4, x4, x28@@ -583,17 +634,17 @@ 	stp	x3, x4, [x0,#8*6] 	adcs	x7, x7, x28 	stp	x5, x6, [x0,#8*8]-	adc	x8, x8, x28-	stp	x7, x8, [x0,#8*10]+	adcs	x25,   x25,   x28	// carry is used in the final step+	stp	x7, x25,   [x0,#8*10]  	ret  -.def	__smul_383_n_shift_by_62;+.def	__smul_384_n_shift_by_62; .type	32; .endef .p2align	5-__smul_383_n_shift_by_62:+__smul_384_n_shift_by_62: 	ldp	x3, x4, [x1,#8*0+0]	// load |a| (or |b|) 	asr	x28, x15, #63		// |f0|'s sign as mask (or |g0|'s) 	ldp	x5, x6, [x1,#8*2+0]@@ -613,25 +664,27 @@ 	adcs	x6, x6, xzr 	umulh	x23, x4, x2 	eor	x8, x8, x28-	umulh	x24, x5, x2+	mul	x3, x3, x2 	adcs	x7, x7, xzr-	umulh	x25, x6, x2+	mul	x4, x4, x2 	adc	x8, x8, xzr -	umulh	x26, x7, x2-	smulh	x27, x8, x2-	mul	x3, x3, x2-	mul	x4, x4, x2-	mul	x5, x5, x2+	umulh	x24, x5, x2+	and	x28, x28, x2+	umulh	x25, x6, x2 	adds	x4, x4, x22+	mul	x5, x5, x2+	umulh	x22, x7, x2+	neg	x28, x28 	mul	x6, x6, x2 	adcs	x5, x5, x23+	umulh	x23, x8, x2 	mul	x7, x7, x2 	adcs	x6, x6, x24 	mul	x8, x8, x2 	adcs	x7, x7, x25-	adcs	x8, x8 ,x26-	adc	x27, x27, xzr+	adcs	x8, x8, x22+	adc	x27, x23, x28 	ldp	x9, x10, [x1,#8*0+48]	// load |a| (or |b|) 	asr	x28, x16, #63		// |f0|'s sign as mask (or |g0|'s) 	ldp	x11, x12, [x1,#8*2+48]@@ -651,25 +704,27 @@ 	adcs	x12, x12, xzr 	umulh	x23, x10, x2 	eor	x14, x14, x28-	umulh	x24, x11, x2+	mul	x9, x9, x2 	adcs	x13, x13, xzr-	umulh	x25, x12, x2+	mul	x10, x10, x2 	adc	x14, x14, xzr -	umulh	x26, x13, x2-	smulh	x28, x14, x2-	mul	x9, x9, x2-	mul	x10, x10, x2-	mul	x11, x11, x2+	umulh	x24, x11, x2+	and	x28, x28, x2+	umulh	x25, x12, x2 	adds	x10, x10, x22+	mul	x11, x11, x2+	umulh	x22, x13, x2+	neg	x28, x28 	mul	x12, x12, x2 	adcs	x11, x11, x23+	umulh	x23, x14, x2 	mul	x13, x13, x2 	adcs	x12, x12, x24 	mul	x14, x14, x2 	adcs	x13, x13, x25-	adcs	x14, x14 ,x26-	adc	x28, x28, xzr+	adcs	x14, x14, x22+	adc	x28, x23, x28 	adds	x3, x3, x9 	adcs	x4, x4, x10 	adcs	x5, x5, x11
c-source/build/coff/ct_is_square_mod_384-armv8.S view
@@ -7,7 +7,7 @@ .endef .p2align	5 ct_is_square_mod_384:-.long	3573752639+	hint	#25 	stp	x29, x30, [sp,#-16*__SIZEOF_POINTER__]! 	add	x29, sp, #0 	stp	x19, x20, [sp,#2*__SIZEOF_POINTER__]@@ -86,7 +86,7 @@ 	ldp	x25, x26, [x29,#8*__SIZEOF_POINTER__] 	ldp	x27, x28, [x29,#10*__SIZEOF_POINTER__] 	ldr	x29, [sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  
c-source/build/coff/ctq_inverse_mod_384-x86_64.s view
@@ -1,16 +1,16 @@ .comm	__blst_platform_cap,4 .text	 -.globl	ct_inverse_mod_383+.globl	ct_inverse_mod_384 -.def	ct_inverse_mod_383;	.scl 2;	.type 32;	.endef+.def	ct_inverse_mod_384;	.scl 2;	.type 32;	.endef .p2align	5-ct_inverse_mod_383:+ct_inverse_mod_384: 	.byte	0xf3,0x0f,0x1e,0xfa 	movq	%rdi,8(%rsp) 	movq	%rsi,16(%rsp) 	movq	%rsp,%r11-.LSEH_begin_ct_inverse_mod_383:+.LSEH_begin_ct_inverse_mod_384:   	movq	%rcx,%rdi@@ -19,7 +19,7 @@ 	movq	%r9,%rcx #ifdef __BLST_PORTABLE__ 	testl	$1,__blst_platform_cap(%rip)-	jnz	ct_inverse_mod_383$1+	jnz	ct_inverse_mod_384$1 #endif 	pushq	%rbp @@ -35,7 +35,7 @@  	subq	$1112,%rsp -.LSEH_body_ct_inverse_mod_383:+.LSEH_body_ct_inverse_mod_384:   	leaq	88+511(%rsp),%rax@@ -82,7 +82,7 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62   	movq	%rdx,96(%rdi)@@ -90,10 +90,10 @@ 	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62  -	movq	%rdx,96(%rdi)+	movq	%rdx,104(%rdi)   	xorq	$256,%rsi@@ -106,19 +106,19 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62    	movq	96(%rsi),%rax-	movq	144(%rsi),%r11+	movq	152(%rsi),%r11 	movq	%rdx,%rbx 	movq	%rax,%r10 	imulq	56(%rsp)@@ -135,6 +135,7 @@ 	movq	%r9,72(%rdi) 	movq	%r9,80(%rdi) 	movq	%r9,88(%rdi)+	movq	%r9,96(%rdi) 	leaq	96(%rsi),%rsi  	movq	%r10,%rax@@ -145,13 +146,14 @@ 	imulq	%rcx 	addq	%rax,%r8 	adcq	%rdx,%r9-	movq	%r8,96(%rdi)-	movq	%r9,104(%rdi)-	sarq	$63,%r9+	movq	%r8,104(%rdi) 	movq	%r9,112(%rdi)+	sarq	$63,%r9 	movq	%r9,120(%rdi) 	movq	%r9,128(%rdi) 	movq	%r9,136(%rdi)+	movq	%r9,144(%rdi)+	movq	%r9,152(%rdi) 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -162,14 +164,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -177,12 +179,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	leaq	56(%rdi),%rdi+	call	__smulq_384x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -193,14 +195,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -208,12 +210,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	leaq	56(%rdi),%rdi+	call	__smulq_384x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -224,14 +226,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -239,12 +241,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	leaq	56(%rdi),%rdi+	call	__smulq_384x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -255,14 +257,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -270,19 +272,17 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_383x63-	sarq	$63,%r13-	movq	%r13,48(%rdi)-	movq	%r13,56(%rdi)-	movq	%r13,64(%rdi)-	movq	%r13,72(%rdi)-	movq	%r13,80(%rdi)-	movq	%r13,88(%rdi)+	leaq	56(%rdi),%rdi+	call	__smulq_384x63+	movq	%r14,56(%rdi)+	movq	%r14,64(%rdi)+	movq	%r14,72(%rdi)+	movq	%r14,80(%rdi)+	movq	%r14,88(%rdi) 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -293,14 +293,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -308,12 +308,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_767x63+	leaq	56(%rdi),%rdi+	call	__smulq_768x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -324,14 +324,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -339,12 +339,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_767x63+	leaq	56(%rdi),%rdi+	call	__smulq_768x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -355,14 +355,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -370,12 +370,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_767x63+	leaq	56(%rdi),%rdi+	call	__smulq_768x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -386,14 +386,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -401,12 +401,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_767x63+	leaq	56(%rdi),%rdi+	call	__smulq_768x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -417,14 +417,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -432,12 +432,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_767x63+	leaq	56(%rdi),%rdi+	call	__smulq_768x63  	xorq	$256+96,%rsi 	movl	$62,%edi@@ -461,16 +461,16 @@  	leaq	96(%rsi),%rsi 	leaq	96(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_767x63+	leaq	56(%rdi),%rdi+	call	__smulq_768x63   	xorq	$256+96,%rsi-	movl	$22,%edi+	movl	$24,%edi  	movq	0(%rsi),%r8 	xorq	%r9,%r9@@ -493,37 +493,77 @@ 	movq	%r12,%rdx 	movq	%r13,%rcx 	movq	32(%rsp),%rdi-	call	__smulq_767x63+	call	__smulq_768x63  	movq	40(%rsp),%rsi-	movq	%rax,%rdx-	sarq	$63,%rax+	movq	%rdx,%r13+	sarq	$63,%r13 -	movq	%rax,%r8-	movq	%rax,%r9-	movq	%rax,%r10+	movq	%r13,%r8+	movq	%r13,%r9+	movq	%r13,%r10 	andq	0(%rsi),%r8 	andq	8(%rsi),%r9-	movq	%rax,%r11+	movq	%r13,%r11 	andq	16(%rsi),%r10 	andq	24(%rsi),%r11-	movq	%rax,%r12+	movq	%r13,%r12 	andq	32(%rsi),%r12-	andq	40(%rsi),%rax+	andq	40(%rsi),%r13  	addq	%r8,%r14 	adcq	%r9,%r15 	adcq	%r10,%rbx 	adcq	%r11,%rbp 	adcq	%r12,%rcx-	adcq	%rax,%rdx+	adcq	%r13,%rax+	adcq	$0,%rdx +	movq	%rdx,%r13+	negq	%rdx+	orq	%rdx,%r13+	sarq	$63,%rdx++	movq	%r13,%r8+	movq	%r13,%r9+	movq	%r13,%r10+	andq	0(%rsi),%r8+	andq	8(%rsi),%r9+	movq	%r13,%r11+	andq	16(%rsi),%r10+	andq	24(%rsi),%r11+	movq	%r13,%r12+	andq	32(%rsi),%r12+	andq	40(%rsi),%r13++	xorq	%rdx,%r8+	xorq	%rsi,%rsi+	xorq	%rdx,%r9+	subq	%rdx,%rsi+	xorq	%rdx,%r10+	xorq	%rdx,%r11+	xorq	%rdx,%r12+	xorq	%rdx,%r13+	addq	%rsi,%r8+	adcq	$0,%r9+	adcq	$0,%r10+	adcq	$0,%r11+	adcq	$0,%r12+	adcq	$0,%r13++	addq	%r8,%r14+	adcq	%r9,%r15+	adcq	%r10,%rbx+	adcq	%r11,%rbp+	adcq	%r12,%rcx+	adcq	%r13,%rax+ 	movq	%r14,48(%rdi) 	movq	%r15,56(%rdi) 	movq	%rbx,64(%rdi) 	movq	%rbp,72(%rdi) 	movq	%rcx,80(%rdi)-	movq	%rdx,88(%rdi)+	movq	%rax,88(%rdi)  	leaq	1112(%rsp),%r8 	movq	0(%r8),%r15@@ -540,7 +580,7 @@  	leaq	48(%r8),%rsp -.LSEH_epilogue_ct_inverse_mod_383:+.LSEH_epilogue_ct_inverse_mod_384: 	mov	8(%rsp),%rdi 	mov	16(%rsp),%rsi @@ -554,10 +594,10 @@ 	.byte	0xf3,0xc3 #endif -.LSEH_end_ct_inverse_mod_383:-.def	__smulq_767x63;	.scl 3;	.type 32;	.endef+.LSEH_end_ct_inverse_mod_384:+.def	__smulq_768x63;	.scl 3;	.type 32;	.endef .p2align	5-__smulq_767x63:+__smulq_768x63: 	.byte	0xf3,0x0f,0x1e,0xfa  	movq	0(%rsi),%r8@@ -566,6 +606,7 @@ 	movq	24(%rsi),%r11 	movq	32(%rsi),%r12 	movq	40(%rsi),%r13+	movq	48(%rsi),%r14  	movq	%rdx,%rbp 	sarq	$63,%rdx@@ -574,7 +615,7 @@  	movq	%rdi,8(%rsp) 	movq	%rsi,16(%rsp)-	leaq	48(%rsi),%rsi+	leaq	56(%rsi),%rsi  	xorq	%rdx,%rbp 	addq	%rax,%rbp@@ -585,16 +626,20 @@ 	xorq	%rdx,%r11 	xorq	%rdx,%r12 	xorq	%rdx,%r13+	xorq	%rdx,%r14 	addq	%r8,%rax 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12 	adcq	$0,%r13+	adcq	$0,%r14  	mulq	%rbp 	movq	%rax,0(%rdi) 	movq	%r9,%rax+	andq	%rbp,%r14+	negq	%r14 	movq	%rdx,%r9 	mulq	%rbp 	addq	%rax,%r9@@ -620,14 +665,14 @@ 	adcq	$0,%rdx 	movq	%rdx,%r13 	movq	%r12,32(%rdi)-	imulq	%rbp+	mulq	%rbp 	addq	%rax,%r13-	adcq	$0,%rdx+	adcq	%rdx,%r14  	movq	%r13,40(%rdi)-	movq	%rdx,48(%rdi)-	sarq	$63,%rdx-	movq	%rdx,56(%rdi)+	movq	%r14,48(%rdi)+	sarq	$63,%r14+	movq	%r14,56(%rdi) 	movq	%rcx,%rdx  	movq	0(%rsi),%r8@@ -730,39 +775,41 @@ 	movq	%rdi,%rax 	adcq	$0,%rdx 	movq	%rdx,%rdi-	movq	8(%rsp),%rdx-	imulq	%rsi,%rax-	movq	16(%rsp),%rsi+	imulq	%rsi+	movq	8(%rsp),%rsi 	addq	%rdi,%rax+	adcq	$0,%rdx -	addq	0(%rdx),%r8-	adcq	8(%rdx),%r9-	adcq	16(%rdx),%r10-	adcq	24(%rdx),%r11-	adcq	32(%rdx),%r12-	adcq	40(%rdx),%r13-	adcq	48(%rdx),%r14-	movq	56(%rdx),%rdi+	addq	0(%rsi),%r8+	adcq	8(%rsi),%r9+	adcq	16(%rsi),%r10+	adcq	24(%rsi),%r11+	adcq	32(%rsi),%r12+	adcq	40(%rsi),%r13+	adcq	48(%rsi),%r14+	movq	56(%rsi),%rdi 	adcq	%rdi,%r15 	adcq	%rdi,%rbx 	adcq	%rdi,%rbp 	adcq	%rdi,%rcx 	adcq	%rdi,%rax+	adcq	%rdi,%rdx -	movq	%rdx,%rdi+	leaq	(%rsi),%rdi+	movq	16(%rsp),%rsi -	movq	%r8,0(%rdx)-	movq	%r9,8(%rdx)-	movq	%r10,16(%rdx)-	movq	%r11,24(%rdx)-	movq	%r12,32(%rdx)-	movq	%r13,40(%rdx)-	movq	%r14,48(%rdx)-	movq	%r15,56(%rdx)-	movq	%rbx,64(%rdx)-	movq	%rbp,72(%rdx)-	movq	%rcx,80(%rdx)-	movq	%rax,88(%rdx)+	movq	%r8,0(%rdi)+	movq	%r9,8(%rdi)+	movq	%r10,16(%rdi)+	movq	%r11,24(%rdi)+	movq	%r12,32(%rdi)+	movq	%r13,40(%rdi)+	movq	%r14,48(%rdi)+	movq	%r15,56(%rdi)+	movq	%rbx,64(%rdi)+	movq	%rbp,72(%rdi)+	movq	%rcx,80(%rdi)+	movq	%rax,88(%rdi)  	 #ifdef	__SGX_LVI_HARDENING__@@ -774,9 +821,9 @@ 	.byte	0xf3,0xc3 #endif -.def	__smulq_383x63;	.scl 3;	.type 32;	.endef+.def	__smulq_384x63;	.scl 3;	.type 32;	.endef .p2align	5-__smulq_383x63:+__smulq_384x63: 	.byte	0xf3,0x0f,0x1e,0xfa  	movq	0(%rsi),%r8@@ -785,6 +832,7 @@ 	movq	24(%rsi),%r11 	movq	32(%rsi),%r12 	movq	40(%rsi),%r13+	movq	48(%rsi),%r14  	movq	%rdx,%rbp 	sarq	$63,%rdx@@ -800,16 +848,20 @@ 	xorq	%rdx,%r11 	xorq	%rdx,%r12 	xorq	%rdx,%r13+	xorq	%rdx,%r14 	addq	%r8,%rax 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12 	adcq	$0,%r13+	adcq	$0,%r14  	mulq	%rbp 	movq	%rax,%r8 	movq	%r9,%rax+	andq	%rbp,%r14+	negq	%r14 	movq	%rdx,%r9 	mulq	%rbp 	addq	%rax,%r9@@ -831,10 +883,11 @@ 	movq	%r13,%rax 	adcq	$0,%rdx 	movq	%rdx,%r13-	imulq	%rbp,%rax+	mulq	%rbp 	addq	%rax,%r13+	adcq	%rdx,%r14 -	leaq	48(%rsi),%rsi+	leaq	56(%rsi),%rsi 	movq	%rcx,%rdx  	movq	%r8,0(%rdi)@@ -842,13 +895,15 @@ 	movq	%r10,16(%rdi) 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi)-	movq	%r13,40(%rdi)+	movq	%r13,%r15+	movq	%r14,%rbx 	movq	0(%rsi),%r8 	movq	8(%rsi),%r9 	movq	16(%rsi),%r10 	movq	24(%rsi),%r11 	movq	32(%rsi),%r12 	movq	40(%rsi),%r13+	movq	48(%rsi),%r14  	movq	%rdx,%rbp 	sarq	$63,%rdx@@ -864,16 +919,20 @@ 	xorq	%rdx,%r11 	xorq	%rdx,%r12 	xorq	%rdx,%r13+	xorq	%rdx,%r14 	addq	%r8,%rax 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12 	adcq	$0,%r13+	adcq	$0,%r14  	mulq	%rbp 	movq	%rax,%r8 	movq	%r9,%rax+	andq	%rbp,%r14+	negq	%r14 	movq	%rdx,%r9 	mulq	%rbp 	addq	%rax,%r9@@ -895,17 +954,19 @@ 	movq	%r13,%rax 	adcq	$0,%rdx 	movq	%rdx,%r13-	imulq	%rbp,%rax+	mulq	%rbp 	addq	%rax,%r13+	adcq	%rdx,%r14 -	leaq	-48(%rsi),%rsi+	leaq	-56(%rsi),%rsi  	addq	0(%rdi),%r8 	adcq	8(%rdi),%r9 	adcq	16(%rdi),%r10 	adcq	24(%rdi),%r11 	adcq	32(%rdi),%r12-	adcq	40(%rdi),%r13+	adcq	%r15,%r13+	adcq	%rbx,%r14  	movq	%r8,0(%rdi) 	movq	%r9,8(%rdi)@@ -913,6 +974,7 @@ 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi) 	movq	%r13,40(%rdi)+	movq	%r14,48(%rdi)  	 #ifdef	__SGX_LVI_HARDENING__@@ -924,9 +986,9 @@ 	.byte	0xf3,0xc3 #endif -.def	__smulq_383_n_shift_by_62;	.scl 3;	.type 32;	.endef+.def	__smulq_384_n_shift_by_62;	.scl 3;	.type 32;	.endef .p2align	5-__smulq_383_n_shift_by_62:+__smulq_384_n_shift_by_62: 	.byte	0xf3,0x0f,0x1e,0xfa  	movq	%rdx,%rbx@@ -951,6 +1013,7 @@ 	xorq	%rdx,%r11 	xorq	%rdx,%r12 	xorq	%rdx,%r13+	movq	%rdx,%r14 	addq	%r8,%rax 	adcq	$0,%r9 	adcq	$0,%r10@@ -961,6 +1024,8 @@ 	mulq	%rbp 	movq	%rax,%r8 	movq	%r9,%rax+	andq	%rbp,%r14+	negq	%r14 	movq	%rdx,%r9 	mulq	%rbp 	addq	%rax,%r9@@ -982,12 +1047,11 @@ 	movq	%r13,%rax 	adcq	$0,%rdx 	movq	%rdx,%r13-	imulq	%rbp+	mulq	%rbp 	addq	%rax,%r13-	adcq	$0,%rdx+	adcq	%rdx,%r14  	leaq	48(%rsi),%rsi-	movq	%rdx,%r14 	movq	%rcx,%rdx  	movq	%r8,0(%rdi)@@ -1017,6 +1081,7 @@ 	xorq	%rdx,%r11 	xorq	%rdx,%r12 	xorq	%rdx,%r13+	movq	%rdx,%r15 	addq	%r8,%rax 	adcq	$0,%r9 	adcq	$0,%r10@@ -1027,6 +1092,8 @@ 	mulq	%rbp 	movq	%rax,%r8 	movq	%r9,%rax+	andq	%rbp,%r15+	negq	%r15 	movq	%rdx,%r9 	mulq	%rbp 	addq	%rax,%r9@@ -1048,11 +1115,12 @@ 	movq	%r13,%rax 	adcq	$0,%rdx 	movq	%rdx,%r13-	imulq	%rbp+	mulq	%rbp 	addq	%rax,%r13-	adcq	$0,%rdx+	adcq	%rdx,%r15  	leaq	-48(%rsi),%rsi+	movq	%rbx,%rdx  	addq	0(%rdi),%r8 	adcq	8(%rdi),%r9@@ -1060,8 +1128,7 @@ 	adcq	24(%rdi),%r11 	adcq	32(%rdi),%r12 	adcq	40(%rdi),%r13-	adcq	%rdx,%r14-	movq	%rbx,%rdx+	adcq	%r15,%r14  	shrdq	$62,%r9,%r8 	shrdq	$62,%r10,%r9@@ -1236,28 +1303,28 @@  .section	.pdata .p2align	2-.rva	.LSEH_begin_ct_inverse_mod_383-.rva	.LSEH_body_ct_inverse_mod_383-.rva	.LSEH_info_ct_inverse_mod_383_prologue+.rva	.LSEH_begin_ct_inverse_mod_384+.rva	.LSEH_body_ct_inverse_mod_384+.rva	.LSEH_info_ct_inverse_mod_384_prologue -.rva	.LSEH_body_ct_inverse_mod_383-.rva	.LSEH_epilogue_ct_inverse_mod_383-.rva	.LSEH_info_ct_inverse_mod_383_body+.rva	.LSEH_body_ct_inverse_mod_384+.rva	.LSEH_epilogue_ct_inverse_mod_384+.rva	.LSEH_info_ct_inverse_mod_384_body -.rva	.LSEH_epilogue_ct_inverse_mod_383-.rva	.LSEH_end_ct_inverse_mod_383-.rva	.LSEH_info_ct_inverse_mod_383_epilogue+.rva	.LSEH_epilogue_ct_inverse_mod_384+.rva	.LSEH_end_ct_inverse_mod_384+.rva	.LSEH_info_ct_inverse_mod_384_epilogue  .section	.xdata .p2align	3-.LSEH_info_ct_inverse_mod_383_prologue:+.LSEH_info_ct_inverse_mod_384_prologue: .byte	1,0,5,0x0b .byte	0,0x74,1,0 .byte	0,0x64,2,0 .byte	0,0xb3 .byte	0,0 .long	0,0-.LSEH_info_ct_inverse_mod_383_body:+.LSEH_info_ct_inverse_mod_384_body: .byte	1,0,18,0 .byte	0x00,0xf4,0x8b,0x00 .byte	0x00,0xe4,0x8c,0x00@@ -1270,7 +1337,7 @@ .byte	0x00,0x01,0x91,0x00 .byte	0x00,0x00,0x00,0x00 .byte	0x00,0x00,0x00,0x00-.LSEH_info_ct_inverse_mod_383_epilogue:+.LSEH_info_ct_inverse_mod_384_epilogue: .byte	1,0,4,0 .byte	0x00,0x74,0x01,0x00 .byte	0x00,0x64,0x02,0x00
c-source/build/coff/ctx_inverse_mod_384-x86_64.s view
@@ -1,22 +1,22 @@ .text	 -.globl	ctx_inverse_mod_383+.globl	ctx_inverse_mod_384 -.def	ctx_inverse_mod_383;	.scl 2;	.type 32;	.endef+.def	ctx_inverse_mod_384;	.scl 2;	.type 32;	.endef .p2align	5-ctx_inverse_mod_383:+ctx_inverse_mod_384: 	.byte	0xf3,0x0f,0x1e,0xfa 	movq	%rdi,8(%rsp) 	movq	%rsi,16(%rsp) 	movq	%rsp,%r11-.LSEH_begin_ctx_inverse_mod_383:+.LSEH_begin_ctx_inverse_mod_384:   	movq	%rcx,%rdi 	movq	%rdx,%rsi 	movq	%r8,%rdx 	movq	%r9,%rcx-ct_inverse_mod_383$1:+ct_inverse_mod_384$1: 	pushq	%rbp  	pushq	%rbx@@ -31,7 +31,7 @@  	subq	$1112,%rsp -.LSEH_body_ctx_inverse_mod_383:+.LSEH_body_ctx_inverse_mod_384:   	leaq	88+511(%rsp),%rax@@ -81,7 +81,7 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31   	movq	%rdx,96(%rdi)@@ -89,10 +89,10 @@ 	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31  -	movq	%rdx,96(%rdi)+	movq	%rdx,104(%rdi)   	xorq	$256,%rsi@@ -105,19 +105,19 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31    	movq	96(%rsi),%rax-	movq	144(%rsi),%r11+	movq	152(%rsi),%r11 	movq	%rdx,%rbx 	movq	%rax,%r10 	imulq	56(%rsp)@@ -134,6 +134,7 @@ 	movq	%r9,72(%rdi) 	movq	%r9,80(%rdi) 	movq	%r9,88(%rdi)+	movq	%r9,96(%rdi) 	leaq	96(%rsi),%rsi  	movq	%r10,%rax@@ -144,13 +145,14 @@ 	imulq	%rcx 	addq	%rax,%r8 	adcq	%rdx,%r9-	movq	%r8,96(%rdi)-	movq	%r9,104(%rdi)-	sarq	$63,%r9+	movq	%r8,104(%rdi) 	movq	%r9,112(%rdi)+	sarq	$63,%r9 	movq	%r9,120(%rdi) 	movq	%r9,128(%rdi) 	movq	%r9,136(%rdi)+	movq	%r9,144(%rdi)+	movq	%r9,152(%rdi) 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -161,14 +163,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -176,12 +178,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -192,14 +194,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -207,12 +209,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -223,14 +225,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -238,12 +240,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -254,14 +256,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -269,12 +271,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -285,14 +287,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -300,12 +302,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -316,14 +318,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -331,12 +333,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -347,14 +349,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -362,12 +364,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -378,14 +380,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -393,12 +395,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -409,14 +411,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -424,12 +426,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -440,14 +442,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -455,19 +457,17 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63-	sarq	$63,%r13-	movq	%r13,48(%rdi)-	movq	%r13,56(%rdi)-	movq	%r13,64(%rdi)-	movq	%r13,72(%rdi)-	movq	%r13,80(%rdi)-	movq	%r13,88(%rdi)+	leaq	56(%rdi),%rdi+	call	__smulx_384x63+	movq	%r14,56(%rdi)+	movq	%r14,64(%rdi)+	movq	%r14,72(%rdi)+	movq	%r14,80(%rdi)+	movq	%r14,88(%rdi) 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -478,14 +478,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -493,12 +493,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -509,14 +509,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -524,12 +524,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -540,14 +540,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -555,12 +555,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -571,14 +571,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -586,12 +586,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -602,14 +602,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -617,12 +617,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -633,14 +633,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -648,12 +648,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -664,14 +664,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -679,12 +679,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -710,12 +710,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -741,12 +741,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -772,12 +772,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -803,21 +803,21 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63  	xorq	$256+96,%rsi-	movl	$53,%edi+	movl	$55,%edi  	movq	0(%rsi),%r8  	movq	48(%rsi),%r10 -	call	__tail_loop_53+	call	__tail_loop_55   @@ -834,40 +834,80 @@ 	movq	%r12,%rdx 	movq	%r13,%rcx 	movq	32(%rsp),%rdi-	call	__smulx_767x63+	call	__smulx_768x63  	movq	40(%rsp),%rsi-	movq	%rax,%rdx-	sarq	$63,%rax+	movq	%rdx,%r13+	sarq	$63,%r13 -	movq	%rax,%r8-	movq	%rax,%r9-	movq	%rax,%r10+	movq	%r13,%r8+	movq	%r13,%r9+	movq	%r13,%r10 #ifdef	__SGX_LVI_HARDENING__ 	lfence #endif 	andq	0(%rsi),%r8 	andq	8(%rsi),%r9-	movq	%rax,%r11+	movq	%r13,%r11 	andq	16(%rsi),%r10 	andq	24(%rsi),%r11-	movq	%rax,%r12+	movq	%r13,%r12 	andq	32(%rsi),%r12-	andq	40(%rsi),%rax+	andq	40(%rsi),%r13  	addq	%r8,%r14 	adcq	%r9,%r15 	adcq	%r10,%rbx 	adcq	%r11,%rbp 	adcq	%r12,%rcx-	adcq	%rax,%rdx+	adcq	%r13,%rax+	adcq	$0,%rdx +	movq	%rdx,%r13+	negq	%rdx+	orq	%rdx,%r13+	sarq	$63,%rdx++	movq	%r13,%r8+	movq	%r13,%r9+	movq	%r13,%r10+	andq	0(%rsi),%r8+	andq	8(%rsi),%r9+	movq	%r13,%r11+	andq	16(%rsi),%r10+	andq	24(%rsi),%r11+	movq	%r13,%r12+	andq	32(%rsi),%r12+	andq	40(%rsi),%r13++	xorq	%rdx,%r8+	xorq	%rsi,%rsi+	xorq	%rdx,%r9+	subq	%rdx,%rsi+	xorq	%rdx,%r10+	xorq	%rdx,%r11+	xorq	%rdx,%r12+	xorq	%rdx,%r13+	addq	%rsi,%r8+	adcq	$0,%r9+	adcq	$0,%r10+	adcq	$0,%r11+	adcq	$0,%r12+	adcq	$0,%r13++	addq	%r8,%r14+	adcq	%r9,%r15+	adcq	%r10,%rbx+	adcq	%r11,%rbp+	adcq	%r12,%rcx+	adcq	%r13,%rax+ 	movq	%r14,48(%rdi) 	movq	%r15,56(%rdi) 	movq	%rbx,64(%rdi) 	movq	%rbp,72(%rdi) 	movq	%rcx,80(%rdi)-	movq	%rdx,88(%rdi)+	movq	%rax,88(%rdi)  	leaq	1112(%rsp),%r8 	movq	0(%r8),%r15@@ -884,7 +924,7 @@  	leaq	48(%r8),%rsp -.LSEH_epilogue_ctx_inverse_mod_383:+.LSEH_epilogue_ctx_inverse_mod_384: 	mov	8(%rsp),%rdi 	mov	16(%rsp),%rsi @@ -898,10 +938,10 @@ 	.byte	0xf3,0xc3 #endif -.LSEH_end_ctx_inverse_mod_383:-.def	__smulx_767x63;	.scl 3;	.type 32;	.endef+.LSEH_end_ctx_inverse_mod_384:+.def	__smulx_768x63;	.scl 3;	.type 32;	.endef .p2align	5-__smulx_767x63:+__smulx_768x63: 	.byte	0xf3,0x0f,0x1e,0xfa  	movq	0(%rsi),%r8@@ -910,6 +950,7 @@ 	movq	24(%rsi),%r11 	movq	32(%rsi),%r12 	movq	40(%rsi),%r13+	movq	48(%rsi),%r14  	movq	%rdx,%rax 	sarq	$63,%rax@@ -918,7 +959,7 @@  	movq	%rdi,8(%rsp) 	movq	%rsi,16(%rsp)-	leaq	48(%rsi),%rsi+	leaq	56(%rsi),%rsi  	xorq	%rax,%rdx 	addq	%rbp,%rdx@@ -928,37 +969,41 @@ 	xorq	%rax,%r10 	xorq	%rax,%r11 	xorq	%rax,%r12-	xorq	%r13,%rax+	xorq	%rax,%r13+	xorq	%rax,%r14 	addq	%rbp,%r8 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12-	adcq	$0,%rax+	adcq	$0,%r13+	adcq	$0,%r14 +	andq	%rdx,%r14+	negq	%r14+ 	mulxq	%r8,%r8,%rbp-	mulxq	%r9,%r9,%r13+	mulxq	%r9,%r9,%rax 	addq	%rbp,%r9 	mulxq	%r10,%r10,%rbp-	adcq	%r13,%r10-	mulxq	%r11,%r11,%r13+	adcq	%rax,%r10+	mulxq	%r11,%r11,%rax 	adcq	%rbp,%r11 	mulxq	%r12,%r12,%rbp-	adcq	%r13,%r12-	adcq	$0,%rbp-	imulq	%rdx-	addq	%rbp,%rax-	adcq	$0,%rdx+	adcq	%rax,%r12+	mulxq	%r13,%r13,%rax+	adcq	%rbp,%r13+	adcq	%rax,%r14  	movq	%r8,0(%rdi) 	movq	%r9,8(%rdi) 	movq	%r10,16(%rdi) 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi)-	movq	%rax,40(%rdi)-	movq	%rdx,48(%rdi)-	sarq	$63,%rdx-	movq	%rdx,56(%rdi)+	movq	%r13,40(%rdi)+	movq	%r14,48(%rdi)+	sarq	$63,%r14+	movq	%r14,56(%rdi) 	movq	%rcx,%rdx 	movq	%rcx,%rax @@ -993,7 +1038,7 @@ 	xorq	%rax,%rbx 	xorq	%rax,%rbp 	xorq	%rax,%rcx-	xorq	%rax,%rdi+	xorq	%rdi,%rax 	addq	%rsi,%r8 	adcq	$0,%r9 	adcq	$0,%r10@@ -1005,63 +1050,65 @@ 	adcq	$0,%rbx 	adcq	$0,%rbp 	adcq	$0,%rcx-	adcq	$0,%rdi--	mulxq	%r8,%r8,%rax-	mulxq	%r9,%r9,%rsi-	addq	%rax,%r9-	mulxq	%r10,%r10,%rax-	adcq	%rsi,%r10-	mulxq	%r11,%r11,%rsi-	adcq	%rax,%r11-	mulxq	%r12,%r12,%rax-	adcq	%rsi,%r12-	mulxq	%r13,%r13,%rsi-	adcq	%rax,%r13-	mulxq	%r14,%r14,%rax-	adcq	%rsi,%r14-	mulxq	%r15,%r15,%rsi-	adcq	%rax,%r15-	mulxq	%rbx,%rbx,%rax-	adcq	%rsi,%rbx-	mulxq	%rbp,%rbp,%rsi-	adcq	%rax,%rbp-	mulxq	%rcx,%rcx,%rax-	adcq	%rsi,%rcx-	mulxq	%rdi,%rdi,%rsi-	movq	8(%rsp),%rdx-	movq	16(%rsp),%rsi-	adcq	%rdi,%rax+	adcq	$0,%rax -	addq	0(%rdx),%r8-	adcq	8(%rdx),%r9-	adcq	16(%rdx),%r10-	adcq	24(%rdx),%r11-	adcq	32(%rdx),%r12-	adcq	40(%rdx),%r13-	adcq	48(%rdx),%r14-	movq	56(%rdx),%rdi-	adcq	%rdi,%r15+	mulxq	%r8,%r8,%rsi+	mulxq	%r9,%r9,%rdi+	addq	%rsi,%r9+	mulxq	%r10,%r10,%rsi+	adcq	%rdi,%r10+	mulxq	%r11,%r11,%rdi+	adcq	%rsi,%r11+	mulxq	%r12,%r12,%rsi+	adcq	%rdi,%r12+	mulxq	%r13,%r13,%rdi+	adcq	%rsi,%r13+	mulxq	%r14,%r14,%rsi+	adcq	%rdi,%r14+	mulxq	%r15,%r15,%rdi+	adcq	%rsi,%r15+	mulxq	%rbx,%rbx,%rsi 	adcq	%rdi,%rbx-	adcq	%rdi,%rbp+	mulxq	%rbp,%rbp,%rdi+	adcq	%rsi,%rbp+	mulxq	%rcx,%rcx,%rsi 	adcq	%rdi,%rcx-	adcq	%rdi,%rax+	movq	8(%rsp),%rdi+	adcq	$0,%rsi+	imulq	%rdx+	addq	%rsi,%rax+	adcq	$0,%rdx -	movq	%rdx,%rdi+	addq	0(%rdi),%r8+	adcq	8(%rdi),%r9+	adcq	16(%rdi),%r10+	adcq	24(%rdi),%r11+	adcq	32(%rdi),%r12+	adcq	40(%rdi),%r13+	adcq	48(%rdi),%r14+	movq	56(%rdi),%rsi+	adcq	%rsi,%r15+	adcq	%rsi,%rbx+	adcq	%rsi,%rbp+	adcq	%rsi,%rcx+	adcq	%rsi,%rax+	adcq	%rsi,%rdx -	movq	%r8,0(%rdx)-	movq	%r9,8(%rdx)-	movq	%r10,16(%rdx)-	movq	%r11,24(%rdx)-	movq	%r12,32(%rdx)-	movq	%r13,40(%rdx)-	movq	%r14,48(%rdx)-	movq	%r15,56(%rdx)-	movq	%rbx,64(%rdx)-	movq	%rbp,72(%rdx)-	movq	%rcx,80(%rdx)-	movq	%rax,88(%rdx)+	movq	16(%rsp),%rsi +	movq	%r8,0(%rdi)+	movq	%r9,8(%rdi)+	movq	%r10,16(%rdi)+	movq	%r11,24(%rdi)+	movq	%r12,32(%rdi)+	movq	%r13,40(%rdi)+	movq	%r14,48(%rdi)+	movq	%r15,56(%rdi)+	movq	%rbx,64(%rdi)+	movq	%rbp,72(%rdi)+	movq	%rcx,80(%rdi)+	movq	%rax,88(%rdi)+ 	 #ifdef	__SGX_LVI_HARDENING__ 	popq	%r8@@ -1072,9 +1119,9 @@ 	.byte	0xf3,0xc3 #endif -.def	__smulx_383x63;	.scl 3;	.type 32;	.endef+.def	__smulx_384x63;	.scl 3;	.type 32;	.endef .p2align	5-__smulx_383x63:+__smulx_384x63: 	.byte	0xf3,0x0f,0x1e,0xfa  	movq	0+0(%rsi),%r8@@ -1083,6 +1130,7 @@ 	movq	0+24(%rsi),%r11 	movq	0+32(%rsi),%r12 	movq	0+40(%rsi),%r13+	movq	0+48(%rsi),%r14  	movq	%rdx,%rbp 	sarq	$63,%rbp@@ -1098,13 +1146,18 @@ 	xorq	%rbp,%r11 	xorq	%rbp,%r12 	xorq	%rbp,%r13+	xorq	%rbp,%r14 	addq	%rax,%r8 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12 	adcq	$0,%r13+	adcq	$0,%r14 +	andq	%rdx,%r14+	negq	%r14+ 	mulxq	%r8,%r8,%rbp 	mulxq	%r9,%r9,%rax 	addq	%rbp,%r9@@ -1117,19 +1170,22 @@ 	mulxq	%r13,%r13,%rax 	movq	%rcx,%rdx 	adcq	%rbp,%r13+	adcq	%rax,%r14  	movq	%r8,0(%rdi) 	movq	%r9,8(%rdi) 	movq	%r10,16(%rdi) 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi)-	movq	%r13,40(%rdi)-	movq	48+0(%rsi),%r8-	movq	48+8(%rsi),%r9-	movq	48+16(%rsi),%r10-	movq	48+24(%rsi),%r11-	movq	48+32(%rsi),%r12-	movq	48+40(%rsi),%r13+	movq	%r13,%r15+	movq	%r14,%rbx+	movq	56+0(%rsi),%r8+	movq	56+8(%rsi),%r9+	movq	56+16(%rsi),%r10+	movq	56+24(%rsi),%r11+	movq	56+32(%rsi),%r12+	movq	56+40(%rsi),%r13+	movq	56+48(%rsi),%r14  	movq	%rdx,%rbp 	sarq	$63,%rbp@@ -1145,13 +1201,18 @@ 	xorq	%rbp,%r11 	xorq	%rbp,%r12 	xorq	%rbp,%r13+	xorq	%rbp,%r14 	addq	%rax,%r8 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12 	adcq	$0,%r13+	adcq	$0,%r14 +	andq	%rdx,%r14+	negq	%r14+ 	mulxq	%r8,%r8,%rbp 	mulxq	%r9,%r9,%rax 	addq	%rbp,%r9@@ -1163,13 +1224,15 @@ 	adcq	%rax,%r12 	mulxq	%r13,%r13,%rax 	adcq	%rbp,%r13+	adcq	%rax,%r14  	addq	0(%rdi),%r8 	adcq	8(%rdi),%r9 	adcq	16(%rdi),%r10 	adcq	24(%rdi),%r11 	adcq	32(%rdi),%r12-	adcq	40(%rdi),%r13+	adcq	%r15,%r13+	adcq	%rbx,%r14  	movq	%r8,0(%rdi) 	movq	%r9,8(%rdi)@@ -1177,6 +1240,7 @@ 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi) 	movq	%r13,40(%rdi)+	movq	%r14,48(%rdi)  	 #ifdef	__SGX_LVI_HARDENING__@@ -1188,13 +1252,12 @@ 	.byte	0xf3,0xc3 #endif -.def	__smulx_383_n_shift_by_31;	.scl 3;	.type 32;	.endef+.def	__smulx_384_n_shift_by_31;	.scl 3;	.type 32;	.endef .p2align	5-__smulx_383_n_shift_by_31:+__smulx_384_n_shift_by_31: 	.byte	0xf3,0x0f,0x1e,0xfa  	movq	%rdx,%rbx-	xorq	%r14,%r14 	movq	0+0(%rsi),%r8 	movq	0+8(%rsi),%r9 	movq	0+16(%rsi),%r10@@ -1215,27 +1278,29 @@ 	xorq	%rax,%r10 	xorq	%rax,%r11 	xorq	%rax,%r12-	xorq	%r13,%rax+	xorq	%rax,%r13 	addq	%rbp,%r8 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12-	adcq	$0,%rax+	adcq	$0,%r13 +	andq	%rdx,%rax+	negq	%rax+ 	mulxq	%r8,%r8,%rbp-	mulxq	%r9,%r9,%r13+	mulxq	%r9,%r9,%r14 	addq	%rbp,%r9 	mulxq	%r10,%r10,%rbp-	adcq	%r13,%r10-	mulxq	%r11,%r11,%r13+	adcq	%r14,%r10+	mulxq	%r11,%r11,%r14 	adcq	%rbp,%r11 	mulxq	%r12,%r12,%rbp-	adcq	%r13,%r12-	adcq	$0,%rbp-	imulq	%rdx-	addq	%rbp,%rax-	adcq	%rdx,%r14+	adcq	%r14,%r12+	mulxq	%r13,%r13,%r14+	adcq	%rbp,%r13+	adcq	%rax,%r14  	movq	%rcx,%rdx @@ -1244,7 +1309,8 @@ 	movq	%r10,16(%rdi) 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi)-	movq	%rax,40(%rdi)+	movq	%r13,40(%rdi)+	movq	%r14,%r15 	movq	48+0(%rsi),%r8 	movq	48+8(%rsi),%r9 	movq	48+16(%rsi),%r10@@ -1265,43 +1331,45 @@ 	xorq	%rax,%r10 	xorq	%rax,%r11 	xorq	%rax,%r12-	xorq	%r13,%rax+	xorq	%rax,%r13 	addq	%rbp,%r8 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12-	adcq	$0,%rax+	adcq	$0,%r13 +	andq	%rdx,%rax+	negq	%rax+ 	mulxq	%r8,%r8,%rbp-	mulxq	%r9,%r9,%r13+	mulxq	%r9,%r9,%r14 	addq	%rbp,%r9 	mulxq	%r10,%r10,%rbp-	adcq	%r13,%r10-	mulxq	%r11,%r11,%r13+	adcq	%r14,%r10+	mulxq	%r11,%r11,%r14 	adcq	%rbp,%r11 	mulxq	%r12,%r12,%rbp-	adcq	%r13,%r12-	adcq	$0,%rbp-	imulq	%rdx-	addq	%rbp,%rax-	adcq	$0,%rdx+	adcq	%r14,%r12+	mulxq	%r13,%r13,%r14+	adcq	%rbp,%r13+	adcq	%rax,%r14  	addq	0(%rdi),%r8 	adcq	8(%rdi),%r9 	adcq	16(%rdi),%r10 	adcq	24(%rdi),%r11 	adcq	32(%rdi),%r12-	adcq	40(%rdi),%rax-	adcq	%rdx,%r14+	adcq	40(%rdi),%r13+	adcq	%r15,%r14 	movq	%rbx,%rdx  	shrdq	$31,%r9,%r8 	shrdq	$31,%r10,%r9 	shrdq	$31,%r11,%r10 	shrdq	$31,%r12,%r11-	shrdq	$31,%rax,%r12-	shrdq	$31,%r14,%rax+	shrdq	$31,%r13,%r12+	shrdq	$31,%r14,%r13  	sarq	$63,%r14 	xorq	%rbp,%rbp@@ -1312,20 +1380,20 @@ 	xorq	%r14,%r10 	xorq	%r14,%r11 	xorq	%r14,%r12-	xorq	%r14,%rax+	xorq	%r14,%r13 	addq	%rbp,%r8 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12-	adcq	$0,%rax+	adcq	$0,%r13  	movq	%r8,0(%rdi) 	movq	%r9,8(%rdi) 	movq	%r10,16(%rdi) 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi)-	movq	%rax,40(%rdi)+	movq	%r13,40(%rdi)  	xorq	%r14,%rdx 	xorq	%r14,%rcx@@ -1578,9 +1646,9 @@ #endif  -.def	__tail_loop_53;	.scl 3;	.type 32;	.endef+.def	__tail_loop_55;	.scl 3;	.type 32;	.endef .p2align	5-__tail_loop_53:+__tail_loop_55: 	.byte	0xf3,0x0f,0x1e,0xfa  	movq	$1,%rdx@@ -1588,7 +1656,7 @@ 	xorq	%r12,%r12 	movq	$1,%r13 -.Loop_53:+.Loop_55: 	xorq	%rax,%rax 	testq	$1,%r8 	movq	%r10,%rbx@@ -1615,7 +1683,7 @@ 	subq	%rax,%rdx 	subq	%rbx,%rcx 	subl	$1,%edi-	jnz	.Loop_53+	jnz	.Loop_55  	 #ifdef	__SGX_LVI_HARDENING__@@ -1629,28 +1697,28 @@  .section	.pdata .p2align	2-.rva	.LSEH_begin_ctx_inverse_mod_383-.rva	.LSEH_body_ctx_inverse_mod_383-.rva	.LSEH_info_ctx_inverse_mod_383_prologue+.rva	.LSEH_begin_ctx_inverse_mod_384+.rva	.LSEH_body_ctx_inverse_mod_384+.rva	.LSEH_info_ctx_inverse_mod_384_prologue -.rva	.LSEH_body_ctx_inverse_mod_383-.rva	.LSEH_epilogue_ctx_inverse_mod_383-.rva	.LSEH_info_ctx_inverse_mod_383_body+.rva	.LSEH_body_ctx_inverse_mod_384+.rva	.LSEH_epilogue_ctx_inverse_mod_384+.rva	.LSEH_info_ctx_inverse_mod_384_body -.rva	.LSEH_epilogue_ctx_inverse_mod_383-.rva	.LSEH_end_ctx_inverse_mod_383-.rva	.LSEH_info_ctx_inverse_mod_383_epilogue+.rva	.LSEH_epilogue_ctx_inverse_mod_384+.rva	.LSEH_end_ctx_inverse_mod_384+.rva	.LSEH_info_ctx_inverse_mod_384_epilogue  .section	.xdata .p2align	3-.LSEH_info_ctx_inverse_mod_383_prologue:+.LSEH_info_ctx_inverse_mod_384_prologue: .byte	1,0,5,0x0b .byte	0,0x74,1,0 .byte	0,0x64,2,0 .byte	0,0xb3 .byte	0,0 .long	0,0-.LSEH_info_ctx_inverse_mod_383_body:+.LSEH_info_ctx_inverse_mod_384_body: .byte	1,0,18,0 .byte	0x00,0xf4,0x8b,0x00 .byte	0x00,0xe4,0x8c,0x00@@ -1663,7 +1731,7 @@ .byte	0x00,0x01,0x91,0x00 .byte	0x00,0x00,0x00,0x00 .byte	0x00,0x00,0x00,0x00-.LSEH_info_ctx_inverse_mod_383_epilogue:+.LSEH_info_ctx_inverse_mod_384_epilogue: .byte	1,0,4,0 .byte	0x00,0x74,0x01,0x00 .byte	0x00,0x64,0x02,0x00
c-source/build/coff/div3w-armv8.S view
@@ -7,6 +7,7 @@ .endef .p2align	5 div_3_limbs:+	hint	#34 	ldp	x4,x5,[x0]	// load R 	eor	x0,x0,x0	// Q = 0 	mov	x3,#64		// loop counter@@ -43,6 +44,7 @@ .endef .p2align	5 quot_rem_128:+	hint	#34 	ldp	x3,x4,[x1]  	mul	x5,x3,x2	// divisor[0:1} * quotient@@ -82,6 +84,7 @@ .endef .p2align	5 quot_rem_64:+	hint	#34 	ldr	x3,[x1] 	ldr	x8,[x0]	// load 1 limb of the dividend 
c-source/build/coff/mul_mont_256-armv8.S view
@@ -7,6 +7,7 @@ .endef .p2align	5 mul_mont_sparse_256:+	hint	#34 	stp	x29,x30,[sp,#-8*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -200,7 +201,7 @@ .endef .p2align	5 sqr_mont_sparse_256:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -301,7 +302,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  .globl	from_mont_256@@ -311,7 +312,7 @@ .endef .p2align	5 from_mont_256:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-2*__SIZEOF_POINTER__]! 	add	x29,sp,#0 @@ -336,7 +337,7 @@ 	stp	x12,x13,[x0,#16]  	ldr	x29,[sp],#2*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -347,7 +348,7 @@ .endef .p2align	5 redc_mont_256:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-2*__SIZEOF_POINTER__]! 	add	x29,sp,#0 @@ -382,7 +383,7 @@ 	stp	x12,x13,[x0,#16]  	ldr	x29,[sp],#2*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  
c-source/build/coff/mul_mont_384-armv8.S view
@@ -1,12 +1,13 @@ .text  .globl	add_mod_384x384+ .def	add_mod_384x384; .type	32; .endef .p2align	5 add_mod_384x384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-8*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -24,7 +25,7 @@ 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldp	x23,x24,[x29,#6*__SIZEOF_POINTER__] 	ldr	x29,[sp],#8*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -86,12 +87,13 @@   .globl	sub_mod_384x384+ .def	sub_mod_384x384; .type	32; .endef .p2align	5 sub_mod_384x384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-8*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -109,7 +111,7 @@ 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldp	x23,x24,[x29,#6*__SIZEOF_POINTER__] 	ldr	x29,[sp],#8*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -253,7 +255,7 @@ .endef .p2align	5 mul_mont_384x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -326,7 +328,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -337,7 +339,7 @@ .endef .p2align	5 sqr_mont_384x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -413,7 +415,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -424,7 +426,7 @@ .endef .p2align	5 mul_mont_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -456,7 +458,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -841,7 +843,7 @@ .endef .p2align	5 sqr_mont_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -878,7 +880,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -889,7 +891,7 @@ .endef .p2align	5 sqr_n_mul_mont_383:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -945,7 +947,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  .def	__sqr_384;@@ -1070,7 +1072,7 @@ .endef .p2align	5 sqr_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1092,7 +1094,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -1103,7 +1105,7 @@ .endef .p2align	5 redc_mont_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1127,7 +1129,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -1138,7 +1140,7 @@ .endef .p2align	5 from_mont_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1179,7 +1181,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -1403,7 +1405,7 @@ .endef .p2align	5 mul_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1421,7 +1423,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -1611,7 +1613,7 @@ .endef .p2align	5 mul_382x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1693,7 +1695,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -1704,7 +1706,7 @@ .endef .p2align	5 sqr_382x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1795,7 +1797,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -1806,7 +1808,7 @@ .endef .p2align	5 sqr_mont_382x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1921,7 +1923,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -2274,7 +2276,7 @@ .endef .p2align	5 sgn0_pty_mont_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -2319,7 +2321,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -2330,7 +2332,7 @@ .endef .p2align	5 sgn0_pty_mont_384x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -2419,6 +2421,6 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret 
c-source/build/coff/sha256-armv8.S view
@@ -43,11 +43,13 @@ .align	2 .p2align	2 .globl	blst_sha256_block_armv8+ .def	blst_sha256_block_armv8; .type	32; .endef .p2align	6 blst_sha256_block_armv8:+	hint	#34 .Lv8_entry: 	stp	x29,x30,[sp,#-2*__SIZEOF_POINTER__]! 	add	x29,sp,#0@@ -184,11 +186,13 @@ 	ret  .globl	blst_sha256_block_data_order+ .def	blst_sha256_block_data_order; .type	32; .endef .p2align	4 blst_sha256_block_data_order:+	hint	#34 	adrp	x16,__blst_platform_cap 	ldr	w16,[x16,#:lo12:__blst_platform_cap] 	tst	w16,#1@@ -1040,6 +1044,7 @@ .endef .p2align	4 blst_sha256_emit:+	hint	#34 	ldp	x4,x5,[x1] 	ldp	x6,x7,[x1,#16] #ifndef	__AARCH64EB__@@ -1070,6 +1075,7 @@ .endef .p2align	4 blst_sha256_bcopy:+	hint	#34 .Loop_bcopy: 	ldrb	w3,[x1],#1 	sub	x2,x2,#1@@ -1085,6 +1091,7 @@ .endef .p2align	4 blst_sha256_hcopy:+	hint	#34 	ldp	x4,x5,[x1] 	ldp	x6,x7,[x1,#16] 	stp	x4,x5,[x0]
c-source/build/elf/add_mod_256-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text  .globl	add_mod_256@@ -5,6 +13,7 @@ .type	add_mod_256,%function .align	5 add_mod_256:+	hint	#34 	ldp	x8,x9,[x1] 	ldp	x12,x13,[x2] @@ -39,6 +48,7 @@ .type	mul_by_3_mod_256,%function .align	5 mul_by_3_mod_256:+	hint	#34 	ldp	x12,x13,[x1] 	ldp	x14,x15,[x1,#16] @@ -88,6 +98,7 @@ .type	lshift_mod_256,%function .align	5 lshift_mod_256:+	hint	#34 	ldp	x8,x9,[x1] 	ldp	x10,x11,[x1,#16] @@ -126,6 +137,7 @@ .type	rshift_mod_256,%function .align	5 rshift_mod_256:+	hint	#34 	ldp	x8,x9,[x1] 	ldp	x10,x11,[x1,#16] @@ -377,3 +389,13 @@  	ret .size	sub_n_check_mod_256,.-sub_n_check_mod_256++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section	.note.GNU-stack,"",@progbits+.section	.note.gnu.property,"a",@note+	.long	4,2f-1f,5+	.byte	0x47,0x4E,0x55,0+1:	.long	0xc0000000,4,3+.align  3+2:+#endif
c-source/build/elf/add_mod_384-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text  .globl	add_mod_384@@ -5,7 +13,7 @@ .type	add_mod_384,%function .align	5 add_mod_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -25,7 +33,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	add_mod_384,.-add_mod_384 @@ -71,7 +79,7 @@ .type	add_mod_384x,%function .align	5 add_mod_384x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -99,7 +107,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	add_mod_384x,.-add_mod_384x @@ -108,7 +116,7 @@ .type	rshift_mod_384,%function .align	5 rshift_mod_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -135,7 +143,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	rshift_mod_384,.-rshift_mod_384 @@ -170,7 +178,7 @@ .type	div_by_2_mod_384,%function .align	5 div_by_2_mod_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -194,7 +202,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	div_by_2_mod_384,.-div_by_2_mod_384 @@ -203,7 +211,7 @@ .type	lshift_mod_384,%function .align	5 lshift_mod_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -230,7 +238,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	lshift_mod_384,.-lshift_mod_384 @@ -268,7 +276,7 @@ .type	mul_by_3_mod_384,%function .align	5 mul_by_3_mod_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -298,7 +306,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	mul_by_3_mod_384,.-mul_by_3_mod_384 @@ -307,7 +315,7 @@ .type	mul_by_8_mod_384,%function .align	5 mul_by_8_mod_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -333,7 +341,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	mul_by_8_mod_384,.-mul_by_8_mod_384 @@ -342,7 +350,7 @@ .type	mul_by_3_mod_384x,%function .align	5 mul_by_3_mod_384x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -387,7 +395,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	mul_by_3_mod_384x,.-mul_by_3_mod_384x @@ -396,7 +404,7 @@ .type	mul_by_8_mod_384x,%function .align	5 mul_by_8_mod_384x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -433,7 +441,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	mul_by_8_mod_384x,.-mul_by_8_mod_384x @@ -442,7 +450,7 @@ .type	cneg_mod_384,%function .align	5 cneg_mod_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -484,7 +492,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	cneg_mod_384,.-cneg_mod_384 @@ -493,7 +501,7 @@ .type	sub_mod_384,%function .align	5 sub_mod_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -513,7 +521,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sub_mod_384,.-sub_mod_384 @@ -556,7 +564,7 @@ .type	sub_mod_384x,%function .align	5 sub_mod_384x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -584,7 +592,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sub_mod_384x,.-sub_mod_384x @@ -593,7 +601,7 @@ .type	mul_by_1_plus_i_mod_384x,%function .align	5 mul_by_1_plus_i_mod_384x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -626,7 +634,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	mul_by_1_plus_i_mod_384x,.-mul_by_1_plus_i_mod_384x @@ -635,6 +643,7 @@ .type	sgn0_pty_mod_384,%function .align	5 sgn0_pty_mod_384:+	hint	#34 	ldp	x10,x11,[x0] 	ldp	x12,x13,[x0,#16] 	ldp	x14,x15,[x0,#32]@@ -672,6 +681,7 @@ .type	sgn0_pty_mod_384x,%function .align	5 sgn0_pty_mod_384x:+	hint	#34 	ldp	x10,x11,[x0] 	ldp	x12,x13,[x0,#16] 	ldp	x14,x15,[x0,#32]@@ -753,14 +763,14 @@ .type	vec_select_32,%function .align	5 vec_select_32:+	hint	#34 	dup	v6.2d, x3-	ld1	{v0.2d, v1.2d, v2.2d}, [x1],#48+	ld1	{v0.2d, v1.2d}, [x1] 	cmeq	v6.2d, v6.2d, #0-	ld1	{v3.2d, v4.2d, v5.2d}, [x2],#48+	ld1	{v3.2d, v4.2d}, [x2] 	bit	v0.16b, v3.16b, v6.16b 	bit	v1.16b, v4.16b, v6.16b-	bit	v2.16b, v5.16b, v6.16b-	st1	{v0.2d, v1.2d, v2.2d}, [x0]+	st1	{v0.2d, v1.2d}, [x0] 	ret .size	vec_select_32,.-vec_select_32 .globl	vec_select_48@@ -768,6 +778,7 @@ .type	vec_select_48,%function .align	5 vec_select_48:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [x1],#48 	cmeq	v6.2d, v6.2d, #0@@ -783,6 +794,7 @@ .type	vec_select_96,%function .align	5 vec_select_96:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [x1],#48 	cmeq	v6.2d, v6.2d, #0@@ -804,6 +816,7 @@ .type	vec_select_192,%function .align	5 vec_select_192:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [x1],#48 	cmeq	v6.2d, v6.2d, #0@@ -837,6 +850,7 @@ .type	vec_select_144,%function .align	5 vec_select_144:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [x1],#48 	cmeq	v6.2d, v6.2d, #0@@ -864,6 +878,7 @@ .type	vec_select_288,%function .align	5 vec_select_288:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [x1],#48 	cmeq	v6.2d, v6.2d, #0@@ -909,6 +924,7 @@ .type	vec_prefetch,%function .align	5 vec_prefetch:+	hint	#34 	add	x1, x1, x0 	sub	x1, x1, #1 	mov	x2, #64@@ -949,6 +965,7 @@ .type	vec_is_zero_16x,%function .align	5 vec_is_zero_16x:+	hint	#34 	ld1	{v0.2d}, [x0], #16 	lsr	x1, x1, #4 	sub	x1, x1, #1@@ -974,6 +991,7 @@ .type	vec_is_equal_16x,%function .align	5 vec_is_equal_16x:+	hint	#34 	ld1	{v0.2d}, [x0], #16 	ld1	{v1.2d}, [x1], #16 	lsr	x2, x2, #4@@ -998,3 +1016,13 @@ 	csel	x0, x0, xzr, eq 	ret .size	vec_is_equal_16x,.-vec_is_equal_16x++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section	.note.GNU-stack,"",@progbits+.section	.note.gnu.property,"a",@note+	.long	4,2f-1f,5+	.byte	0x47,0x4E,0x55,0+1:	.long	0xc0000000,4,3+.align  3+2:+#endif
c-source/build/elf/ct_inverse_mod_256-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text  .globl	ct_inverse_mod_256@@ -5,7 +13,7 @@ .type	ct_inverse_mod_256, %function .align	5 ct_inverse_mod_256:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29, x30, [sp,#-10*__SIZEOF_POINTER__]! 	add	x29, sp, #0 	stp	x19, x20, [sp,#2*__SIZEOF_POINTER__]@@ -48,7 +56,7 @@ 	mov	x13, x15			// |g1| 	add	x0,x0,#8*4 	bl	__smul_256_n_shift_by_31-	str	x12, [x0,#8*9]		// initialize |v| with |f1|+	str	x12, [x0,#8*10]		// initialize |v| with |f1|  	////////////////////////////////////////// second iteration 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -71,19 +79,17 @@ 	bl	__smul_256_n_shift_by_31  	ldr	x8, [x1,#8*8]		// |u|-	ldr	x9, [x1,#8*13]	// |v|+	ldr	x9, [x1,#8*14]	// |v| 	madd	x4, x16, x8, xzr	// |u|*|f0| 	madd	x4, x17, x9, x4	// |v|*|g0|-	str	x4, [x0,#8*4] 	asr	x5, x4, #63		// sign extension-	stp	x5, x5, [x0,#8*5]-	stp	x5, x5, [x0,#8*7]+	stp	x4, x5, [x0,#8*4]+	stp	x5, x5, [x0,#8*6]  	madd	x4, x12, x8, xzr	// |u|*|f1| 	madd	x4, x13, x9, x4	// |v|*|g1|-	str	x4, [x0,#8*9] 	asr	x5, x4, #63		// sign extension-	stp	x5, x5, [x0,#8*10]+	stp	x4, x5, [x0,#8*10] 	stp	x5, x5, [x0,#8*12] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__@@ -106,16 +112,10 @@  	add	x0,x0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [x0,#8*4]-	stp	x22, x22, [x0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -137,16 +137,10 @@  	add	x0,x0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [x0,#8*4]-	stp	x22, x22, [x0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -168,16 +162,10 @@  	add	x0,x0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [x0,#8*4]-	stp	x22, x22, [x0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -199,16 +187,10 @@  	add	x0,x0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [x0,#8*4]-	stp	x22, x22, [x0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -230,16 +212,10 @@  	add	x0,x0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [x0,#8*4]-	stp	x22, x22, [x0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -261,16 +237,15 @@  	add	x0,x0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [x0,#8*4]-+	asr	x24, x24, #63+	str	x24, [x0,#8*4] 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [x0,#8*4]-	stp	x22, x22, [x0,#8*6]+	asr	x24, x24, #63		// sign extension+	stp	x24, x24, [x0,#8*4]+	stp	x24, x24, [x0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -294,10 +269,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -323,10 +297,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -352,10 +325,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -381,10 +353,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -410,10 +381,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -439,10 +409,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -468,10 +437,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	////////////////////////////////////////// two[!] last iterations@@ -541,7 +509,7 @@ 	ldp	x23, x24, [x29,#6*__SIZEOF_POINTER__] 	ldp	x25, x26, [x29,#8*__SIZEOF_POINTER__] 	ldr	x29, [sp],#10*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	ct_inverse_mod_256,.-ct_inverse_mod_256 @@ -579,11 +547,11 @@ 	adcs	x6, x6, x20 	adcs	x24, x24, x21 	adc	x26, xzr, xzr-	ldp	x8, x9, [x1,#8*0+104]	// load |u| (or |v|)+	ldp	x8, x9, [x1,#8*0+112]	// load |u| (or |v|) 	asr	x14, x17, #63		// |f_|'s sign as mask (or |g_|'s)-	ldp	x10, x11, [x1,#8*2+104]+	ldp	x10, x11, [x1,#8*2+112] 	eor	x17, x17, x14		// conditionally negate |f_| (or |g_|)-	ldr	x23, [x1,#8*4+104]+	ldr	x23, [x1,#8*4+112]  	eor	x8, x8, x14	// conditionally negate |u| (or |v|) 	sub	x17, x17, x14@@ -625,9 +593,9 @@ .align	5 __smul_512x63_tail: 	umulh	x24, x7, x16-	ldp	x5, x6, [x1,#8*18]	// load rest of |v|+	ldr	x5, [x1,#8*19]	// load rest of |v| 	adc	x26, x26, xzr-	ldr	x7, [x1,#8*20]+	ldp	x6, x7, [x1,#8*20] 	and	x22, x22, x16  	umulh	x11, x11, x17	// resume |v|*|g1| chain@@ -878,3 +846,13 @@  	ret .size	__inner_loop_62_256,.-__inner_loop_62_256++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section	.note.GNU-stack,"",@progbits+.section	.note.gnu.property,"a",@note+	.long	4,2f-1f,5+	.byte	0x47,0x4E,0x55,0+1:	.long	0xc0000000,4,3+.align  3+2:+#endif
c-source/build/elf/ct_inverse_mod_384-armv8.S view
@@ -1,11 +1,19 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text -.globl	ct_inverse_mod_383-.hidden	ct_inverse_mod_383-.type	ct_inverse_mod_383, %function+.globl	ct_inverse_mod_384+.hidden	ct_inverse_mod_384+.type	ct_inverse_mod_384, %function .align	5-ct_inverse_mod_383:-	.inst	0xd503233f+ct_inverse_mod_384:+	hint	#PACI_HINT 	stp	x29, x30, [sp,#-16*__SIZEOF_POINTER__]! 	add	x29, sp, #0 	stp	x19, x20, [sp,#2*__SIZEOF_POINTER__]@@ -47,14 +55,14 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	str	x15,[x0,#8*12]		// initialize |u| with |f0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62-	str	x15, [x0,#8*12]		// initialize |v| with |f1|+	bl	__smul_384_n_shift_by_62+	str	x15, [x0,#8*14]		// initialize |v| with |f1|  	////////////////////////////////////////// second iteration 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -68,17 +76,17 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	ldr	x7, [x1,#8*12]	// |u|-	ldr	x8, [x1,#8*18]	// |v|+	ldr	x8, [x1,#8*20]	// |v| 	mul	x3, x20, x7		// |u|*|f0| 	smulh	x4, x20, x7 	mul	x5, x21, x8		// |v|*|g0|@@ -96,10 +104,10 @@ 	smulh	x6, x16, x8 	adds	x3, x3, x5 	adc	x4, x4, x6-	stp	x3, x4, [x0,#8*12]+	stp	x3, x4, [x0,#8*14] 	asr	x5, x4, #63		// sign extension-	stp	x5, x5, [x0,#8*14] 	stp	x5, x5, [x0,#8*16]+	stp	x5, x5, [x0,#8*18] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -111,22 +119,21 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63+	add	x0,x0,#8*8+	bl	__smul_384x63 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -138,22 +145,21 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63+	add	x0,x0,#8*8+	bl	__smul_384x63 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -165,22 +171,21 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63+	add	x0,x0,#8*8+	bl	__smul_384x63 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -192,22 +197,23 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	asr	x27, x27, #63+	str	x27, [x0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63+	add	x0,x0,#8*8+	bl	__smul_384x63 	asr	x27, x27, #63		// sign extension 	stp	x27, x27, [x0,#8*6] 	stp	x27, x27, [x0,#8*8]@@ -223,23 +229,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [x0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	x0,x0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -251,23 +258,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [x0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	x0,x0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -279,23 +287,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [x0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	x0,x0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -307,23 +316,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [x0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	x0,x0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -335,23 +345,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [x0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	x0,x0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	////////////////////////////////////////// iteration before last 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__@@ -375,20 +386,22 @@ 	mov	x15, x17 	mov	x16, x19 	add	x0,x0,#8*12-	bl	__smul_383x63+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [x0,#8*6]  	mov	x20, x15			// exact |f1| 	mov	x21, x16			// exact |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	x0,x0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail  	////////////////////////////////////////// last iteration 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1 #endif-	mov	x2, #22			// 766 % 62+	mov	x2, #24			// 768 % 62 	//bl	__ab_approximation_62		// |a| and |b| are exact, 	ldr	x3, [x1,#8*0]		// just load 	eor	x8, x8, x8@@ -399,25 +412,60 @@ 	mov	x20, x17 	mov	x21, x19 	ldp	x0, x15, [sp]			// original out_ptr and n_ptr-	bl	__smul_383x63-	bl	__smul_767x63_tail+	bl	__smul_384x63+	bl	__smul_768x63_tail 	ldr	x30, [x29,#__SIZEOF_POINTER__] -	asr	x22, x8, #63		// sign as mask-	ldp	x9, x10, [x15,#8*0]+	smulh	x23, x8, x21		// figure out top-most limb+	adc	x26, x26, x28+	ldp	x9, x10, [x15,#8*0]	// load |mod|+	add	x23, x23, x26		// x23 is 1, 0 or -1 	ldp	x11, x12, [x15,#8*2]+	asr	x22, x23, #63		// sign as mask 	ldp	x13, x14, [x15,#8*4] -	and	x9, x9, x22		// add mod<<384 conditionally-	and	x10, x10, x22-	adds	x3, x3, x9-	and	x11, x11, x22+	and	x26,   x9, x22		// add mod<<384 conditionally+	and	x27,   x10, x22+	adds	x3, x3, x26+	and	x28,   x11, x22+	adcs	x4, x4, x27+	and	x2,   x12, x22+	adcs	x5, x5, x28+	and	x26,   x13, x22+	adcs	x6, x6, x2+	and	x27,   x14, x22+	adcs	x7, x7, x26+	adcs	x8, x25,   x27+	adc	x23, x23, xzr		// x23 is 1, 0 or -1++	neg	x22, x23+	orr	x23, x23, x22		// excess bit or sign as mask+	asr	x22, x22, #63		// excess bit as mask++	and	x9, x9, x23		// mask |mod|+	and	x10, x10, x23+	and	x11, x11, x23+	and	x12, x12, x23+	and	x13, x13, x23+	and	x14, x14, x23++	eor	x9,  x9, x22	// conditionally negate |mod|+	eor	x10,  x10, x22+	adds	x9,  x9, x22, lsr#63+	eor	x11,  x11, x22+	adcs	x10,  x10, xzr+	eor	x12,  x12, x22+	adcs	x11,  x11, xzr+	eor	x13, x13, x22+	adcs	x12,  x12, xzr+	eor	x14, x14, x22+	adcs	x13, x13, xzr+	adc	x14, x14, xzr++	adds	x3, x3, x9	// final adjustment for |mod|<<384 	adcs	x4, x4, x10-	and	x12, x12, x22 	adcs	x5, x5, x11-	and	x13, x13, x22 	adcs	x6, x6, x12-	and	x14, x14, x22 	stp	x3, x4, [x0,#8*6] 	adcs	x7, x7, x13 	stp	x5, x6, [x0,#8*8]@@ -431,15 +479,15 @@ 	ldp	x25, x26, [x29,#8*__SIZEOF_POINTER__] 	ldp	x27, x28, [x29,#10*__SIZEOF_POINTER__] 	ldr	x29, [sp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret-.size	ct_inverse_mod_383,.-ct_inverse_mod_383+.size	ct_inverse_mod_384,.-ct_inverse_mod_384  //////////////////////////////////////////////////////////////////////// // see corresponding commentary in ctx_inverse_mod_384-x86_64...-.type	__smul_383x63, %function+.type	__smul_384x63, %function .align	5-__smul_383x63:+__smul_384x63: 	ldp	x3, x4, [x1,#8*0+96]	// load |u| (or |v|) 	asr	x17, x20, #63		// |f_|'s sign as mask (or |g_|'s) 	ldp	x5, x6, [x1,#8*2+96]@@ -447,6 +495,7 @@ 	ldp	x7, x8, [x1,#8*4+96]  	eor	x3, x3, x17	// conditionally negate |u| (or |v|)+	ldr	x25, [x1,#8*6+96] 	sub	x20, x20, x17 	eor	x4, x4, x17 	adds	x3, x3, x17, lsr#63@@ -461,28 +510,33 @@ 	umulh	x23, x4, x20 	adcs	x7, x7, xzr 	umulh	x24, x5, x20-	adcs	x8, x8, xzr-	umulh	x25, x6, x20-	umulh	x26, x7, x20+	eor	x25, x25, x17 	mul	x3, x3, x20+	adcs	x8, x8, xzr 	mul	x4, x4, x20+	adcs	x25, x25, xzr+	cmp	x20, #0 	mul	x5, x5, x20+	csel	x25, x25, xzr, ne 	adds	x4, x4, x22-	mul	x6, x6, x20+	umulh	x22, x6, x20 	adcs	x5, x5, x23+	umulh	x23, x7, x20+	mul	x6, x6, x20 	mul	x7, x7, x20 	adcs	x6, x6, x24 	mul	x27,x8, x20-	adcs	x7, x7, x25-	adcs	x27,x27,x26+	adcs	x7, x7, x22+	adcs	x27,x27,x23 	adc	x2, xzr, xzr-	ldp	x9, x10, [x1,#8*0+144]	// load |u| (or |v|)+	ldp	x9, x10, [x1,#8*0+160]	// load |u| (or |v|) 	asr	x17, x21, #63		// |f_|'s sign as mask (or |g_|'s)-	ldp	x11, x12, [x1,#8*2+144]+	ldp	x11, x12, [x1,#8*2+160] 	eor	x21, x21, x17		// conditionally negate |f_| (or |g_|)-	ldp	x13, x14, [x1,#8*4+144]+	ldp	x13, x14, [x1,#8*4+160]  	eor	x9, x9, x17	// conditionally negate |u| (or |v|)+	ldr	x26, [x1,#8*6+160] 	sub	x21, x21, x17 	eor	x10, x10, x17 	adds	x9, x9, x17, lsr#63@@ -497,21 +551,25 @@ 	umulh	x23, x10, x21 	adcs	x13, x13, xzr 	umulh	x24, x11, x21-	adcs	x14, x14, xzr-	umulh	x25, x12, x21-	adc	x19, xzr, xzr		// used in __smul_767x63_tail-	umulh	x26, x13, x21+	eor	x26, x26, x17 	mul	x9, x9, x21+	adcs	x14, x14, xzr 	mul	x10, x10, x21+	adcs	x26, x26, xzr+	adc	x19, xzr, xzr		// used in __smul_768x63_tail+	cmp	x21, #0 	mul	x11, x11, x21+	csel	x26, x26, xzr, ne 	adds	x10, x10, x22-	mul	x12, x12, x21+	umulh	x22, x12, x21 	adcs	x11, x11, x23+	umulh	x23, x13, x21+	mul	x12, x12, x21 	mul	x13, x13, x21 	adcs	x12, x12, x24 	mul	x28,x14, x21-	adcs	x13, x13, x25-	adcs	x28,x28,x26+	adcs	x13, x13, x22+	adcs	x28,x28,x23 	adc	x2, x2, xzr  	adds	x3, x3, x9@@ -523,41 +581,41 @@ 	stp	x5, x6, [x0,#8*2] 	adcs	x27,   x27,   x28 	stp	x7, x27,   [x0,#8*4]-	adc	x28,   x2,   xzr	// used in __smul_767x63_tail  	ret-.size	__smul_383x63,.-__smul_383x63+.size	__smul_384x63,.-__smul_384x63 -.type	__smul_767x63_tail, %function+.type	__smul_768x63_tail, %function .align	5-__smul_767x63_tail:-	smulh	x27,   x8, x20-	ldp	x3, x4, [x1,#8*24]	// load rest of |v|-	umulh	x14,x14, x21-	ldp	x5, x6, [x1,#8*26]-	ldp	x7, x8, [x1,#8*28]+__smul_768x63_tail:+	umulh	x27, x8, x20+	ldr	x4, [x1,#8*27]// load rest of |v|+	adc	x2, x2, xzr+	ldp	x5, x6, [x1,#8*28]+	and	x25, x25, x20+	ldp	x7, x8, [x1,#8*30]+	sub	x27, x27, x25	// tie up |u|*|f1| chain -	eor	x3, x3, x17	// conditionally negate rest of |v|-	eor	x4, x4, x17+	umulh	x14, x14, x21	// resume |v|*|g1| chain+	eor	x4, x4, x17	// conditionally negate rest of |v| 	eor	x5, x5, x17-	adds	x3, x3, x19 	eor	x6, x6, x17-	adcs	x4, x4, xzr+	adds	x4, x4, x19 	eor	x7, x7, x17 	adcs	x5, x5, xzr 	eor	x8, x8, x17 	adcs	x6, x6, xzr-	umulh	x22, x3, x21+	umulh	x22, x26,   x21 	adcs	x7, x7, xzr 	umulh	x23, x4, x21 	adc	x8, x8, xzr  	umulh	x24, x5, x21-	add	x14, x14, x28+	add	x14, x14, x2 	umulh	x25, x6, x21 	asr	x28, x27, #63-	umulh	x26, x7, x21-	mul	x3, x3, x21+	umulh	x2, x7, x21+	mul	x3, x26,   x21 	mul	x4, x4, x21 	mul	x5, x5, x21 	adds	x3, x3, x14@@ -565,10 +623,11 @@ 	adcs	x4, x4, x22 	mul	x7, x7, x21 	adcs	x5, x5, x23-	mul	x8, x8, x21+	mul	x22,   x8, x21 	adcs	x6, x6, x24 	adcs	x7, x7, x25-	adc	x8, x8, x26+	adcs	x25,   x22, x2+	adc	x26, xzr, xzr		// used in the final step  	adds	x3, x3, x27 	adcs	x4, x4, x28@@ -577,15 +636,15 @@ 	stp	x3, x4, [x0,#8*6] 	adcs	x7, x7, x28 	stp	x5, x6, [x0,#8*8]-	adc	x8, x8, x28-	stp	x7, x8, [x0,#8*10]+	adcs	x25,   x25,   x28	// carry is used in the final step+	stp	x7, x25,   [x0,#8*10]  	ret-.size	__smul_767x63_tail,.-__smul_767x63_tail+.size	__smul_768x63_tail,.-__smul_768x63_tail -.type	__smul_383_n_shift_by_62, %function+.type	__smul_384_n_shift_by_62, %function .align	5-__smul_383_n_shift_by_62:+__smul_384_n_shift_by_62: 	ldp	x3, x4, [x1,#8*0+0]	// load |a| (or |b|) 	asr	x28, x15, #63		// |f0|'s sign as mask (or |g0|'s) 	ldp	x5, x6, [x1,#8*2+0]@@ -605,25 +664,27 @@ 	adcs	x6, x6, xzr 	umulh	x23, x4, x2 	eor	x8, x8, x28-	umulh	x24, x5, x2+	mul	x3, x3, x2 	adcs	x7, x7, xzr-	umulh	x25, x6, x2+	mul	x4, x4, x2 	adc	x8, x8, xzr -	umulh	x26, x7, x2-	smulh	x27, x8, x2-	mul	x3, x3, x2-	mul	x4, x4, x2-	mul	x5, x5, x2+	umulh	x24, x5, x2+	and	x28, x28, x2+	umulh	x25, x6, x2 	adds	x4, x4, x22+	mul	x5, x5, x2+	umulh	x22, x7, x2+	neg	x28, x28 	mul	x6, x6, x2 	adcs	x5, x5, x23+	umulh	x23, x8, x2 	mul	x7, x7, x2 	adcs	x6, x6, x24 	mul	x8, x8, x2 	adcs	x7, x7, x25-	adcs	x8, x8 ,x26-	adc	x27, x27, xzr+	adcs	x8, x8, x22+	adc	x27, x23, x28 	ldp	x9, x10, [x1,#8*0+48]	// load |a| (or |b|) 	asr	x28, x16, #63		// |f0|'s sign as mask (or |g0|'s) 	ldp	x11, x12, [x1,#8*2+48]@@ -643,25 +704,27 @@ 	adcs	x12, x12, xzr 	umulh	x23, x10, x2 	eor	x14, x14, x28-	umulh	x24, x11, x2+	mul	x9, x9, x2 	adcs	x13, x13, xzr-	umulh	x25, x12, x2+	mul	x10, x10, x2 	adc	x14, x14, xzr -	umulh	x26, x13, x2-	smulh	x28, x14, x2-	mul	x9, x9, x2-	mul	x10, x10, x2-	mul	x11, x11, x2+	umulh	x24, x11, x2+	and	x28, x28, x2+	umulh	x25, x12, x2 	adds	x10, x10, x22+	mul	x11, x11, x2+	umulh	x22, x13, x2+	neg	x28, x28 	mul	x12, x12, x2 	adcs	x11, x11, x23+	umulh	x23, x14, x2 	mul	x13, x13, x2 	adcs	x12, x12, x24 	mul	x14, x14, x2 	adcs	x13, x13, x25-	adcs	x14, x14 ,x26-	adc	x28, x28, xzr+	adcs	x14, x14, x22+	adc	x28, x23, x28 	adds	x3, x3, x9 	adcs	x4, x4, x10 	adcs	x5, x5, x11@@ -700,7 +763,7 @@ 	sub	x16, x16, x28  	ret-.size	__smul_383_n_shift_by_62,.-__smul_383_n_shift_by_62+.size	__smul_384_n_shift_by_62,.-__smul_384_n_shift_by_62 .type	__ab_approximation_62, %function .align	4 __ab_approximation_62:@@ -793,3 +856,13 @@  	ret .size	__inner_loop_62,.-__inner_loop_62++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section	.note.GNU-stack,"",@progbits+.section	.note.gnu.property,"a",@note+	.long	4,2f-1f,5+	.byte	0x47,0x4E,0x55,0+1:	.long	0xc0000000,4,3+.align  3+2:+#endif
c-source/build/elf/ct_is_square_mod_384-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text  .globl	ct_is_square_mod_384@@ -5,7 +13,7 @@ .type	ct_is_square_mod_384, %function .align	5 ct_is_square_mod_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29, x30, [sp,#-16*__SIZEOF_POINTER__]! 	add	x29, sp, #0 	stp	x19, x20, [sp,#2*__SIZEOF_POINTER__]@@ -84,7 +92,7 @@ 	ldp	x25, x26, [x29,#8*__SIZEOF_POINTER__] 	ldp	x27, x28, [x29,#10*__SIZEOF_POINTER__] 	ldr	x29, [sp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	ct_is_square_mod_384,.-ct_is_square_mod_384 @@ -332,3 +340,13 @@  	ret .size	__inner_loop_48,.-__inner_loop_48++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section	.note.GNU-stack,"",@progbits+.section	.note.gnu.property,"a",@note+	.long	4,2f-1f,5+	.byte	0x47,0x4E,0x55,0+1:	.long	0xc0000000,4,3+.align  3+2:+#endif
c-source/build/elf/ctq_inverse_mod_384-x86_64.s view
@@ -1,18 +1,18 @@ .comm	__blst_platform_cap,4 .text	 -.globl	ct_inverse_mod_383-.hidden	ct_inverse_mod_383-.type	ct_inverse_mod_383,@function+.globl	ct_inverse_mod_384+.hidden	ct_inverse_mod_384+.type	ct_inverse_mod_384,@function .align	32-ct_inverse_mod_383:+ct_inverse_mod_384: .cfi_startproc 	.byte	0xf3,0x0f,0x1e,0xfa   #ifdef __BLST_PORTABLE__ 	testl	$1,__blst_platform_cap(%rip)-	jnz	ct_inverse_mod_383$1+	jnz	ct_inverse_mod_384$1 #endif 	pushq	%rbp .cfi_adjust_cfa_offset	8@@ -80,7 +80,7 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62   	movq	%rdx,96(%rdi)@@ -88,10 +88,10 @@ 	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62  -	movq	%rdx,96(%rdi)+	movq	%rdx,104(%rdi)   	xorq	$256,%rsi@@ -104,19 +104,19 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62    	movq	96(%rsi),%rax-	movq	144(%rsi),%r11+	movq	152(%rsi),%r11 	movq	%rdx,%rbx 	movq	%rax,%r10 	imulq	56(%rsp)@@ -133,6 +133,7 @@ 	movq	%r9,72(%rdi) 	movq	%r9,80(%rdi) 	movq	%r9,88(%rdi)+	movq	%r9,96(%rdi) 	leaq	96(%rsi),%rsi  	movq	%r10,%rax@@ -143,13 +144,14 @@ 	imulq	%rcx 	addq	%rax,%r8 	adcq	%rdx,%r9-	movq	%r8,96(%rdi)-	movq	%r9,104(%rdi)-	sarq	$63,%r9+	movq	%r8,104(%rdi) 	movq	%r9,112(%rdi)+	sarq	$63,%r9 	movq	%r9,120(%rdi) 	movq	%r9,128(%rdi) 	movq	%r9,136(%rdi)+	movq	%r9,144(%rdi)+	movq	%r9,152(%rdi) 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -160,14 +162,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -175,12 +177,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	leaq	56(%rdi),%rdi+	call	__smulq_384x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -191,14 +193,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -206,12 +208,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	leaq	56(%rdi),%rdi+	call	__smulq_384x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -222,14 +224,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -237,12 +239,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	leaq	56(%rdi),%rdi+	call	__smulq_384x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -253,14 +255,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -268,19 +270,17 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_383x63-	sarq	$63,%r13-	movq	%r13,48(%rdi)-	movq	%r13,56(%rdi)-	movq	%r13,64(%rdi)-	movq	%r13,72(%rdi)-	movq	%r13,80(%rdi)-	movq	%r13,88(%rdi)+	leaq	56(%rdi),%rdi+	call	__smulq_384x63+	movq	%r14,56(%rdi)+	movq	%r14,64(%rdi)+	movq	%r14,72(%rdi)+	movq	%r14,80(%rdi)+	movq	%r14,88(%rdi) 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -291,14 +291,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -306,12 +306,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_767x63+	leaq	56(%rdi),%rdi+	call	__smulq_768x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -322,14 +322,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -337,12 +337,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_767x63+	leaq	56(%rdi),%rdi+	call	__smulq_768x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -353,14 +353,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -368,12 +368,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_767x63+	leaq	56(%rdi),%rdi+	call	__smulq_768x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -384,14 +384,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -399,12 +399,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_767x63+	leaq	56(%rdi),%rdi+	call	__smulq_768x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -415,14 +415,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -430,12 +430,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_767x63+	leaq	56(%rdi),%rdi+	call	__smulq_768x63  	xorq	$256+96,%rsi 	movl	$62,%edi@@ -459,16 +459,16 @@  	leaq	96(%rsi),%rsi 	leaq	96(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_767x63+	leaq	56(%rdi),%rdi+	call	__smulq_768x63   	xorq	$256+96,%rsi-	movl	$22,%edi+	movl	$24,%edi  	movq	0(%rsi),%r8 	xorq	%r9,%r9@@ -491,37 +491,77 @@ 	movq	%r12,%rdx 	movq	%r13,%rcx 	movq	32(%rsp),%rdi-	call	__smulq_767x63+	call	__smulq_768x63  	movq	40(%rsp),%rsi-	movq	%rax,%rdx-	sarq	$63,%rax+	movq	%rdx,%r13+	sarq	$63,%r13 -	movq	%rax,%r8-	movq	%rax,%r9-	movq	%rax,%r10+	movq	%r13,%r8+	movq	%r13,%r9+	movq	%r13,%r10 	andq	0(%rsi),%r8 	andq	8(%rsi),%r9-	movq	%rax,%r11+	movq	%r13,%r11 	andq	16(%rsi),%r10 	andq	24(%rsi),%r11-	movq	%rax,%r12+	movq	%r13,%r12 	andq	32(%rsi),%r12-	andq	40(%rsi),%rax+	andq	40(%rsi),%r13  	addq	%r8,%r14 	adcq	%r9,%r15 	adcq	%r10,%rbx 	adcq	%r11,%rbp 	adcq	%r12,%rcx-	adcq	%rax,%rdx+	adcq	%r13,%rax+	adcq	$0,%rdx +	movq	%rdx,%r13+	negq	%rdx+	orq	%rdx,%r13+	sarq	$63,%rdx++	movq	%r13,%r8+	movq	%r13,%r9+	movq	%r13,%r10+	andq	0(%rsi),%r8+	andq	8(%rsi),%r9+	movq	%r13,%r11+	andq	16(%rsi),%r10+	andq	24(%rsi),%r11+	movq	%r13,%r12+	andq	32(%rsi),%r12+	andq	40(%rsi),%r13++	xorq	%rdx,%r8+	xorq	%rsi,%rsi+	xorq	%rdx,%r9+	subq	%rdx,%rsi+	xorq	%rdx,%r10+	xorq	%rdx,%r11+	xorq	%rdx,%r12+	xorq	%rdx,%r13+	addq	%rsi,%r8+	adcq	$0,%r9+	adcq	$0,%r10+	adcq	$0,%r11+	adcq	$0,%r12+	adcq	$0,%r13++	addq	%r8,%r14+	adcq	%r9,%r15+	adcq	%r10,%rbx+	adcq	%r11,%rbp+	adcq	%r12,%rcx+	adcq	%r13,%rax+ 	movq	%r14,48(%rdi) 	movq	%r15,56(%rdi) 	movq	%rbx,64(%rdi) 	movq	%rbp,72(%rdi) 	movq	%rcx,80(%rdi)-	movq	%rdx,88(%rdi)+	movq	%rax,88(%rdi)  	leaq	1112(%rsp),%r8 	movq	0(%r8),%r15@@ -549,10 +589,10 @@ 	.byte	0xf3,0xc3 #endif .cfi_endproc	-.size	ct_inverse_mod_383,.-ct_inverse_mod_383-.type	__smulq_767x63,@function+.size	ct_inverse_mod_384,.-ct_inverse_mod_384+.type	__smulq_768x63,@function .align	32-__smulq_767x63:+__smulq_768x63: .cfi_startproc 	.byte	0xf3,0x0f,0x1e,0xfa @@ -562,6 +602,7 @@ 	movq	24(%rsi),%r11 	movq	32(%rsi),%r12 	movq	40(%rsi),%r13+	movq	48(%rsi),%r14  	movq	%rdx,%rbp 	sarq	$63,%rdx@@ -570,7 +611,7 @@  	movq	%rdi,8(%rsp) 	movq	%rsi,16(%rsp)-	leaq	48(%rsi),%rsi+	leaq	56(%rsi),%rsi  	xorq	%rdx,%rbp 	addq	%rax,%rbp@@ -581,16 +622,20 @@ 	xorq	%rdx,%r11 	xorq	%rdx,%r12 	xorq	%rdx,%r13+	xorq	%rdx,%r14 	addq	%r8,%rax 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12 	adcq	$0,%r13+	adcq	$0,%r14  	mulq	%rbp 	movq	%rax,0(%rdi) 	movq	%r9,%rax+	andq	%rbp,%r14+	negq	%r14 	movq	%rdx,%r9 	mulq	%rbp 	addq	%rax,%r9@@ -616,14 +661,14 @@ 	adcq	$0,%rdx 	movq	%rdx,%r13 	movq	%r12,32(%rdi)-	imulq	%rbp+	mulq	%rbp 	addq	%rax,%r13-	adcq	$0,%rdx+	adcq	%rdx,%r14  	movq	%r13,40(%rdi)-	movq	%rdx,48(%rdi)-	sarq	$63,%rdx-	movq	%rdx,56(%rdi)+	movq	%r14,48(%rdi)+	sarq	$63,%r14+	movq	%r14,56(%rdi) 	movq	%rcx,%rdx  	movq	0(%rsi),%r8@@ -726,39 +771,41 @@ 	movq	%rdi,%rax 	adcq	$0,%rdx 	movq	%rdx,%rdi-	movq	8(%rsp),%rdx-	imulq	%rsi,%rax-	movq	16(%rsp),%rsi+	imulq	%rsi+	movq	8(%rsp),%rsi 	addq	%rdi,%rax+	adcq	$0,%rdx -	addq	0(%rdx),%r8-	adcq	8(%rdx),%r9-	adcq	16(%rdx),%r10-	adcq	24(%rdx),%r11-	adcq	32(%rdx),%r12-	adcq	40(%rdx),%r13-	adcq	48(%rdx),%r14-	movq	56(%rdx),%rdi+	addq	0(%rsi),%r8+	adcq	8(%rsi),%r9+	adcq	16(%rsi),%r10+	adcq	24(%rsi),%r11+	adcq	32(%rsi),%r12+	adcq	40(%rsi),%r13+	adcq	48(%rsi),%r14+	movq	56(%rsi),%rdi 	adcq	%rdi,%r15 	adcq	%rdi,%rbx 	adcq	%rdi,%rbp 	adcq	%rdi,%rcx 	adcq	%rdi,%rax+	adcq	%rdi,%rdx -	movq	%rdx,%rdi+	leaq	(%rsi),%rdi+	movq	16(%rsp),%rsi -	movq	%r8,0(%rdx)-	movq	%r9,8(%rdx)-	movq	%r10,16(%rdx)-	movq	%r11,24(%rdx)-	movq	%r12,32(%rdx)-	movq	%r13,40(%rdx)-	movq	%r14,48(%rdx)-	movq	%r15,56(%rdx)-	movq	%rbx,64(%rdx)-	movq	%rbp,72(%rdx)-	movq	%rcx,80(%rdx)-	movq	%rax,88(%rdx)+	movq	%r8,0(%rdi)+	movq	%r9,8(%rdi)+	movq	%r10,16(%rdi)+	movq	%r11,24(%rdi)+	movq	%r12,32(%rdi)+	movq	%r13,40(%rdi)+	movq	%r14,48(%rdi)+	movq	%r15,56(%rdi)+	movq	%rbx,64(%rdi)+	movq	%rbp,72(%rdi)+	movq	%rcx,80(%rdi)+	movq	%rax,88(%rdi)  	 #ifdef	__SGX_LVI_HARDENING__@@ -770,10 +817,10 @@ 	.byte	0xf3,0xc3 #endif .cfi_endproc-.size	__smulq_767x63,.-__smulq_767x63-.type	__smulq_383x63,@function+.size	__smulq_768x63,.-__smulq_768x63+.type	__smulq_384x63,@function .align	32-__smulq_383x63:+__smulq_384x63: .cfi_startproc 	.byte	0xf3,0x0f,0x1e,0xfa @@ -783,6 +830,7 @@ 	movq	24(%rsi),%r11 	movq	32(%rsi),%r12 	movq	40(%rsi),%r13+	movq	48(%rsi),%r14  	movq	%rdx,%rbp 	sarq	$63,%rdx@@ -798,16 +846,20 @@ 	xorq	%rdx,%r11 	xorq	%rdx,%r12 	xorq	%rdx,%r13+	xorq	%rdx,%r14 	addq	%r8,%rax 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12 	adcq	$0,%r13+	adcq	$0,%r14  	mulq	%rbp 	movq	%rax,%r8 	movq	%r9,%rax+	andq	%rbp,%r14+	negq	%r14 	movq	%rdx,%r9 	mulq	%rbp 	addq	%rax,%r9@@ -829,10 +881,11 @@ 	movq	%r13,%rax 	adcq	$0,%rdx 	movq	%rdx,%r13-	imulq	%rbp,%rax+	mulq	%rbp 	addq	%rax,%r13+	adcq	%rdx,%r14 -	leaq	48(%rsi),%rsi+	leaq	56(%rsi),%rsi 	movq	%rcx,%rdx  	movq	%r8,0(%rdi)@@ -840,13 +893,15 @@ 	movq	%r10,16(%rdi) 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi)-	movq	%r13,40(%rdi)+	movq	%r13,%r15+	movq	%r14,%rbx 	movq	0(%rsi),%r8 	movq	8(%rsi),%r9 	movq	16(%rsi),%r10 	movq	24(%rsi),%r11 	movq	32(%rsi),%r12 	movq	40(%rsi),%r13+	movq	48(%rsi),%r14  	movq	%rdx,%rbp 	sarq	$63,%rdx@@ -862,16 +917,20 @@ 	xorq	%rdx,%r11 	xorq	%rdx,%r12 	xorq	%rdx,%r13+	xorq	%rdx,%r14 	addq	%r8,%rax 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12 	adcq	$0,%r13+	adcq	$0,%r14  	mulq	%rbp 	movq	%rax,%r8 	movq	%r9,%rax+	andq	%rbp,%r14+	negq	%r14 	movq	%rdx,%r9 	mulq	%rbp 	addq	%rax,%r9@@ -893,17 +952,19 @@ 	movq	%r13,%rax 	adcq	$0,%rdx 	movq	%rdx,%r13-	imulq	%rbp,%rax+	mulq	%rbp 	addq	%rax,%r13+	adcq	%rdx,%r14 -	leaq	-48(%rsi),%rsi+	leaq	-56(%rsi),%rsi  	addq	0(%rdi),%r8 	adcq	8(%rdi),%r9 	adcq	16(%rdi),%r10 	adcq	24(%rdi),%r11 	adcq	32(%rdi),%r12-	adcq	40(%rdi),%r13+	adcq	%r15,%r13+	adcq	%rbx,%r14  	movq	%r8,0(%rdi) 	movq	%r9,8(%rdi)@@ -911,6 +972,7 @@ 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi) 	movq	%r13,40(%rdi)+	movq	%r14,48(%rdi)  	 #ifdef	__SGX_LVI_HARDENING__@@ -922,10 +984,10 @@ 	.byte	0xf3,0xc3 #endif .cfi_endproc-.size	__smulq_383x63,.-__smulq_383x63-.type	__smulq_383_n_shift_by_62,@function+.size	__smulq_384x63,.-__smulq_384x63+.type	__smulq_384_n_shift_by_62,@function .align	32-__smulq_383_n_shift_by_62:+__smulq_384_n_shift_by_62: .cfi_startproc 	.byte	0xf3,0x0f,0x1e,0xfa @@ -951,6 +1013,7 @@ 	xorq	%rdx,%r11 	xorq	%rdx,%r12 	xorq	%rdx,%r13+	movq	%rdx,%r14 	addq	%r8,%rax 	adcq	$0,%r9 	adcq	$0,%r10@@ -961,6 +1024,8 @@ 	mulq	%rbp 	movq	%rax,%r8 	movq	%r9,%rax+	andq	%rbp,%r14+	negq	%r14 	movq	%rdx,%r9 	mulq	%rbp 	addq	%rax,%r9@@ -982,12 +1047,11 @@ 	movq	%r13,%rax 	adcq	$0,%rdx 	movq	%rdx,%r13-	imulq	%rbp+	mulq	%rbp 	addq	%rax,%r13-	adcq	$0,%rdx+	adcq	%rdx,%r14  	leaq	48(%rsi),%rsi-	movq	%rdx,%r14 	movq	%rcx,%rdx  	movq	%r8,0(%rdi)@@ -1017,6 +1081,7 @@ 	xorq	%rdx,%r11 	xorq	%rdx,%r12 	xorq	%rdx,%r13+	movq	%rdx,%r15 	addq	%r8,%rax 	adcq	$0,%r9 	adcq	$0,%r10@@ -1027,6 +1092,8 @@ 	mulq	%rbp 	movq	%rax,%r8 	movq	%r9,%rax+	andq	%rbp,%r15+	negq	%r15 	movq	%rdx,%r9 	mulq	%rbp 	addq	%rax,%r9@@ -1048,11 +1115,12 @@ 	movq	%r13,%rax 	adcq	$0,%rdx 	movq	%rdx,%r13-	imulq	%rbp+	mulq	%rbp 	addq	%rax,%r13-	adcq	$0,%rdx+	adcq	%rdx,%r15  	leaq	-48(%rsi),%rsi+	movq	%rbx,%rdx  	addq	0(%rdi),%r8 	adcq	8(%rdi),%r9@@ -1060,8 +1128,7 @@ 	adcq	24(%rdi),%r11 	adcq	32(%rdi),%r12 	adcq	40(%rdi),%r13-	adcq	%rdx,%r14-	movq	%rbx,%rdx+	adcq	%r15,%r14  	shrdq	$62,%r9,%r8 	shrdq	$62,%r10,%r9@@ -1109,7 +1176,7 @@ 	.byte	0xf3,0xc3 #endif .cfi_endproc-.size	__smulq_383_n_shift_by_62,.-__smulq_383_n_shift_by_62+.size	__smulq_384_n_shift_by_62,.-__smulq_384_n_shift_by_62 .type	__ab_approximation_62,@function .align	32 __ab_approximation_62:
c-source/build/elf/ctx_inverse_mod_384-x86_64.s view
@@ -1,15 +1,15 @@ .text	 -.globl	ctx_inverse_mod_383-.hidden	ctx_inverse_mod_383-.type	ctx_inverse_mod_383,@function+.globl	ctx_inverse_mod_384+.hidden	ctx_inverse_mod_384+.type	ctx_inverse_mod_384,@function .align	32-ctx_inverse_mod_383:+ctx_inverse_mod_384: .cfi_startproc 	.byte	0xf3,0x0f,0x1e,0xfa  -ct_inverse_mod_383$1:+ct_inverse_mod_384$1: 	pushq	%rbp .cfi_adjust_cfa_offset	8 .cfi_offset	%rbp,-16@@ -79,7 +79,7 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31   	movq	%rdx,96(%rdi)@@ -87,10 +87,10 @@ 	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31  -	movq	%rdx,96(%rdi)+	movq	%rdx,104(%rdi)   	xorq	$256,%rsi@@ -103,19 +103,19 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31    	movq	96(%rsi),%rax-	movq	144(%rsi),%r11+	movq	152(%rsi),%r11 	movq	%rdx,%rbx 	movq	%rax,%r10 	imulq	56(%rsp)@@ -132,6 +132,7 @@ 	movq	%r9,72(%rdi) 	movq	%r9,80(%rdi) 	movq	%r9,88(%rdi)+	movq	%r9,96(%rdi) 	leaq	96(%rsi),%rsi  	movq	%r10,%rax@@ -142,13 +143,14 @@ 	imulq	%rcx 	addq	%rax,%r8 	adcq	%rdx,%r9-	movq	%r8,96(%rdi)-	movq	%r9,104(%rdi)-	sarq	$63,%r9+	movq	%r8,104(%rdi) 	movq	%r9,112(%rdi)+	sarq	$63,%r9 	movq	%r9,120(%rdi) 	movq	%r9,128(%rdi) 	movq	%r9,136(%rdi)+	movq	%r9,144(%rdi)+	movq	%r9,152(%rdi) 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -159,14 +161,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -174,12 +176,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -190,14 +192,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -205,12 +207,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -221,14 +223,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -236,12 +238,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -252,14 +254,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -267,12 +269,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -283,14 +285,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -298,12 +300,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -314,14 +316,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -329,12 +331,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -345,14 +347,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -360,12 +362,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -376,14 +378,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -391,12 +393,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -407,14 +409,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -422,12 +424,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -438,14 +440,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -453,19 +455,17 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63-	sarq	$63,%r13-	movq	%r13,48(%rdi)-	movq	%r13,56(%rdi)-	movq	%r13,64(%rdi)-	movq	%r13,72(%rdi)-	movq	%r13,80(%rdi)-	movq	%r13,88(%rdi)+	leaq	56(%rdi),%rdi+	call	__smulx_384x63+	movq	%r14,56(%rdi)+	movq	%r14,64(%rdi)+	movq	%r14,72(%rdi)+	movq	%r14,80(%rdi)+	movq	%r14,88(%rdi) 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -476,14 +476,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -491,12 +491,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -507,14 +507,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -522,12 +522,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -538,14 +538,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -553,12 +553,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -569,14 +569,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -584,12 +584,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -600,14 +600,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -615,12 +615,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -631,14 +631,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -646,12 +646,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -662,14 +662,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -677,12 +677,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -708,12 +708,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -739,12 +739,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -770,12 +770,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -801,21 +801,21 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63  	xorq	$256+96,%rsi-	movl	$53,%edi+	movl	$55,%edi  	movq	0(%rsi),%r8  	movq	48(%rsi),%r10 -	call	__tail_loop_53+	call	__tail_loop_55   @@ -832,40 +832,80 @@ 	movq	%r12,%rdx 	movq	%r13,%rcx 	movq	32(%rsp),%rdi-	call	__smulx_767x63+	call	__smulx_768x63  	movq	40(%rsp),%rsi-	movq	%rax,%rdx-	sarq	$63,%rax+	movq	%rdx,%r13+	sarq	$63,%r13 -	movq	%rax,%r8-	movq	%rax,%r9-	movq	%rax,%r10+	movq	%r13,%r8+	movq	%r13,%r9+	movq	%r13,%r10 #ifdef	__SGX_LVI_HARDENING__ 	lfence #endif 	andq	0(%rsi),%r8 	andq	8(%rsi),%r9-	movq	%rax,%r11+	movq	%r13,%r11 	andq	16(%rsi),%r10 	andq	24(%rsi),%r11-	movq	%rax,%r12+	movq	%r13,%r12 	andq	32(%rsi),%r12-	andq	40(%rsi),%rax+	andq	40(%rsi),%r13  	addq	%r8,%r14 	adcq	%r9,%r15 	adcq	%r10,%rbx 	adcq	%r11,%rbp 	adcq	%r12,%rcx-	adcq	%rax,%rdx+	adcq	%r13,%rax+	adcq	$0,%rdx +	movq	%rdx,%r13+	negq	%rdx+	orq	%rdx,%r13+	sarq	$63,%rdx++	movq	%r13,%r8+	movq	%r13,%r9+	movq	%r13,%r10+	andq	0(%rsi),%r8+	andq	8(%rsi),%r9+	movq	%r13,%r11+	andq	16(%rsi),%r10+	andq	24(%rsi),%r11+	movq	%r13,%r12+	andq	32(%rsi),%r12+	andq	40(%rsi),%r13++	xorq	%rdx,%r8+	xorq	%rsi,%rsi+	xorq	%rdx,%r9+	subq	%rdx,%rsi+	xorq	%rdx,%r10+	xorq	%rdx,%r11+	xorq	%rdx,%r12+	xorq	%rdx,%r13+	addq	%rsi,%r8+	adcq	$0,%r9+	adcq	$0,%r10+	adcq	$0,%r11+	adcq	$0,%r12+	adcq	$0,%r13++	addq	%r8,%r14+	adcq	%r9,%r15+	adcq	%r10,%rbx+	adcq	%r11,%rbp+	adcq	%r12,%rcx+	adcq	%r13,%rax+ 	movq	%r14,48(%rdi) 	movq	%r15,56(%rdi) 	movq	%rbx,64(%rdi) 	movq	%rbp,72(%rdi) 	movq	%rcx,80(%rdi)-	movq	%rdx,88(%rdi)+	movq	%rax,88(%rdi)  	leaq	1112(%rsp),%r8 	movq	0(%r8),%r15@@ -893,10 +933,10 @@ 	.byte	0xf3,0xc3 #endif .cfi_endproc	-.size	ctx_inverse_mod_383,.-ctx_inverse_mod_383-.type	__smulx_767x63,@function+.size	ctx_inverse_mod_384,.-ctx_inverse_mod_384+.type	__smulx_768x63,@function .align	32-__smulx_767x63:+__smulx_768x63: .cfi_startproc 	.byte	0xf3,0x0f,0x1e,0xfa @@ -906,6 +946,7 @@ 	movq	24(%rsi),%r11 	movq	32(%rsi),%r12 	movq	40(%rsi),%r13+	movq	48(%rsi),%r14  	movq	%rdx,%rax 	sarq	$63,%rax@@ -914,7 +955,7 @@  	movq	%rdi,8(%rsp) 	movq	%rsi,16(%rsp)-	leaq	48(%rsi),%rsi+	leaq	56(%rsi),%rsi  	xorq	%rax,%rdx 	addq	%rbp,%rdx@@ -924,37 +965,41 @@ 	xorq	%rax,%r10 	xorq	%rax,%r11 	xorq	%rax,%r12-	xorq	%r13,%rax+	xorq	%rax,%r13+	xorq	%rax,%r14 	addq	%rbp,%r8 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12-	adcq	$0,%rax+	adcq	$0,%r13+	adcq	$0,%r14 +	andq	%rdx,%r14+	negq	%r14+ 	mulxq	%r8,%r8,%rbp-	mulxq	%r9,%r9,%r13+	mulxq	%r9,%r9,%rax 	addq	%rbp,%r9 	mulxq	%r10,%r10,%rbp-	adcq	%r13,%r10-	mulxq	%r11,%r11,%r13+	adcq	%rax,%r10+	mulxq	%r11,%r11,%rax 	adcq	%rbp,%r11 	mulxq	%r12,%r12,%rbp-	adcq	%r13,%r12-	adcq	$0,%rbp-	imulq	%rdx-	addq	%rbp,%rax-	adcq	$0,%rdx+	adcq	%rax,%r12+	mulxq	%r13,%r13,%rax+	adcq	%rbp,%r13+	adcq	%rax,%r14  	movq	%r8,0(%rdi) 	movq	%r9,8(%rdi) 	movq	%r10,16(%rdi) 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi)-	movq	%rax,40(%rdi)-	movq	%rdx,48(%rdi)-	sarq	$63,%rdx-	movq	%rdx,56(%rdi)+	movq	%r13,40(%rdi)+	movq	%r14,48(%rdi)+	sarq	$63,%r14+	movq	%r14,56(%rdi) 	movq	%rcx,%rdx 	movq	%rcx,%rax @@ -989,7 +1034,7 @@ 	xorq	%rax,%rbx 	xorq	%rax,%rbp 	xorq	%rax,%rcx-	xorq	%rax,%rdi+	xorq	%rdi,%rax 	addq	%rsi,%r8 	adcq	$0,%r9 	adcq	$0,%r10@@ -1001,63 +1046,65 @@ 	adcq	$0,%rbx 	adcq	$0,%rbp 	adcq	$0,%rcx-	adcq	$0,%rdi--	mulxq	%r8,%r8,%rax-	mulxq	%r9,%r9,%rsi-	addq	%rax,%r9-	mulxq	%r10,%r10,%rax-	adcq	%rsi,%r10-	mulxq	%r11,%r11,%rsi-	adcq	%rax,%r11-	mulxq	%r12,%r12,%rax-	adcq	%rsi,%r12-	mulxq	%r13,%r13,%rsi-	adcq	%rax,%r13-	mulxq	%r14,%r14,%rax-	adcq	%rsi,%r14-	mulxq	%r15,%r15,%rsi-	adcq	%rax,%r15-	mulxq	%rbx,%rbx,%rax-	adcq	%rsi,%rbx-	mulxq	%rbp,%rbp,%rsi-	adcq	%rax,%rbp-	mulxq	%rcx,%rcx,%rax-	adcq	%rsi,%rcx-	mulxq	%rdi,%rdi,%rsi-	movq	8(%rsp),%rdx-	movq	16(%rsp),%rsi-	adcq	%rdi,%rax+	adcq	$0,%rax -	addq	0(%rdx),%r8-	adcq	8(%rdx),%r9-	adcq	16(%rdx),%r10-	adcq	24(%rdx),%r11-	adcq	32(%rdx),%r12-	adcq	40(%rdx),%r13-	adcq	48(%rdx),%r14-	movq	56(%rdx),%rdi-	adcq	%rdi,%r15+	mulxq	%r8,%r8,%rsi+	mulxq	%r9,%r9,%rdi+	addq	%rsi,%r9+	mulxq	%r10,%r10,%rsi+	adcq	%rdi,%r10+	mulxq	%r11,%r11,%rdi+	adcq	%rsi,%r11+	mulxq	%r12,%r12,%rsi+	adcq	%rdi,%r12+	mulxq	%r13,%r13,%rdi+	adcq	%rsi,%r13+	mulxq	%r14,%r14,%rsi+	adcq	%rdi,%r14+	mulxq	%r15,%r15,%rdi+	adcq	%rsi,%r15+	mulxq	%rbx,%rbx,%rsi 	adcq	%rdi,%rbx-	adcq	%rdi,%rbp+	mulxq	%rbp,%rbp,%rdi+	adcq	%rsi,%rbp+	mulxq	%rcx,%rcx,%rsi 	adcq	%rdi,%rcx-	adcq	%rdi,%rax+	movq	8(%rsp),%rdi+	adcq	$0,%rsi+	imulq	%rdx+	addq	%rsi,%rax+	adcq	$0,%rdx -	movq	%rdx,%rdi+	addq	0(%rdi),%r8+	adcq	8(%rdi),%r9+	adcq	16(%rdi),%r10+	adcq	24(%rdi),%r11+	adcq	32(%rdi),%r12+	adcq	40(%rdi),%r13+	adcq	48(%rdi),%r14+	movq	56(%rdi),%rsi+	adcq	%rsi,%r15+	adcq	%rsi,%rbx+	adcq	%rsi,%rbp+	adcq	%rsi,%rcx+	adcq	%rsi,%rax+	adcq	%rsi,%rdx -	movq	%r8,0(%rdx)-	movq	%r9,8(%rdx)-	movq	%r10,16(%rdx)-	movq	%r11,24(%rdx)-	movq	%r12,32(%rdx)-	movq	%r13,40(%rdx)-	movq	%r14,48(%rdx)-	movq	%r15,56(%rdx)-	movq	%rbx,64(%rdx)-	movq	%rbp,72(%rdx)-	movq	%rcx,80(%rdx)-	movq	%rax,88(%rdx)+	movq	16(%rsp),%rsi +	movq	%r8,0(%rdi)+	movq	%r9,8(%rdi)+	movq	%r10,16(%rdi)+	movq	%r11,24(%rdi)+	movq	%r12,32(%rdi)+	movq	%r13,40(%rdi)+	movq	%r14,48(%rdi)+	movq	%r15,56(%rdi)+	movq	%rbx,64(%rdi)+	movq	%rbp,72(%rdi)+	movq	%rcx,80(%rdi)+	movq	%rax,88(%rdi)+ 	 #ifdef	__SGX_LVI_HARDENING__ 	popq	%r8@@ -1068,10 +1115,10 @@ 	.byte	0xf3,0xc3 #endif .cfi_endproc-.size	__smulx_767x63,.-__smulx_767x63-.type	__smulx_383x63,@function+.size	__smulx_768x63,.-__smulx_768x63+.type	__smulx_384x63,@function .align	32-__smulx_383x63:+__smulx_384x63: .cfi_startproc 	.byte	0xf3,0x0f,0x1e,0xfa @@ -1081,6 +1128,7 @@ 	movq	0+24(%rsi),%r11 	movq	0+32(%rsi),%r12 	movq	0+40(%rsi),%r13+	movq	0+48(%rsi),%r14  	movq	%rdx,%rbp 	sarq	$63,%rbp@@ -1096,13 +1144,18 @@ 	xorq	%rbp,%r11 	xorq	%rbp,%r12 	xorq	%rbp,%r13+	xorq	%rbp,%r14 	addq	%rax,%r8 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12 	adcq	$0,%r13+	adcq	$0,%r14 +	andq	%rdx,%r14+	negq	%r14+ 	mulxq	%r8,%r8,%rbp 	mulxq	%r9,%r9,%rax 	addq	%rbp,%r9@@ -1115,19 +1168,22 @@ 	mulxq	%r13,%r13,%rax 	movq	%rcx,%rdx 	adcq	%rbp,%r13+	adcq	%rax,%r14  	movq	%r8,0(%rdi) 	movq	%r9,8(%rdi) 	movq	%r10,16(%rdi) 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi)-	movq	%r13,40(%rdi)-	movq	48+0(%rsi),%r8-	movq	48+8(%rsi),%r9-	movq	48+16(%rsi),%r10-	movq	48+24(%rsi),%r11-	movq	48+32(%rsi),%r12-	movq	48+40(%rsi),%r13+	movq	%r13,%r15+	movq	%r14,%rbx+	movq	56+0(%rsi),%r8+	movq	56+8(%rsi),%r9+	movq	56+16(%rsi),%r10+	movq	56+24(%rsi),%r11+	movq	56+32(%rsi),%r12+	movq	56+40(%rsi),%r13+	movq	56+48(%rsi),%r14  	movq	%rdx,%rbp 	sarq	$63,%rbp@@ -1143,13 +1199,18 @@ 	xorq	%rbp,%r11 	xorq	%rbp,%r12 	xorq	%rbp,%r13+	xorq	%rbp,%r14 	addq	%rax,%r8 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12 	adcq	$0,%r13+	adcq	$0,%r14 +	andq	%rdx,%r14+	negq	%r14+ 	mulxq	%r8,%r8,%rbp 	mulxq	%r9,%r9,%rax 	addq	%rbp,%r9@@ -1161,13 +1222,15 @@ 	adcq	%rax,%r12 	mulxq	%r13,%r13,%rax 	adcq	%rbp,%r13+	adcq	%rax,%r14  	addq	0(%rdi),%r8 	adcq	8(%rdi),%r9 	adcq	16(%rdi),%r10 	adcq	24(%rdi),%r11 	adcq	32(%rdi),%r12-	adcq	40(%rdi),%r13+	adcq	%r15,%r13+	adcq	%rbx,%r14  	movq	%r8,0(%rdi) 	movq	%r9,8(%rdi)@@ -1175,6 +1238,7 @@ 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi) 	movq	%r13,40(%rdi)+	movq	%r14,48(%rdi)  	 #ifdef	__SGX_LVI_HARDENING__@@ -1186,15 +1250,14 @@ 	.byte	0xf3,0xc3 #endif .cfi_endproc-.size	__smulx_383x63,.-__smulx_383x63-.type	__smulx_383_n_shift_by_31,@function+.size	__smulx_384x63,.-__smulx_384x63+.type	__smulx_384_n_shift_by_31,@function .align	32-__smulx_383_n_shift_by_31:+__smulx_384_n_shift_by_31: .cfi_startproc 	.byte	0xf3,0x0f,0x1e,0xfa  	movq	%rdx,%rbx-	xorq	%r14,%r14 	movq	0+0(%rsi),%r8 	movq	0+8(%rsi),%r9 	movq	0+16(%rsi),%r10@@ -1215,27 +1278,29 @@ 	xorq	%rax,%r10 	xorq	%rax,%r11 	xorq	%rax,%r12-	xorq	%r13,%rax+	xorq	%rax,%r13 	addq	%rbp,%r8 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12-	adcq	$0,%rax+	adcq	$0,%r13 +	andq	%rdx,%rax+	negq	%rax+ 	mulxq	%r8,%r8,%rbp-	mulxq	%r9,%r9,%r13+	mulxq	%r9,%r9,%r14 	addq	%rbp,%r9 	mulxq	%r10,%r10,%rbp-	adcq	%r13,%r10-	mulxq	%r11,%r11,%r13+	adcq	%r14,%r10+	mulxq	%r11,%r11,%r14 	adcq	%rbp,%r11 	mulxq	%r12,%r12,%rbp-	adcq	%r13,%r12-	adcq	$0,%rbp-	imulq	%rdx-	addq	%rbp,%rax-	adcq	%rdx,%r14+	adcq	%r14,%r12+	mulxq	%r13,%r13,%r14+	adcq	%rbp,%r13+	adcq	%rax,%r14  	movq	%rcx,%rdx @@ -1244,7 +1309,8 @@ 	movq	%r10,16(%rdi) 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi)-	movq	%rax,40(%rdi)+	movq	%r13,40(%rdi)+	movq	%r14,%r15 	movq	48+0(%rsi),%r8 	movq	48+8(%rsi),%r9 	movq	48+16(%rsi),%r10@@ -1265,43 +1331,45 @@ 	xorq	%rax,%r10 	xorq	%rax,%r11 	xorq	%rax,%r12-	xorq	%r13,%rax+	xorq	%rax,%r13 	addq	%rbp,%r8 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12-	adcq	$0,%rax+	adcq	$0,%r13 +	andq	%rdx,%rax+	negq	%rax+ 	mulxq	%r8,%r8,%rbp-	mulxq	%r9,%r9,%r13+	mulxq	%r9,%r9,%r14 	addq	%rbp,%r9 	mulxq	%r10,%r10,%rbp-	adcq	%r13,%r10-	mulxq	%r11,%r11,%r13+	adcq	%r14,%r10+	mulxq	%r11,%r11,%r14 	adcq	%rbp,%r11 	mulxq	%r12,%r12,%rbp-	adcq	%r13,%r12-	adcq	$0,%rbp-	imulq	%rdx-	addq	%rbp,%rax-	adcq	$0,%rdx+	adcq	%r14,%r12+	mulxq	%r13,%r13,%r14+	adcq	%rbp,%r13+	adcq	%rax,%r14  	addq	0(%rdi),%r8 	adcq	8(%rdi),%r9 	adcq	16(%rdi),%r10 	adcq	24(%rdi),%r11 	adcq	32(%rdi),%r12-	adcq	40(%rdi),%rax-	adcq	%rdx,%r14+	adcq	40(%rdi),%r13+	adcq	%r15,%r14 	movq	%rbx,%rdx  	shrdq	$31,%r9,%r8 	shrdq	$31,%r10,%r9 	shrdq	$31,%r11,%r10 	shrdq	$31,%r12,%r11-	shrdq	$31,%rax,%r12-	shrdq	$31,%r14,%rax+	shrdq	$31,%r13,%r12+	shrdq	$31,%r14,%r13  	sarq	$63,%r14 	xorq	%rbp,%rbp@@ -1312,20 +1380,20 @@ 	xorq	%r14,%r10 	xorq	%r14,%r11 	xorq	%r14,%r12-	xorq	%r14,%rax+	xorq	%r14,%r13 	addq	%rbp,%r8 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12-	adcq	$0,%rax+	adcq	$0,%r13  	movq	%r8,0(%rdi) 	movq	%r9,8(%rdi) 	movq	%r10,16(%rdi) 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi)-	movq	%rax,40(%rdi)+	movq	%r13,40(%rdi)  	xorq	%r14,%rdx 	xorq	%r14,%rcx@@ -1342,7 +1410,7 @@ 	.byte	0xf3,0xc3 #endif .cfi_endproc-.size	__smulx_383_n_shift_by_31,.-__smulx_383_n_shift_by_31+.size	__smulx_384_n_shift_by_31,.-__smulx_384_n_shift_by_31 .type	__smulx_191_n_shift_by_31,@function .align	32 __smulx_191_n_shift_by_31:@@ -1585,9 +1653,9 @@ .cfi_endproc .size	__inner_loop_31,.-__inner_loop_31 -.type	__tail_loop_53,@function+.type	__tail_loop_55,@function .align	32-__tail_loop_53:+__tail_loop_55: .cfi_startproc 	.byte	0xf3,0x0f,0x1e,0xfa @@ -1596,7 +1664,7 @@ 	xorq	%r12,%r12 	movq	$1,%r13 -.Loop_53:+.Loop_55: 	xorq	%rax,%rax 	testq	$1,%r8 	movq	%r10,%rbx@@ -1623,7 +1691,7 @@ 	subq	%rax,%rdx 	subq	%rbx,%rcx 	subl	$1,%edi-	jnz	.Loop_53+	jnz	.Loop_55  	 #ifdef	__SGX_LVI_HARDENING__@@ -1635,7 +1703,7 @@ 	.byte	0xf3,0xc3 #endif .cfi_endproc-.size	__tail_loop_53,.-__tail_loop_53+.size	__tail_loop_55,.-__tail_loop_55  .section	.note.GNU-stack,"",@progbits #ifndef	__SGX_LVI_HARDENING__
c-source/build/elf/div3w-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text  .globl	div_3_limbs@@ -5,6 +13,7 @@ .type	div_3_limbs,%function .align	5 div_3_limbs:+	hint	#34 	ldp	x4,x5,[x0]	// load R 	eor	x0,x0,x0	// Q = 0 	mov	x3,#64		// loop counter@@ -39,6 +48,7 @@ .type	quot_rem_128,%function .align	5 quot_rem_128:+	hint	#34 	ldp	x3,x4,[x1]  	mul	x5,x3,x2	// divisor[0:1} * quotient@@ -76,6 +86,7 @@ .type	quot_rem_64,%function .align	5 quot_rem_64:+	hint	#34 	ldr	x3,[x1] 	ldr	x8,[x0]	// load 1 limb of the dividend @@ -89,3 +100,13 @@  	ret .size	quot_rem_64,.-quot_rem_64++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section	.note.GNU-stack,"",@progbits+.section	.note.gnu.property,"a",@note+	.long	4,2f-1f,5+	.byte	0x47,0x4E,0x55,0+1:	.long	0xc0000000,4,3+.align  3+2:+#endif
c-source/build/elf/mul_mont_256-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text  .globl	mul_mont_sparse_256@@ -5,6 +13,7 @@ .type	mul_mont_sparse_256,%function .align	5 mul_mont_sparse_256:+	hint	#34 	stp	x29,x30,[sp,#-8*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -196,7 +205,7 @@ .type	sqr_mont_sparse_256,%function .align	5 sqr_mont_sparse_256:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -297,7 +306,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sqr_mont_sparse_256,.-sqr_mont_sparse_256 .globl	from_mont_256@@ -305,7 +314,7 @@ .type	from_mont_256,%function .align	5 from_mont_256:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-2*__SIZEOF_POINTER__]! 	add	x29,sp,#0 @@ -330,7 +339,7 @@ 	stp	x12,x13,[x0,#16]  	ldr	x29,[sp],#2*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	from_mont_256,.-from_mont_256 @@ -339,7 +348,7 @@ .type	redc_mont_256,%function .align	5 redc_mont_256:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-2*__SIZEOF_POINTER__]! 	add	x29,sp,#0 @@ -374,7 +383,7 @@ 	stp	x12,x13,[x0,#16]  	ldr	x29,[sp],#2*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	redc_mont_256,.-redc_mont_256 @@ -462,3 +471,13 @@  	ret .size	__mul_by_1_mont_256,.-__mul_by_1_mont_256++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section	.note.GNU-stack,"",@progbits+.section	.note.gnu.property,"a",@note+	.long	4,2f-1f,5+	.byte	0x47,0x4E,0x55,0+1:	.long	0xc0000000,4,3+.align  3+2:+#endif
c-source/build/elf/mul_mont_384-armv8.S view
@@ -1,10 +1,19 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text  .globl	add_mod_384x384+.hidden	add_mod_384x384 .type	add_mod_384x384,%function .align	5 add_mod_384x384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-8*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -22,7 +31,7 @@ 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldp	x23,x24,[x29,#6*__SIZEOF_POINTER__] 	ldr	x29,[sp],#8*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	add_mod_384x384,.-add_mod_384x384 @@ -82,10 +91,11 @@ .size	__add_mod_384x384,.-__add_mod_384x384  .globl	sub_mod_384x384+.hidden	sub_mod_384x384 .type	sub_mod_384x384,%function .align	5 sub_mod_384x384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-8*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -103,7 +113,7 @@ 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldp	x23,x24,[x29,#6*__SIZEOF_POINTER__] 	ldr	x29,[sp],#8*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sub_mod_384x384,.-sub_mod_384x384 @@ -239,7 +249,7 @@ .type	mul_mont_384x,%function .align	5 mul_mont_384x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -312,7 +322,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	mul_mont_384x,.-mul_mont_384x @@ -321,7 +331,7 @@ .type	sqr_mont_384x,%function .align	5 sqr_mont_384x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -397,7 +407,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sqr_mont_384x,.-sqr_mont_384x @@ -406,7 +416,7 @@ .type	mul_mont_384,%function .align	5 mul_mont_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -438,7 +448,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	mul_mont_384,.-mul_mont_384 @@ -819,7 +829,7 @@ .type	sqr_mont_384,%function .align	5 sqr_mont_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -856,7 +866,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sqr_mont_384,.-sqr_mont_384 @@ -865,7 +875,7 @@ .type	sqr_n_mul_mont_383,%function .align	5 sqr_n_mul_mont_383:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -921,7 +931,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sqr_n_mul_mont_383,.-sqr_n_mul_mont_383 .type	__sqr_384,%function@@ -1042,7 +1052,7 @@ .type	sqr_384,%function .align	5 sqr_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1064,7 +1074,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sqr_384,.-sqr_384 @@ -1073,7 +1083,7 @@ .type	redc_mont_384,%function .align	5 redc_mont_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1097,7 +1107,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	redc_mont_384,.-redc_mont_384 @@ -1106,7 +1116,7 @@ .type	from_mont_384,%function .align	5 from_mont_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1147,7 +1157,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	from_mont_384,.-from_mont_384 @@ -1365,7 +1375,7 @@ .type	mul_384,%function .align	5 mul_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1383,7 +1393,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	mul_384,.-mul_384 @@ -1569,7 +1579,7 @@ .type	mul_382x,%function .align	5 mul_382x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1651,7 +1661,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	mul_382x,.-mul_382x @@ -1660,7 +1670,7 @@ .type	sqr_382x,%function .align	5 sqr_382x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1751,7 +1761,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sqr_382x,.-sqr_382x @@ -1760,7 +1770,7 @@ .type	sqr_mont_382x,%function .align	5 sqr_mont_382x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1875,7 +1885,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sqr_mont_382x,.-sqr_mont_382x @@ -2224,7 +2234,7 @@ .type	sgn0_pty_mont_384,%function .align	5 sgn0_pty_mont_384:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -2269,7 +2279,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sgn0_pty_mont_384,.-sgn0_pty_mont_384 @@ -2278,7 +2288,7 @@ .type	sgn0_pty_mont_384x,%function .align	5 sgn0_pty_mont_384x:-	.inst	0xd503233f+	hint	#PACI_HINT 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -2367,6 +2377,16 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-	.inst	0xd50323bf+	hint	#AUTI_HINT 	ret .size	sgn0_pty_mont_384x,.-sgn0_pty_mont_384x++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section	.note.GNU-stack,"",@progbits+.section	.note.gnu.property,"a",@note+	.long	4,2f-1f,5+	.byte	0x47,0x4E,0x55,0+1:	.long	0xc0000000,4,3+.align  3+2:+#endif
c-source/build/elf/sha256-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ // // Copyright Supranational LLC // Licensed under the Apache License, Version 2.0, see LICENSE for details.@@ -43,9 +51,11 @@ .align	2 .align	2 .globl	blst_sha256_block_armv8+.hidden	blst_sha256_block_armv8 .type	blst_sha256_block_armv8,%function .align	6 blst_sha256_block_armv8:+	hint	#34 .Lv8_entry: 	stp	x29,x30,[sp,#-2*__SIZEOF_POINTER__]! 	add	x29,sp,#0@@ -182,9 +192,11 @@ 	ret .size	blst_sha256_block_armv8,.-blst_sha256_block_armv8 .globl	blst_sha256_block_data_order+.hidden	blst_sha256_block_data_order .type	blst_sha256_block_data_order,%function .align	4 blst_sha256_block_data_order:+	hint	#34 	adrp	x16,__blst_platform_cap 	ldr	w16,[x16,#:lo12:__blst_platform_cap] 	tst	w16,#1@@ -1034,6 +1046,7 @@ .type	blst_sha256_emit,%function .align	4 blst_sha256_emit:+	hint	#34 	ldp	x4,x5,[x1] 	ldp	x6,x7,[x1,#16] #ifndef	__AARCH64EB__@@ -1062,6 +1075,7 @@ .type	blst_sha256_bcopy,%function .align	4 blst_sha256_bcopy:+	hint	#34 .Loop_bcopy: 	ldrb	w3,[x1],#1 	sub	x2,x2,#1@@ -1075,9 +1089,20 @@ .type	blst_sha256_hcopy,%function .align	4 blst_sha256_hcopy:+	hint	#34 	ldp	x4,x5,[x1] 	ldp	x6,x7,[x1,#16] 	stp	x4,x5,[x0] 	stp	x6,x7,[x0,#16] 	ret .size	blst_sha256_hcopy,.-blst_sha256_hcopy++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section	.note.GNU-stack,"",@progbits+.section	.note.gnu.property,"a",@note+	.long	4,2f-1f,5+	.byte	0x47,0x4E,0x55,0+1:	.long	0xc0000000,4,3+.align  3+2:+#endif
c-source/build/mach-o/add_mod_256-armv8.S view
@@ -5,6 +5,7 @@  .align	5 _add_mod_256:+	hint	#34 	ldp	x8,x9,[x1] 	ldp	x12,x13,[x2] @@ -39,6 +40,7 @@  .align	5 _mul_by_3_mod_256:+	hint	#34 	ldp	x12,x13,[x1] 	ldp	x14,x15,[x1,#16] @@ -88,6 +90,7 @@  .align	5 _lshift_mod_256:+	hint	#34 	ldp	x8,x9,[x1] 	ldp	x10,x11,[x1,#16] @@ -126,6 +129,7 @@  .align	5 _rshift_mod_256:+	hint	#34 	ldp	x8,x9,[x1] 	ldp	x10,x11,[x1,#16] 
c-source/build/mach-o/add_mod_384-armv8.S view
@@ -5,7 +5,7 @@  .align	5 _add_mod_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -25,7 +25,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -71,7 +71,7 @@  .align	5 _add_mod_384x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -99,7 +99,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -108,7 +108,7 @@  .align	5 _rshift_mod_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -135,7 +135,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -170,7 +170,7 @@  .align	5 _div_by_2_mod_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -194,7 +194,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -203,7 +203,7 @@  .align	5 _lshift_mod_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -230,7 +230,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -268,7 +268,7 @@  .align	5 _mul_by_3_mod_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -298,7 +298,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -307,7 +307,7 @@  .align	5 _mul_by_8_mod_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -333,7 +333,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -342,7 +342,7 @@  .align	5 _mul_by_3_mod_384x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -387,7 +387,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -396,7 +396,7 @@  .align	5 _mul_by_8_mod_384x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -433,7 +433,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -442,7 +442,7 @@  .align	5 _cneg_mod_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -484,7 +484,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -493,7 +493,7 @@  .align	5 _sub_mod_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -513,7 +513,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -556,7 +556,7 @@  .align	5 _sub_mod_384x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -584,7 +584,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -593,7 +593,7 @@  .align	5 _mul_by_1_plus_i_mod_384x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -626,7 +626,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -635,6 +635,7 @@  .align	5 _sgn0_pty_mod_384:+	hint	#34 	ldp	x10,x11,[x0] 	ldp	x12,x13,[x0,#16] 	ldp	x14,x15,[x0,#32]@@ -672,6 +673,7 @@  .align	5 _sgn0_pty_mod_384x:+	hint	#34 	ldp	x10,x11,[x0] 	ldp	x12,x13,[x0,#16] 	ldp	x14,x15,[x0,#32]@@ -753,14 +755,14 @@  .align	5 _vec_select_32:+	hint	#34 	dup	v6.2d, x3-	ld1	{v0.2d, v1.2d, v2.2d}, [x1],#48+	ld1	{v0.2d, v1.2d}, [x1] 	cmeq	v6.2d, v6.2d, #0-	ld1	{v3.2d, v4.2d, v5.2d}, [x2],#48+	ld1	{v3.2d, v4.2d}, [x2] 	bit	v0.16b, v3.16b, v6.16b 	bit	v1.16b, v4.16b, v6.16b-	bit	v2.16b, v5.16b, v6.16b-	st1	{v0.2d, v1.2d, v2.2d}, [x0]+	st1	{v0.2d, v1.2d}, [x0] 	ret  .globl	_vec_select_48@@ -768,6 +770,7 @@  .align	5 _vec_select_48:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [x1],#48 	cmeq	v6.2d, v6.2d, #0@@ -783,6 +786,7 @@  .align	5 _vec_select_96:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [x1],#48 	cmeq	v6.2d, v6.2d, #0@@ -804,6 +808,7 @@  .align	5 _vec_select_192:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [x1],#48 	cmeq	v6.2d, v6.2d, #0@@ -837,6 +842,7 @@  .align	5 _vec_select_144:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [x1],#48 	cmeq	v6.2d, v6.2d, #0@@ -864,6 +870,7 @@  .align	5 _vec_select_288:+	hint	#34 	dup	v6.2d, x3 	ld1	{v0.2d, v1.2d, v2.2d}, [x1],#48 	cmeq	v6.2d, v6.2d, #0@@ -909,6 +916,7 @@  .align	5 _vec_prefetch:+	hint	#34 	add	x1, x1, x0 	sub	x1, x1, #1 	mov	x2, #64@@ -949,6 +957,7 @@  .align	5 _vec_is_zero_16x:+	hint	#34 	ld1	{v0.2d}, [x0], #16 	lsr	x1, x1, #4 	sub	x1, x1, #1@@ -974,6 +983,7 @@  .align	5 _vec_is_equal_16x:+	hint	#34 	ld1	{v0.2d}, [x0], #16 	ld1	{v1.2d}, [x1], #16 	lsr	x2, x2, #4
c-source/build/mach-o/ct_inverse_mod_256-armv8.S view
@@ -5,7 +5,7 @@  .align	5 _ct_inverse_mod_256:-.long	3573752639+	hint	#25 	stp	x29, x30, [sp,#-10*__SIZEOF_POINTER__]! 	add	x29, sp, #0 	stp	x19, x20, [sp,#2*__SIZEOF_POINTER__]@@ -48,7 +48,7 @@ 	mov	x13, x15			// |g1| 	add	x0,x0,#8*4 	bl	__smul_256_n_shift_by_31-	str	x12, [x0,#8*9]		// initialize |v| with |f1|+	str	x12, [x0,#8*10]		// initialize |v| with |f1|  	////////////////////////////////////////// second iteration 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -71,19 +71,17 @@ 	bl	__smul_256_n_shift_by_31  	ldr	x8, [x1,#8*8]		// |u|-	ldr	x9, [x1,#8*13]	// |v|+	ldr	x9, [x1,#8*14]	// |v| 	madd	x4, x16, x8, xzr	// |u|*|f0| 	madd	x4, x17, x9, x4	// |v|*|g0|-	str	x4, [x0,#8*4] 	asr	x5, x4, #63		// sign extension-	stp	x5, x5, [x0,#8*5]-	stp	x5, x5, [x0,#8*7]+	stp	x4, x5, [x0,#8*4]+	stp	x5, x5, [x0,#8*6]  	madd	x4, x12, x8, xzr	// |u|*|f1| 	madd	x4, x13, x9, x4	// |v|*|g1|-	str	x4, [x0,#8*9] 	asr	x5, x4, #63		// sign extension-	stp	x5, x5, [x0,#8*10]+	stp	x4, x5, [x0,#8*10] 	stp	x5, x5, [x0,#8*12] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__@@ -106,16 +104,10 @@  	add	x0,x0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [x0,#8*4]-	stp	x22, x22, [x0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -137,16 +129,10 @@  	add	x0,x0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [x0,#8*4]-	stp	x22, x22, [x0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -168,16 +154,10 @@  	add	x0,x0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [x0,#8*4]-	stp	x22, x22, [x0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -199,16 +179,10 @@  	add	x0,x0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [x0,#8*4]-	stp	x22, x22, [x0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -230,16 +204,10 @@  	add	x0,x0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [x0,#8*4]-	stp	x22, x22, [x0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -261,16 +229,15 @@  	add	x0,x0,#8*4 	bl	__smul_256x63-	adc	x22, x22, x23-	str	x22, [x0,#8*4]-+	asr	x24, x24, #63+	str	x24, [x0,#8*4] 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63-	adc	x22, x22, x23-	stp	x22, x22, [x0,#8*4]-	stp	x22, x22, [x0,#8*6]+	asr	x24, x24, #63		// sign extension+	stp	x24, x24, [x0,#8*4]+	stp	x24, x24, [x0,#8*6] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -294,10 +261,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -323,10 +289,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -352,10 +317,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -381,10 +345,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -410,10 +373,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -439,10 +401,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -468,10 +429,9 @@ 	bl	__smul_256x63 	adc	x22, x22, x23 	str	x22, [x0,#8*4]- 	mov	x16, x12			// corrected |f1| 	mov	x17, x13			// corrected |g1|-	add	x0,x0,#8*5+	add	x0,x0,#8*6 	bl	__smul_256x63 	bl	__smul_512x63_tail 	////////////////////////////////////////// two[!] last iterations@@ -541,7 +501,7 @@ 	ldp	x23, x24, [x29,#6*__SIZEOF_POINTER__] 	ldp	x25, x26, [x29,#8*__SIZEOF_POINTER__] 	ldr	x29, [sp],#10*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -579,11 +539,11 @@ 	adcs	x6, x6, x20 	adcs	x24, x24, x21 	adc	x26, xzr, xzr-	ldp	x8, x9, [x1,#8*0+104]	// load |u| (or |v|)+	ldp	x8, x9, [x1,#8*0+112]	// load |u| (or |v|) 	asr	x14, x17, #63		// |f_|'s sign as mask (or |g_|'s)-	ldp	x10, x11, [x1,#8*2+104]+	ldp	x10, x11, [x1,#8*2+112] 	eor	x17, x17, x14		// conditionally negate |f_| (or |g_|)-	ldr	x23, [x1,#8*4+104]+	ldr	x23, [x1,#8*4+112]  	eor	x8, x8, x14	// conditionally negate |u| (or |v|) 	sub	x17, x17, x14@@ -625,9 +585,9 @@ .align	5 __smul_512x63_tail: 	umulh	x24, x7, x16-	ldp	x5, x6, [x1,#8*18]	// load rest of |v|+	ldr	x5, [x1,#8*19]	// load rest of |v| 	adc	x26, x26, xzr-	ldr	x7, [x1,#8*20]+	ldp	x6, x7, [x1,#8*20] 	and	x22, x22, x16  	umulh	x11, x11, x17	// resume |v|*|g1| chain
c-source/build/mach-o/ct_inverse_mod_384-armv8.S view
@@ -1,11 +1,11 @@ .text -.globl	_ct_inverse_mod_383-.private_extern	_ct_inverse_mod_383+.globl	_ct_inverse_mod_384+.private_extern	_ct_inverse_mod_384  .align	5-_ct_inverse_mod_383:-.long	3573752639+_ct_inverse_mod_384:+	hint	#25 	stp	x29, x30, [sp,#-16*__SIZEOF_POINTER__]! 	add	x29, sp, #0 	stp	x19, x20, [sp,#2*__SIZEOF_POINTER__]@@ -47,14 +47,14 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	str	x15,[x0,#8*12]		// initialize |u| with |f0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62-	str	x15, [x0,#8*12]		// initialize |v| with |f1|+	bl	__smul_384_n_shift_by_62+	str	x15, [x0,#8*14]		// initialize |v| with |f1|  	////////////////////////////////////////// second iteration 	eor	x1, x1, #256		// flip-flop src |a|b|u|v|@@ -68,17 +68,17 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	ldr	x7, [x1,#8*12]	// |u|-	ldr	x8, [x1,#8*18]	// |v|+	ldr	x8, [x1,#8*20]	// |v| 	mul	x3, x20, x7		// |u|*|f0| 	smulh	x4, x20, x7 	mul	x5, x21, x8		// |v|*|g0|@@ -96,10 +96,10 @@ 	smulh	x6, x16, x8 	adds	x3, x3, x5 	adc	x4, x4, x6-	stp	x3, x4, [x0,#8*12]+	stp	x3, x4, [x0,#8*14] 	asr	x5, x4, #63		// sign extension-	stp	x5, x5, [x0,#8*14] 	stp	x5, x5, [x0,#8*16]+	stp	x5, x5, [x0,#8*18] 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -111,22 +111,21 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63+	add	x0,x0,#8*8+	bl	__smul_384x63 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -138,22 +137,21 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63+	add	x0,x0,#8*8+	bl	__smul_384x63 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -165,22 +163,21 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63+	add	x0,x0,#8*8+	bl	__smul_384x63 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -192,22 +189,23 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	asr	x27, x27, #63+	str	x27, [x0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63+	add	x0,x0,#8*8+	bl	__smul_384x63 	asr	x27, x27, #63		// sign extension 	stp	x27, x27, [x0,#8*6] 	stp	x27, x27, [x0,#8*8]@@ -223,23 +221,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [x0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	x0,x0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -251,23 +250,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [x0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	x0,x0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -279,23 +279,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [x0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	x0,x0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -307,23 +308,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [x0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	x0,x0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1@@ -335,23 +337,24 @@ #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c0,csp,x0 #endif-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62 	mov	x20, x15			// corrected |f0| 	mov	x21, x16			// corrected |g0|  	mov	x15, x17			// |f1| 	mov	x16, x19			// |g1| 	add	x0,x0,#8*6-	bl	__smul_383_n_shift_by_62+	bl	__smul_384_n_shift_by_62  	add	x0,x0,#8*6-	bl	__smul_383x63-+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [x0,#8*6] 	mov	x20, x15			// corrected |f1| 	mov	x21, x16			// corrected |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	x0,x0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail 	////////////////////////////////////////// iteration before last 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__@@ -375,20 +378,22 @@ 	mov	x15, x17 	mov	x16, x19 	add	x0,x0,#8*12-	bl	__smul_383x63+	bl	__smul_384x63+	adc	x25, x25, x26+	str	x25, [x0,#8*6]  	mov	x20, x15			// exact |f1| 	mov	x21, x16			// exact |g1|-	add	x0,x0,#8*6-	bl	__smul_383x63-	bl	__smul_767x63_tail+	add	x0,x0,#8*8+	bl	__smul_384x63+	bl	__smul_768x63_tail  	////////////////////////////////////////// last iteration 	eor	x1, x1, #256		// flip-flop src |a|b|u|v| #ifdef	__CHERI_PURE_CAPABILITY__ 	scvalue	c1,csp,x1 #endif-	mov	x2, #22			// 766 % 62+	mov	x2, #24			// 768 % 62 	//bl	__ab_approximation_62		// |a| and |b| are exact, 	ldr	x3, [x1,#8*0]		// just load 	eor	x8, x8, x8@@ -399,25 +404,60 @@ 	mov	x20, x17 	mov	x21, x19 	ldp	x0, x15, [sp]			// original out_ptr and n_ptr-	bl	__smul_383x63-	bl	__smul_767x63_tail+	bl	__smul_384x63+	bl	__smul_768x63_tail 	ldr	x30, [x29,#__SIZEOF_POINTER__] -	asr	x22, x8, #63		// sign as mask-	ldp	x9, x10, [x15,#8*0]+	smulh	x23, x8, x21		// figure out top-most limb+	adc	x26, x26, x28+	ldp	x9, x10, [x15,#8*0]	// load |mod|+	add	x23, x23, x26		// x23 is 1, 0 or -1 	ldp	x11, x12, [x15,#8*2]+	asr	x22, x23, #63		// sign as mask 	ldp	x13, x14, [x15,#8*4] -	and	x9, x9, x22		// add mod<<384 conditionally-	and	x10, x10, x22-	adds	x3, x3, x9-	and	x11, x11, x22+	and	x26,   x9, x22		// add mod<<384 conditionally+	and	x27,   x10, x22+	adds	x3, x3, x26+	and	x28,   x11, x22+	adcs	x4, x4, x27+	and	x2,   x12, x22+	adcs	x5, x5, x28+	and	x26,   x13, x22+	adcs	x6, x6, x2+	and	x27,   x14, x22+	adcs	x7, x7, x26+	adcs	x8, x25,   x27+	adc	x23, x23, xzr		// x23 is 1, 0 or -1++	neg	x22, x23+	orr	x23, x23, x22		// excess bit or sign as mask+	asr	x22, x22, #63		// excess bit as mask++	and	x9, x9, x23		// mask |mod|+	and	x10, x10, x23+	and	x11, x11, x23+	and	x12, x12, x23+	and	x13, x13, x23+	and	x14, x14, x23++	eor	x9,  x9, x22	// conditionally negate |mod|+	eor	x10,  x10, x22+	adds	x9,  x9, x22, lsr#63+	eor	x11,  x11, x22+	adcs	x10,  x10, xzr+	eor	x12,  x12, x22+	adcs	x11,  x11, xzr+	eor	x13, x13, x22+	adcs	x12,  x12, xzr+	eor	x14, x14, x22+	adcs	x13, x13, xzr+	adc	x14, x14, xzr++	adds	x3, x3, x9	// final adjustment for |mod|<<384 	adcs	x4, x4, x10-	and	x12, x12, x22 	adcs	x5, x5, x11-	and	x13, x13, x22 	adcs	x6, x6, x12-	and	x14, x14, x22 	stp	x3, x4, [x0,#8*6] 	adcs	x7, x7, x13 	stp	x5, x6, [x0,#8*8]@@ -431,7 +471,7 @@ 	ldp	x25, x26, [x29,#8*__SIZEOF_POINTER__] 	ldp	x27, x28, [x29,#10*__SIZEOF_POINTER__] 	ldr	x29, [sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -439,7 +479,7 @@ // see corresponding commentary in ctx_inverse_mod_384-x86_64...  .align	5-__smul_383x63:+__smul_384x63: 	ldp	x3, x4, [x1,#8*0+96]	// load |u| (or |v|) 	asr	x17, x20, #63		// |f_|'s sign as mask (or |g_|'s) 	ldp	x5, x6, [x1,#8*2+96]@@ -447,6 +487,7 @@ 	ldp	x7, x8, [x1,#8*4+96]  	eor	x3, x3, x17	// conditionally negate |u| (or |v|)+	ldr	x25, [x1,#8*6+96] 	sub	x20, x20, x17 	eor	x4, x4, x17 	adds	x3, x3, x17, lsr#63@@ -461,28 +502,33 @@ 	umulh	x23, x4, x20 	adcs	x7, x7, xzr 	umulh	x24, x5, x20-	adcs	x8, x8, xzr-	umulh	x25, x6, x20-	umulh	x26, x7, x20+	eor	x25, x25, x17 	mul	x3, x3, x20+	adcs	x8, x8, xzr 	mul	x4, x4, x20+	adcs	x25, x25, xzr+	cmp	x20, #0 	mul	x5, x5, x20+	csel	x25, x25, xzr, ne 	adds	x4, x4, x22-	mul	x6, x6, x20+	umulh	x22, x6, x20 	adcs	x5, x5, x23+	umulh	x23, x7, x20+	mul	x6, x6, x20 	mul	x7, x7, x20 	adcs	x6, x6, x24 	mul	x27,x8, x20-	adcs	x7, x7, x25-	adcs	x27,x27,x26+	adcs	x7, x7, x22+	adcs	x27,x27,x23 	adc	x2, xzr, xzr-	ldp	x9, x10, [x1,#8*0+144]	// load |u| (or |v|)+	ldp	x9, x10, [x1,#8*0+160]	// load |u| (or |v|) 	asr	x17, x21, #63		// |f_|'s sign as mask (or |g_|'s)-	ldp	x11, x12, [x1,#8*2+144]+	ldp	x11, x12, [x1,#8*2+160] 	eor	x21, x21, x17		// conditionally negate |f_| (or |g_|)-	ldp	x13, x14, [x1,#8*4+144]+	ldp	x13, x14, [x1,#8*4+160]  	eor	x9, x9, x17	// conditionally negate |u| (or |v|)+	ldr	x26, [x1,#8*6+160] 	sub	x21, x21, x17 	eor	x10, x10, x17 	adds	x9, x9, x17, lsr#63@@ -497,21 +543,25 @@ 	umulh	x23, x10, x21 	adcs	x13, x13, xzr 	umulh	x24, x11, x21-	adcs	x14, x14, xzr-	umulh	x25, x12, x21-	adc	x19, xzr, xzr		// used in __smul_767x63_tail-	umulh	x26, x13, x21+	eor	x26, x26, x17 	mul	x9, x9, x21+	adcs	x14, x14, xzr 	mul	x10, x10, x21+	adcs	x26, x26, xzr+	adc	x19, xzr, xzr		// used in __smul_768x63_tail+	cmp	x21, #0 	mul	x11, x11, x21+	csel	x26, x26, xzr, ne 	adds	x10, x10, x22-	mul	x12, x12, x21+	umulh	x22, x12, x21 	adcs	x11, x11, x23+	umulh	x23, x13, x21+	mul	x12, x12, x21 	mul	x13, x13, x21 	adcs	x12, x12, x24 	mul	x28,x14, x21-	adcs	x13, x13, x25-	adcs	x28,x28,x26+	adcs	x13, x13, x22+	adcs	x28,x28,x23 	adc	x2, x2, xzr  	adds	x3, x3, x9@@ -523,41 +573,41 @@ 	stp	x5, x6, [x0,#8*2] 	adcs	x27,   x27,   x28 	stp	x7, x27,   [x0,#8*4]-	adc	x28,   x2,   xzr	// used in __smul_767x63_tail  	ret    .align	5-__smul_767x63_tail:-	smulh	x27,   x8, x20-	ldp	x3, x4, [x1,#8*24]	// load rest of |v|-	umulh	x14,x14, x21-	ldp	x5, x6, [x1,#8*26]-	ldp	x7, x8, [x1,#8*28]+__smul_768x63_tail:+	umulh	x27, x8, x20+	ldr	x4, [x1,#8*27]// load rest of |v|+	adc	x2, x2, xzr+	ldp	x5, x6, [x1,#8*28]+	and	x25, x25, x20+	ldp	x7, x8, [x1,#8*30]+	sub	x27, x27, x25	// tie up |u|*|f1| chain -	eor	x3, x3, x17	// conditionally negate rest of |v|-	eor	x4, x4, x17+	umulh	x14, x14, x21	// resume |v|*|g1| chain+	eor	x4, x4, x17	// conditionally negate rest of |v| 	eor	x5, x5, x17-	adds	x3, x3, x19 	eor	x6, x6, x17-	adcs	x4, x4, xzr+	adds	x4, x4, x19 	eor	x7, x7, x17 	adcs	x5, x5, xzr 	eor	x8, x8, x17 	adcs	x6, x6, xzr-	umulh	x22, x3, x21+	umulh	x22, x26,   x21 	adcs	x7, x7, xzr 	umulh	x23, x4, x21 	adc	x8, x8, xzr  	umulh	x24, x5, x21-	add	x14, x14, x28+	add	x14, x14, x2 	umulh	x25, x6, x21 	asr	x28, x27, #63-	umulh	x26, x7, x21-	mul	x3, x3, x21+	umulh	x2, x7, x21+	mul	x3, x26,   x21 	mul	x4, x4, x21 	mul	x5, x5, x21 	adds	x3, x3, x14@@ -565,10 +615,11 @@ 	adcs	x4, x4, x22 	mul	x7, x7, x21 	adcs	x5, x5, x23-	mul	x8, x8, x21+	mul	x22,   x8, x21 	adcs	x6, x6, x24 	adcs	x7, x7, x25-	adc	x8, x8, x26+	adcs	x25,   x22, x2+	adc	x26, xzr, xzr		// used in the final step  	adds	x3, x3, x27 	adcs	x4, x4, x28@@ -577,15 +628,15 @@ 	stp	x3, x4, [x0,#8*6] 	adcs	x7, x7, x28 	stp	x5, x6, [x0,#8*8]-	adc	x8, x8, x28-	stp	x7, x8, [x0,#8*10]+	adcs	x25,   x25,   x28	// carry is used in the final step+	stp	x7, x25,   [x0,#8*10]  	ret    .align	5-__smul_383_n_shift_by_62:+__smul_384_n_shift_by_62: 	ldp	x3, x4, [x1,#8*0+0]	// load |a| (or |b|) 	asr	x28, x15, #63		// |f0|'s sign as mask (or |g0|'s) 	ldp	x5, x6, [x1,#8*2+0]@@ -605,25 +656,27 @@ 	adcs	x6, x6, xzr 	umulh	x23, x4, x2 	eor	x8, x8, x28-	umulh	x24, x5, x2+	mul	x3, x3, x2 	adcs	x7, x7, xzr-	umulh	x25, x6, x2+	mul	x4, x4, x2 	adc	x8, x8, xzr -	umulh	x26, x7, x2-	smulh	x27, x8, x2-	mul	x3, x3, x2-	mul	x4, x4, x2-	mul	x5, x5, x2+	umulh	x24, x5, x2+	and	x28, x28, x2+	umulh	x25, x6, x2 	adds	x4, x4, x22+	mul	x5, x5, x2+	umulh	x22, x7, x2+	neg	x28, x28 	mul	x6, x6, x2 	adcs	x5, x5, x23+	umulh	x23, x8, x2 	mul	x7, x7, x2 	adcs	x6, x6, x24 	mul	x8, x8, x2 	adcs	x7, x7, x25-	adcs	x8, x8 ,x26-	adc	x27, x27, xzr+	adcs	x8, x8, x22+	adc	x27, x23, x28 	ldp	x9, x10, [x1,#8*0+48]	// load |a| (or |b|) 	asr	x28, x16, #63		// |f0|'s sign as mask (or |g0|'s) 	ldp	x11, x12, [x1,#8*2+48]@@ -643,25 +696,27 @@ 	adcs	x12, x12, xzr 	umulh	x23, x10, x2 	eor	x14, x14, x28-	umulh	x24, x11, x2+	mul	x9, x9, x2 	adcs	x13, x13, xzr-	umulh	x25, x12, x2+	mul	x10, x10, x2 	adc	x14, x14, xzr -	umulh	x26, x13, x2-	smulh	x28, x14, x2-	mul	x9, x9, x2-	mul	x10, x10, x2-	mul	x11, x11, x2+	umulh	x24, x11, x2+	and	x28, x28, x2+	umulh	x25, x12, x2 	adds	x10, x10, x22+	mul	x11, x11, x2+	umulh	x22, x13, x2+	neg	x28, x28 	mul	x12, x12, x2 	adcs	x11, x11, x23+	umulh	x23, x14, x2 	mul	x13, x13, x2 	adcs	x12, x12, x24 	mul	x14, x14, x2 	adcs	x13, x13, x25-	adcs	x14, x14 ,x26-	adc	x28, x28, xzr+	adcs	x14, x14, x22+	adc	x28, x23, x28 	adds	x3, x3, x9 	adcs	x4, x4, x10 	adcs	x5, x5, x11
c-source/build/mach-o/ct_is_square_mod_384-armv8.S view
@@ -5,7 +5,7 @@  .align	5 _ct_is_square_mod_384:-.long	3573752639+	hint	#25 	stp	x29, x30, [sp,#-16*__SIZEOF_POINTER__]! 	add	x29, sp, #0 	stp	x19, x20, [sp,#2*__SIZEOF_POINTER__]@@ -84,7 +84,7 @@ 	ldp	x25, x26, [x29,#8*__SIZEOF_POINTER__] 	ldp	x27, x28, [x29,#10*__SIZEOF_POINTER__] 	ldr	x29, [sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  
c-source/build/mach-o/ctq_inverse_mod_384-x86_64.s view
@@ -1,18 +1,18 @@ .comm	___blst_platform_cap,4 .text	 -.globl	_ct_inverse_mod_383-.private_extern	_ct_inverse_mod_383+.globl	_ct_inverse_mod_384+.private_extern	_ct_inverse_mod_384  .p2align	5-_ct_inverse_mod_383:+_ct_inverse_mod_384: .cfi_startproc 	.byte	0xf3,0x0f,0x1e,0xfa   #ifdef __BLST_PORTABLE__ 	testl	$1,___blst_platform_cap(%rip)-	jnz	L$ct_inverse_mod_383$1+	jnz	L$ct_inverse_mod_384$1 #endif 	pushq	%rbp .cfi_adjust_cfa_offset	8@@ -80,7 +80,7 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62   	movq	%rdx,96(%rdi)@@ -88,10 +88,10 @@ 	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62  -	movq	%rdx,96(%rdi)+	movq	%rdx,104(%rdi)   	xorq	$256,%rsi@@ -104,19 +104,19 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62    	movq	96(%rsi),%rax-	movq	144(%rsi),%r11+	movq	152(%rsi),%r11 	movq	%rdx,%rbx 	movq	%rax,%r10 	imulq	56(%rsp)@@ -133,6 +133,7 @@ 	movq	%r9,72(%rdi) 	movq	%r9,80(%rdi) 	movq	%r9,88(%rdi)+	movq	%r9,96(%rdi) 	leaq	96(%rsi),%rsi  	movq	%r10,%rax@@ -143,13 +144,14 @@ 	imulq	%rcx 	addq	%rax,%r8 	adcq	%rdx,%r9-	movq	%r8,96(%rdi)-	movq	%r9,104(%rdi)-	sarq	$63,%r9+	movq	%r8,104(%rdi) 	movq	%r9,112(%rdi)+	sarq	$63,%r9 	movq	%r9,120(%rdi) 	movq	%r9,128(%rdi) 	movq	%r9,136(%rdi)+	movq	%r9,144(%rdi)+	movq	%r9,152(%rdi) 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -160,14 +162,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -175,12 +177,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	leaq	56(%rdi),%rdi+	call	__smulq_384x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -191,14 +193,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -206,12 +208,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	leaq	56(%rdi),%rdi+	call	__smulq_384x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -222,14 +224,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -237,12 +239,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	leaq	56(%rdi),%rdi+	call	__smulq_384x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -253,14 +255,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -268,19 +270,17 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_383x63-	sarq	$63,%r13-	movq	%r13,48(%rdi)-	movq	%r13,56(%rdi)-	movq	%r13,64(%rdi)-	movq	%r13,72(%rdi)-	movq	%r13,80(%rdi)-	movq	%r13,88(%rdi)+	leaq	56(%rdi),%rdi+	call	__smulq_384x63+	movq	%r14,56(%rdi)+	movq	%r14,64(%rdi)+	movq	%r14,72(%rdi)+	movq	%r14,80(%rdi)+	movq	%r14,88(%rdi) 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -291,14 +291,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -306,12 +306,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_767x63+	leaq	56(%rdi),%rdi+	call	__smulq_768x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -322,14 +322,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -337,12 +337,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_767x63+	leaq	56(%rdi),%rdi+	call	__smulq_768x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -353,14 +353,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -368,12 +368,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_767x63+	leaq	56(%rdi),%rdi+	call	__smulq_768x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -384,14 +384,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -399,12 +399,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_767x63+	leaq	56(%rdi),%rdi+	call	__smulq_768x63 	xorq	$256+96,%rsi 	movl	$62,%edi 	call	__ab_approximation_62@@ -415,14 +415,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulq_383_n_shift_by_62+	call	__smulq_384_n_shift_by_62 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -430,12 +430,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_767x63+	leaq	56(%rdi),%rdi+	call	__smulq_768x63  	xorq	$256+96,%rsi 	movl	$62,%edi@@ -459,16 +459,16 @@  	leaq	96(%rsi),%rsi 	leaq	96(%rdi),%rdi-	call	__smulq_383x63+	call	__smulq_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulq_767x63+	leaq	56(%rdi),%rdi+	call	__smulq_768x63   	xorq	$256+96,%rsi-	movl	$22,%edi+	movl	$24,%edi  	movq	0(%rsi),%r8 	xorq	%r9,%r9@@ -491,37 +491,77 @@ 	movq	%r12,%rdx 	movq	%r13,%rcx 	movq	32(%rsp),%rdi-	call	__smulq_767x63+	call	__smulq_768x63  	movq	40(%rsp),%rsi-	movq	%rax,%rdx-	sarq	$63,%rax+	movq	%rdx,%r13+	sarq	$63,%r13 -	movq	%rax,%r8-	movq	%rax,%r9-	movq	%rax,%r10+	movq	%r13,%r8+	movq	%r13,%r9+	movq	%r13,%r10 	andq	0(%rsi),%r8 	andq	8(%rsi),%r9-	movq	%rax,%r11+	movq	%r13,%r11 	andq	16(%rsi),%r10 	andq	24(%rsi),%r11-	movq	%rax,%r12+	movq	%r13,%r12 	andq	32(%rsi),%r12-	andq	40(%rsi),%rax+	andq	40(%rsi),%r13  	addq	%r8,%r14 	adcq	%r9,%r15 	adcq	%r10,%rbx 	adcq	%r11,%rbp 	adcq	%r12,%rcx-	adcq	%rax,%rdx+	adcq	%r13,%rax+	adcq	$0,%rdx +	movq	%rdx,%r13+	negq	%rdx+	orq	%rdx,%r13+	sarq	$63,%rdx++	movq	%r13,%r8+	movq	%r13,%r9+	movq	%r13,%r10+	andq	0(%rsi),%r8+	andq	8(%rsi),%r9+	movq	%r13,%r11+	andq	16(%rsi),%r10+	andq	24(%rsi),%r11+	movq	%r13,%r12+	andq	32(%rsi),%r12+	andq	40(%rsi),%r13++	xorq	%rdx,%r8+	xorq	%rsi,%rsi+	xorq	%rdx,%r9+	subq	%rdx,%rsi+	xorq	%rdx,%r10+	xorq	%rdx,%r11+	xorq	%rdx,%r12+	xorq	%rdx,%r13+	addq	%rsi,%r8+	adcq	$0,%r9+	adcq	$0,%r10+	adcq	$0,%r11+	adcq	$0,%r12+	adcq	$0,%r13++	addq	%r8,%r14+	adcq	%r9,%r15+	adcq	%r10,%rbx+	adcq	%r11,%rbp+	adcq	%r12,%rcx+	adcq	%r13,%rax+ 	movq	%r14,48(%rdi) 	movq	%r15,56(%rdi) 	movq	%rbx,64(%rdi) 	movq	%rbp,72(%rdi) 	movq	%rcx,80(%rdi)-	movq	%rdx,88(%rdi)+	movq	%rax,88(%rdi)  	leaq	1112(%rsp),%r8 	movq	0(%r8),%r15@@ -552,7 +592,7 @@   .p2align	5-__smulq_767x63:+__smulq_768x63: .cfi_startproc 	.byte	0xf3,0x0f,0x1e,0xfa @@ -562,6 +602,7 @@ 	movq	24(%rsi),%r11 	movq	32(%rsi),%r12 	movq	40(%rsi),%r13+	movq	48(%rsi),%r14  	movq	%rdx,%rbp 	sarq	$63,%rdx@@ -570,7 +611,7 @@  	movq	%rdi,8(%rsp) 	movq	%rsi,16(%rsp)-	leaq	48(%rsi),%rsi+	leaq	56(%rsi),%rsi  	xorq	%rdx,%rbp 	addq	%rax,%rbp@@ -581,16 +622,20 @@ 	xorq	%rdx,%r11 	xorq	%rdx,%r12 	xorq	%rdx,%r13+	xorq	%rdx,%r14 	addq	%r8,%rax 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12 	adcq	$0,%r13+	adcq	$0,%r14  	mulq	%rbp 	movq	%rax,0(%rdi) 	movq	%r9,%rax+	andq	%rbp,%r14+	negq	%r14 	movq	%rdx,%r9 	mulq	%rbp 	addq	%rax,%r9@@ -616,14 +661,14 @@ 	adcq	$0,%rdx 	movq	%rdx,%r13 	movq	%r12,32(%rdi)-	imulq	%rbp+	mulq	%rbp 	addq	%rax,%r13-	adcq	$0,%rdx+	adcq	%rdx,%r14  	movq	%r13,40(%rdi)-	movq	%rdx,48(%rdi)-	sarq	$63,%rdx-	movq	%rdx,56(%rdi)+	movq	%r14,48(%rdi)+	sarq	$63,%r14+	movq	%r14,56(%rdi) 	movq	%rcx,%rdx  	movq	0(%rsi),%r8@@ -726,39 +771,41 @@ 	movq	%rdi,%rax 	adcq	$0,%rdx 	movq	%rdx,%rdi-	movq	8(%rsp),%rdx-	imulq	%rsi,%rax-	movq	16(%rsp),%rsi+	imulq	%rsi+	movq	8(%rsp),%rsi 	addq	%rdi,%rax+	adcq	$0,%rdx -	addq	0(%rdx),%r8-	adcq	8(%rdx),%r9-	adcq	16(%rdx),%r10-	adcq	24(%rdx),%r11-	adcq	32(%rdx),%r12-	adcq	40(%rdx),%r13-	adcq	48(%rdx),%r14-	movq	56(%rdx),%rdi+	addq	0(%rsi),%r8+	adcq	8(%rsi),%r9+	adcq	16(%rsi),%r10+	adcq	24(%rsi),%r11+	adcq	32(%rsi),%r12+	adcq	40(%rsi),%r13+	adcq	48(%rsi),%r14+	movq	56(%rsi),%rdi 	adcq	%rdi,%r15 	adcq	%rdi,%rbx 	adcq	%rdi,%rbp 	adcq	%rdi,%rcx 	adcq	%rdi,%rax+	adcq	%rdi,%rdx -	movq	%rdx,%rdi+	leaq	(%rsi),%rdi+	movq	16(%rsp),%rsi -	movq	%r8,0(%rdx)-	movq	%r9,8(%rdx)-	movq	%r10,16(%rdx)-	movq	%r11,24(%rdx)-	movq	%r12,32(%rdx)-	movq	%r13,40(%rdx)-	movq	%r14,48(%rdx)-	movq	%r15,56(%rdx)-	movq	%rbx,64(%rdx)-	movq	%rbp,72(%rdx)-	movq	%rcx,80(%rdx)-	movq	%rax,88(%rdx)+	movq	%r8,0(%rdi)+	movq	%r9,8(%rdi)+	movq	%r10,16(%rdi)+	movq	%r11,24(%rdi)+	movq	%r12,32(%rdi)+	movq	%r13,40(%rdi)+	movq	%r14,48(%rdi)+	movq	%r15,56(%rdi)+	movq	%rbx,64(%rdi)+	movq	%rbp,72(%rdi)+	movq	%rcx,80(%rdi)+	movq	%rax,88(%rdi)  	 #ifdef	__SGX_LVI_HARDENING__@@ -773,7 +820,7 @@   .p2align	5-__smulq_383x63:+__smulq_384x63: .cfi_startproc 	.byte	0xf3,0x0f,0x1e,0xfa @@ -783,6 +830,7 @@ 	movq	24(%rsi),%r11 	movq	32(%rsi),%r12 	movq	40(%rsi),%r13+	movq	48(%rsi),%r14  	movq	%rdx,%rbp 	sarq	$63,%rdx@@ -798,16 +846,20 @@ 	xorq	%rdx,%r11 	xorq	%rdx,%r12 	xorq	%rdx,%r13+	xorq	%rdx,%r14 	addq	%r8,%rax 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12 	adcq	$0,%r13+	adcq	$0,%r14  	mulq	%rbp 	movq	%rax,%r8 	movq	%r9,%rax+	andq	%rbp,%r14+	negq	%r14 	movq	%rdx,%r9 	mulq	%rbp 	addq	%rax,%r9@@ -829,10 +881,11 @@ 	movq	%r13,%rax 	adcq	$0,%rdx 	movq	%rdx,%r13-	imulq	%rbp,%rax+	mulq	%rbp 	addq	%rax,%r13+	adcq	%rdx,%r14 -	leaq	48(%rsi),%rsi+	leaq	56(%rsi),%rsi 	movq	%rcx,%rdx  	movq	%r8,0(%rdi)@@ -840,13 +893,15 @@ 	movq	%r10,16(%rdi) 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi)-	movq	%r13,40(%rdi)+	movq	%r13,%r15+	movq	%r14,%rbx 	movq	0(%rsi),%r8 	movq	8(%rsi),%r9 	movq	16(%rsi),%r10 	movq	24(%rsi),%r11 	movq	32(%rsi),%r12 	movq	40(%rsi),%r13+	movq	48(%rsi),%r14  	movq	%rdx,%rbp 	sarq	$63,%rdx@@ -862,16 +917,20 @@ 	xorq	%rdx,%r11 	xorq	%rdx,%r12 	xorq	%rdx,%r13+	xorq	%rdx,%r14 	addq	%r8,%rax 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12 	adcq	$0,%r13+	adcq	$0,%r14  	mulq	%rbp 	movq	%rax,%r8 	movq	%r9,%rax+	andq	%rbp,%r14+	negq	%r14 	movq	%rdx,%r9 	mulq	%rbp 	addq	%rax,%r9@@ -893,17 +952,19 @@ 	movq	%r13,%rax 	adcq	$0,%rdx 	movq	%rdx,%r13-	imulq	%rbp,%rax+	mulq	%rbp 	addq	%rax,%r13+	adcq	%rdx,%r14 -	leaq	-48(%rsi),%rsi+	leaq	-56(%rsi),%rsi  	addq	0(%rdi),%r8 	adcq	8(%rdi),%r9 	adcq	16(%rdi),%r10 	adcq	24(%rdi),%r11 	adcq	32(%rdi),%r12-	adcq	40(%rdi),%r13+	adcq	%r15,%r13+	adcq	%rbx,%r14  	movq	%r8,0(%rdi) 	movq	%r9,8(%rdi)@@ -911,6 +972,7 @@ 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi) 	movq	%r13,40(%rdi)+	movq	%r14,48(%rdi)  	 #ifdef	__SGX_LVI_HARDENING__@@ -925,7 +987,7 @@   .p2align	5-__smulq_383_n_shift_by_62:+__smulq_384_n_shift_by_62: .cfi_startproc 	.byte	0xf3,0x0f,0x1e,0xfa @@ -951,6 +1013,7 @@ 	xorq	%rdx,%r11 	xorq	%rdx,%r12 	xorq	%rdx,%r13+	movq	%rdx,%r14 	addq	%r8,%rax 	adcq	$0,%r9 	adcq	$0,%r10@@ -961,6 +1024,8 @@ 	mulq	%rbp 	movq	%rax,%r8 	movq	%r9,%rax+	andq	%rbp,%r14+	negq	%r14 	movq	%rdx,%r9 	mulq	%rbp 	addq	%rax,%r9@@ -982,12 +1047,11 @@ 	movq	%r13,%rax 	adcq	$0,%rdx 	movq	%rdx,%r13-	imulq	%rbp+	mulq	%rbp 	addq	%rax,%r13-	adcq	$0,%rdx+	adcq	%rdx,%r14  	leaq	48(%rsi),%rsi-	movq	%rdx,%r14 	movq	%rcx,%rdx  	movq	%r8,0(%rdi)@@ -1017,6 +1081,7 @@ 	xorq	%rdx,%r11 	xorq	%rdx,%r12 	xorq	%rdx,%r13+	movq	%rdx,%r15 	addq	%r8,%rax 	adcq	$0,%r9 	adcq	$0,%r10@@ -1027,6 +1092,8 @@ 	mulq	%rbp 	movq	%rax,%r8 	movq	%r9,%rax+	andq	%rbp,%r15+	negq	%r15 	movq	%rdx,%r9 	mulq	%rbp 	addq	%rax,%r9@@ -1048,11 +1115,12 @@ 	movq	%r13,%rax 	adcq	$0,%rdx 	movq	%rdx,%r13-	imulq	%rbp+	mulq	%rbp 	addq	%rax,%r13-	adcq	$0,%rdx+	adcq	%rdx,%r15  	leaq	-48(%rsi),%rsi+	movq	%rbx,%rdx  	addq	0(%rdi),%r8 	adcq	8(%rdi),%r9@@ -1060,8 +1128,7 @@ 	adcq	24(%rdi),%r11 	adcq	32(%rdi),%r12 	adcq	40(%rdi),%r13-	adcq	%rdx,%r14-	movq	%rbx,%rdx+	adcq	%r15,%r14  	shrdq	$62,%r9,%r8 	shrdq	$62,%r10,%r9
c-source/build/mach-o/ctx_inverse_mod_384-x86_64.s view
@@ -1,15 +1,15 @@ .text	 -.globl	_ctx_inverse_mod_383-.private_extern	_ctx_inverse_mod_383+.globl	_ctx_inverse_mod_384+.private_extern	_ctx_inverse_mod_384  .p2align	5-_ctx_inverse_mod_383:+_ctx_inverse_mod_384: .cfi_startproc 	.byte	0xf3,0x0f,0x1e,0xfa  -L$ct_inverse_mod_383$1:+L$ct_inverse_mod_384$1: 	pushq	%rbp .cfi_adjust_cfa_offset	8 .cfi_offset	%rbp,-16@@ -79,7 +79,7 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31   	movq	%rdx,96(%rdi)@@ -87,10 +87,10 @@ 	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31  -	movq	%rdx,96(%rdi)+	movq	%rdx,104(%rdi)   	xorq	$256,%rsi@@ -103,19 +103,19 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31    	movq	96(%rsi),%rax-	movq	144(%rsi),%r11+	movq	152(%rsi),%r11 	movq	%rdx,%rbx 	movq	%rax,%r10 	imulq	56(%rsp)@@ -132,6 +132,7 @@ 	movq	%r9,72(%rdi) 	movq	%r9,80(%rdi) 	movq	%r9,88(%rdi)+	movq	%r9,96(%rdi) 	leaq	96(%rsi),%rsi  	movq	%r10,%rax@@ -142,13 +143,14 @@ 	imulq	%rcx 	addq	%rax,%r8 	adcq	%rdx,%r9-	movq	%r8,96(%rdi)-	movq	%r9,104(%rdi)-	sarq	$63,%r9+	movq	%r8,104(%rdi) 	movq	%r9,112(%rdi)+	sarq	$63,%r9 	movq	%r9,120(%rdi) 	movq	%r9,128(%rdi) 	movq	%r9,136(%rdi)+	movq	%r9,144(%rdi)+	movq	%r9,152(%rdi) 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -159,14 +161,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -174,12 +176,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -190,14 +192,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -205,12 +207,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -221,14 +223,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -236,12 +238,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -252,14 +254,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -267,12 +269,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -283,14 +285,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -298,12 +300,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -314,14 +316,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -329,12 +331,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -345,14 +347,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -360,12 +362,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -376,14 +378,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -391,12 +393,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -407,14 +409,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -422,12 +424,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	leaq	56(%rdi),%rdi+	call	__smulx_384x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -438,14 +440,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -453,19 +455,17 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_383x63-	sarq	$63,%r13-	movq	%r13,48(%rdi)-	movq	%r13,56(%rdi)-	movq	%r13,64(%rdi)-	movq	%r13,72(%rdi)-	movq	%r13,80(%rdi)-	movq	%r13,88(%rdi)+	leaq	56(%rdi),%rdi+	call	__smulx_384x63+	movq	%r14,56(%rdi)+	movq	%r14,64(%rdi)+	movq	%r14,72(%rdi)+	movq	%r14,80(%rdi)+	movq	%r14,88(%rdi) 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -476,14 +476,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -491,12 +491,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -507,14 +507,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -522,12 +522,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -538,14 +538,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -553,12 +553,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -569,14 +569,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -584,12 +584,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -600,14 +600,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -615,12 +615,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -631,14 +631,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -646,12 +646,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -662,14 +662,14 @@  	movq	$256,%rdi 	xorq	%rsi,%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,56(%rsp) 	movq	%rcx,64(%rsp)  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx 	leaq	48(%rdi),%rdi-	call	__smulx_383_n_shift_by_31+	call	__smulx_384_n_shift_by_31 	movq	%rdx,72(%rsp) 	movq	%rcx,80(%rsp) @@ -677,12 +677,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -708,12 +708,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -739,12 +739,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -770,12 +770,12 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63 	xorq	$256+96,%rsi 	movl	$31,%edi 	call	__ab_approximation_31@@ -801,21 +801,21 @@ 	movq	64(%rsp),%rcx 	leaq	96(%rsi),%rsi 	leaq	48(%rdi),%rdi-	call	__smulx_383x63+	call	__smulx_384x63  	movq	72(%rsp),%rdx 	movq	80(%rsp),%rcx-	leaq	48(%rdi),%rdi-	call	__smulx_767x63+	leaq	56(%rdi),%rdi+	call	__smulx_768x63  	xorq	$256+96,%rsi-	movl	$53,%edi+	movl	$55,%edi  	movq	0(%rsi),%r8  	movq	48(%rsi),%r10 -	call	__tail_loop_53+	call	__tail_loop_55   @@ -832,40 +832,80 @@ 	movq	%r12,%rdx 	movq	%r13,%rcx 	movq	32(%rsp),%rdi-	call	__smulx_767x63+	call	__smulx_768x63  	movq	40(%rsp),%rsi-	movq	%rax,%rdx-	sarq	$63,%rax+	movq	%rdx,%r13+	sarq	$63,%r13 -	movq	%rax,%r8-	movq	%rax,%r9-	movq	%rax,%r10+	movq	%r13,%r8+	movq	%r13,%r9+	movq	%r13,%r10 #ifdef	__SGX_LVI_HARDENING__ 	lfence #endif 	andq	0(%rsi),%r8 	andq	8(%rsi),%r9-	movq	%rax,%r11+	movq	%r13,%r11 	andq	16(%rsi),%r10 	andq	24(%rsi),%r11-	movq	%rax,%r12+	movq	%r13,%r12 	andq	32(%rsi),%r12-	andq	40(%rsi),%rax+	andq	40(%rsi),%r13  	addq	%r8,%r14 	adcq	%r9,%r15 	adcq	%r10,%rbx 	adcq	%r11,%rbp 	adcq	%r12,%rcx-	adcq	%rax,%rdx+	adcq	%r13,%rax+	adcq	$0,%rdx +	movq	%rdx,%r13+	negq	%rdx+	orq	%rdx,%r13+	sarq	$63,%rdx++	movq	%r13,%r8+	movq	%r13,%r9+	movq	%r13,%r10+	andq	0(%rsi),%r8+	andq	8(%rsi),%r9+	movq	%r13,%r11+	andq	16(%rsi),%r10+	andq	24(%rsi),%r11+	movq	%r13,%r12+	andq	32(%rsi),%r12+	andq	40(%rsi),%r13++	xorq	%rdx,%r8+	xorq	%rsi,%rsi+	xorq	%rdx,%r9+	subq	%rdx,%rsi+	xorq	%rdx,%r10+	xorq	%rdx,%r11+	xorq	%rdx,%r12+	xorq	%rdx,%r13+	addq	%rsi,%r8+	adcq	$0,%r9+	adcq	$0,%r10+	adcq	$0,%r11+	adcq	$0,%r12+	adcq	$0,%r13++	addq	%r8,%r14+	adcq	%r9,%r15+	adcq	%r10,%rbx+	adcq	%r11,%rbp+	adcq	%r12,%rcx+	adcq	%r13,%rax+ 	movq	%r14,48(%rdi) 	movq	%r15,56(%rdi) 	movq	%rbx,64(%rdi) 	movq	%rbp,72(%rdi) 	movq	%rcx,80(%rdi)-	movq	%rdx,88(%rdi)+	movq	%rax,88(%rdi)  	leaq	1112(%rsp),%r8 	movq	0(%r8),%r15@@ -896,7 +936,7 @@   .p2align	5-__smulx_767x63:+__smulx_768x63: .cfi_startproc 	.byte	0xf3,0x0f,0x1e,0xfa @@ -906,6 +946,7 @@ 	movq	24(%rsi),%r11 	movq	32(%rsi),%r12 	movq	40(%rsi),%r13+	movq	48(%rsi),%r14  	movq	%rdx,%rax 	sarq	$63,%rax@@ -914,7 +955,7 @@  	movq	%rdi,8(%rsp) 	movq	%rsi,16(%rsp)-	leaq	48(%rsi),%rsi+	leaq	56(%rsi),%rsi  	xorq	%rax,%rdx 	addq	%rbp,%rdx@@ -924,37 +965,41 @@ 	xorq	%rax,%r10 	xorq	%rax,%r11 	xorq	%rax,%r12-	xorq	%r13,%rax+	xorq	%rax,%r13+	xorq	%rax,%r14 	addq	%rbp,%r8 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12-	adcq	$0,%rax+	adcq	$0,%r13+	adcq	$0,%r14 +	andq	%rdx,%r14+	negq	%r14+ 	mulxq	%r8,%r8,%rbp-	mulxq	%r9,%r9,%r13+	mulxq	%r9,%r9,%rax 	addq	%rbp,%r9 	mulxq	%r10,%r10,%rbp-	adcq	%r13,%r10-	mulxq	%r11,%r11,%r13+	adcq	%rax,%r10+	mulxq	%r11,%r11,%rax 	adcq	%rbp,%r11 	mulxq	%r12,%r12,%rbp-	adcq	%r13,%r12-	adcq	$0,%rbp-	imulq	%rdx-	addq	%rbp,%rax-	adcq	$0,%rdx+	adcq	%rax,%r12+	mulxq	%r13,%r13,%rax+	adcq	%rbp,%r13+	adcq	%rax,%r14  	movq	%r8,0(%rdi) 	movq	%r9,8(%rdi) 	movq	%r10,16(%rdi) 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi)-	movq	%rax,40(%rdi)-	movq	%rdx,48(%rdi)-	sarq	$63,%rdx-	movq	%rdx,56(%rdi)+	movq	%r13,40(%rdi)+	movq	%r14,48(%rdi)+	sarq	$63,%r14+	movq	%r14,56(%rdi) 	movq	%rcx,%rdx 	movq	%rcx,%rax @@ -989,7 +1034,7 @@ 	xorq	%rax,%rbx 	xorq	%rax,%rbp 	xorq	%rax,%rcx-	xorq	%rax,%rdi+	xorq	%rdi,%rax 	addq	%rsi,%r8 	adcq	$0,%r9 	adcq	$0,%r10@@ -1001,63 +1046,65 @@ 	adcq	$0,%rbx 	adcq	$0,%rbp 	adcq	$0,%rcx-	adcq	$0,%rdi--	mulxq	%r8,%r8,%rax-	mulxq	%r9,%r9,%rsi-	addq	%rax,%r9-	mulxq	%r10,%r10,%rax-	adcq	%rsi,%r10-	mulxq	%r11,%r11,%rsi-	adcq	%rax,%r11-	mulxq	%r12,%r12,%rax-	adcq	%rsi,%r12-	mulxq	%r13,%r13,%rsi-	adcq	%rax,%r13-	mulxq	%r14,%r14,%rax-	adcq	%rsi,%r14-	mulxq	%r15,%r15,%rsi-	adcq	%rax,%r15-	mulxq	%rbx,%rbx,%rax-	adcq	%rsi,%rbx-	mulxq	%rbp,%rbp,%rsi-	adcq	%rax,%rbp-	mulxq	%rcx,%rcx,%rax-	adcq	%rsi,%rcx-	mulxq	%rdi,%rdi,%rsi-	movq	8(%rsp),%rdx-	movq	16(%rsp),%rsi-	adcq	%rdi,%rax+	adcq	$0,%rax -	addq	0(%rdx),%r8-	adcq	8(%rdx),%r9-	adcq	16(%rdx),%r10-	adcq	24(%rdx),%r11-	adcq	32(%rdx),%r12-	adcq	40(%rdx),%r13-	adcq	48(%rdx),%r14-	movq	56(%rdx),%rdi-	adcq	%rdi,%r15+	mulxq	%r8,%r8,%rsi+	mulxq	%r9,%r9,%rdi+	addq	%rsi,%r9+	mulxq	%r10,%r10,%rsi+	adcq	%rdi,%r10+	mulxq	%r11,%r11,%rdi+	adcq	%rsi,%r11+	mulxq	%r12,%r12,%rsi+	adcq	%rdi,%r12+	mulxq	%r13,%r13,%rdi+	adcq	%rsi,%r13+	mulxq	%r14,%r14,%rsi+	adcq	%rdi,%r14+	mulxq	%r15,%r15,%rdi+	adcq	%rsi,%r15+	mulxq	%rbx,%rbx,%rsi 	adcq	%rdi,%rbx-	adcq	%rdi,%rbp+	mulxq	%rbp,%rbp,%rdi+	adcq	%rsi,%rbp+	mulxq	%rcx,%rcx,%rsi 	adcq	%rdi,%rcx-	adcq	%rdi,%rax+	movq	8(%rsp),%rdi+	adcq	$0,%rsi+	imulq	%rdx+	addq	%rsi,%rax+	adcq	$0,%rdx -	movq	%rdx,%rdi+	addq	0(%rdi),%r8+	adcq	8(%rdi),%r9+	adcq	16(%rdi),%r10+	adcq	24(%rdi),%r11+	adcq	32(%rdi),%r12+	adcq	40(%rdi),%r13+	adcq	48(%rdi),%r14+	movq	56(%rdi),%rsi+	adcq	%rsi,%r15+	adcq	%rsi,%rbx+	adcq	%rsi,%rbp+	adcq	%rsi,%rcx+	adcq	%rsi,%rax+	adcq	%rsi,%rdx -	movq	%r8,0(%rdx)-	movq	%r9,8(%rdx)-	movq	%r10,16(%rdx)-	movq	%r11,24(%rdx)-	movq	%r12,32(%rdx)-	movq	%r13,40(%rdx)-	movq	%r14,48(%rdx)-	movq	%r15,56(%rdx)-	movq	%rbx,64(%rdx)-	movq	%rbp,72(%rdx)-	movq	%rcx,80(%rdx)-	movq	%rax,88(%rdx)+	movq	16(%rsp),%rsi +	movq	%r8,0(%rdi)+	movq	%r9,8(%rdi)+	movq	%r10,16(%rdi)+	movq	%r11,24(%rdi)+	movq	%r12,32(%rdi)+	movq	%r13,40(%rdi)+	movq	%r14,48(%rdi)+	movq	%r15,56(%rdi)+	movq	%rbx,64(%rdi)+	movq	%rbp,72(%rdi)+	movq	%rcx,80(%rdi)+	movq	%rax,88(%rdi)+ 	 #ifdef	__SGX_LVI_HARDENING__ 	popq	%r8@@ -1071,7 +1118,7 @@   .p2align	5-__smulx_383x63:+__smulx_384x63: .cfi_startproc 	.byte	0xf3,0x0f,0x1e,0xfa @@ -1081,6 +1128,7 @@ 	movq	0+24(%rsi),%r11 	movq	0+32(%rsi),%r12 	movq	0+40(%rsi),%r13+	movq	0+48(%rsi),%r14  	movq	%rdx,%rbp 	sarq	$63,%rbp@@ -1096,13 +1144,18 @@ 	xorq	%rbp,%r11 	xorq	%rbp,%r12 	xorq	%rbp,%r13+	xorq	%rbp,%r14 	addq	%rax,%r8 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12 	adcq	$0,%r13+	adcq	$0,%r14 +	andq	%rdx,%r14+	negq	%r14+ 	mulxq	%r8,%r8,%rbp 	mulxq	%r9,%r9,%rax 	addq	%rbp,%r9@@ -1115,19 +1168,22 @@ 	mulxq	%r13,%r13,%rax 	movq	%rcx,%rdx 	adcq	%rbp,%r13+	adcq	%rax,%r14  	movq	%r8,0(%rdi) 	movq	%r9,8(%rdi) 	movq	%r10,16(%rdi) 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi)-	movq	%r13,40(%rdi)-	movq	48+0(%rsi),%r8-	movq	48+8(%rsi),%r9-	movq	48+16(%rsi),%r10-	movq	48+24(%rsi),%r11-	movq	48+32(%rsi),%r12-	movq	48+40(%rsi),%r13+	movq	%r13,%r15+	movq	%r14,%rbx+	movq	56+0(%rsi),%r8+	movq	56+8(%rsi),%r9+	movq	56+16(%rsi),%r10+	movq	56+24(%rsi),%r11+	movq	56+32(%rsi),%r12+	movq	56+40(%rsi),%r13+	movq	56+48(%rsi),%r14  	movq	%rdx,%rbp 	sarq	$63,%rbp@@ -1143,13 +1199,18 @@ 	xorq	%rbp,%r11 	xorq	%rbp,%r12 	xorq	%rbp,%r13+	xorq	%rbp,%r14 	addq	%rax,%r8 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12 	adcq	$0,%r13+	adcq	$0,%r14 +	andq	%rdx,%r14+	negq	%r14+ 	mulxq	%r8,%r8,%rbp 	mulxq	%r9,%r9,%rax 	addq	%rbp,%r9@@ -1161,13 +1222,15 @@ 	adcq	%rax,%r12 	mulxq	%r13,%r13,%rax 	adcq	%rbp,%r13+	adcq	%rax,%r14  	addq	0(%rdi),%r8 	adcq	8(%rdi),%r9 	adcq	16(%rdi),%r10 	adcq	24(%rdi),%r11 	adcq	32(%rdi),%r12-	adcq	40(%rdi),%r13+	adcq	%r15,%r13+	adcq	%rbx,%r14  	movq	%r8,0(%rdi) 	movq	%r9,8(%rdi)@@ -1175,6 +1238,7 @@ 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi) 	movq	%r13,40(%rdi)+	movq	%r14,48(%rdi)  	 #ifdef	__SGX_LVI_HARDENING__@@ -1189,12 +1253,11 @@   .p2align	5-__smulx_383_n_shift_by_31:+__smulx_384_n_shift_by_31: .cfi_startproc 	.byte	0xf3,0x0f,0x1e,0xfa  	movq	%rdx,%rbx-	xorq	%r14,%r14 	movq	0+0(%rsi),%r8 	movq	0+8(%rsi),%r9 	movq	0+16(%rsi),%r10@@ -1215,27 +1278,29 @@ 	xorq	%rax,%r10 	xorq	%rax,%r11 	xorq	%rax,%r12-	xorq	%r13,%rax+	xorq	%rax,%r13 	addq	%rbp,%r8 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12-	adcq	$0,%rax+	adcq	$0,%r13 +	andq	%rdx,%rax+	negq	%rax+ 	mulxq	%r8,%r8,%rbp-	mulxq	%r9,%r9,%r13+	mulxq	%r9,%r9,%r14 	addq	%rbp,%r9 	mulxq	%r10,%r10,%rbp-	adcq	%r13,%r10-	mulxq	%r11,%r11,%r13+	adcq	%r14,%r10+	mulxq	%r11,%r11,%r14 	adcq	%rbp,%r11 	mulxq	%r12,%r12,%rbp-	adcq	%r13,%r12-	adcq	$0,%rbp-	imulq	%rdx-	addq	%rbp,%rax-	adcq	%rdx,%r14+	adcq	%r14,%r12+	mulxq	%r13,%r13,%r14+	adcq	%rbp,%r13+	adcq	%rax,%r14  	movq	%rcx,%rdx @@ -1244,7 +1309,8 @@ 	movq	%r10,16(%rdi) 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi)-	movq	%rax,40(%rdi)+	movq	%r13,40(%rdi)+	movq	%r14,%r15 	movq	48+0(%rsi),%r8 	movq	48+8(%rsi),%r9 	movq	48+16(%rsi),%r10@@ -1265,43 +1331,45 @@ 	xorq	%rax,%r10 	xorq	%rax,%r11 	xorq	%rax,%r12-	xorq	%r13,%rax+	xorq	%rax,%r13 	addq	%rbp,%r8 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12-	adcq	$0,%rax+	adcq	$0,%r13 +	andq	%rdx,%rax+	negq	%rax+ 	mulxq	%r8,%r8,%rbp-	mulxq	%r9,%r9,%r13+	mulxq	%r9,%r9,%r14 	addq	%rbp,%r9 	mulxq	%r10,%r10,%rbp-	adcq	%r13,%r10-	mulxq	%r11,%r11,%r13+	adcq	%r14,%r10+	mulxq	%r11,%r11,%r14 	adcq	%rbp,%r11 	mulxq	%r12,%r12,%rbp-	adcq	%r13,%r12-	adcq	$0,%rbp-	imulq	%rdx-	addq	%rbp,%rax-	adcq	$0,%rdx+	adcq	%r14,%r12+	mulxq	%r13,%r13,%r14+	adcq	%rbp,%r13+	adcq	%rax,%r14  	addq	0(%rdi),%r8 	adcq	8(%rdi),%r9 	adcq	16(%rdi),%r10 	adcq	24(%rdi),%r11 	adcq	32(%rdi),%r12-	adcq	40(%rdi),%rax-	adcq	%rdx,%r14+	adcq	40(%rdi),%r13+	adcq	%r15,%r14 	movq	%rbx,%rdx  	shrdq	$31,%r9,%r8 	shrdq	$31,%r10,%r9 	shrdq	$31,%r11,%r10 	shrdq	$31,%r12,%r11-	shrdq	$31,%rax,%r12-	shrdq	$31,%r14,%rax+	shrdq	$31,%r13,%r12+	shrdq	$31,%r14,%r13  	sarq	$63,%r14 	xorq	%rbp,%rbp@@ -1312,20 +1380,20 @@ 	xorq	%r14,%r10 	xorq	%r14,%r11 	xorq	%r14,%r12-	xorq	%r14,%rax+	xorq	%r14,%r13 	addq	%rbp,%r8 	adcq	$0,%r9 	adcq	$0,%r10 	adcq	$0,%r11 	adcq	$0,%r12-	adcq	$0,%rax+	adcq	$0,%r13  	movq	%r8,0(%rdi) 	movq	%r9,8(%rdi) 	movq	%r10,16(%rdi) 	movq	%r11,24(%rdi) 	movq	%r12,32(%rdi)-	movq	%rax,40(%rdi)+	movq	%r13,40(%rdi)  	xorq	%r14,%rdx 	xorq	%r14,%rcx@@ -1587,7 +1655,7 @@   .p2align	5-__tail_loop_53:+__tail_loop_55: .cfi_startproc 	.byte	0xf3,0x0f,0x1e,0xfa @@ -1596,7 +1664,7 @@ 	xorq	%r12,%r12 	movq	$1,%r13 -L$oop_53:+L$oop_55: 	xorq	%rax,%rax 	testq	$1,%r8 	movq	%r10,%rbx@@ -1623,7 +1691,7 @@ 	subq	%rax,%rdx 	subq	%rbx,%rcx 	subl	$1,%edi-	jnz	L$oop_53+	jnz	L$oop_55  	 #ifdef	__SGX_LVI_HARDENING__
c-source/build/mach-o/div3w-armv8.S view
@@ -5,6 +5,7 @@  .align	5 _div_3_limbs:+	hint	#34 	ldp	x4,x5,[x0]	// load R 	eor	x0,x0,x0	// Q = 0 	mov	x3,#64		// loop counter@@ -39,6 +40,7 @@  .align	5 _quot_rem_128:+	hint	#34 	ldp	x3,x4,[x1]  	mul	x5,x3,x2	// divisor[0:1} * quotient@@ -76,6 +78,7 @@  .align	5 _quot_rem_64:+	hint	#34 	ldr	x3,[x1] 	ldr	x8,[x0]	// load 1 limb of the dividend 
c-source/build/mach-o/mul_mont_256-armv8.S view
@@ -5,6 +5,7 @@  .align	5 _mul_mont_sparse_256:+	hint	#34 	stp	x29,x30,[sp,#-8*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -196,7 +197,7 @@  .align	5 _sqr_mont_sparse_256:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-6*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -297,7 +298,7 @@ 	ldp	x19,x20,[x29,#2*__SIZEOF_POINTER__] 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldr	x29,[sp],#6*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  .globl	_from_mont_256@@ -305,7 +306,7 @@  .align	5 _from_mont_256:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-2*__SIZEOF_POINTER__]! 	add	x29,sp,#0 @@ -330,7 +331,7 @@ 	stp	x12,x13,[x0,#16]  	ldr	x29,[sp],#2*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -339,7 +340,7 @@  .align	5 _redc_mont_256:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-2*__SIZEOF_POINTER__]! 	add	x29,sp,#0 @@ -374,7 +375,7 @@ 	stp	x12,x13,[x0,#16]  	ldr	x29,[sp],#2*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  
c-source/build/mach-o/mul_mont_384-armv8.S view
@@ -1,10 +1,11 @@ .text  .globl	_add_mod_384x384+.private_extern	_add_mod_384x384  .align	5 _add_mod_384x384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-8*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -22,7 +23,7 @@ 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldp	x23,x24,[x29,#6*__SIZEOF_POINTER__] 	ldr	x29,[sp],#8*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -82,10 +83,11 @@   .globl	_sub_mod_384x384+.private_extern	_sub_mod_384x384  .align	5 _sub_mod_384x384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-8*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -103,7 +105,7 @@ 	ldp	x21,x22,[x29,#4*__SIZEOF_POINTER__] 	ldp	x23,x24,[x29,#6*__SIZEOF_POINTER__] 	ldr	x29,[sp],#8*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -239,7 +241,7 @@  .align	5 _mul_mont_384x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -312,7 +314,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -321,7 +323,7 @@  .align	5 _sqr_mont_384x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -397,7 +399,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -406,7 +408,7 @@  .align	5 _mul_mont_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -438,7 +440,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -819,7 +821,7 @@  .align	5 _sqr_mont_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -856,7 +858,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -865,7 +867,7 @@  .align	5 _sqr_n_mul_mont_383:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -921,7 +923,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -1042,7 +1044,7 @@  .align	5 _sqr_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1064,7 +1066,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -1073,7 +1075,7 @@  .align	5 _redc_mont_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1097,7 +1099,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -1106,7 +1108,7 @@  .align	5 _from_mont_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1147,7 +1149,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -1365,7 +1367,7 @@  .align	5 _mul_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1383,7 +1385,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -1569,7 +1571,7 @@  .align	5 _mul_382x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1651,7 +1653,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -1660,7 +1662,7 @@  .align	5 _sqr_382x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1751,7 +1753,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -1760,7 +1762,7 @@  .align	5 _sqr_mont_382x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1875,7 +1877,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -2224,7 +2226,7 @@  .align	5 _sgn0_pty_mont_384:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -2269,7 +2271,7 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret  @@ -2278,7 +2280,7 @@  .align	5 _sgn0_pty_mont_384x:-.long	3573752639+	hint	#25 	stp	x29,x30,[sp,#-16*__SIZEOF_POINTER__]! 	add	x29,sp,#0 	stp	x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -2367,6 +2369,6 @@ 	ldp	x25,x26,[x29,#8*__SIZEOF_POINTER__] 	ldp	x27,x28,[x29,#10*__SIZEOF_POINTER__] 	ldr	x29,[sp],#16*__SIZEOF_POINTER__-.long	3573752767+	hint	#29 	ret 
c-source/build/mach-o/sha256-armv8.S view
@@ -43,9 +43,11 @@ .align	2 .align	2 .globl	_blst_sha256_block_armv8+.private_extern	_blst_sha256_block_armv8  .align	6 _blst_sha256_block_armv8:+	hint	#34 Lv8_entry: 	stp	x29,x30,[sp,#-2*__SIZEOF_POINTER__]! 	add	x29,sp,#0@@ -182,9 +184,11 @@ 	ret  .globl	_blst_sha256_block_data_order+.private_extern	_blst_sha256_block_data_order  .align	4 _blst_sha256_block_data_order:+	hint	#34 	adrp	x16,___blst_platform_cap@PAGE 	ldr	w16,[x16,___blst_platform_cap@PAGEOFF] 	tst	w16,#1@@ -1034,6 +1038,7 @@  .align	4 _blst_sha256_emit:+	hint	#34 	ldp	x4,x5,[x1] 	ldp	x6,x7,[x1,#16] #ifndef	__AARCH64EB__@@ -1062,6 +1067,7 @@  .align	4 _blst_sha256_bcopy:+	hint	#34 Loop_bcopy: 	ldrb	w3,[x1],#1 	sub	x2,x2,#1@@ -1075,6 +1081,7 @@  .align	4 _blst_sha256_hcopy:+	hint	#34 	ldp	x4,x5,[x1] 	ldp	x6,x7,[x1,#16] 	stp	x4,x5,[x0]
c-source/src/cpuid.c view
@@ -47,14 +47,14 @@     return 0; } -# if defined(_MSC_VER) && !defined(__clang__)+# if defined(_MSC_VER) && !defined(__clang__) && !defined(__BLST_DLL_MAIN__) #  pragma section(".CRT$XCU",read) __declspec(allocate(".CRT$XCU")) static int (*p)(void) = __blst_cpuid; # elif defined(__SUNPRO_C) #  pragma init(__blst_cpuid) # endif -#elif defined(__aarch64__) || defined(__aarch64) || defined(_M_ARM64)+#elif defined(__aarch64__) || defined(__aarch64) || defined(_M_ARM64) || defined(_M_ARM64EC)  # if defined(__linux__) && (defined(__GNUC__) || defined(__clang__)) extern unsigned long getauxval(unsigned long type) __attribute__ ((weak));@@ -105,10 +105,56 @@     return 0; } -#  if defined(_MSC_VER) && !defined(__clang__)+#  if defined(_MSC_VER) && !defined(__clang__) && !defined(__BLST_DLL_MAIN__) #   pragma section(".CRT$XCU",read) __declspec(allocate(".CRT$XCU")) static int (*p)(void) = __blst_cpuid; #  endif # endif +#endif++#if defined(_WIN64) && defined(__BLST_DLL_MAIN__)+# define IsProcessorFeaturePresent mask_IsProcessorFeaturePresent+# define WIN32_LEAN_AND_MEAN+# include <windows.h>++BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpvReserved)+{+    if (dwReason == DLL_PROCESS_ATTACH) {+        DisableThreadLibraryCalls(hinstDLL);+        __blst_cpuid();+    }++    return TRUE;++    (void)lpvReserved;+}++# if defined(_MSC_VER)+/*+ * Even though we don't have memcpy/memset anywhere, MSVC compiler+ * generates calls to them as it recognizes corresponding patterns.+ */+#pragma function(memcpy)+void *memcpy(unsigned char *dst, const unsigned char *src, size_t n)+{+    void *ret = dst;++    while(n--)+        *dst++ = *src++;++    return ret;+}++#pragma function(memset)+void *memset(unsigned char *dst, int c, size_t n)+{+    void *ret = dst;++    while(n--)+        *dst++ = (unsigned char)c;++    return ret;+}+# endif #endif
c-source/src/ec_mult.h view
@@ -210,8 +210,7 @@         wval &= wmask; \         wval = booth_encode(wval, SZ); \         row_is_inf = ptype##_gather_booth_w##SZ(row, table, wval); \-        if (bits > 0) ptype##_add(sum, ret, row); \-        else          ptype##_dadd(sum, ret, row, NULL); \+        ptype##_dadd(sum, ret, row, NULL); \         ptype##_ccopy(ret, sum, (ret_is_inf | row_is_inf) ^ 1); \         sum_is_inf = vec_is_zero(ret->Z, sizeof(ret->Z)); \         ret_is_inf |= sum_is_inf; \
c-source/src/multi_scalar.c view
@@ -7,9 +7,6 @@ #include "fields.h" #include "point.h" -/*- * Infinite point among inputs would be devastating. Shall we change it?- */ #define POINTS_TO_AFFINE_IMPL(prefix, ptype, bits, field) \ static void ptype##s_to_affine(ptype##_affine dst[], \                                const ptype *const points[], size_t npoints) \@@ -25,27 +22,36 @@ \         point = *points ? *points++ : point+1; \         acc = (vec##bits *)dst; \-        vec_copy(acc++, point->Z, sizeof(vec##bits)); \-        for (i = 1; i < delta; i++, acc++) \-            point = *points ? *points++ : point+1, \-            mul_##field(acc[0], acc[-1], point->Z); \+        vec_select(acc++, BLS12_381_Rx.p, point->Z, sizeof(vec##bits), \+                          vec_is_zero(point->Z, sizeof(point->Z))); \+        for (i = 1; i < delta; i++, acc++) { \+            point = *points ? *points++ : point+1; \+            vec_select(acc[0], BLS12_381_Rx.p, point->Z, sizeof(vec##bits), \+                               vec_is_zero(point->Z, sizeof(point->Z))); \+            mul_##field(acc[0], acc[0], acc[-1]); \+        } \ \         --acc; reciprocal_##field(acc[0], acc[0]); \ \         walkback = points-1, p = point, --delta, dst += delta; \         for (i = 0; i < delta; i++, acc--, dst--) { \+            bool_t is_inf = vec_is_zero(p->Z, sizeof(p->Z)); \             mul_##field(acc[-1], acc[-1], acc[0]);  /* 1/Z        */\             sqr_##field(ZZ, acc[-1]);               /* 1/Z^2      */\             mul_##field(ZZZ, ZZ, acc[-1]);          /* 1/Z^3      */\-            mul_##field(acc[-1], p->Z, acc[0]);     \+            vec_select(acc[-1], BLS12_381_Rx.p, p->Z, sizeof(vec##bits), \+                                is_inf); \+            mul_##field(acc[-1], acc[-1], acc[0]);  \             mul_##field(dst->X,  p->X, ZZ);         /* X = X'/Z^2 */\             mul_##field(dst->Y,  p->Y, ZZZ);        /* Y = Y'/Z^3 */\+            vec_czero(dst, sizeof(*dst), is_inf); \             p = (p == *walkback) ? *--walkback : p-1; \         } \         sqr_##field(ZZ, acc[0]);                    /* 1/Z^2      */\         mul_##field(ZZZ, ZZ, acc[0]);               /* 1/Z^3      */\         mul_##field(dst->X, p->X, ZZ);              /* X = X'/Z^2 */\         mul_##field(dst->Y, p->Y, ZZZ);             /* Y = Y'/Z^3 */\+        vec_czero(dst, sizeof(*dst), vec_is_zero(p->Z, sizeof(p->Z))); \         ++delta, dst += delta, npoints -= delta; \     } \ } \@@ -74,18 +80,23 @@  #define SCRATCH_SZ(ptype) (sizeof(ptype)==sizeof(POINTonE1) ? 8192 : 4096) +/* The intermediate infinity points are encoded as [0, 0, 1]. */+ #define PRECOMPUTE_WBITS_IMPL(prefix, ptype, bits, field, one) \ static void ptype##_precompute_row_wbits(ptype row[], size_t wbits, \                                          const ptype##_affine *point) \ { \     size_t i, j, n = (size_t)1 << (wbits-1); \+    bool_t inf = vec_is_zero(point, sizeof(*point)); \                                           /* row[-1] is implicit infinity */\     vec_copy(&row[0], point, sizeof(*point));           /* row[0]=p*1     */\     vec_copy(&row[0].Z, one, sizeof(row[0].Z));                             \     ptype##_double(&row[1],  &row[0]);                  /* row[1]=p*(1+1) */\+    vec_select(&row[1].Z, one, &row[1].Z, sizeof(row[1].Z), inf);           \     for (i = 2, j = 1; i < n; i += 2, j++) \         ptype##_add_affine(&row[i], &row[i-1], point),  /* row[2]=p*(2+1) */\-        ptype##_double(&row[i+1], &row[j]);             /* row[3]=p*(2+2) */\+        ptype##_double(&row[i+1], &row[j]),             /* row[3]=p*(2+2) */\+        vec_select(&row[i+1].Z, one, &row[i+1].Z, sizeof(row[i+1].Z), inf); \ }                                                       /* row[4] ...     */\ \ static void ptype##s_to_affine_row_wbits(ptype##_affine dst[], ptype src[], \@@ -202,7 +213,7 @@ \     nbits -= window; \     z = is_zero(nbits); \-    wval = (get_wval_limb(scalar, nbits - (z^1), wbits + (z^1)) << z) & wmask; \+    wval = (get_wval_limb(scalar, nbits - (z^1), window + (z^1)) << z) & wmask; \     wval = booth_encode(wval, wbits); \     ptype##_gather_booth_wbits(&scratch[0], row, wbits, wval); \     row += nwin; \@@ -232,7 +243,7 @@         if (j == scratch_sz) \             ptype##s_accumulate(ret, scratch, j), j = 0; \         scalar = *scalar_s ? *scalar_s++ : scalar+nbytes; \-        wval = (get_wval_limb(scalar, 0, wbits) << 1) & wmask; \+        wval = (get_wval_limb(scalar, 0, window) << 1) & wmask; \         wval = booth_encode(wval, wbits); \         ptype##_gather_booth_wbits(&scratch[j], row, wbits, wval); \     } \@@ -267,7 +278,14 @@      for (wbits=0; npoints>>=1; wbits++) ; -    return wbits>12 ? wbits-3 : (wbits>4 ? wbits-2 : (wbits ? 2 : 1));+    if (wbits > 12)+        return wbits - 3;+    else if (wbits > 8)+        return wbits - 2;+    else if (wbits > 4)+        return wbits - 1;++    return wbits ? 2 : 1; }  #define DECLARE_PRIVATE_POINTXYZZ(ptype, bits) \@@ -402,10 +420,11 @@ { \     if (npoints == 1) { \         prefix##_from_affine(ret, points[0]); \-        prefix##_mult(ret, ret, scalars[0], nbits); \+        ptype##_mult_w5(ret, ret, scalars[0], nbits); \         return; \     } \-    if ((npoints * sizeof(ptype##_affine) * 8 * 3) <= SCRATCH_LIMIT) { \+    if ((npoints * sizeof(ptype##_affine) * 8 * 3) <= SCRATCH_LIMIT && \+        npoints < 32) { \         ptype##_affine *table = alloca(npoints * sizeof(ptype##_affine) * 8); \         ptype##s_precompute_wbits(table, 4, points, npoints); \         ptype##s_mult_wbits(ret, table, 4, npoints, scalars, nbits, NULL); \
c-source/src/recip.c view
@@ -62,20 +62,11 @@         TO_LIMB_T(0x39869507b587b120), TO_LIMB_T(0x23ba5c279c2895fb),         TO_LIMB_T(0x58dd3db21a5d66bb), TO_LIMB_T(0xd0088f51cbff34d2)     };-#ifdef __BLST_NO_ASM__-# define RRx4 BLS12_381_RR-#else-    static const vec384 RRx4 = {   /* (4<<768)%P */-        TO_LIMB_T(0x5f7e7cd070d107c2), TO_LIMB_T(0xec839a9ac49c13c8),-        TO_LIMB_T(0x6933786f44f4ef0b), TO_LIMB_T(0xd6bf8b9c676be983),-        TO_LIMB_T(0xd3adaaaa4dcefb06), TO_LIMB_T(0x12601bc1d82bc175)-    };-#endif     union { vec768 x; vec384 r[2]; } temp; -    ct_inverse_mod_383(temp.x, inp, BLS12_381_P, Px8);+    ct_inverse_mod_384(temp.x, inp, BLS12_381_P, Px8);     redc_mont_384(temp.r[0], temp.x, BLS12_381_P, p0);-    mul_mont_384(temp.r[0], temp.r[0], RRx4, BLS12_381_P, p0);+    mul_mont_384(temp.r[0], temp.r[0], BLS12_381_RR, BLS12_381_P, p0);  #ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION     /* sign goes straight to flt_reciprocal */@@ -88,7 +79,6 @@ #else     vec_copy(out, temp.r[0], sizeof(vec384)); #endif-#undef RRx4 }  void blst_fp_inverse(vec384 out, const vec384 inp)
c-source/src/vect.h view
@@ -85,9 +85,7 @@ # define from_mont_384 fromx_mont_384 # define sgn0_pty_mont_384 sgn0x_pty_mont_384 # define sgn0_pty_mont_384x sgn0x_pty_mont_384x-# define ct_inverse_mod_383 ctx_inverse_mod_383-#elif defined(__BLST_NO_ASM__)-# define ct_inverse_mod_383 ct_inverse_mod_384+# define ct_inverse_mod_384 ctx_inverse_mod_384 #endif  void mul_mont_sparse_256(vec256 ret, const vec256 a, const vec256 b,@@ -137,7 +135,7 @@ void lshift_mod_384(vec384 ret, const vec384 a, size_t count, const vec384 p); void rshift_mod_384(vec384 ret, const vec384 a, size_t count, const vec384 p); void div_by_2_mod_384(vec384 ret, const vec384 a, const vec384 p);-void ct_inverse_mod_383(vec768 ret, const vec384 inp, const vec384 mod,+void ct_inverse_mod_384(vec768 ret, const vec384 inp, const vec384 mod,                                                       const vec384 modx); void ct_inverse_mod_256(vec512 ret, const vec256 inp, const vec256 mod,                                                       const vec256 modx);@@ -407,7 +405,7 @@ #if defined(__INTEL_COMPILER) # pragma warning(disable:167) # pragma warning(disable:556)-#elif defined(__GNUC__) && !defined(__clang__)+#elif defined(__GNUC__) && !defined(__clang__) && (__STDC_VERSION__-0) < 202311 # pragma GCC diagnostic ignored "-Wpedantic" #elif defined(_MSC_VER) # pragma warning(disable: 4127 4189)
hsblst.cabal view
@@ -1,11 +1,11 @@ cabal-version: 3.0 --- This file has been generated from package.yaml by hpack version 0.34.4.+-- This file has been generated from package.yaml by hpack version 0.37.0. -- -- see: https://github.com/sol/hpack  name:           hsblst-version:        0.0.4+version:        0.0.5 synopsis:       Haskell bindings to BLST description:    HsBLST is low-level Haskell bindings and a high-level interface to [BLST](https://github.com/supranational/blst) -- a multilingual BLS12-381 signature library. category:       Cryptography@@ -19,7 +19,9 @@ build-type:     Simple tested-with:     GHC == 9.8.4-  , GHC == 9.10.1+  , GHC == 9.10.3+  , GHC == 9.12.2+  , GHC == 9.12.3 extra-source-files:     c-source/build/coff/add_mod_256-x86_64.s     c-source/build/coff/add_mod_384-x86_64.s@@ -180,6 +182,7 @@       EmptyCase       FlexibleContexts       FlexibleInstances+      ForeignFunctionInterface       GADTs       GeneralizedNewtypeDeriving       ImportQualifiedPost@@ -216,12 +219,12 @@   c-sources:       c-source/src/server.c   build-depends:-      base >=4.17 && <4.21-    , deepseq >=1.4.5.0 && <1.6.0-    , memory >=0.16.0 && <0.19+      base >=4.17 && <4.22+    , deepseq >=1.4.5 && <1.6+    , ram >=0.19 && <0.22+  default-language: Haskell2010   if impl(ghc >= 9.2)     ghc-options: -Wno-missing-kind-signatures-  default-language: Haskell2010   asm-sources: c-source/build/assembly.S   build-tool-depends: c2hs:c2hs @@ -257,6 +260,7 @@       EmptyCase       FlexibleContexts       FlexibleInstances+      ForeignFunctionInterface       GADTs       GeneralizedNewtypeDeriving       ImportQualifiedPost@@ -291,16 +295,16 @@   build-tool-depends:       tasty-discover:tasty-discover   build-depends:-      base >=4.17 && <4.21-    , base16-bytestring ==1.0.*+      base >=4.17 && <4.22+    , base16-bytestring >=1 && <1.1     , bytestring >=0.10.12.1 && <0.13     , hsblst-    , memory >=0.16.0 && <0.19+    , ram >=0.19 && <0.22     , tasty >=1.4.2.1 && <1.6     , tasty-hunit >=0.10.0.3 && <0.11-    , text >=1.2.5.0 && <1.3 || >=2.0.1 && <2.1 || >=2.1 && <2.2+    , text >=1.2.5 && <1.3 || >=2.0.1 && <2.1 || >=2.1 && <2.2+  default-language: Haskell2010   if impl(ghc >= 9.2)     ghc-options: -Wno-missing-kind-signatures   if impl(ghc < 9.4)     ghc-options: -eventlog-  default-language: Haskell2010