	.file	"extr_curve25519.c_fe51_sq.c"
	.intel_syntax noprefix
	.text
	.p2align 4
	.type	fe51_sq, @function
fe51_sq:
.LFB0:
	.cfi_startproc
	endbr64
	push	r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	push	rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	push	rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	mov	r9d, DWORD PTR [rsi]
	mov	ecx, DWORD PTR 16[rsi]
	mov	edx, DWORD PTR 12[rsi]
	mov	r8d, DWORD PTR 8[rsi]
	mov	eax, DWORD PTR 4[rsi]
	mov	r11d, r9d
	imul	r11d, r9d
	lea	esi, [rcx+rcx*8]
	add	r9d, r9d
	mov	ebp, edx
	mov	r10d, eax
	imul	ebp, r9d
	lea	esi, [rcx+rsi*2]
	mov	ebx, r8d
	imul	r10d, r9d
	imul	ebx, r9d
	imul	r9d, ecx
	imul	ecx, esi
	add	ecx, ebp
	mov	ebp, eax
	imul	ebp, eax
	add	eax, eax
	add	ebx, ebp
	mov	ebp, r8d
	imul	ebp, eax
	lea	r14d, [rcx+rbp]
	mov	ebp, edx
	mov	ecx, 51
	imul	ebp, eax
	imul	eax, esi
	add	r9d, ebp
	mov	ebp, edx
	add	eax, r11d
	lea	r11d, [rdx+rdx*8]
	lea	r11d, [rdx+r11*2]
	imul	ebp, r11d
	imul	edx, esi
	add	ebp, r10d
	lea	r10d, [rbx+rdx*2]
	mov	edx, r8d
	imul	edx, r8d
	add	r8d, r8d
	imul	r11d, r8d
	imul	esi, r8d
	add	r9d, edx
	add	r11d, eax
	mov	eax, r10d
	sar	eax, cl
	mov	edx, r11d
	add	esi, ebp
	lea	ebx, [r14+rax]
	sar	edx, cl
	mov	eax, DWORD PTR MASK51[rip]
	add	esi, edx
	mov	edx, ebx
	sar	edx, cl
	mov	r8d, esi
	and	r10d, eax
	and	r11d, eax
	add	r9d, edx
	sar	r8d, cl
	and	esi, eax
	and	ebx, eax
	add	r8d, r10d
	mov	r10d, r9d
	sar	r10d, cl
	lea	edx, [r10+r10*8]
	lea	edx, [r10+rdx*2]
	mov	r10d, eax
	add	edx, r11d
	and	r10d, edx
	sar	edx, cl
	add	edx, esi
	mov	DWORD PTR [rdi], r10d
	mov	DWORD PTR 4[rdi], edx
	mov	edx, eax
	and	eax, r9d
	and	edx, r8d
	sar	r8d, cl
	mov	DWORD PTR 16[rdi], eax
	add	r8d, ebx
	mov	DWORD PTR 8[rdi], edx
	pop	rbx
	.cfi_def_cfa_offset 24
	mov	DWORD PTR 12[rdi], r8d
	pop	rbp
	.cfi_def_cfa_offset 16
	pop	r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE0:
	.size	fe51_sq, .-fe51_sq
	.comm	MASK51,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 8
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 8
4:

	.arch armv5t
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 2
	.eabi_attribute 30, 2
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"extr_curve25519.c_fe51_sq.c"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	fe51_sq, %function
fe51_sq:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
	mov	r4, r1
	ldr	r9, [r1, #16]
	ldr	r7, [r1, #4]
	ldr	r1, [r1, #12]
	lsl	fp, r7, #1
	add	r3, r9, r9, lsl #3
	add	r3, r9, r3, lsl #1
	mul	lr, fp, r1
	ldr	r10, [r4]
	mul	ip, r3, r9
	lsl	r8, r10, #1
	mla	lr, r8, r9, lr
	mul	r9, fp, r3
	mla	ip, r8, r1, ip
	ldr	r4, [r4, #8]
	sub	sp, sp, #12
	str	r9, [sp, #4]
	mla	ip, fp, r4, ip
	ldr	fp, [sp, #4]
	mov	r5, #51
	mla	fp, r10, r10, fp
	mov	r10, fp
	add	r6, r1, r1, lsl #3
	add	r6, r1, r6, lsl #1
	mul	r2, r7, r7
	mul	r9, r6, r1
	mla	r2, r8, r4, r2
	mul	r1, r3, r1
	mla	r7, r8, r7, r9
	mla	r8, r4, r4, lr
	add	r2, r2, r1, lsl #1
	lsl	r4, r4, #1
	mla	r10, r4, r6, r10
	add	ip, ip, r2, asr r5
	mla	r3, r4, r3, r7
	ldr	lr, .L4
	add	r8, r8, ip, asr r5
	ldr	r4, [lr]
	asr	r1, r8, r5
	add	r6, r1, r1, lsl #3
	add	r3, r3, r10, asr r5
	add	r1, r1, r6, lsl #1
	and	r10, r10, r4
	and	r2, r2, r4
	add	r2, r2, r3, asr r5
	add	r1, r1, r10
	and	r3, r3, r4
	and	ip, ip, r4
	add	ip, ip, r2, asr r5
	and	r8, r8, r4
	and	r2, r2, r4
	add	r5, r3, r1, asr r5
	and	r4, r4, r1
	stm	r0, {r4, r5}
	str	r8, [r0, #16]
	str	ip, [r0, #12]
	str	r2, [r0, #8]
	add	sp, sp, #12
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L5:
	.align	2
.L4:
	.word	MASK51
	.size	fe51_sq, .-fe51_sq
	.comm	MASK51,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
