| // This file is generated from a similarly-named Perl script in the BoringSSL | 
 | // source tree. Do not edit by hand. | 
 |  | 
 | #include <openssl/asm_base.h> | 
 |  | 
 | #if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__ELF__) | 
 | .text	 | 
 |  | 
 | .type	beeu_mod_inverse_vartime,@function | 
 | .hidden	beeu_mod_inverse_vartime | 
 | .globl	beeu_mod_inverse_vartime | 
 | .hidden beeu_mod_inverse_vartime | 
 | .align	32 | 
 | beeu_mod_inverse_vartime: | 
 | .cfi_startproc	 | 
 | _CET_ENDBR | 
 | 	pushq	%rbp | 
 | .cfi_adjust_cfa_offset	8 | 
 | .cfi_offset	rbp,-16 | 
 | 	pushq	%r12 | 
 | .cfi_adjust_cfa_offset	8 | 
 | .cfi_offset	r12,-24 | 
 | 	pushq	%r13 | 
 | .cfi_adjust_cfa_offset	8 | 
 | .cfi_offset	r13,-32 | 
 | 	pushq	%r14 | 
 | .cfi_adjust_cfa_offset	8 | 
 | .cfi_offset	r14,-40 | 
 | 	pushq	%r15 | 
 | .cfi_adjust_cfa_offset	8 | 
 | .cfi_offset	r15,-48 | 
 | 	pushq	%rbx | 
 | .cfi_adjust_cfa_offset	8 | 
 | .cfi_offset	rbx,-56 | 
 | 	pushq	%rsi | 
 | .cfi_adjust_cfa_offset	8 | 
 | .cfi_offset	rsi,-64 | 
 |  | 
 | 	subq	$80,%rsp | 
 | .cfi_adjust_cfa_offset	80 | 
 | 	movq	%rdi,0(%rsp) | 
 |  | 
 |  | 
 | 	movq	$1,%r8 | 
 | 	xorq	%r9,%r9 | 
 | 	xorq	%r10,%r10 | 
 | 	xorq	%r11,%r11 | 
 | 	xorq	%rdi,%rdi | 
 |  | 
 | 	xorq	%r12,%r12 | 
 | 	xorq	%r13,%r13 | 
 | 	xorq	%r14,%r14 | 
 | 	xorq	%r15,%r15 | 
 | 	xorq	%rbp,%rbp | 
 |  | 
 |  | 
 | 	vmovdqu	0(%rsi),%xmm0 | 
 | 	vmovdqu	16(%rsi),%xmm1 | 
 | 	vmovdqu	%xmm0,48(%rsp) | 
 | 	vmovdqu	%xmm1,64(%rsp) | 
 |  | 
 | 	vmovdqu	0(%rdx),%xmm0 | 
 | 	vmovdqu	16(%rdx),%xmm1 | 
 | 	vmovdqu	%xmm0,16(%rsp) | 
 | 	vmovdqu	%xmm1,32(%rsp) | 
 |  | 
 | .Lbeeu_loop: | 
 | 	xorq	%rbx,%rbx | 
 | 	orq	48(%rsp),%rbx | 
 | 	orq	56(%rsp),%rbx | 
 | 	orq	64(%rsp),%rbx | 
 | 	orq	72(%rsp),%rbx | 
 | 	jz	.Lbeeu_loop_end | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 | 	movq	$1,%rcx | 
 |  | 
 |  | 
 | .Lbeeu_shift_loop_XB: | 
 | 	movq	%rcx,%rbx | 
 | 	andq	48(%rsp),%rbx | 
 | 	jnz	.Lbeeu_shift_loop_end_XB | 
 |  | 
 |  | 
 | 	movq	$1,%rbx | 
 | 	andq	%r8,%rbx | 
 | 	jz	.Lshift1_0 | 
 | 	addq	0(%rdx),%r8 | 
 | 	adcq	8(%rdx),%r9 | 
 | 	adcq	16(%rdx),%r10 | 
 | 	adcq	24(%rdx),%r11 | 
 | 	adcq	$0,%rdi | 
 |  | 
 | .Lshift1_0: | 
 | 	shrdq	$1,%r9,%r8 | 
 | 	shrdq	$1,%r10,%r9 | 
 | 	shrdq	$1,%r11,%r10 | 
 | 	shrdq	$1,%rdi,%r11 | 
 | 	shrq	$1,%rdi | 
 |  | 
 | 	shlq	$1,%rcx | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 | 	cmpq	$0x8000000,%rcx | 
 | 	jne	.Lbeeu_shift_loop_XB | 
 |  | 
 | .Lbeeu_shift_loop_end_XB: | 
 | 	bsfq	%rcx,%rcx | 
 | 	testq	%rcx,%rcx | 
 | 	jz	.Lbeeu_no_shift_XB | 
 |  | 
 |  | 
 |  | 
 | 	movq	8+48(%rsp),%rax | 
 | 	movq	16+48(%rsp),%rbx | 
 | 	movq	24+48(%rsp),%rsi | 
 |  | 
 | 	shrdq	%cl,%rax,0+48(%rsp) | 
 | 	shrdq	%cl,%rbx,8+48(%rsp) | 
 | 	shrdq	%cl,%rsi,16+48(%rsp) | 
 |  | 
 | 	shrq	%cl,%rsi | 
 | 	movq	%rsi,24+48(%rsp) | 
 |  | 
 |  | 
 | .Lbeeu_no_shift_XB: | 
 |  | 
 | 	movq	$1,%rcx | 
 |  | 
 |  | 
 | .Lbeeu_shift_loop_YA: | 
 | 	movq	%rcx,%rbx | 
 | 	andq	16(%rsp),%rbx | 
 | 	jnz	.Lbeeu_shift_loop_end_YA | 
 |  | 
 |  | 
 | 	movq	$1,%rbx | 
 | 	andq	%r12,%rbx | 
 | 	jz	.Lshift1_1 | 
 | 	addq	0(%rdx),%r12 | 
 | 	adcq	8(%rdx),%r13 | 
 | 	adcq	16(%rdx),%r14 | 
 | 	adcq	24(%rdx),%r15 | 
 | 	adcq	$0,%rbp | 
 |  | 
 | .Lshift1_1: | 
 | 	shrdq	$1,%r13,%r12 | 
 | 	shrdq	$1,%r14,%r13 | 
 | 	shrdq	$1,%r15,%r14 | 
 | 	shrdq	$1,%rbp,%r15 | 
 | 	shrq	$1,%rbp | 
 |  | 
 | 	shlq	$1,%rcx | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 | 	cmpq	$0x8000000,%rcx | 
 | 	jne	.Lbeeu_shift_loop_YA | 
 |  | 
 | .Lbeeu_shift_loop_end_YA: | 
 | 	bsfq	%rcx,%rcx | 
 | 	testq	%rcx,%rcx | 
 | 	jz	.Lbeeu_no_shift_YA | 
 |  | 
 |  | 
 |  | 
 | 	movq	8+16(%rsp),%rax | 
 | 	movq	16+16(%rsp),%rbx | 
 | 	movq	24+16(%rsp),%rsi | 
 |  | 
 | 	shrdq	%cl,%rax,0+16(%rsp) | 
 | 	shrdq	%cl,%rbx,8+16(%rsp) | 
 | 	shrdq	%cl,%rsi,16+16(%rsp) | 
 |  | 
 | 	shrq	%cl,%rsi | 
 | 	movq	%rsi,24+16(%rsp) | 
 |  | 
 |  | 
 | .Lbeeu_no_shift_YA: | 
 |  | 
 | 	movq	48(%rsp),%rax | 
 | 	movq	56(%rsp),%rbx | 
 | 	movq	64(%rsp),%rsi | 
 | 	movq	72(%rsp),%rcx | 
 | 	subq	16(%rsp),%rax | 
 | 	sbbq	24(%rsp),%rbx | 
 | 	sbbq	32(%rsp),%rsi | 
 | 	sbbq	40(%rsp),%rcx | 
 | 	jnc	.Lbeeu_B_bigger_than_A | 
 |  | 
 |  | 
 | 	movq	16(%rsp),%rax | 
 | 	movq	24(%rsp),%rbx | 
 | 	movq	32(%rsp),%rsi | 
 | 	movq	40(%rsp),%rcx | 
 | 	subq	48(%rsp),%rax | 
 | 	sbbq	56(%rsp),%rbx | 
 | 	sbbq	64(%rsp),%rsi | 
 | 	sbbq	72(%rsp),%rcx | 
 | 	movq	%rax,16(%rsp) | 
 | 	movq	%rbx,24(%rsp) | 
 | 	movq	%rsi,32(%rsp) | 
 | 	movq	%rcx,40(%rsp) | 
 |  | 
 |  | 
 | 	addq	%r8,%r12 | 
 | 	adcq	%r9,%r13 | 
 | 	adcq	%r10,%r14 | 
 | 	adcq	%r11,%r15 | 
 | 	adcq	%rdi,%rbp | 
 | 	jmp	.Lbeeu_loop | 
 |  | 
 | .Lbeeu_B_bigger_than_A: | 
 |  | 
 | 	movq	%rax,48(%rsp) | 
 | 	movq	%rbx,56(%rsp) | 
 | 	movq	%rsi,64(%rsp) | 
 | 	movq	%rcx,72(%rsp) | 
 |  | 
 |  | 
 | 	addq	%r12,%r8 | 
 | 	adcq	%r13,%r9 | 
 | 	adcq	%r14,%r10 | 
 | 	adcq	%r15,%r11 | 
 | 	adcq	%rbp,%rdi | 
 |  | 
 | 	jmp	.Lbeeu_loop | 
 |  | 
 | .Lbeeu_loop_end: | 
 |  | 
 |  | 
 |  | 
 |  | 
 | 	movq	16(%rsp),%rbx | 
 | 	subq	$1,%rbx | 
 | 	orq	24(%rsp),%rbx | 
 | 	orq	32(%rsp),%rbx | 
 | 	orq	40(%rsp),%rbx | 
 |  | 
 | 	jnz	.Lbeeu_err | 
 |  | 
 |  | 
 |  | 
 |  | 
 | 	movq	0(%rdx),%r8 | 
 | 	movq	8(%rdx),%r9 | 
 | 	movq	16(%rdx),%r10 | 
 | 	movq	24(%rdx),%r11 | 
 | 	xorq	%rdi,%rdi | 
 |  | 
 | .Lbeeu_reduction_loop: | 
 | 	movq	%r12,16(%rsp) | 
 | 	movq	%r13,24(%rsp) | 
 | 	movq	%r14,32(%rsp) | 
 | 	movq	%r15,40(%rsp) | 
 | 	movq	%rbp,48(%rsp) | 
 |  | 
 |  | 
 | 	subq	%r8,%r12 | 
 | 	sbbq	%r9,%r13 | 
 | 	sbbq	%r10,%r14 | 
 | 	sbbq	%r11,%r15 | 
 | 	sbbq	$0,%rbp | 
 |  | 
 |  | 
 | 	cmovcq	16(%rsp),%r12 | 
 | 	cmovcq	24(%rsp),%r13 | 
 | 	cmovcq	32(%rsp),%r14 | 
 | 	cmovcq	40(%rsp),%r15 | 
 | 	jnc	.Lbeeu_reduction_loop | 
 |  | 
 |  | 
 | 	subq	%r12,%r8 | 
 | 	sbbq	%r13,%r9 | 
 | 	sbbq	%r14,%r10 | 
 | 	sbbq	%r15,%r11 | 
 |  | 
 | .Lbeeu_save: | 
 |  | 
 | 	movq	0(%rsp),%rdi | 
 |  | 
 | 	movq	%r8,0(%rdi) | 
 | 	movq	%r9,8(%rdi) | 
 | 	movq	%r10,16(%rdi) | 
 | 	movq	%r11,24(%rdi) | 
 |  | 
 |  | 
 | 	movq	$1,%rax | 
 | 	jmp	.Lbeeu_finish | 
 |  | 
 | .Lbeeu_err: | 
 |  | 
 | 	xorq	%rax,%rax | 
 |  | 
 | .Lbeeu_finish: | 
 | 	addq	$80,%rsp | 
 | .cfi_adjust_cfa_offset	-80 | 
 | 	popq	%rsi | 
 | .cfi_adjust_cfa_offset	-8 | 
 | .cfi_restore	rsi | 
 | 	popq	%rbx | 
 | .cfi_adjust_cfa_offset	-8 | 
 | .cfi_restore	rbx | 
 | 	popq	%r15 | 
 | .cfi_adjust_cfa_offset	-8 | 
 | .cfi_restore	r15 | 
 | 	popq	%r14 | 
 | .cfi_adjust_cfa_offset	-8 | 
 | .cfi_restore	r14 | 
 | 	popq	%r13 | 
 | .cfi_adjust_cfa_offset	-8 | 
 | .cfi_restore	r13 | 
 | 	popq	%r12 | 
 | .cfi_adjust_cfa_offset	-8 | 
 | .cfi_restore	r12 | 
 | 	popq	%rbp | 
 | .cfi_adjust_cfa_offset	-8 | 
 | .cfi_restore	rbp | 
 | 	ret | 
 | .cfi_endproc	 | 
 |  | 
 | .size	beeu_mod_inverse_vartime, .-beeu_mod_inverse_vartime | 
 | #endif |