162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 OR MIT */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Based on public domain code from Daniel J. Bernstein and Peter Schwabe. This
662306a36Sopenharmony_ci * began from SUPERCOP's curve25519/neon2/scalarmult.s, but has subsequently been
762306a36Sopenharmony_ci * manually reworked for use in kernel space.
862306a36Sopenharmony_ci */
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#include <linux/linkage.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci.text
1362306a36Sopenharmony_ci.arch armv7-a
1462306a36Sopenharmony_ci.fpu neon
1562306a36Sopenharmony_ci.align 4
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciENTRY(curve25519_neon)
1862306a36Sopenharmony_ci	push		{r4-r11, lr}
1962306a36Sopenharmony_ci	mov		ip, sp
2062306a36Sopenharmony_ci	sub		r3, sp, #704
2162306a36Sopenharmony_ci	and		r3, r3, #0xfffffff0
2262306a36Sopenharmony_ci	mov		sp, r3
2362306a36Sopenharmony_ci	movw		r4, #0
2462306a36Sopenharmony_ci	movw		r5, #254
2562306a36Sopenharmony_ci	vmov.i32	q0, #1
2662306a36Sopenharmony_ci	vshr.u64	q1, q0, #7
2762306a36Sopenharmony_ci	vshr.u64	q0, q0, #8
2862306a36Sopenharmony_ci	vmov.i32	d4, #19
2962306a36Sopenharmony_ci	vmov.i32	d5, #38
3062306a36Sopenharmony_ci	add		r6, sp, #480
3162306a36Sopenharmony_ci	vst1.8		{d2-d3}, [r6, : 128]!
3262306a36Sopenharmony_ci	vst1.8		{d0-d1}, [r6, : 128]!
3362306a36Sopenharmony_ci	vst1.8		{d4-d5}, [r6, : 128]
3462306a36Sopenharmony_ci	add		r6, r3, #0
3562306a36Sopenharmony_ci	vmov.i32	q2, #0
3662306a36Sopenharmony_ci	vst1.8		{d4-d5}, [r6, : 128]!
3762306a36Sopenharmony_ci	vst1.8		{d4-d5}, [r6, : 128]!
3862306a36Sopenharmony_ci	vst1.8		d4, [r6, : 64]
3962306a36Sopenharmony_ci	add		r6, r3, #0
4062306a36Sopenharmony_ci	movw		r7, #960
4162306a36Sopenharmony_ci	sub		r7, r7, #2
4262306a36Sopenharmony_ci	neg		r7, r7
4362306a36Sopenharmony_ci	sub		r7, r7, r7, LSL #7
4462306a36Sopenharmony_ci	str		r7, [r6]
4562306a36Sopenharmony_ci	add		r6, sp, #672
4662306a36Sopenharmony_ci	vld1.8		{d4-d5}, [r1]!
4762306a36Sopenharmony_ci	vld1.8		{d6-d7}, [r1]
4862306a36Sopenharmony_ci	vst1.8		{d4-d5}, [r6, : 128]!
4962306a36Sopenharmony_ci	vst1.8		{d6-d7}, [r6, : 128]
5062306a36Sopenharmony_ci	sub		r1, r6, #16
5162306a36Sopenharmony_ci	ldrb		r6, [r1]
5262306a36Sopenharmony_ci	and		r6, r6, #248
5362306a36Sopenharmony_ci	strb		r6, [r1]
5462306a36Sopenharmony_ci	ldrb		r6, [r1, #31]
5562306a36Sopenharmony_ci	and		r6, r6, #127
5662306a36Sopenharmony_ci	orr		r6, r6, #64
5762306a36Sopenharmony_ci	strb		r6, [r1, #31]
5862306a36Sopenharmony_ci	vmov.i64	q2, #0xffffffff
5962306a36Sopenharmony_ci	vshr.u64	q3, q2, #7
6062306a36Sopenharmony_ci	vshr.u64	q2, q2, #6
6162306a36Sopenharmony_ci	vld1.8		{d8}, [r2]
6262306a36Sopenharmony_ci	vld1.8		{d10}, [r2]
6362306a36Sopenharmony_ci	add		r2, r2, #6
6462306a36Sopenharmony_ci	vld1.8		{d12}, [r2]
6562306a36Sopenharmony_ci	vld1.8		{d14}, [r2]
6662306a36Sopenharmony_ci	add		r2, r2, #6
6762306a36Sopenharmony_ci	vld1.8		{d16}, [r2]
6862306a36Sopenharmony_ci	add		r2, r2, #4
6962306a36Sopenharmony_ci	vld1.8		{d18}, [r2]
7062306a36Sopenharmony_ci	vld1.8		{d20}, [r2]
7162306a36Sopenharmony_ci	add		r2, r2, #6
7262306a36Sopenharmony_ci	vld1.8		{d22}, [r2]
7362306a36Sopenharmony_ci	add		r2, r2, #2
7462306a36Sopenharmony_ci	vld1.8		{d24}, [r2]
7562306a36Sopenharmony_ci	vld1.8		{d26}, [r2]
7662306a36Sopenharmony_ci	vshr.u64	q5, q5, #26
7762306a36Sopenharmony_ci	vshr.u64	q6, q6, #3
7862306a36Sopenharmony_ci	vshr.u64	q7, q7, #29
7962306a36Sopenharmony_ci	vshr.u64	q8, q8, #6
8062306a36Sopenharmony_ci	vshr.u64	q10, q10, #25
8162306a36Sopenharmony_ci	vshr.u64	q11, q11, #3
8262306a36Sopenharmony_ci	vshr.u64	q12, q12, #12
8362306a36Sopenharmony_ci	vshr.u64	q13, q13, #38
8462306a36Sopenharmony_ci	vand		q4, q4, q2
8562306a36Sopenharmony_ci	vand		q6, q6, q2
8662306a36Sopenharmony_ci	vand		q8, q8, q2
8762306a36Sopenharmony_ci	vand		q10, q10, q2
8862306a36Sopenharmony_ci	vand		q2, q12, q2
8962306a36Sopenharmony_ci	vand		q5, q5, q3
9062306a36Sopenharmony_ci	vand		q7, q7, q3
9162306a36Sopenharmony_ci	vand		q9, q9, q3
9262306a36Sopenharmony_ci	vand		q11, q11, q3
9362306a36Sopenharmony_ci	vand		q3, q13, q3
9462306a36Sopenharmony_ci	add		r2, r3, #48
9562306a36Sopenharmony_ci	vadd.i64	q12, q4, q1
9662306a36Sopenharmony_ci	vadd.i64	q13, q10, q1
9762306a36Sopenharmony_ci	vshr.s64	q12, q12, #26
9862306a36Sopenharmony_ci	vshr.s64	q13, q13, #26
9962306a36Sopenharmony_ci	vadd.i64	q5, q5, q12
10062306a36Sopenharmony_ci	vshl.i64	q12, q12, #26
10162306a36Sopenharmony_ci	vadd.i64	q14, q5, q0
10262306a36Sopenharmony_ci	vadd.i64	q11, q11, q13
10362306a36Sopenharmony_ci	vshl.i64	q13, q13, #26
10462306a36Sopenharmony_ci	vadd.i64	q15, q11, q0
10562306a36Sopenharmony_ci	vsub.i64	q4, q4, q12
10662306a36Sopenharmony_ci	vshr.s64	q12, q14, #25
10762306a36Sopenharmony_ci	vsub.i64	q10, q10, q13
10862306a36Sopenharmony_ci	vshr.s64	q13, q15, #25
10962306a36Sopenharmony_ci	vadd.i64	q6, q6, q12
11062306a36Sopenharmony_ci	vshl.i64	q12, q12, #25
11162306a36Sopenharmony_ci	vadd.i64	q14, q6, q1
11262306a36Sopenharmony_ci	vadd.i64	q2, q2, q13
11362306a36Sopenharmony_ci	vsub.i64	q5, q5, q12
11462306a36Sopenharmony_ci	vshr.s64	q12, q14, #26
11562306a36Sopenharmony_ci	vshl.i64	q13, q13, #25
11662306a36Sopenharmony_ci	vadd.i64	q14, q2, q1
11762306a36Sopenharmony_ci	vadd.i64	q7, q7, q12
11862306a36Sopenharmony_ci	vshl.i64	q12, q12, #26
11962306a36Sopenharmony_ci	vadd.i64	q15, q7, q0
12062306a36Sopenharmony_ci	vsub.i64	q11, q11, q13
12162306a36Sopenharmony_ci	vshr.s64	q13, q14, #26
12262306a36Sopenharmony_ci	vsub.i64	q6, q6, q12
12362306a36Sopenharmony_ci	vshr.s64	q12, q15, #25
12462306a36Sopenharmony_ci	vadd.i64	q3, q3, q13
12562306a36Sopenharmony_ci	vshl.i64	q13, q13, #26
12662306a36Sopenharmony_ci	vadd.i64	q14, q3, q0
12762306a36Sopenharmony_ci	vadd.i64	q8, q8, q12
12862306a36Sopenharmony_ci	vshl.i64	q12, q12, #25
12962306a36Sopenharmony_ci	vadd.i64	q15, q8, q1
13062306a36Sopenharmony_ci	add		r2, r2, #8
13162306a36Sopenharmony_ci	vsub.i64	q2, q2, q13
13262306a36Sopenharmony_ci	vshr.s64	q13, q14, #25
13362306a36Sopenharmony_ci	vsub.i64	q7, q7, q12
13462306a36Sopenharmony_ci	vshr.s64	q12, q15, #26
13562306a36Sopenharmony_ci	vadd.i64	q14, q13, q13
13662306a36Sopenharmony_ci	vadd.i64	q9, q9, q12
13762306a36Sopenharmony_ci	vtrn.32		d12, d14
13862306a36Sopenharmony_ci	vshl.i64	q12, q12, #26
13962306a36Sopenharmony_ci	vtrn.32		d13, d15
14062306a36Sopenharmony_ci	vadd.i64	q0, q9, q0
14162306a36Sopenharmony_ci	vadd.i64	q4, q4, q14
14262306a36Sopenharmony_ci	vst1.8		d12, [r2, : 64]!
14362306a36Sopenharmony_ci	vshl.i64	q6, q13, #4
14462306a36Sopenharmony_ci	vsub.i64	q7, q8, q12
14562306a36Sopenharmony_ci	vshr.s64	q0, q0, #25
14662306a36Sopenharmony_ci	vadd.i64	q4, q4, q6
14762306a36Sopenharmony_ci	vadd.i64	q6, q10, q0
14862306a36Sopenharmony_ci	vshl.i64	q0, q0, #25
14962306a36Sopenharmony_ci	vadd.i64	q8, q6, q1
15062306a36Sopenharmony_ci	vadd.i64	q4, q4, q13
15162306a36Sopenharmony_ci	vshl.i64	q10, q13, #25
15262306a36Sopenharmony_ci	vadd.i64	q1, q4, q1
15362306a36Sopenharmony_ci	vsub.i64	q0, q9, q0
15462306a36Sopenharmony_ci	vshr.s64	q8, q8, #26
15562306a36Sopenharmony_ci	vsub.i64	q3, q3, q10
15662306a36Sopenharmony_ci	vtrn.32		d14, d0
15762306a36Sopenharmony_ci	vshr.s64	q1, q1, #26
15862306a36Sopenharmony_ci	vtrn.32		d15, d1
15962306a36Sopenharmony_ci	vadd.i64	q0, q11, q8
16062306a36Sopenharmony_ci	vst1.8		d14, [r2, : 64]
16162306a36Sopenharmony_ci	vshl.i64	q7, q8, #26
16262306a36Sopenharmony_ci	vadd.i64	q5, q5, q1
16362306a36Sopenharmony_ci	vtrn.32		d4, d6
16462306a36Sopenharmony_ci	vshl.i64	q1, q1, #26
16562306a36Sopenharmony_ci	vtrn.32		d5, d7
16662306a36Sopenharmony_ci	vsub.i64	q3, q6, q7
16762306a36Sopenharmony_ci	add		r2, r2, #16
16862306a36Sopenharmony_ci	vsub.i64	q1, q4, q1
16962306a36Sopenharmony_ci	vst1.8		d4, [r2, : 64]
17062306a36Sopenharmony_ci	vtrn.32		d6, d0
17162306a36Sopenharmony_ci	vtrn.32		d7, d1
17262306a36Sopenharmony_ci	sub		r2, r2, #8
17362306a36Sopenharmony_ci	vtrn.32		d2, d10
17462306a36Sopenharmony_ci	vtrn.32		d3, d11
17562306a36Sopenharmony_ci	vst1.8		d6, [r2, : 64]
17662306a36Sopenharmony_ci	sub		r2, r2, #24
17762306a36Sopenharmony_ci	vst1.8		d2, [r2, : 64]
17862306a36Sopenharmony_ci	add		r2, r3, #96
17962306a36Sopenharmony_ci	vmov.i32	q0, #0
18062306a36Sopenharmony_ci	vmov.i64	d2, #0xff
18162306a36Sopenharmony_ci	vmov.i64	d3, #0
18262306a36Sopenharmony_ci	vshr.u32	q1, q1, #7
18362306a36Sopenharmony_ci	vst1.8		{d2-d3}, [r2, : 128]!
18462306a36Sopenharmony_ci	vst1.8		{d0-d1}, [r2, : 128]!
18562306a36Sopenharmony_ci	vst1.8		d0, [r2, : 64]
18662306a36Sopenharmony_ci	add		r2, r3, #144
18762306a36Sopenharmony_ci	vmov.i32	q0, #0
18862306a36Sopenharmony_ci	vst1.8		{d0-d1}, [r2, : 128]!
18962306a36Sopenharmony_ci	vst1.8		{d0-d1}, [r2, : 128]!
19062306a36Sopenharmony_ci	vst1.8		d0, [r2, : 64]
19162306a36Sopenharmony_ci	add		r2, r3, #240
19262306a36Sopenharmony_ci	vmov.i32	q0, #0
19362306a36Sopenharmony_ci	vmov.i64	d2, #0xff
19462306a36Sopenharmony_ci	vmov.i64	d3, #0
19562306a36Sopenharmony_ci	vshr.u32	q1, q1, #7
19662306a36Sopenharmony_ci	vst1.8		{d2-d3}, [r2, : 128]!
19762306a36Sopenharmony_ci	vst1.8		{d0-d1}, [r2, : 128]!
19862306a36Sopenharmony_ci	vst1.8		d0, [r2, : 64]
19962306a36Sopenharmony_ci	add		r2, r3, #48
20062306a36Sopenharmony_ci	add		r6, r3, #192
20162306a36Sopenharmony_ci	vld1.8		{d0-d1}, [r2, : 128]!
20262306a36Sopenharmony_ci	vld1.8		{d2-d3}, [r2, : 128]!
20362306a36Sopenharmony_ci	vld1.8		{d4}, [r2, : 64]
20462306a36Sopenharmony_ci	vst1.8		{d0-d1}, [r6, : 128]!
20562306a36Sopenharmony_ci	vst1.8		{d2-d3}, [r6, : 128]!
20662306a36Sopenharmony_ci	vst1.8		d4, [r6, : 64]
20762306a36Sopenharmony_ci.Lmainloop:
20862306a36Sopenharmony_ci	mov		r2, r5, LSR #3
20962306a36Sopenharmony_ci	and		r6, r5, #7
21062306a36Sopenharmony_ci	ldrb		r2, [r1, r2]
21162306a36Sopenharmony_ci	mov		r2, r2, LSR r6
21262306a36Sopenharmony_ci	and		r2, r2, #1
21362306a36Sopenharmony_ci	str		r5, [sp, #456]
21462306a36Sopenharmony_ci	eor		r4, r4, r2
21562306a36Sopenharmony_ci	str		r2, [sp, #460]
21662306a36Sopenharmony_ci	neg		r2, r4
21762306a36Sopenharmony_ci	add		r4, r3, #96
21862306a36Sopenharmony_ci	add		r5, r3, #192
21962306a36Sopenharmony_ci	add		r6, r3, #144
22062306a36Sopenharmony_ci	vld1.8		{d8-d9}, [r4, : 128]!
22162306a36Sopenharmony_ci	add		r7, r3, #240
22262306a36Sopenharmony_ci	vld1.8		{d10-d11}, [r5, : 128]!
22362306a36Sopenharmony_ci	veor		q6, q4, q5
22462306a36Sopenharmony_ci	vld1.8		{d14-d15}, [r6, : 128]!
22562306a36Sopenharmony_ci	vdup.i32	q8, r2
22662306a36Sopenharmony_ci	vld1.8		{d18-d19}, [r7, : 128]!
22762306a36Sopenharmony_ci	veor		q10, q7, q9
22862306a36Sopenharmony_ci	vld1.8		{d22-d23}, [r4, : 128]!
22962306a36Sopenharmony_ci	vand		q6, q6, q8
23062306a36Sopenharmony_ci	vld1.8		{d24-d25}, [r5, : 128]!
23162306a36Sopenharmony_ci	vand		q10, q10, q8
23262306a36Sopenharmony_ci	vld1.8		{d26-d27}, [r6, : 128]!
23362306a36Sopenharmony_ci	veor		q4, q4, q6
23462306a36Sopenharmony_ci	vld1.8		{d28-d29}, [r7, : 128]!
23562306a36Sopenharmony_ci	veor		q5, q5, q6
23662306a36Sopenharmony_ci	vld1.8		{d0}, [r4, : 64]
23762306a36Sopenharmony_ci	veor		q6, q7, q10
23862306a36Sopenharmony_ci	vld1.8		{d2}, [r5, : 64]
23962306a36Sopenharmony_ci	veor		q7, q9, q10
24062306a36Sopenharmony_ci	vld1.8		{d4}, [r6, : 64]
24162306a36Sopenharmony_ci	veor		q9, q11, q12
24262306a36Sopenharmony_ci	vld1.8		{d6}, [r7, : 64]
24362306a36Sopenharmony_ci	veor		q10, q0, q1
24462306a36Sopenharmony_ci	sub		r2, r4, #32
24562306a36Sopenharmony_ci	vand		q9, q9, q8
24662306a36Sopenharmony_ci	sub		r4, r5, #32
24762306a36Sopenharmony_ci	vand		q10, q10, q8
24862306a36Sopenharmony_ci	sub		r5, r6, #32
24962306a36Sopenharmony_ci	veor		q11, q11, q9
25062306a36Sopenharmony_ci	sub		r6, r7, #32
25162306a36Sopenharmony_ci	veor		q0, q0, q10
25262306a36Sopenharmony_ci	veor		q9, q12, q9
25362306a36Sopenharmony_ci	veor		q1, q1, q10
25462306a36Sopenharmony_ci	veor		q10, q13, q14
25562306a36Sopenharmony_ci	veor		q12, q2, q3
25662306a36Sopenharmony_ci	vand		q10, q10, q8
25762306a36Sopenharmony_ci	vand		q8, q12, q8
25862306a36Sopenharmony_ci	veor		q12, q13, q10
25962306a36Sopenharmony_ci	veor		q2, q2, q8
26062306a36Sopenharmony_ci	veor		q10, q14, q10
26162306a36Sopenharmony_ci	veor		q3, q3, q8
26262306a36Sopenharmony_ci	vadd.i32	q8, q4, q6
26362306a36Sopenharmony_ci	vsub.i32	q4, q4, q6
26462306a36Sopenharmony_ci	vst1.8		{d16-d17}, [r2, : 128]!
26562306a36Sopenharmony_ci	vadd.i32	q6, q11, q12
26662306a36Sopenharmony_ci	vst1.8		{d8-d9}, [r5, : 128]!
26762306a36Sopenharmony_ci	vsub.i32	q4, q11, q12
26862306a36Sopenharmony_ci	vst1.8		{d12-d13}, [r2, : 128]!
26962306a36Sopenharmony_ci	vadd.i32	q6, q0, q2
27062306a36Sopenharmony_ci	vst1.8		{d8-d9}, [r5, : 128]!
27162306a36Sopenharmony_ci	vsub.i32	q0, q0, q2
27262306a36Sopenharmony_ci	vst1.8		d12, [r2, : 64]
27362306a36Sopenharmony_ci	vadd.i32	q2, q5, q7
27462306a36Sopenharmony_ci	vst1.8		d0, [r5, : 64]
27562306a36Sopenharmony_ci	vsub.i32	q0, q5, q7
27662306a36Sopenharmony_ci	vst1.8		{d4-d5}, [r4, : 128]!
27762306a36Sopenharmony_ci	vadd.i32	q2, q9, q10
27862306a36Sopenharmony_ci	vst1.8		{d0-d1}, [r6, : 128]!
27962306a36Sopenharmony_ci	vsub.i32	q0, q9, q10
28062306a36Sopenharmony_ci	vst1.8		{d4-d5}, [r4, : 128]!
28162306a36Sopenharmony_ci	vadd.i32	q2, q1, q3
28262306a36Sopenharmony_ci	vst1.8		{d0-d1}, [r6, : 128]!
28362306a36Sopenharmony_ci	vsub.i32	q0, q1, q3
28462306a36Sopenharmony_ci	vst1.8		d4, [r4, : 64]
28562306a36Sopenharmony_ci	vst1.8		d0, [r6, : 64]
28662306a36Sopenharmony_ci	add		r2, sp, #512
28762306a36Sopenharmony_ci	add		r4, r3, #96
28862306a36Sopenharmony_ci	add		r5, r3, #144
28962306a36Sopenharmony_ci	vld1.8		{d0-d1}, [r2, : 128]
29062306a36Sopenharmony_ci	vld1.8		{d2-d3}, [r4, : 128]!
29162306a36Sopenharmony_ci	vld1.8		{d4-d5}, [r5, : 128]!
29262306a36Sopenharmony_ci	vzip.i32	q1, q2
29362306a36Sopenharmony_ci	vld1.8		{d6-d7}, [r4, : 128]!
29462306a36Sopenharmony_ci	vld1.8		{d8-d9}, [r5, : 128]!
29562306a36Sopenharmony_ci	vshl.i32	q5, q1, #1
29662306a36Sopenharmony_ci	vzip.i32	q3, q4
29762306a36Sopenharmony_ci	vshl.i32	q6, q2, #1
29862306a36Sopenharmony_ci	vld1.8		{d14}, [r4, : 64]
29962306a36Sopenharmony_ci	vshl.i32	q8, q3, #1
30062306a36Sopenharmony_ci	vld1.8		{d15}, [r5, : 64]
30162306a36Sopenharmony_ci	vshl.i32	q9, q4, #1
30262306a36Sopenharmony_ci	vmul.i32	d21, d7, d1
30362306a36Sopenharmony_ci	vtrn.32		d14, d15
30462306a36Sopenharmony_ci	vmul.i32	q11, q4, q0
30562306a36Sopenharmony_ci	vmul.i32	q0, q7, q0
30662306a36Sopenharmony_ci	vmull.s32	q12, d2, d2
30762306a36Sopenharmony_ci	vmlal.s32	q12, d11, d1
30862306a36Sopenharmony_ci	vmlal.s32	q12, d12, d0
30962306a36Sopenharmony_ci	vmlal.s32	q12, d13, d23
31062306a36Sopenharmony_ci	vmlal.s32	q12, d16, d22
31162306a36Sopenharmony_ci	vmlal.s32	q12, d7, d21
31262306a36Sopenharmony_ci	vmull.s32	q10, d2, d11
31362306a36Sopenharmony_ci	vmlal.s32	q10, d4, d1
31462306a36Sopenharmony_ci	vmlal.s32	q10, d13, d0
31562306a36Sopenharmony_ci	vmlal.s32	q10, d6, d23
31662306a36Sopenharmony_ci	vmlal.s32	q10, d17, d22
31762306a36Sopenharmony_ci	vmull.s32	q13, d10, d4
31862306a36Sopenharmony_ci	vmlal.s32	q13, d11, d3
31962306a36Sopenharmony_ci	vmlal.s32	q13, d13, d1
32062306a36Sopenharmony_ci	vmlal.s32	q13, d16, d0
32162306a36Sopenharmony_ci	vmlal.s32	q13, d17, d23
32262306a36Sopenharmony_ci	vmlal.s32	q13, d8, d22
32362306a36Sopenharmony_ci	vmull.s32	q1, d10, d5
32462306a36Sopenharmony_ci	vmlal.s32	q1, d11, d4
32562306a36Sopenharmony_ci	vmlal.s32	q1, d6, d1
32662306a36Sopenharmony_ci	vmlal.s32	q1, d17, d0
32762306a36Sopenharmony_ci	vmlal.s32	q1, d8, d23
32862306a36Sopenharmony_ci	vmull.s32	q14, d10, d6
32962306a36Sopenharmony_ci	vmlal.s32	q14, d11, d13
33062306a36Sopenharmony_ci	vmlal.s32	q14, d4, d4
33162306a36Sopenharmony_ci	vmlal.s32	q14, d17, d1
33262306a36Sopenharmony_ci	vmlal.s32	q14, d18, d0
33362306a36Sopenharmony_ci	vmlal.s32	q14, d9, d23
33462306a36Sopenharmony_ci	vmull.s32	q11, d10, d7
33562306a36Sopenharmony_ci	vmlal.s32	q11, d11, d6
33662306a36Sopenharmony_ci	vmlal.s32	q11, d12, d5
33762306a36Sopenharmony_ci	vmlal.s32	q11, d8, d1
33862306a36Sopenharmony_ci	vmlal.s32	q11, d19, d0
33962306a36Sopenharmony_ci	vmull.s32	q15, d10, d8
34062306a36Sopenharmony_ci	vmlal.s32	q15, d11, d17
34162306a36Sopenharmony_ci	vmlal.s32	q15, d12, d6
34262306a36Sopenharmony_ci	vmlal.s32	q15, d13, d5
34362306a36Sopenharmony_ci	vmlal.s32	q15, d19, d1
34462306a36Sopenharmony_ci	vmlal.s32	q15, d14, d0
34562306a36Sopenharmony_ci	vmull.s32	q2, d10, d9
34662306a36Sopenharmony_ci	vmlal.s32	q2, d11, d8
34762306a36Sopenharmony_ci	vmlal.s32	q2, d12, d7
34862306a36Sopenharmony_ci	vmlal.s32	q2, d13, d6
34962306a36Sopenharmony_ci	vmlal.s32	q2, d14, d1
35062306a36Sopenharmony_ci	vmull.s32	q0, d15, d1
35162306a36Sopenharmony_ci	vmlal.s32	q0, d10, d14
35262306a36Sopenharmony_ci	vmlal.s32	q0, d11, d19
35362306a36Sopenharmony_ci	vmlal.s32	q0, d12, d8
35462306a36Sopenharmony_ci	vmlal.s32	q0, d13, d17
35562306a36Sopenharmony_ci	vmlal.s32	q0, d6, d6
35662306a36Sopenharmony_ci	add		r2, sp, #480
35762306a36Sopenharmony_ci	vld1.8		{d18-d19}, [r2, : 128]!
35862306a36Sopenharmony_ci	vmull.s32	q3, d16, d7
35962306a36Sopenharmony_ci	vmlal.s32	q3, d10, d15
36062306a36Sopenharmony_ci	vmlal.s32	q3, d11, d14
36162306a36Sopenharmony_ci	vmlal.s32	q3, d12, d9
36262306a36Sopenharmony_ci	vmlal.s32	q3, d13, d8
36362306a36Sopenharmony_ci	vld1.8		{d8-d9}, [r2, : 128]
36462306a36Sopenharmony_ci	vadd.i64	q5, q12, q9
36562306a36Sopenharmony_ci	vadd.i64	q6, q15, q9
36662306a36Sopenharmony_ci	vshr.s64	q5, q5, #26
36762306a36Sopenharmony_ci	vshr.s64	q6, q6, #26
36862306a36Sopenharmony_ci	vadd.i64	q7, q10, q5
36962306a36Sopenharmony_ci	vshl.i64	q5, q5, #26
37062306a36Sopenharmony_ci	vadd.i64	q8, q7, q4
37162306a36Sopenharmony_ci	vadd.i64	q2, q2, q6
37262306a36Sopenharmony_ci	vshl.i64	q6, q6, #26
37362306a36Sopenharmony_ci	vadd.i64	q10, q2, q4
37462306a36Sopenharmony_ci	vsub.i64	q5, q12, q5
37562306a36Sopenharmony_ci	vshr.s64	q8, q8, #25
37662306a36Sopenharmony_ci	vsub.i64	q6, q15, q6
37762306a36Sopenharmony_ci	vshr.s64	q10, q10, #25
37862306a36Sopenharmony_ci	vadd.i64	q12, q13, q8
37962306a36Sopenharmony_ci	vshl.i64	q8, q8, #25
38062306a36Sopenharmony_ci	vadd.i64	q13, q12, q9
38162306a36Sopenharmony_ci	vadd.i64	q0, q0, q10
38262306a36Sopenharmony_ci	vsub.i64	q7, q7, q8
38362306a36Sopenharmony_ci	vshr.s64	q8, q13, #26
38462306a36Sopenharmony_ci	vshl.i64	q10, q10, #25
38562306a36Sopenharmony_ci	vadd.i64	q13, q0, q9
38662306a36Sopenharmony_ci	vadd.i64	q1, q1, q8
38762306a36Sopenharmony_ci	vshl.i64	q8, q8, #26
38862306a36Sopenharmony_ci	vadd.i64	q15, q1, q4
38962306a36Sopenharmony_ci	vsub.i64	q2, q2, q10
39062306a36Sopenharmony_ci	vshr.s64	q10, q13, #26
39162306a36Sopenharmony_ci	vsub.i64	q8, q12, q8
39262306a36Sopenharmony_ci	vshr.s64	q12, q15, #25
39362306a36Sopenharmony_ci	vadd.i64	q3, q3, q10
39462306a36Sopenharmony_ci	vshl.i64	q10, q10, #26
39562306a36Sopenharmony_ci	vadd.i64	q13, q3, q4
39662306a36Sopenharmony_ci	vadd.i64	q14, q14, q12
39762306a36Sopenharmony_ci	add		r2, r3, #288
39862306a36Sopenharmony_ci	vshl.i64	q12, q12, #25
39962306a36Sopenharmony_ci	add		r4, r3, #336
40062306a36Sopenharmony_ci	vadd.i64	q15, q14, q9
40162306a36Sopenharmony_ci	add		r2, r2, #8
40262306a36Sopenharmony_ci	vsub.i64	q0, q0, q10
40362306a36Sopenharmony_ci	add		r4, r4, #8
40462306a36Sopenharmony_ci	vshr.s64	q10, q13, #25
40562306a36Sopenharmony_ci	vsub.i64	q1, q1, q12
40662306a36Sopenharmony_ci	vshr.s64	q12, q15, #26
40762306a36Sopenharmony_ci	vadd.i64	q13, q10, q10
40862306a36Sopenharmony_ci	vadd.i64	q11, q11, q12
40962306a36Sopenharmony_ci	vtrn.32		d16, d2
41062306a36Sopenharmony_ci	vshl.i64	q12, q12, #26
41162306a36Sopenharmony_ci	vtrn.32		d17, d3
41262306a36Sopenharmony_ci	vadd.i64	q1, q11, q4
41362306a36Sopenharmony_ci	vadd.i64	q4, q5, q13
41462306a36Sopenharmony_ci	vst1.8		d16, [r2, : 64]!
41562306a36Sopenharmony_ci	vshl.i64	q5, q10, #4
41662306a36Sopenharmony_ci	vst1.8		d17, [r4, : 64]!
41762306a36Sopenharmony_ci	vsub.i64	q8, q14, q12
41862306a36Sopenharmony_ci	vshr.s64	q1, q1, #25
41962306a36Sopenharmony_ci	vadd.i64	q4, q4, q5
42062306a36Sopenharmony_ci	vadd.i64	q5, q6, q1
42162306a36Sopenharmony_ci	vshl.i64	q1, q1, #25
42262306a36Sopenharmony_ci	vadd.i64	q6, q5, q9
42362306a36Sopenharmony_ci	vadd.i64	q4, q4, q10
42462306a36Sopenharmony_ci	vshl.i64	q10, q10, #25
42562306a36Sopenharmony_ci	vadd.i64	q9, q4, q9
42662306a36Sopenharmony_ci	vsub.i64	q1, q11, q1
42762306a36Sopenharmony_ci	vshr.s64	q6, q6, #26
42862306a36Sopenharmony_ci	vsub.i64	q3, q3, q10
42962306a36Sopenharmony_ci	vtrn.32		d16, d2
43062306a36Sopenharmony_ci	vshr.s64	q9, q9, #26
43162306a36Sopenharmony_ci	vtrn.32		d17, d3
43262306a36Sopenharmony_ci	vadd.i64	q1, q2, q6
43362306a36Sopenharmony_ci	vst1.8		d16, [r2, : 64]
43462306a36Sopenharmony_ci	vshl.i64	q2, q6, #26
43562306a36Sopenharmony_ci	vst1.8		d17, [r4, : 64]
43662306a36Sopenharmony_ci	vadd.i64	q6, q7, q9
43762306a36Sopenharmony_ci	vtrn.32		d0, d6
43862306a36Sopenharmony_ci	vshl.i64	q7, q9, #26
43962306a36Sopenharmony_ci	vtrn.32		d1, d7
44062306a36Sopenharmony_ci	vsub.i64	q2, q5, q2
44162306a36Sopenharmony_ci	add		r2, r2, #16
44262306a36Sopenharmony_ci	vsub.i64	q3, q4, q7
44362306a36Sopenharmony_ci	vst1.8		d0, [r2, : 64]
44462306a36Sopenharmony_ci	add		r4, r4, #16
44562306a36Sopenharmony_ci	vst1.8		d1, [r4, : 64]
44662306a36Sopenharmony_ci	vtrn.32		d4, d2
44762306a36Sopenharmony_ci	vtrn.32		d5, d3
44862306a36Sopenharmony_ci	sub		r2, r2, #8
44962306a36Sopenharmony_ci	sub		r4, r4, #8
45062306a36Sopenharmony_ci	vtrn.32		d6, d12
45162306a36Sopenharmony_ci	vtrn.32		d7, d13
45262306a36Sopenharmony_ci	vst1.8		d4, [r2, : 64]
45362306a36Sopenharmony_ci	vst1.8		d5, [r4, : 64]
45462306a36Sopenharmony_ci	sub		r2, r2, #24
45562306a36Sopenharmony_ci	sub		r4, r4, #24
45662306a36Sopenharmony_ci	vst1.8		d6, [r2, : 64]
45762306a36Sopenharmony_ci	vst1.8		d7, [r4, : 64]
45862306a36Sopenharmony_ci	add		r2, r3, #240
45962306a36Sopenharmony_ci	add		r4, r3, #96
46062306a36Sopenharmony_ci	vld1.8		{d0-d1}, [r4, : 128]!
46162306a36Sopenharmony_ci	vld1.8		{d2-d3}, [r4, : 128]!
46262306a36Sopenharmony_ci	vld1.8		{d4}, [r4, : 64]
46362306a36Sopenharmony_ci	add		r4, r3, #144
46462306a36Sopenharmony_ci	vld1.8		{d6-d7}, [r4, : 128]!
46562306a36Sopenharmony_ci	vtrn.32		q0, q3
46662306a36Sopenharmony_ci	vld1.8		{d8-d9}, [r4, : 128]!
46762306a36Sopenharmony_ci	vshl.i32	q5, q0, #4
46862306a36Sopenharmony_ci	vtrn.32		q1, q4
46962306a36Sopenharmony_ci	vshl.i32	q6, q3, #4
47062306a36Sopenharmony_ci	vadd.i32	q5, q5, q0
47162306a36Sopenharmony_ci	vadd.i32	q6, q6, q3
47262306a36Sopenharmony_ci	vshl.i32	q7, q1, #4
47362306a36Sopenharmony_ci	vld1.8		{d5}, [r4, : 64]
47462306a36Sopenharmony_ci	vshl.i32	q8, q4, #4
47562306a36Sopenharmony_ci	vtrn.32		d4, d5
47662306a36Sopenharmony_ci	vadd.i32	q7, q7, q1
47762306a36Sopenharmony_ci	vadd.i32	q8, q8, q4
47862306a36Sopenharmony_ci	vld1.8		{d18-d19}, [r2, : 128]!
47962306a36Sopenharmony_ci	vshl.i32	q10, q2, #4
48062306a36Sopenharmony_ci	vld1.8		{d22-d23}, [r2, : 128]!
48162306a36Sopenharmony_ci	vadd.i32	q10, q10, q2
48262306a36Sopenharmony_ci	vld1.8		{d24}, [r2, : 64]
48362306a36Sopenharmony_ci	vadd.i32	q5, q5, q0
48462306a36Sopenharmony_ci	add		r2, r3, #192
48562306a36Sopenharmony_ci	vld1.8		{d26-d27}, [r2, : 128]!
48662306a36Sopenharmony_ci	vadd.i32	q6, q6, q3
48762306a36Sopenharmony_ci	vld1.8		{d28-d29}, [r2, : 128]!
48862306a36Sopenharmony_ci	vadd.i32	q8, q8, q4
48962306a36Sopenharmony_ci	vld1.8		{d25}, [r2, : 64]
49062306a36Sopenharmony_ci	vadd.i32	q10, q10, q2
49162306a36Sopenharmony_ci	vtrn.32		q9, q13
49262306a36Sopenharmony_ci	vadd.i32	q7, q7, q1
49362306a36Sopenharmony_ci	vadd.i32	q5, q5, q0
49462306a36Sopenharmony_ci	vtrn.32		q11, q14
49562306a36Sopenharmony_ci	vadd.i32	q6, q6, q3
49662306a36Sopenharmony_ci	add		r2, sp, #528
49762306a36Sopenharmony_ci	vadd.i32	q10, q10, q2
49862306a36Sopenharmony_ci	vtrn.32		d24, d25
49962306a36Sopenharmony_ci	vst1.8		{d12-d13}, [r2, : 128]!
50062306a36Sopenharmony_ci	vshl.i32	q6, q13, #1
50162306a36Sopenharmony_ci	vst1.8		{d20-d21}, [r2, : 128]!
50262306a36Sopenharmony_ci	vshl.i32	q10, q14, #1
50362306a36Sopenharmony_ci	vst1.8		{d12-d13}, [r2, : 128]!
50462306a36Sopenharmony_ci	vshl.i32	q15, q12, #1
50562306a36Sopenharmony_ci	vadd.i32	q8, q8, q4
50662306a36Sopenharmony_ci	vext.32		d10, d31, d30, #0
50762306a36Sopenharmony_ci	vadd.i32	q7, q7, q1
50862306a36Sopenharmony_ci	vst1.8		{d16-d17}, [r2, : 128]!
50962306a36Sopenharmony_ci	vmull.s32	q8, d18, d5
51062306a36Sopenharmony_ci	vmlal.s32	q8, d26, d4
51162306a36Sopenharmony_ci	vmlal.s32	q8, d19, d9
51262306a36Sopenharmony_ci	vmlal.s32	q8, d27, d3
51362306a36Sopenharmony_ci	vmlal.s32	q8, d22, d8
51462306a36Sopenharmony_ci	vmlal.s32	q8, d28, d2
51562306a36Sopenharmony_ci	vmlal.s32	q8, d23, d7
51662306a36Sopenharmony_ci	vmlal.s32	q8, d29, d1
51762306a36Sopenharmony_ci	vmlal.s32	q8, d24, d6
51862306a36Sopenharmony_ci	vmlal.s32	q8, d25, d0
51962306a36Sopenharmony_ci	vst1.8		{d14-d15}, [r2, : 128]!
52062306a36Sopenharmony_ci	vmull.s32	q2, d18, d4
52162306a36Sopenharmony_ci	vmlal.s32	q2, d12, d9
52262306a36Sopenharmony_ci	vmlal.s32	q2, d13, d8
52362306a36Sopenharmony_ci	vmlal.s32	q2, d19, d3
52462306a36Sopenharmony_ci	vmlal.s32	q2, d22, d2
52562306a36Sopenharmony_ci	vmlal.s32	q2, d23, d1
52662306a36Sopenharmony_ci	vmlal.s32	q2, d24, d0
52762306a36Sopenharmony_ci	vst1.8		{d20-d21}, [r2, : 128]!
52862306a36Sopenharmony_ci	vmull.s32	q7, d18, d9
52962306a36Sopenharmony_ci	vmlal.s32	q7, d26, d3
53062306a36Sopenharmony_ci	vmlal.s32	q7, d19, d8
53162306a36Sopenharmony_ci	vmlal.s32	q7, d27, d2
53262306a36Sopenharmony_ci	vmlal.s32	q7, d22, d7
53362306a36Sopenharmony_ci	vmlal.s32	q7, d28, d1
53462306a36Sopenharmony_ci	vmlal.s32	q7, d23, d6
53562306a36Sopenharmony_ci	vmlal.s32	q7, d29, d0
53662306a36Sopenharmony_ci	vst1.8		{d10-d11}, [r2, : 128]!
53762306a36Sopenharmony_ci	vmull.s32	q5, d18, d3
53862306a36Sopenharmony_ci	vmlal.s32	q5, d19, d2
53962306a36Sopenharmony_ci	vmlal.s32	q5, d22, d1
54062306a36Sopenharmony_ci	vmlal.s32	q5, d23, d0
54162306a36Sopenharmony_ci	vmlal.s32	q5, d12, d8
54262306a36Sopenharmony_ci	vst1.8		{d16-d17}, [r2, : 128]
54362306a36Sopenharmony_ci	vmull.s32	q4, d18, d8
54462306a36Sopenharmony_ci	vmlal.s32	q4, d26, d2
54562306a36Sopenharmony_ci	vmlal.s32	q4, d19, d7
54662306a36Sopenharmony_ci	vmlal.s32	q4, d27, d1
54762306a36Sopenharmony_ci	vmlal.s32	q4, d22, d6
54862306a36Sopenharmony_ci	vmlal.s32	q4, d28, d0
54962306a36Sopenharmony_ci	vmull.s32	q8, d18, d7
55062306a36Sopenharmony_ci	vmlal.s32	q8, d26, d1
55162306a36Sopenharmony_ci	vmlal.s32	q8, d19, d6
55262306a36Sopenharmony_ci	vmlal.s32	q8, d27, d0
55362306a36Sopenharmony_ci	add		r2, sp, #544
55462306a36Sopenharmony_ci	vld1.8		{d20-d21}, [r2, : 128]
55562306a36Sopenharmony_ci	vmlal.s32	q7, d24, d21
55662306a36Sopenharmony_ci	vmlal.s32	q7, d25, d20
55762306a36Sopenharmony_ci	vmlal.s32	q4, d23, d21
55862306a36Sopenharmony_ci	vmlal.s32	q4, d29, d20
55962306a36Sopenharmony_ci	vmlal.s32	q8, d22, d21
56062306a36Sopenharmony_ci	vmlal.s32	q8, d28, d20
56162306a36Sopenharmony_ci	vmlal.s32	q5, d24, d20
56262306a36Sopenharmony_ci	vst1.8		{d14-d15}, [r2, : 128]
56362306a36Sopenharmony_ci	vmull.s32	q7, d18, d6
56462306a36Sopenharmony_ci	vmlal.s32	q7, d26, d0
56562306a36Sopenharmony_ci	add		r2, sp, #624
56662306a36Sopenharmony_ci	vld1.8		{d30-d31}, [r2, : 128]
56762306a36Sopenharmony_ci	vmlal.s32	q2, d30, d21
56862306a36Sopenharmony_ci	vmlal.s32	q7, d19, d21
56962306a36Sopenharmony_ci	vmlal.s32	q7, d27, d20
57062306a36Sopenharmony_ci	add		r2, sp, #592
57162306a36Sopenharmony_ci	vld1.8		{d26-d27}, [r2, : 128]
57262306a36Sopenharmony_ci	vmlal.s32	q4, d25, d27
57362306a36Sopenharmony_ci	vmlal.s32	q8, d29, d27
57462306a36Sopenharmony_ci	vmlal.s32	q8, d25, d26
57562306a36Sopenharmony_ci	vmlal.s32	q7, d28, d27
57662306a36Sopenharmony_ci	vmlal.s32	q7, d29, d26
57762306a36Sopenharmony_ci	add		r2, sp, #576
57862306a36Sopenharmony_ci	vld1.8		{d28-d29}, [r2, : 128]
57962306a36Sopenharmony_ci	vmlal.s32	q4, d24, d29
58062306a36Sopenharmony_ci	vmlal.s32	q8, d23, d29
58162306a36Sopenharmony_ci	vmlal.s32	q8, d24, d28
58262306a36Sopenharmony_ci	vmlal.s32	q7, d22, d29
58362306a36Sopenharmony_ci	vmlal.s32	q7, d23, d28
58462306a36Sopenharmony_ci	vst1.8		{d8-d9}, [r2, : 128]
58562306a36Sopenharmony_ci	add		r2, sp, #528
58662306a36Sopenharmony_ci	vld1.8		{d8-d9}, [r2, : 128]
58762306a36Sopenharmony_ci	vmlal.s32	q7, d24, d9
58862306a36Sopenharmony_ci	vmlal.s32	q7, d25, d31
58962306a36Sopenharmony_ci	vmull.s32	q1, d18, d2
59062306a36Sopenharmony_ci	vmlal.s32	q1, d19, d1
59162306a36Sopenharmony_ci	vmlal.s32	q1, d22, d0
59262306a36Sopenharmony_ci	vmlal.s32	q1, d24, d27
59362306a36Sopenharmony_ci	vmlal.s32	q1, d23, d20
59462306a36Sopenharmony_ci	vmlal.s32	q1, d12, d7
59562306a36Sopenharmony_ci	vmlal.s32	q1, d13, d6
59662306a36Sopenharmony_ci	vmull.s32	q6, d18, d1
59762306a36Sopenharmony_ci	vmlal.s32	q6, d19, d0
59862306a36Sopenharmony_ci	vmlal.s32	q6, d23, d27
59962306a36Sopenharmony_ci	vmlal.s32	q6, d22, d20
60062306a36Sopenharmony_ci	vmlal.s32	q6, d24, d26
60162306a36Sopenharmony_ci	vmull.s32	q0, d18, d0
60262306a36Sopenharmony_ci	vmlal.s32	q0, d22, d27
60362306a36Sopenharmony_ci	vmlal.s32	q0, d23, d26
60462306a36Sopenharmony_ci	vmlal.s32	q0, d24, d31
60562306a36Sopenharmony_ci	vmlal.s32	q0, d19, d20
60662306a36Sopenharmony_ci	add		r2, sp, #608
60762306a36Sopenharmony_ci	vld1.8		{d18-d19}, [r2, : 128]
60862306a36Sopenharmony_ci	vmlal.s32	q2, d18, d7
60962306a36Sopenharmony_ci	vmlal.s32	q5, d18, d6
61062306a36Sopenharmony_ci	vmlal.s32	q1, d18, d21
61162306a36Sopenharmony_ci	vmlal.s32	q0, d18, d28
61262306a36Sopenharmony_ci	vmlal.s32	q6, d18, d29
61362306a36Sopenharmony_ci	vmlal.s32	q2, d19, d6
61462306a36Sopenharmony_ci	vmlal.s32	q5, d19, d21
61562306a36Sopenharmony_ci	vmlal.s32	q1, d19, d29
61662306a36Sopenharmony_ci	vmlal.s32	q0, d19, d9
61762306a36Sopenharmony_ci	vmlal.s32	q6, d19, d28
61862306a36Sopenharmony_ci	add		r2, sp, #560
61962306a36Sopenharmony_ci	vld1.8		{d18-d19}, [r2, : 128]
62062306a36Sopenharmony_ci	add		r2, sp, #480
62162306a36Sopenharmony_ci	vld1.8		{d22-d23}, [r2, : 128]
62262306a36Sopenharmony_ci	vmlal.s32	q5, d19, d7
62362306a36Sopenharmony_ci	vmlal.s32	q0, d18, d21
62462306a36Sopenharmony_ci	vmlal.s32	q0, d19, d29
62562306a36Sopenharmony_ci	vmlal.s32	q6, d18, d6
62662306a36Sopenharmony_ci	add		r2, sp, #496
62762306a36Sopenharmony_ci	vld1.8		{d6-d7}, [r2, : 128]
62862306a36Sopenharmony_ci	vmlal.s32	q6, d19, d21
62962306a36Sopenharmony_ci	add		r2, sp, #544
63062306a36Sopenharmony_ci	vld1.8		{d18-d19}, [r2, : 128]
63162306a36Sopenharmony_ci	vmlal.s32	q0, d30, d8
63262306a36Sopenharmony_ci	add		r2, sp, #640
63362306a36Sopenharmony_ci	vld1.8		{d20-d21}, [r2, : 128]
63462306a36Sopenharmony_ci	vmlal.s32	q5, d30, d29
63562306a36Sopenharmony_ci	add		r2, sp, #576
63662306a36Sopenharmony_ci	vld1.8		{d24-d25}, [r2, : 128]
63762306a36Sopenharmony_ci	vmlal.s32	q1, d30, d28
63862306a36Sopenharmony_ci	vadd.i64	q13, q0, q11
63962306a36Sopenharmony_ci	vadd.i64	q14, q5, q11
64062306a36Sopenharmony_ci	vmlal.s32	q6, d30, d9
64162306a36Sopenharmony_ci	vshr.s64	q4, q13, #26
64262306a36Sopenharmony_ci	vshr.s64	q13, q14, #26
64362306a36Sopenharmony_ci	vadd.i64	q7, q7, q4
64462306a36Sopenharmony_ci	vshl.i64	q4, q4, #26
64562306a36Sopenharmony_ci	vadd.i64	q14, q7, q3
64662306a36Sopenharmony_ci	vadd.i64	q9, q9, q13
64762306a36Sopenharmony_ci	vshl.i64	q13, q13, #26
64862306a36Sopenharmony_ci	vadd.i64	q15, q9, q3
64962306a36Sopenharmony_ci	vsub.i64	q0, q0, q4
65062306a36Sopenharmony_ci	vshr.s64	q4, q14, #25
65162306a36Sopenharmony_ci	vsub.i64	q5, q5, q13
65262306a36Sopenharmony_ci	vshr.s64	q13, q15, #25
65362306a36Sopenharmony_ci	vadd.i64	q6, q6, q4
65462306a36Sopenharmony_ci	vshl.i64	q4, q4, #25
65562306a36Sopenharmony_ci	vadd.i64	q14, q6, q11
65662306a36Sopenharmony_ci	vadd.i64	q2, q2, q13
65762306a36Sopenharmony_ci	vsub.i64	q4, q7, q4
65862306a36Sopenharmony_ci	vshr.s64	q7, q14, #26
65962306a36Sopenharmony_ci	vshl.i64	q13, q13, #25
66062306a36Sopenharmony_ci	vadd.i64	q14, q2, q11
66162306a36Sopenharmony_ci	vadd.i64	q8, q8, q7
66262306a36Sopenharmony_ci	vshl.i64	q7, q7, #26
66362306a36Sopenharmony_ci	vadd.i64	q15, q8, q3
66462306a36Sopenharmony_ci	vsub.i64	q9, q9, q13
66562306a36Sopenharmony_ci	vshr.s64	q13, q14, #26
66662306a36Sopenharmony_ci	vsub.i64	q6, q6, q7
66762306a36Sopenharmony_ci	vshr.s64	q7, q15, #25
66862306a36Sopenharmony_ci	vadd.i64	q10, q10, q13
66962306a36Sopenharmony_ci	vshl.i64	q13, q13, #26
67062306a36Sopenharmony_ci	vadd.i64	q14, q10, q3
67162306a36Sopenharmony_ci	vadd.i64	q1, q1, q7
67262306a36Sopenharmony_ci	add		r2, r3, #144
67362306a36Sopenharmony_ci	vshl.i64	q7, q7, #25
67462306a36Sopenharmony_ci	add		r4, r3, #96
67562306a36Sopenharmony_ci	vadd.i64	q15, q1, q11
67662306a36Sopenharmony_ci	add		r2, r2, #8
67762306a36Sopenharmony_ci	vsub.i64	q2, q2, q13
67862306a36Sopenharmony_ci	add		r4, r4, #8
67962306a36Sopenharmony_ci	vshr.s64	q13, q14, #25
68062306a36Sopenharmony_ci	vsub.i64	q7, q8, q7
68162306a36Sopenharmony_ci	vshr.s64	q8, q15, #26
68262306a36Sopenharmony_ci	vadd.i64	q14, q13, q13
68362306a36Sopenharmony_ci	vadd.i64	q12, q12, q8
68462306a36Sopenharmony_ci	vtrn.32		d12, d14
68562306a36Sopenharmony_ci	vshl.i64	q8, q8, #26
68662306a36Sopenharmony_ci	vtrn.32		d13, d15
68762306a36Sopenharmony_ci	vadd.i64	q3, q12, q3
68862306a36Sopenharmony_ci	vadd.i64	q0, q0, q14
68962306a36Sopenharmony_ci	vst1.8		d12, [r2, : 64]!
69062306a36Sopenharmony_ci	vshl.i64	q7, q13, #4
69162306a36Sopenharmony_ci	vst1.8		d13, [r4, : 64]!
69262306a36Sopenharmony_ci	vsub.i64	q1, q1, q8
69362306a36Sopenharmony_ci	vshr.s64	q3, q3, #25
69462306a36Sopenharmony_ci	vadd.i64	q0, q0, q7
69562306a36Sopenharmony_ci	vadd.i64	q5, q5, q3
69662306a36Sopenharmony_ci	vshl.i64	q3, q3, #25
69762306a36Sopenharmony_ci	vadd.i64	q6, q5, q11
69862306a36Sopenharmony_ci	vadd.i64	q0, q0, q13
69962306a36Sopenharmony_ci	vshl.i64	q7, q13, #25
70062306a36Sopenharmony_ci	vadd.i64	q8, q0, q11
70162306a36Sopenharmony_ci	vsub.i64	q3, q12, q3
70262306a36Sopenharmony_ci	vshr.s64	q6, q6, #26
70362306a36Sopenharmony_ci	vsub.i64	q7, q10, q7
70462306a36Sopenharmony_ci	vtrn.32		d2, d6
70562306a36Sopenharmony_ci	vshr.s64	q8, q8, #26
70662306a36Sopenharmony_ci	vtrn.32		d3, d7
70762306a36Sopenharmony_ci	vadd.i64	q3, q9, q6
70862306a36Sopenharmony_ci	vst1.8		d2, [r2, : 64]
70962306a36Sopenharmony_ci	vshl.i64	q6, q6, #26
71062306a36Sopenharmony_ci	vst1.8		d3, [r4, : 64]
71162306a36Sopenharmony_ci	vadd.i64	q1, q4, q8
71262306a36Sopenharmony_ci	vtrn.32		d4, d14
71362306a36Sopenharmony_ci	vshl.i64	q4, q8, #26
71462306a36Sopenharmony_ci	vtrn.32		d5, d15
71562306a36Sopenharmony_ci	vsub.i64	q5, q5, q6
71662306a36Sopenharmony_ci	add		r2, r2, #16
71762306a36Sopenharmony_ci	vsub.i64	q0, q0, q4
71862306a36Sopenharmony_ci	vst1.8		d4, [r2, : 64]
71962306a36Sopenharmony_ci	add		r4, r4, #16
72062306a36Sopenharmony_ci	vst1.8		d5, [r4, : 64]
72162306a36Sopenharmony_ci	vtrn.32		d10, d6
72262306a36Sopenharmony_ci	vtrn.32		d11, d7
72362306a36Sopenharmony_ci	sub		r2, r2, #8
72462306a36Sopenharmony_ci	sub		r4, r4, #8
72562306a36Sopenharmony_ci	vtrn.32		d0, d2
72662306a36Sopenharmony_ci	vtrn.32		d1, d3
72762306a36Sopenharmony_ci	vst1.8		d10, [r2, : 64]
72862306a36Sopenharmony_ci	vst1.8		d11, [r4, : 64]
72962306a36Sopenharmony_ci	sub		r2, r2, #24
73062306a36Sopenharmony_ci	sub		r4, r4, #24
73162306a36Sopenharmony_ci	vst1.8		d0, [r2, : 64]
73262306a36Sopenharmony_ci	vst1.8		d1, [r4, : 64]
73362306a36Sopenharmony_ci	add		r2, r3, #288
73462306a36Sopenharmony_ci	add		r4, r3, #336
73562306a36Sopenharmony_ci	vld1.8		{d0-d1}, [r2, : 128]!
73662306a36Sopenharmony_ci	vld1.8		{d2-d3}, [r4, : 128]!
73762306a36Sopenharmony_ci	vsub.i32	q0, q0, q1
73862306a36Sopenharmony_ci	vld1.8		{d2-d3}, [r2, : 128]!
73962306a36Sopenharmony_ci	vld1.8		{d4-d5}, [r4, : 128]!
74062306a36Sopenharmony_ci	vsub.i32	q1, q1, q2
74162306a36Sopenharmony_ci	add		r5, r3, #240
74262306a36Sopenharmony_ci	vld1.8		{d4}, [r2, : 64]
74362306a36Sopenharmony_ci	vld1.8		{d6}, [r4, : 64]
74462306a36Sopenharmony_ci	vsub.i32	q2, q2, q3
74562306a36Sopenharmony_ci	vst1.8		{d0-d1}, [r5, : 128]!
74662306a36Sopenharmony_ci	vst1.8		{d2-d3}, [r5, : 128]!
74762306a36Sopenharmony_ci	vst1.8		d4, [r5, : 64]
74862306a36Sopenharmony_ci	add		r2, r3, #144
74962306a36Sopenharmony_ci	add		r4, r3, #96
75062306a36Sopenharmony_ci	add		r5, r3, #144
75162306a36Sopenharmony_ci	add		r6, r3, #192
75262306a36Sopenharmony_ci	vld1.8		{d0-d1}, [r2, : 128]!
75362306a36Sopenharmony_ci	vld1.8		{d2-d3}, [r4, : 128]!
75462306a36Sopenharmony_ci	vsub.i32	q2, q0, q1
75562306a36Sopenharmony_ci	vadd.i32	q0, q0, q1
75662306a36Sopenharmony_ci	vld1.8		{d2-d3}, [r2, : 128]!
75762306a36Sopenharmony_ci	vld1.8		{d6-d7}, [r4, : 128]!
75862306a36Sopenharmony_ci	vsub.i32	q4, q1, q3
75962306a36Sopenharmony_ci	vadd.i32	q1, q1, q3
76062306a36Sopenharmony_ci	vld1.8		{d6}, [r2, : 64]
76162306a36Sopenharmony_ci	vld1.8		{d10}, [r4, : 64]
76262306a36Sopenharmony_ci	vsub.i32	q6, q3, q5
76362306a36Sopenharmony_ci	vadd.i32	q3, q3, q5
76462306a36Sopenharmony_ci	vst1.8		{d4-d5}, [r5, : 128]!
76562306a36Sopenharmony_ci	vst1.8		{d0-d1}, [r6, : 128]!
76662306a36Sopenharmony_ci	vst1.8		{d8-d9}, [r5, : 128]!
76762306a36Sopenharmony_ci	vst1.8		{d2-d3}, [r6, : 128]!
76862306a36Sopenharmony_ci	vst1.8		d12, [r5, : 64]
76962306a36Sopenharmony_ci	vst1.8		d6, [r6, : 64]
77062306a36Sopenharmony_ci	add		r2, r3, #0
77162306a36Sopenharmony_ci	add		r4, r3, #240
77262306a36Sopenharmony_ci	vld1.8		{d0-d1}, [r4, : 128]!
77362306a36Sopenharmony_ci	vld1.8		{d2-d3}, [r4, : 128]!
77462306a36Sopenharmony_ci	vld1.8		{d4}, [r4, : 64]
77562306a36Sopenharmony_ci	add		r4, r3, #336
77662306a36Sopenharmony_ci	vld1.8		{d6-d7}, [r4, : 128]!
77762306a36Sopenharmony_ci	vtrn.32		q0, q3
77862306a36Sopenharmony_ci	vld1.8		{d8-d9}, [r4, : 128]!
77962306a36Sopenharmony_ci	vshl.i32	q5, q0, #4
78062306a36Sopenharmony_ci	vtrn.32		q1, q4
78162306a36Sopenharmony_ci	vshl.i32	q6, q3, #4
78262306a36Sopenharmony_ci	vadd.i32	q5, q5, q0
78362306a36Sopenharmony_ci	vadd.i32	q6, q6, q3
78462306a36Sopenharmony_ci	vshl.i32	q7, q1, #4
78562306a36Sopenharmony_ci	vld1.8		{d5}, [r4, : 64]
78662306a36Sopenharmony_ci	vshl.i32	q8, q4, #4
78762306a36Sopenharmony_ci	vtrn.32		d4, d5
78862306a36Sopenharmony_ci	vadd.i32	q7, q7, q1
78962306a36Sopenharmony_ci	vadd.i32	q8, q8, q4
79062306a36Sopenharmony_ci	vld1.8		{d18-d19}, [r2, : 128]!
79162306a36Sopenharmony_ci	vshl.i32	q10, q2, #4
79262306a36Sopenharmony_ci	vld1.8		{d22-d23}, [r2, : 128]!
79362306a36Sopenharmony_ci	vadd.i32	q10, q10, q2
79462306a36Sopenharmony_ci	vld1.8		{d24}, [r2, : 64]
79562306a36Sopenharmony_ci	vadd.i32	q5, q5, q0
79662306a36Sopenharmony_ci	add		r2, r3, #288
79762306a36Sopenharmony_ci	vld1.8		{d26-d27}, [r2, : 128]!
79862306a36Sopenharmony_ci	vadd.i32	q6, q6, q3
79962306a36Sopenharmony_ci	vld1.8		{d28-d29}, [r2, : 128]!
80062306a36Sopenharmony_ci	vadd.i32	q8, q8, q4
80162306a36Sopenharmony_ci	vld1.8		{d25}, [r2, : 64]
80262306a36Sopenharmony_ci	vadd.i32	q10, q10, q2
80362306a36Sopenharmony_ci	vtrn.32		q9, q13
80462306a36Sopenharmony_ci	vadd.i32	q7, q7, q1
80562306a36Sopenharmony_ci	vadd.i32	q5, q5, q0
80662306a36Sopenharmony_ci	vtrn.32		q11, q14
80762306a36Sopenharmony_ci	vadd.i32	q6, q6, q3
80862306a36Sopenharmony_ci	add		r2, sp, #528
80962306a36Sopenharmony_ci	vadd.i32	q10, q10, q2
81062306a36Sopenharmony_ci	vtrn.32		d24, d25
81162306a36Sopenharmony_ci	vst1.8		{d12-d13}, [r2, : 128]!
81262306a36Sopenharmony_ci	vshl.i32	q6, q13, #1
81362306a36Sopenharmony_ci	vst1.8		{d20-d21}, [r2, : 128]!
81462306a36Sopenharmony_ci	vshl.i32	q10, q14, #1
81562306a36Sopenharmony_ci	vst1.8		{d12-d13}, [r2, : 128]!
81662306a36Sopenharmony_ci	vshl.i32	q15, q12, #1
81762306a36Sopenharmony_ci	vadd.i32	q8, q8, q4
81862306a36Sopenharmony_ci	vext.32		d10, d31, d30, #0
81962306a36Sopenharmony_ci	vadd.i32	q7, q7, q1
82062306a36Sopenharmony_ci	vst1.8		{d16-d17}, [r2, : 128]!
82162306a36Sopenharmony_ci	vmull.s32	q8, d18, d5
82262306a36Sopenharmony_ci	vmlal.s32	q8, d26, d4
82362306a36Sopenharmony_ci	vmlal.s32	q8, d19, d9
82462306a36Sopenharmony_ci	vmlal.s32	q8, d27, d3
82562306a36Sopenharmony_ci	vmlal.s32	q8, d22, d8
82662306a36Sopenharmony_ci	vmlal.s32	q8, d28, d2
82762306a36Sopenharmony_ci	vmlal.s32	q8, d23, d7
82862306a36Sopenharmony_ci	vmlal.s32	q8, d29, d1
82962306a36Sopenharmony_ci	vmlal.s32	q8, d24, d6
83062306a36Sopenharmony_ci	vmlal.s32	q8, d25, d0
83162306a36Sopenharmony_ci	vst1.8		{d14-d15}, [r2, : 128]!
83262306a36Sopenharmony_ci	vmull.s32	q2, d18, d4
83362306a36Sopenharmony_ci	vmlal.s32	q2, d12, d9
83462306a36Sopenharmony_ci	vmlal.s32	q2, d13, d8
83562306a36Sopenharmony_ci	vmlal.s32	q2, d19, d3
83662306a36Sopenharmony_ci	vmlal.s32	q2, d22, d2
83762306a36Sopenharmony_ci	vmlal.s32	q2, d23, d1
83862306a36Sopenharmony_ci	vmlal.s32	q2, d24, d0
83962306a36Sopenharmony_ci	vst1.8		{d20-d21}, [r2, : 128]!
84062306a36Sopenharmony_ci	vmull.s32	q7, d18, d9
84162306a36Sopenharmony_ci	vmlal.s32	q7, d26, d3
84262306a36Sopenharmony_ci	vmlal.s32	q7, d19, d8
84362306a36Sopenharmony_ci	vmlal.s32	q7, d27, d2
84462306a36Sopenharmony_ci	vmlal.s32	q7, d22, d7
84562306a36Sopenharmony_ci	vmlal.s32	q7, d28, d1
84662306a36Sopenharmony_ci	vmlal.s32	q7, d23, d6
84762306a36Sopenharmony_ci	vmlal.s32	q7, d29, d0
84862306a36Sopenharmony_ci	vst1.8		{d10-d11}, [r2, : 128]!
84962306a36Sopenharmony_ci	vmull.s32	q5, d18, d3
85062306a36Sopenharmony_ci	vmlal.s32	q5, d19, d2
85162306a36Sopenharmony_ci	vmlal.s32	q5, d22, d1
85262306a36Sopenharmony_ci	vmlal.s32	q5, d23, d0
85362306a36Sopenharmony_ci	vmlal.s32	q5, d12, d8
85462306a36Sopenharmony_ci	vst1.8		{d16-d17}, [r2, : 128]!
85562306a36Sopenharmony_ci	vmull.s32	q4, d18, d8
85662306a36Sopenharmony_ci	vmlal.s32	q4, d26, d2
85762306a36Sopenharmony_ci	vmlal.s32	q4, d19, d7
85862306a36Sopenharmony_ci	vmlal.s32	q4, d27, d1
85962306a36Sopenharmony_ci	vmlal.s32	q4, d22, d6
86062306a36Sopenharmony_ci	vmlal.s32	q4, d28, d0
86162306a36Sopenharmony_ci	vmull.s32	q8, d18, d7
86262306a36Sopenharmony_ci	vmlal.s32	q8, d26, d1
86362306a36Sopenharmony_ci	vmlal.s32	q8, d19, d6
86462306a36Sopenharmony_ci	vmlal.s32	q8, d27, d0
86562306a36Sopenharmony_ci	add		r2, sp, #544
86662306a36Sopenharmony_ci	vld1.8		{d20-d21}, [r2, : 128]
86762306a36Sopenharmony_ci	vmlal.s32	q7, d24, d21
86862306a36Sopenharmony_ci	vmlal.s32	q7, d25, d20
86962306a36Sopenharmony_ci	vmlal.s32	q4, d23, d21
87062306a36Sopenharmony_ci	vmlal.s32	q4, d29, d20
87162306a36Sopenharmony_ci	vmlal.s32	q8, d22, d21
87262306a36Sopenharmony_ci	vmlal.s32	q8, d28, d20
87362306a36Sopenharmony_ci	vmlal.s32	q5, d24, d20
87462306a36Sopenharmony_ci	vst1.8		{d14-d15}, [r2, : 128]
87562306a36Sopenharmony_ci	vmull.s32	q7, d18, d6
87662306a36Sopenharmony_ci	vmlal.s32	q7, d26, d0
87762306a36Sopenharmony_ci	add		r2, sp, #624
87862306a36Sopenharmony_ci	vld1.8		{d30-d31}, [r2, : 128]
87962306a36Sopenharmony_ci	vmlal.s32	q2, d30, d21
88062306a36Sopenharmony_ci	vmlal.s32	q7, d19, d21
88162306a36Sopenharmony_ci	vmlal.s32	q7, d27, d20
88262306a36Sopenharmony_ci	add		r2, sp, #592
88362306a36Sopenharmony_ci	vld1.8		{d26-d27}, [r2, : 128]
88462306a36Sopenharmony_ci	vmlal.s32	q4, d25, d27
88562306a36Sopenharmony_ci	vmlal.s32	q8, d29, d27
88662306a36Sopenharmony_ci	vmlal.s32	q8, d25, d26
88762306a36Sopenharmony_ci	vmlal.s32	q7, d28, d27
88862306a36Sopenharmony_ci	vmlal.s32	q7, d29, d26
88962306a36Sopenharmony_ci	add		r2, sp, #576
89062306a36Sopenharmony_ci	vld1.8		{d28-d29}, [r2, : 128]
89162306a36Sopenharmony_ci	vmlal.s32	q4, d24, d29
89262306a36Sopenharmony_ci	vmlal.s32	q8, d23, d29
89362306a36Sopenharmony_ci	vmlal.s32	q8, d24, d28
89462306a36Sopenharmony_ci	vmlal.s32	q7, d22, d29
89562306a36Sopenharmony_ci	vmlal.s32	q7, d23, d28
89662306a36Sopenharmony_ci	vst1.8		{d8-d9}, [r2, : 128]
89762306a36Sopenharmony_ci	add		r2, sp, #528
89862306a36Sopenharmony_ci	vld1.8		{d8-d9}, [r2, : 128]
89962306a36Sopenharmony_ci	vmlal.s32	q7, d24, d9
90062306a36Sopenharmony_ci	vmlal.s32	q7, d25, d31
90162306a36Sopenharmony_ci	vmull.s32	q1, d18, d2
90262306a36Sopenharmony_ci	vmlal.s32	q1, d19, d1
90362306a36Sopenharmony_ci	vmlal.s32	q1, d22, d0
90462306a36Sopenharmony_ci	vmlal.s32	q1, d24, d27
90562306a36Sopenharmony_ci	vmlal.s32	q1, d23, d20
90662306a36Sopenharmony_ci	vmlal.s32	q1, d12, d7
90762306a36Sopenharmony_ci	vmlal.s32	q1, d13, d6
90862306a36Sopenharmony_ci	vmull.s32	q6, d18, d1
90962306a36Sopenharmony_ci	vmlal.s32	q6, d19, d0
91062306a36Sopenharmony_ci	vmlal.s32	q6, d23, d27
91162306a36Sopenharmony_ci	vmlal.s32	q6, d22, d20
91262306a36Sopenharmony_ci	vmlal.s32	q6, d24, d26
91362306a36Sopenharmony_ci	vmull.s32	q0, d18, d0
91462306a36Sopenharmony_ci	vmlal.s32	q0, d22, d27
91562306a36Sopenharmony_ci	vmlal.s32	q0, d23, d26
91662306a36Sopenharmony_ci	vmlal.s32	q0, d24, d31
91762306a36Sopenharmony_ci	vmlal.s32	q0, d19, d20
91862306a36Sopenharmony_ci	add		r2, sp, #608
91962306a36Sopenharmony_ci	vld1.8		{d18-d19}, [r2, : 128]
92062306a36Sopenharmony_ci	vmlal.s32	q2, d18, d7
92162306a36Sopenharmony_ci	vmlal.s32	q5, d18, d6
92262306a36Sopenharmony_ci	vmlal.s32	q1, d18, d21
92362306a36Sopenharmony_ci	vmlal.s32	q0, d18, d28
92462306a36Sopenharmony_ci	vmlal.s32	q6, d18, d29
92562306a36Sopenharmony_ci	vmlal.s32	q2, d19, d6
92662306a36Sopenharmony_ci	vmlal.s32	q5, d19, d21
92762306a36Sopenharmony_ci	vmlal.s32	q1, d19, d29
92862306a36Sopenharmony_ci	vmlal.s32	q0, d19, d9
92962306a36Sopenharmony_ci	vmlal.s32	q6, d19, d28
93062306a36Sopenharmony_ci	add		r2, sp, #560
93162306a36Sopenharmony_ci	vld1.8		{d18-d19}, [r2, : 128]
93262306a36Sopenharmony_ci	add		r2, sp, #480
93362306a36Sopenharmony_ci	vld1.8		{d22-d23}, [r2, : 128]
93462306a36Sopenharmony_ci	vmlal.s32	q5, d19, d7
93562306a36Sopenharmony_ci	vmlal.s32	q0, d18, d21
93662306a36Sopenharmony_ci	vmlal.s32	q0, d19, d29
93762306a36Sopenharmony_ci	vmlal.s32	q6, d18, d6
93862306a36Sopenharmony_ci	add		r2, sp, #496
93962306a36Sopenharmony_ci	vld1.8		{d6-d7}, [r2, : 128]
94062306a36Sopenharmony_ci	vmlal.s32	q6, d19, d21
94162306a36Sopenharmony_ci	add		r2, sp, #544
94262306a36Sopenharmony_ci	vld1.8		{d18-d19}, [r2, : 128]
94362306a36Sopenharmony_ci	vmlal.s32	q0, d30, d8
94462306a36Sopenharmony_ci	add		r2, sp, #640
94562306a36Sopenharmony_ci	vld1.8		{d20-d21}, [r2, : 128]
94662306a36Sopenharmony_ci	vmlal.s32	q5, d30, d29
94762306a36Sopenharmony_ci	add		r2, sp, #576
94862306a36Sopenharmony_ci	vld1.8		{d24-d25}, [r2, : 128]
94962306a36Sopenharmony_ci	vmlal.s32	q1, d30, d28
95062306a36Sopenharmony_ci	vadd.i64	q13, q0, q11
95162306a36Sopenharmony_ci	vadd.i64	q14, q5, q11
95262306a36Sopenharmony_ci	vmlal.s32	q6, d30, d9
95362306a36Sopenharmony_ci	vshr.s64	q4, q13, #26
95462306a36Sopenharmony_ci	vshr.s64	q13, q14, #26
95562306a36Sopenharmony_ci	vadd.i64	q7, q7, q4
95662306a36Sopenharmony_ci	vshl.i64	q4, q4, #26
95762306a36Sopenharmony_ci	vadd.i64	q14, q7, q3
95862306a36Sopenharmony_ci	vadd.i64	q9, q9, q13
95962306a36Sopenharmony_ci	vshl.i64	q13, q13, #26
96062306a36Sopenharmony_ci	vadd.i64	q15, q9, q3
96162306a36Sopenharmony_ci	vsub.i64	q0, q0, q4
96262306a36Sopenharmony_ci	vshr.s64	q4, q14, #25
96362306a36Sopenharmony_ci	vsub.i64	q5, q5, q13
96462306a36Sopenharmony_ci	vshr.s64	q13, q15, #25
96562306a36Sopenharmony_ci	vadd.i64	q6, q6, q4
96662306a36Sopenharmony_ci	vshl.i64	q4, q4, #25
96762306a36Sopenharmony_ci	vadd.i64	q14, q6, q11
96862306a36Sopenharmony_ci	vadd.i64	q2, q2, q13
96962306a36Sopenharmony_ci	vsub.i64	q4, q7, q4
97062306a36Sopenharmony_ci	vshr.s64	q7, q14, #26
97162306a36Sopenharmony_ci	vshl.i64	q13, q13, #25
97262306a36Sopenharmony_ci	vadd.i64	q14, q2, q11
97362306a36Sopenharmony_ci	vadd.i64	q8, q8, q7
97462306a36Sopenharmony_ci	vshl.i64	q7, q7, #26
97562306a36Sopenharmony_ci	vadd.i64	q15, q8, q3
97662306a36Sopenharmony_ci	vsub.i64	q9, q9, q13
97762306a36Sopenharmony_ci	vshr.s64	q13, q14, #26
97862306a36Sopenharmony_ci	vsub.i64	q6, q6, q7
97962306a36Sopenharmony_ci	vshr.s64	q7, q15, #25
98062306a36Sopenharmony_ci	vadd.i64	q10, q10, q13
98162306a36Sopenharmony_ci	vshl.i64	q13, q13, #26
98262306a36Sopenharmony_ci	vadd.i64	q14, q10, q3
98362306a36Sopenharmony_ci	vadd.i64	q1, q1, q7
98462306a36Sopenharmony_ci	add		r2, r3, #288
98562306a36Sopenharmony_ci	vshl.i64	q7, q7, #25
98662306a36Sopenharmony_ci	add		r4, r3, #96
98762306a36Sopenharmony_ci	vadd.i64	q15, q1, q11
98862306a36Sopenharmony_ci	add		r2, r2, #8
98962306a36Sopenharmony_ci	vsub.i64	q2, q2, q13
99062306a36Sopenharmony_ci	add		r4, r4, #8
99162306a36Sopenharmony_ci	vshr.s64	q13, q14, #25
99262306a36Sopenharmony_ci	vsub.i64	q7, q8, q7
99362306a36Sopenharmony_ci	vshr.s64	q8, q15, #26
99462306a36Sopenharmony_ci	vadd.i64	q14, q13, q13
99562306a36Sopenharmony_ci	vadd.i64	q12, q12, q8
99662306a36Sopenharmony_ci	vtrn.32		d12, d14
99762306a36Sopenharmony_ci	vshl.i64	q8, q8, #26
99862306a36Sopenharmony_ci	vtrn.32		d13, d15
99962306a36Sopenharmony_ci	vadd.i64	q3, q12, q3
100062306a36Sopenharmony_ci	vadd.i64	q0, q0, q14
100162306a36Sopenharmony_ci	vst1.8		d12, [r2, : 64]!
100262306a36Sopenharmony_ci	vshl.i64	q7, q13, #4
100362306a36Sopenharmony_ci	vst1.8		d13, [r4, : 64]!
100462306a36Sopenharmony_ci	vsub.i64	q1, q1, q8
100562306a36Sopenharmony_ci	vshr.s64	q3, q3, #25
100662306a36Sopenharmony_ci	vadd.i64	q0, q0, q7
100762306a36Sopenharmony_ci	vadd.i64	q5, q5, q3
100862306a36Sopenharmony_ci	vshl.i64	q3, q3, #25
100962306a36Sopenharmony_ci	vadd.i64	q6, q5, q11
101062306a36Sopenharmony_ci	vadd.i64	q0, q0, q13
101162306a36Sopenharmony_ci	vshl.i64	q7, q13, #25
101262306a36Sopenharmony_ci	vadd.i64	q8, q0, q11
101362306a36Sopenharmony_ci	vsub.i64	q3, q12, q3
101462306a36Sopenharmony_ci	vshr.s64	q6, q6, #26
101562306a36Sopenharmony_ci	vsub.i64	q7, q10, q7
101662306a36Sopenharmony_ci	vtrn.32		d2, d6
101762306a36Sopenharmony_ci	vshr.s64	q8, q8, #26
101862306a36Sopenharmony_ci	vtrn.32		d3, d7
101962306a36Sopenharmony_ci	vadd.i64	q3, q9, q6
102062306a36Sopenharmony_ci	vst1.8		d2, [r2, : 64]
102162306a36Sopenharmony_ci	vshl.i64	q6, q6, #26
102262306a36Sopenharmony_ci	vst1.8		d3, [r4, : 64]
102362306a36Sopenharmony_ci	vadd.i64	q1, q4, q8
102462306a36Sopenharmony_ci	vtrn.32		d4, d14
102562306a36Sopenharmony_ci	vshl.i64	q4, q8, #26
102662306a36Sopenharmony_ci	vtrn.32		d5, d15
102762306a36Sopenharmony_ci	vsub.i64	q5, q5, q6
102862306a36Sopenharmony_ci	add		r2, r2, #16
102962306a36Sopenharmony_ci	vsub.i64	q0, q0, q4
103062306a36Sopenharmony_ci	vst1.8		d4, [r2, : 64]
103162306a36Sopenharmony_ci	add		r4, r4, #16
103262306a36Sopenharmony_ci	vst1.8		d5, [r4, : 64]
103362306a36Sopenharmony_ci	vtrn.32		d10, d6
103462306a36Sopenharmony_ci	vtrn.32		d11, d7
103562306a36Sopenharmony_ci	sub		r2, r2, #8
103662306a36Sopenharmony_ci	sub		r4, r4, #8
103762306a36Sopenharmony_ci	vtrn.32		d0, d2
103862306a36Sopenharmony_ci	vtrn.32		d1, d3
103962306a36Sopenharmony_ci	vst1.8		d10, [r2, : 64]
104062306a36Sopenharmony_ci	vst1.8		d11, [r4, : 64]
104162306a36Sopenharmony_ci	sub		r2, r2, #24
104262306a36Sopenharmony_ci	sub		r4, r4, #24
104362306a36Sopenharmony_ci	vst1.8		d0, [r2, : 64]
104462306a36Sopenharmony_ci	vst1.8		d1, [r4, : 64]
104562306a36Sopenharmony_ci	add		r2, sp, #512
104662306a36Sopenharmony_ci	add		r4, r3, #144
104762306a36Sopenharmony_ci	add		r5, r3, #192
104862306a36Sopenharmony_ci	vld1.8		{d0-d1}, [r2, : 128]
104962306a36Sopenharmony_ci	vld1.8		{d2-d3}, [r4, : 128]!
105062306a36Sopenharmony_ci	vld1.8		{d4-d5}, [r5, : 128]!
105162306a36Sopenharmony_ci	vzip.i32	q1, q2
105262306a36Sopenharmony_ci	vld1.8		{d6-d7}, [r4, : 128]!
105362306a36Sopenharmony_ci	vld1.8		{d8-d9}, [r5, : 128]!
105462306a36Sopenharmony_ci	vshl.i32	q5, q1, #1
105562306a36Sopenharmony_ci	vzip.i32	q3, q4
105662306a36Sopenharmony_ci	vshl.i32	q6, q2, #1
105762306a36Sopenharmony_ci	vld1.8		{d14}, [r4, : 64]
105862306a36Sopenharmony_ci	vshl.i32	q8, q3, #1
105962306a36Sopenharmony_ci	vld1.8		{d15}, [r5, : 64]
106062306a36Sopenharmony_ci	vshl.i32	q9, q4, #1
106162306a36Sopenharmony_ci	vmul.i32	d21, d7, d1
106262306a36Sopenharmony_ci	vtrn.32		d14, d15
106362306a36Sopenharmony_ci	vmul.i32	q11, q4, q0
106462306a36Sopenharmony_ci	vmul.i32	q0, q7, q0
106562306a36Sopenharmony_ci	vmull.s32	q12, d2, d2
106662306a36Sopenharmony_ci	vmlal.s32	q12, d11, d1
106762306a36Sopenharmony_ci	vmlal.s32	q12, d12, d0
106862306a36Sopenharmony_ci	vmlal.s32	q12, d13, d23
106962306a36Sopenharmony_ci	vmlal.s32	q12, d16, d22
107062306a36Sopenharmony_ci	vmlal.s32	q12, d7, d21
107162306a36Sopenharmony_ci	vmull.s32	q10, d2, d11
107262306a36Sopenharmony_ci	vmlal.s32	q10, d4, d1
107362306a36Sopenharmony_ci	vmlal.s32	q10, d13, d0
107462306a36Sopenharmony_ci	vmlal.s32	q10, d6, d23
107562306a36Sopenharmony_ci	vmlal.s32	q10, d17, d22
107662306a36Sopenharmony_ci	vmull.s32	q13, d10, d4
107762306a36Sopenharmony_ci	vmlal.s32	q13, d11, d3
107862306a36Sopenharmony_ci	vmlal.s32	q13, d13, d1
107962306a36Sopenharmony_ci	vmlal.s32	q13, d16, d0
108062306a36Sopenharmony_ci	vmlal.s32	q13, d17, d23
108162306a36Sopenharmony_ci	vmlal.s32	q13, d8, d22
108262306a36Sopenharmony_ci	vmull.s32	q1, d10, d5
108362306a36Sopenharmony_ci	vmlal.s32	q1, d11, d4
108462306a36Sopenharmony_ci	vmlal.s32	q1, d6, d1
108562306a36Sopenharmony_ci	vmlal.s32	q1, d17, d0
108662306a36Sopenharmony_ci	vmlal.s32	q1, d8, d23
108762306a36Sopenharmony_ci	vmull.s32	q14, d10, d6
108862306a36Sopenharmony_ci	vmlal.s32	q14, d11, d13
108962306a36Sopenharmony_ci	vmlal.s32	q14, d4, d4
109062306a36Sopenharmony_ci	vmlal.s32	q14, d17, d1
109162306a36Sopenharmony_ci	vmlal.s32	q14, d18, d0
109262306a36Sopenharmony_ci	vmlal.s32	q14, d9, d23
109362306a36Sopenharmony_ci	vmull.s32	q11, d10, d7
109462306a36Sopenharmony_ci	vmlal.s32	q11, d11, d6
109562306a36Sopenharmony_ci	vmlal.s32	q11, d12, d5
109662306a36Sopenharmony_ci	vmlal.s32	q11, d8, d1
109762306a36Sopenharmony_ci	vmlal.s32	q11, d19, d0
109862306a36Sopenharmony_ci	vmull.s32	q15, d10, d8
109962306a36Sopenharmony_ci	vmlal.s32	q15, d11, d17
110062306a36Sopenharmony_ci	vmlal.s32	q15, d12, d6
110162306a36Sopenharmony_ci	vmlal.s32	q15, d13, d5
110262306a36Sopenharmony_ci	vmlal.s32	q15, d19, d1
110362306a36Sopenharmony_ci	vmlal.s32	q15, d14, d0
110462306a36Sopenharmony_ci	vmull.s32	q2, d10, d9
110562306a36Sopenharmony_ci	vmlal.s32	q2, d11, d8
110662306a36Sopenharmony_ci	vmlal.s32	q2, d12, d7
110762306a36Sopenharmony_ci	vmlal.s32	q2, d13, d6
110862306a36Sopenharmony_ci	vmlal.s32	q2, d14, d1
110962306a36Sopenharmony_ci	vmull.s32	q0, d15, d1
111062306a36Sopenharmony_ci	vmlal.s32	q0, d10, d14
111162306a36Sopenharmony_ci	vmlal.s32	q0, d11, d19
111262306a36Sopenharmony_ci	vmlal.s32	q0, d12, d8
111362306a36Sopenharmony_ci	vmlal.s32	q0, d13, d17
111462306a36Sopenharmony_ci	vmlal.s32	q0, d6, d6
111562306a36Sopenharmony_ci	add		r2, sp, #480
111662306a36Sopenharmony_ci	vld1.8		{d18-d19}, [r2, : 128]!
111762306a36Sopenharmony_ci	vmull.s32	q3, d16, d7
111862306a36Sopenharmony_ci	vmlal.s32	q3, d10, d15
111962306a36Sopenharmony_ci	vmlal.s32	q3, d11, d14
112062306a36Sopenharmony_ci	vmlal.s32	q3, d12, d9
112162306a36Sopenharmony_ci	vmlal.s32	q3, d13, d8
112262306a36Sopenharmony_ci	vld1.8		{d8-d9}, [r2, : 128]
112362306a36Sopenharmony_ci	vadd.i64	q5, q12, q9
112462306a36Sopenharmony_ci	vadd.i64	q6, q15, q9
112562306a36Sopenharmony_ci	vshr.s64	q5, q5, #26
112662306a36Sopenharmony_ci	vshr.s64	q6, q6, #26
112762306a36Sopenharmony_ci	vadd.i64	q7, q10, q5
112862306a36Sopenharmony_ci	vshl.i64	q5, q5, #26
112962306a36Sopenharmony_ci	vadd.i64	q8, q7, q4
113062306a36Sopenharmony_ci	vadd.i64	q2, q2, q6
113162306a36Sopenharmony_ci	vshl.i64	q6, q6, #26
113262306a36Sopenharmony_ci	vadd.i64	q10, q2, q4
113362306a36Sopenharmony_ci	vsub.i64	q5, q12, q5
113462306a36Sopenharmony_ci	vshr.s64	q8, q8, #25
113562306a36Sopenharmony_ci	vsub.i64	q6, q15, q6
113662306a36Sopenharmony_ci	vshr.s64	q10, q10, #25
113762306a36Sopenharmony_ci	vadd.i64	q12, q13, q8
113862306a36Sopenharmony_ci	vshl.i64	q8, q8, #25
113962306a36Sopenharmony_ci	vadd.i64	q13, q12, q9
114062306a36Sopenharmony_ci	vadd.i64	q0, q0, q10
114162306a36Sopenharmony_ci	vsub.i64	q7, q7, q8
114262306a36Sopenharmony_ci	vshr.s64	q8, q13, #26
114362306a36Sopenharmony_ci	vshl.i64	q10, q10, #25
114462306a36Sopenharmony_ci	vadd.i64	q13, q0, q9
114562306a36Sopenharmony_ci	vadd.i64	q1, q1, q8
114662306a36Sopenharmony_ci	vshl.i64	q8, q8, #26
114762306a36Sopenharmony_ci	vadd.i64	q15, q1, q4
114862306a36Sopenharmony_ci	vsub.i64	q2, q2, q10
114962306a36Sopenharmony_ci	vshr.s64	q10, q13, #26
115062306a36Sopenharmony_ci	vsub.i64	q8, q12, q8
115162306a36Sopenharmony_ci	vshr.s64	q12, q15, #25
115262306a36Sopenharmony_ci	vadd.i64	q3, q3, q10
115362306a36Sopenharmony_ci	vshl.i64	q10, q10, #26
115462306a36Sopenharmony_ci	vadd.i64	q13, q3, q4
115562306a36Sopenharmony_ci	vadd.i64	q14, q14, q12
115662306a36Sopenharmony_ci	add		r2, r3, #144
115762306a36Sopenharmony_ci	vshl.i64	q12, q12, #25
115862306a36Sopenharmony_ci	add		r4, r3, #192
115962306a36Sopenharmony_ci	vadd.i64	q15, q14, q9
116062306a36Sopenharmony_ci	add		r2, r2, #8
116162306a36Sopenharmony_ci	vsub.i64	q0, q0, q10
116262306a36Sopenharmony_ci	add		r4, r4, #8
116362306a36Sopenharmony_ci	vshr.s64	q10, q13, #25
116462306a36Sopenharmony_ci	vsub.i64	q1, q1, q12
116562306a36Sopenharmony_ci	vshr.s64	q12, q15, #26
116662306a36Sopenharmony_ci	vadd.i64	q13, q10, q10
116762306a36Sopenharmony_ci	vadd.i64	q11, q11, q12
116862306a36Sopenharmony_ci	vtrn.32		d16, d2
116962306a36Sopenharmony_ci	vshl.i64	q12, q12, #26
117062306a36Sopenharmony_ci	vtrn.32		d17, d3
117162306a36Sopenharmony_ci	vadd.i64	q1, q11, q4
117262306a36Sopenharmony_ci	vadd.i64	q4, q5, q13
117362306a36Sopenharmony_ci	vst1.8		d16, [r2, : 64]!
117462306a36Sopenharmony_ci	vshl.i64	q5, q10, #4
117562306a36Sopenharmony_ci	vst1.8		d17, [r4, : 64]!
117662306a36Sopenharmony_ci	vsub.i64	q8, q14, q12
117762306a36Sopenharmony_ci	vshr.s64	q1, q1, #25
117862306a36Sopenharmony_ci	vadd.i64	q4, q4, q5
117962306a36Sopenharmony_ci	vadd.i64	q5, q6, q1
118062306a36Sopenharmony_ci	vshl.i64	q1, q1, #25
118162306a36Sopenharmony_ci	vadd.i64	q6, q5, q9
118262306a36Sopenharmony_ci	vadd.i64	q4, q4, q10
118362306a36Sopenharmony_ci	vshl.i64	q10, q10, #25
118462306a36Sopenharmony_ci	vadd.i64	q9, q4, q9
118562306a36Sopenharmony_ci	vsub.i64	q1, q11, q1
118662306a36Sopenharmony_ci	vshr.s64	q6, q6, #26
118762306a36Sopenharmony_ci	vsub.i64	q3, q3, q10
118862306a36Sopenharmony_ci	vtrn.32		d16, d2
118962306a36Sopenharmony_ci	vshr.s64	q9, q9, #26
119062306a36Sopenharmony_ci	vtrn.32		d17, d3
119162306a36Sopenharmony_ci	vadd.i64	q1, q2, q6
119262306a36Sopenharmony_ci	vst1.8		d16, [r2, : 64]
119362306a36Sopenharmony_ci	vshl.i64	q2, q6, #26
119462306a36Sopenharmony_ci	vst1.8		d17, [r4, : 64]
119562306a36Sopenharmony_ci	vadd.i64	q6, q7, q9
119662306a36Sopenharmony_ci	vtrn.32		d0, d6
119762306a36Sopenharmony_ci	vshl.i64	q7, q9, #26
119862306a36Sopenharmony_ci	vtrn.32		d1, d7
119962306a36Sopenharmony_ci	vsub.i64	q2, q5, q2
120062306a36Sopenharmony_ci	add		r2, r2, #16
120162306a36Sopenharmony_ci	vsub.i64	q3, q4, q7
120262306a36Sopenharmony_ci	vst1.8		d0, [r2, : 64]
120362306a36Sopenharmony_ci	add		r4, r4, #16
120462306a36Sopenharmony_ci	vst1.8		d1, [r4, : 64]
120562306a36Sopenharmony_ci	vtrn.32		d4, d2
120662306a36Sopenharmony_ci	vtrn.32		d5, d3
120762306a36Sopenharmony_ci	sub		r2, r2, #8
120862306a36Sopenharmony_ci	sub		r4, r4, #8
120962306a36Sopenharmony_ci	vtrn.32		d6, d12
121062306a36Sopenharmony_ci	vtrn.32		d7, d13
121162306a36Sopenharmony_ci	vst1.8		d4, [r2, : 64]
121262306a36Sopenharmony_ci	vst1.8		d5, [r4, : 64]
121362306a36Sopenharmony_ci	sub		r2, r2, #24
121462306a36Sopenharmony_ci	sub		r4, r4, #24
121562306a36Sopenharmony_ci	vst1.8		d6, [r2, : 64]
121662306a36Sopenharmony_ci	vst1.8		d7, [r4, : 64]
121762306a36Sopenharmony_ci	add		r2, r3, #336
121862306a36Sopenharmony_ci	add		r4, r3, #288
121962306a36Sopenharmony_ci	vld1.8		{d0-d1}, [r2, : 128]!
122062306a36Sopenharmony_ci	vld1.8		{d2-d3}, [r4, : 128]!
122162306a36Sopenharmony_ci	vadd.i32	q0, q0, q1
122262306a36Sopenharmony_ci	vld1.8		{d2-d3}, [r2, : 128]!
122362306a36Sopenharmony_ci	vld1.8		{d4-d5}, [r4, : 128]!
122462306a36Sopenharmony_ci	vadd.i32	q1, q1, q2
122562306a36Sopenharmony_ci	add		r5, r3, #288
122662306a36Sopenharmony_ci	vld1.8		{d4}, [r2, : 64]
122762306a36Sopenharmony_ci	vld1.8		{d6}, [r4, : 64]
122862306a36Sopenharmony_ci	vadd.i32	q2, q2, q3
122962306a36Sopenharmony_ci	vst1.8		{d0-d1}, [r5, : 128]!
123062306a36Sopenharmony_ci	vst1.8		{d2-d3}, [r5, : 128]!
123162306a36Sopenharmony_ci	vst1.8		d4, [r5, : 64]
123262306a36Sopenharmony_ci	add		r2, r3, #48
123362306a36Sopenharmony_ci	add		r4, r3, #144
123462306a36Sopenharmony_ci	vld1.8		{d0-d1}, [r4, : 128]!
123562306a36Sopenharmony_ci	vld1.8		{d2-d3}, [r4, : 128]!
123662306a36Sopenharmony_ci	vld1.8		{d4}, [r4, : 64]
123762306a36Sopenharmony_ci	add		r4, r3, #288
123862306a36Sopenharmony_ci	vld1.8		{d6-d7}, [r4, : 128]!
123962306a36Sopenharmony_ci	vtrn.32		q0, q3
124062306a36Sopenharmony_ci	vld1.8		{d8-d9}, [r4, : 128]!
124162306a36Sopenharmony_ci	vshl.i32	q5, q0, #4
124262306a36Sopenharmony_ci	vtrn.32		q1, q4
124362306a36Sopenharmony_ci	vshl.i32	q6, q3, #4
124462306a36Sopenharmony_ci	vadd.i32	q5, q5, q0
124562306a36Sopenharmony_ci	vadd.i32	q6, q6, q3
124662306a36Sopenharmony_ci	vshl.i32	q7, q1, #4
124762306a36Sopenharmony_ci	vld1.8		{d5}, [r4, : 64]
124862306a36Sopenharmony_ci	vshl.i32	q8, q4, #4
124962306a36Sopenharmony_ci	vtrn.32		d4, d5
125062306a36Sopenharmony_ci	vadd.i32	q7, q7, q1
125162306a36Sopenharmony_ci	vadd.i32	q8, q8, q4
125262306a36Sopenharmony_ci	vld1.8		{d18-d19}, [r2, : 128]!
125362306a36Sopenharmony_ci	vshl.i32	q10, q2, #4
125462306a36Sopenharmony_ci	vld1.8		{d22-d23}, [r2, : 128]!
125562306a36Sopenharmony_ci	vadd.i32	q10, q10, q2
125662306a36Sopenharmony_ci	vld1.8		{d24}, [r2, : 64]
125762306a36Sopenharmony_ci	vadd.i32	q5, q5, q0
125862306a36Sopenharmony_ci	add		r2, r3, #240
125962306a36Sopenharmony_ci	vld1.8		{d26-d27}, [r2, : 128]!
126062306a36Sopenharmony_ci	vadd.i32	q6, q6, q3
126162306a36Sopenharmony_ci	vld1.8		{d28-d29}, [r2, : 128]!
126262306a36Sopenharmony_ci	vadd.i32	q8, q8, q4
126362306a36Sopenharmony_ci	vld1.8		{d25}, [r2, : 64]
126462306a36Sopenharmony_ci	vadd.i32	q10, q10, q2
126562306a36Sopenharmony_ci	vtrn.32		q9, q13
126662306a36Sopenharmony_ci	vadd.i32	q7, q7, q1
126762306a36Sopenharmony_ci	vadd.i32	q5, q5, q0
126862306a36Sopenharmony_ci	vtrn.32		q11, q14
126962306a36Sopenharmony_ci	vadd.i32	q6, q6, q3
127062306a36Sopenharmony_ci	add		r2, sp, #528
127162306a36Sopenharmony_ci	vadd.i32	q10, q10, q2
127262306a36Sopenharmony_ci	vtrn.32		d24, d25
127362306a36Sopenharmony_ci	vst1.8		{d12-d13}, [r2, : 128]!
127462306a36Sopenharmony_ci	vshl.i32	q6, q13, #1
127562306a36Sopenharmony_ci	vst1.8		{d20-d21}, [r2, : 128]!
127662306a36Sopenharmony_ci	vshl.i32	q10, q14, #1
127762306a36Sopenharmony_ci	vst1.8		{d12-d13}, [r2, : 128]!
127862306a36Sopenharmony_ci	vshl.i32	q15, q12, #1
127962306a36Sopenharmony_ci	vadd.i32	q8, q8, q4
128062306a36Sopenharmony_ci	vext.32		d10, d31, d30, #0
128162306a36Sopenharmony_ci	vadd.i32	q7, q7, q1
128262306a36Sopenharmony_ci	vst1.8		{d16-d17}, [r2, : 128]!
128362306a36Sopenharmony_ci	vmull.s32	q8, d18, d5
128462306a36Sopenharmony_ci	vmlal.s32	q8, d26, d4
128562306a36Sopenharmony_ci	vmlal.s32	q8, d19, d9
128662306a36Sopenharmony_ci	vmlal.s32	q8, d27, d3
128762306a36Sopenharmony_ci	vmlal.s32	q8, d22, d8
128862306a36Sopenharmony_ci	vmlal.s32	q8, d28, d2
128962306a36Sopenharmony_ci	vmlal.s32	q8, d23, d7
129062306a36Sopenharmony_ci	vmlal.s32	q8, d29, d1
129162306a36Sopenharmony_ci	vmlal.s32	q8, d24, d6
129262306a36Sopenharmony_ci	vmlal.s32	q8, d25, d0
129362306a36Sopenharmony_ci	vst1.8		{d14-d15}, [r2, : 128]!
129462306a36Sopenharmony_ci	vmull.s32	q2, d18, d4
129562306a36Sopenharmony_ci	vmlal.s32	q2, d12, d9
129662306a36Sopenharmony_ci	vmlal.s32	q2, d13, d8
129762306a36Sopenharmony_ci	vmlal.s32	q2, d19, d3
129862306a36Sopenharmony_ci	vmlal.s32	q2, d22, d2
129962306a36Sopenharmony_ci	vmlal.s32	q2, d23, d1
130062306a36Sopenharmony_ci	vmlal.s32	q2, d24, d0
130162306a36Sopenharmony_ci	vst1.8		{d20-d21}, [r2, : 128]!
130262306a36Sopenharmony_ci	vmull.s32	q7, d18, d9
130362306a36Sopenharmony_ci	vmlal.s32	q7, d26, d3
130462306a36Sopenharmony_ci	vmlal.s32	q7, d19, d8
130562306a36Sopenharmony_ci	vmlal.s32	q7, d27, d2
130662306a36Sopenharmony_ci	vmlal.s32	q7, d22, d7
130762306a36Sopenharmony_ci	vmlal.s32	q7, d28, d1
130862306a36Sopenharmony_ci	vmlal.s32	q7, d23, d6
130962306a36Sopenharmony_ci	vmlal.s32	q7, d29, d0
131062306a36Sopenharmony_ci	vst1.8		{d10-d11}, [r2, : 128]!
131162306a36Sopenharmony_ci	vmull.s32	q5, d18, d3
131262306a36Sopenharmony_ci	vmlal.s32	q5, d19, d2
131362306a36Sopenharmony_ci	vmlal.s32	q5, d22, d1
131462306a36Sopenharmony_ci	vmlal.s32	q5, d23, d0
131562306a36Sopenharmony_ci	vmlal.s32	q5, d12, d8
131662306a36Sopenharmony_ci	vst1.8		{d16-d17}, [r2, : 128]!
131762306a36Sopenharmony_ci	vmull.s32	q4, d18, d8
131862306a36Sopenharmony_ci	vmlal.s32	q4, d26, d2
131962306a36Sopenharmony_ci	vmlal.s32	q4, d19, d7
132062306a36Sopenharmony_ci	vmlal.s32	q4, d27, d1
132162306a36Sopenharmony_ci	vmlal.s32	q4, d22, d6
132262306a36Sopenharmony_ci	vmlal.s32	q4, d28, d0
132362306a36Sopenharmony_ci	vmull.s32	q8, d18, d7
132462306a36Sopenharmony_ci	vmlal.s32	q8, d26, d1
132562306a36Sopenharmony_ci	vmlal.s32	q8, d19, d6
132662306a36Sopenharmony_ci	vmlal.s32	q8, d27, d0
132762306a36Sopenharmony_ci	add		r2, sp, #544
132862306a36Sopenharmony_ci	vld1.8		{d20-d21}, [r2, : 128]
132962306a36Sopenharmony_ci	vmlal.s32	q7, d24, d21
133062306a36Sopenharmony_ci	vmlal.s32	q7, d25, d20
133162306a36Sopenharmony_ci	vmlal.s32	q4, d23, d21
133262306a36Sopenharmony_ci	vmlal.s32	q4, d29, d20
133362306a36Sopenharmony_ci	vmlal.s32	q8, d22, d21
133462306a36Sopenharmony_ci	vmlal.s32	q8, d28, d20
133562306a36Sopenharmony_ci	vmlal.s32	q5, d24, d20
133662306a36Sopenharmony_ci	vst1.8		{d14-d15}, [r2, : 128]
133762306a36Sopenharmony_ci	vmull.s32	q7, d18, d6
133862306a36Sopenharmony_ci	vmlal.s32	q7, d26, d0
133962306a36Sopenharmony_ci	add		r2, sp, #624
134062306a36Sopenharmony_ci	vld1.8		{d30-d31}, [r2, : 128]
134162306a36Sopenharmony_ci	vmlal.s32	q2, d30, d21
134262306a36Sopenharmony_ci	vmlal.s32	q7, d19, d21
134362306a36Sopenharmony_ci	vmlal.s32	q7, d27, d20
134462306a36Sopenharmony_ci	add		r2, sp, #592
134562306a36Sopenharmony_ci	vld1.8		{d26-d27}, [r2, : 128]
134662306a36Sopenharmony_ci	vmlal.s32	q4, d25, d27
134762306a36Sopenharmony_ci	vmlal.s32	q8, d29, d27
134862306a36Sopenharmony_ci	vmlal.s32	q8, d25, d26
134962306a36Sopenharmony_ci	vmlal.s32	q7, d28, d27
135062306a36Sopenharmony_ci	vmlal.s32	q7, d29, d26
135162306a36Sopenharmony_ci	add		r2, sp, #576
135262306a36Sopenharmony_ci	vld1.8		{d28-d29}, [r2, : 128]
135362306a36Sopenharmony_ci	vmlal.s32	q4, d24, d29
135462306a36Sopenharmony_ci	vmlal.s32	q8, d23, d29
135562306a36Sopenharmony_ci	vmlal.s32	q8, d24, d28
135662306a36Sopenharmony_ci	vmlal.s32	q7, d22, d29
135762306a36Sopenharmony_ci	vmlal.s32	q7, d23, d28
135862306a36Sopenharmony_ci	vst1.8		{d8-d9}, [r2, : 128]
135962306a36Sopenharmony_ci	add		r2, sp, #528
136062306a36Sopenharmony_ci	vld1.8		{d8-d9}, [r2, : 128]
136162306a36Sopenharmony_ci	vmlal.s32	q7, d24, d9
136262306a36Sopenharmony_ci	vmlal.s32	q7, d25, d31
136362306a36Sopenharmony_ci	vmull.s32	q1, d18, d2
136462306a36Sopenharmony_ci	vmlal.s32	q1, d19, d1
136562306a36Sopenharmony_ci	vmlal.s32	q1, d22, d0
136662306a36Sopenharmony_ci	vmlal.s32	q1, d24, d27
136762306a36Sopenharmony_ci	vmlal.s32	q1, d23, d20
136862306a36Sopenharmony_ci	vmlal.s32	q1, d12, d7
136962306a36Sopenharmony_ci	vmlal.s32	q1, d13, d6
137062306a36Sopenharmony_ci	vmull.s32	q6, d18, d1
137162306a36Sopenharmony_ci	vmlal.s32	q6, d19, d0
137262306a36Sopenharmony_ci	vmlal.s32	q6, d23, d27
137362306a36Sopenharmony_ci	vmlal.s32	q6, d22, d20
137462306a36Sopenharmony_ci	vmlal.s32	q6, d24, d26
137562306a36Sopenharmony_ci	vmull.s32	q0, d18, d0
137662306a36Sopenharmony_ci	vmlal.s32	q0, d22, d27
137762306a36Sopenharmony_ci	vmlal.s32	q0, d23, d26
137862306a36Sopenharmony_ci	vmlal.s32	q0, d24, d31
137962306a36Sopenharmony_ci	vmlal.s32	q0, d19, d20
138062306a36Sopenharmony_ci	add		r2, sp, #608
138162306a36Sopenharmony_ci	vld1.8		{d18-d19}, [r2, : 128]
138262306a36Sopenharmony_ci	vmlal.s32	q2, d18, d7
138362306a36Sopenharmony_ci	vmlal.s32	q5, d18, d6
138462306a36Sopenharmony_ci	vmlal.s32	q1, d18, d21
138562306a36Sopenharmony_ci	vmlal.s32	q0, d18, d28
138662306a36Sopenharmony_ci	vmlal.s32	q6, d18, d29
138762306a36Sopenharmony_ci	vmlal.s32	q2, d19, d6
138862306a36Sopenharmony_ci	vmlal.s32	q5, d19, d21
138962306a36Sopenharmony_ci	vmlal.s32	q1, d19, d29
139062306a36Sopenharmony_ci	vmlal.s32	q0, d19, d9
139162306a36Sopenharmony_ci	vmlal.s32	q6, d19, d28
139262306a36Sopenharmony_ci	add		r2, sp, #560
139362306a36Sopenharmony_ci	vld1.8		{d18-d19}, [r2, : 128]
139462306a36Sopenharmony_ci	add		r2, sp, #480
139562306a36Sopenharmony_ci	vld1.8		{d22-d23}, [r2, : 128]
139662306a36Sopenharmony_ci	vmlal.s32	q5, d19, d7
139762306a36Sopenharmony_ci	vmlal.s32	q0, d18, d21
139862306a36Sopenharmony_ci	vmlal.s32	q0, d19, d29
139962306a36Sopenharmony_ci	vmlal.s32	q6, d18, d6
140062306a36Sopenharmony_ci	add		r2, sp, #496
140162306a36Sopenharmony_ci	vld1.8		{d6-d7}, [r2, : 128]
140262306a36Sopenharmony_ci	vmlal.s32	q6, d19, d21
140362306a36Sopenharmony_ci	add		r2, sp, #544
140462306a36Sopenharmony_ci	vld1.8		{d18-d19}, [r2, : 128]
140562306a36Sopenharmony_ci	vmlal.s32	q0, d30, d8
140662306a36Sopenharmony_ci	add		r2, sp, #640
140762306a36Sopenharmony_ci	vld1.8		{d20-d21}, [r2, : 128]
140862306a36Sopenharmony_ci	vmlal.s32	q5, d30, d29
140962306a36Sopenharmony_ci	add		r2, sp, #576
141062306a36Sopenharmony_ci	vld1.8		{d24-d25}, [r2, : 128]
141162306a36Sopenharmony_ci	vmlal.s32	q1, d30, d28
141262306a36Sopenharmony_ci	vadd.i64	q13, q0, q11
141362306a36Sopenharmony_ci	vadd.i64	q14, q5, q11
141462306a36Sopenharmony_ci	vmlal.s32	q6, d30, d9
141562306a36Sopenharmony_ci	vshr.s64	q4, q13, #26
141662306a36Sopenharmony_ci	vshr.s64	q13, q14, #26
141762306a36Sopenharmony_ci	vadd.i64	q7, q7, q4
141862306a36Sopenharmony_ci	vshl.i64	q4, q4, #26
141962306a36Sopenharmony_ci	vadd.i64	q14, q7, q3
142062306a36Sopenharmony_ci	vadd.i64	q9, q9, q13
142162306a36Sopenharmony_ci	vshl.i64	q13, q13, #26
142262306a36Sopenharmony_ci	vadd.i64	q15, q9, q3
142362306a36Sopenharmony_ci	vsub.i64	q0, q0, q4
142462306a36Sopenharmony_ci	vshr.s64	q4, q14, #25
142562306a36Sopenharmony_ci	vsub.i64	q5, q5, q13
142662306a36Sopenharmony_ci	vshr.s64	q13, q15, #25
142762306a36Sopenharmony_ci	vadd.i64	q6, q6, q4
142862306a36Sopenharmony_ci	vshl.i64	q4, q4, #25
142962306a36Sopenharmony_ci	vadd.i64	q14, q6, q11
143062306a36Sopenharmony_ci	vadd.i64	q2, q2, q13
143162306a36Sopenharmony_ci	vsub.i64	q4, q7, q4
143262306a36Sopenharmony_ci	vshr.s64	q7, q14, #26
143362306a36Sopenharmony_ci	vshl.i64	q13, q13, #25
143462306a36Sopenharmony_ci	vadd.i64	q14, q2, q11
143562306a36Sopenharmony_ci	vadd.i64	q8, q8, q7
143662306a36Sopenharmony_ci	vshl.i64	q7, q7, #26
143762306a36Sopenharmony_ci	vadd.i64	q15, q8, q3
143862306a36Sopenharmony_ci	vsub.i64	q9, q9, q13
143962306a36Sopenharmony_ci	vshr.s64	q13, q14, #26
144062306a36Sopenharmony_ci	vsub.i64	q6, q6, q7
144162306a36Sopenharmony_ci	vshr.s64	q7, q15, #25
144262306a36Sopenharmony_ci	vadd.i64	q10, q10, q13
144362306a36Sopenharmony_ci	vshl.i64	q13, q13, #26
144462306a36Sopenharmony_ci	vadd.i64	q14, q10, q3
144562306a36Sopenharmony_ci	vadd.i64	q1, q1, q7
144662306a36Sopenharmony_ci	add		r2, r3, #240
144762306a36Sopenharmony_ci	vshl.i64	q7, q7, #25
144862306a36Sopenharmony_ci	add		r4, r3, #144
144962306a36Sopenharmony_ci	vadd.i64	q15, q1, q11
145062306a36Sopenharmony_ci	add		r2, r2, #8
145162306a36Sopenharmony_ci	vsub.i64	q2, q2, q13
145262306a36Sopenharmony_ci	add		r4, r4, #8
145362306a36Sopenharmony_ci	vshr.s64	q13, q14, #25
145462306a36Sopenharmony_ci	vsub.i64	q7, q8, q7
145562306a36Sopenharmony_ci	vshr.s64	q8, q15, #26
145662306a36Sopenharmony_ci	vadd.i64	q14, q13, q13
145762306a36Sopenharmony_ci	vadd.i64	q12, q12, q8
145862306a36Sopenharmony_ci	vtrn.32		d12, d14
145962306a36Sopenharmony_ci	vshl.i64	q8, q8, #26
146062306a36Sopenharmony_ci	vtrn.32		d13, d15
146162306a36Sopenharmony_ci	vadd.i64	q3, q12, q3
146262306a36Sopenharmony_ci	vadd.i64	q0, q0, q14
146362306a36Sopenharmony_ci	vst1.8		d12, [r2, : 64]!
146462306a36Sopenharmony_ci	vshl.i64	q7, q13, #4
146562306a36Sopenharmony_ci	vst1.8		d13, [r4, : 64]!
146662306a36Sopenharmony_ci	vsub.i64	q1, q1, q8
146762306a36Sopenharmony_ci	vshr.s64	q3, q3, #25
146862306a36Sopenharmony_ci	vadd.i64	q0, q0, q7
146962306a36Sopenharmony_ci	vadd.i64	q5, q5, q3
147062306a36Sopenharmony_ci	vshl.i64	q3, q3, #25
147162306a36Sopenharmony_ci	vadd.i64	q6, q5, q11
147262306a36Sopenharmony_ci	vadd.i64	q0, q0, q13
147362306a36Sopenharmony_ci	vshl.i64	q7, q13, #25
147462306a36Sopenharmony_ci	vadd.i64	q8, q0, q11
147562306a36Sopenharmony_ci	vsub.i64	q3, q12, q3
147662306a36Sopenharmony_ci	vshr.s64	q6, q6, #26
147762306a36Sopenharmony_ci	vsub.i64	q7, q10, q7
147862306a36Sopenharmony_ci	vtrn.32		d2, d6
147962306a36Sopenharmony_ci	vshr.s64	q8, q8, #26
148062306a36Sopenharmony_ci	vtrn.32		d3, d7
148162306a36Sopenharmony_ci	vadd.i64	q3, q9, q6
148262306a36Sopenharmony_ci	vst1.8		d2, [r2, : 64]
148362306a36Sopenharmony_ci	vshl.i64	q6, q6, #26
148462306a36Sopenharmony_ci	vst1.8		d3, [r4, : 64]
148562306a36Sopenharmony_ci	vadd.i64	q1, q4, q8
148662306a36Sopenharmony_ci	vtrn.32		d4, d14
148762306a36Sopenharmony_ci	vshl.i64	q4, q8, #26
148862306a36Sopenharmony_ci	vtrn.32		d5, d15
148962306a36Sopenharmony_ci	vsub.i64	q5, q5, q6
149062306a36Sopenharmony_ci	add		r2, r2, #16
149162306a36Sopenharmony_ci	vsub.i64	q0, q0, q4
149262306a36Sopenharmony_ci	vst1.8		d4, [r2, : 64]
149362306a36Sopenharmony_ci	add		r4, r4, #16
149462306a36Sopenharmony_ci	vst1.8		d5, [r4, : 64]
149562306a36Sopenharmony_ci	vtrn.32		d10, d6
149662306a36Sopenharmony_ci	vtrn.32		d11, d7
149762306a36Sopenharmony_ci	sub		r2, r2, #8
149862306a36Sopenharmony_ci	sub		r4, r4, #8
149962306a36Sopenharmony_ci	vtrn.32		d0, d2
150062306a36Sopenharmony_ci	vtrn.32		d1, d3
150162306a36Sopenharmony_ci	vst1.8		d10, [r2, : 64]
150262306a36Sopenharmony_ci	vst1.8		d11, [r4, : 64]
150362306a36Sopenharmony_ci	sub		r2, r2, #24
150462306a36Sopenharmony_ci	sub		r4, r4, #24
150562306a36Sopenharmony_ci	vst1.8		d0, [r2, : 64]
150662306a36Sopenharmony_ci	vst1.8		d1, [r4, : 64]
150762306a36Sopenharmony_ci	ldr		r2, [sp, #456]
150862306a36Sopenharmony_ci	ldr		r4, [sp, #460]
150962306a36Sopenharmony_ci	subs		r5, r2, #1
151062306a36Sopenharmony_ci	bge		.Lmainloop
151162306a36Sopenharmony_ci	add		r1, r3, #144
151262306a36Sopenharmony_ci	add		r2, r3, #336
151362306a36Sopenharmony_ci	vld1.8		{d0-d1}, [r1, : 128]!
151462306a36Sopenharmony_ci	vld1.8		{d2-d3}, [r1, : 128]!
151562306a36Sopenharmony_ci	vld1.8		{d4}, [r1, : 64]
151662306a36Sopenharmony_ci	vst1.8		{d0-d1}, [r2, : 128]!
151762306a36Sopenharmony_ci	vst1.8		{d2-d3}, [r2, : 128]!
151862306a36Sopenharmony_ci	vst1.8		d4, [r2, : 64]
151962306a36Sopenharmony_ci	movw		r1, #0
152062306a36Sopenharmony_ci.Linvertloop:
152162306a36Sopenharmony_ci	add		r2, r3, #144
152262306a36Sopenharmony_ci	movw		r4, #0
152362306a36Sopenharmony_ci	movw		r5, #2
152462306a36Sopenharmony_ci	cmp		r1, #1
152562306a36Sopenharmony_ci	moveq		r5, #1
152662306a36Sopenharmony_ci	addeq		r2, r3, #336
152762306a36Sopenharmony_ci	addeq		r4, r3, #48
152862306a36Sopenharmony_ci	cmp		r1, #2
152962306a36Sopenharmony_ci	moveq		r5, #1
153062306a36Sopenharmony_ci	addeq		r2, r3, #48
153162306a36Sopenharmony_ci	cmp		r1, #3
153262306a36Sopenharmony_ci	moveq		r5, #5
153362306a36Sopenharmony_ci	addeq		r4, r3, #336
153462306a36Sopenharmony_ci	cmp		r1, #4
153562306a36Sopenharmony_ci	moveq		r5, #10
153662306a36Sopenharmony_ci	cmp		r1, #5
153762306a36Sopenharmony_ci	moveq		r5, #20
153862306a36Sopenharmony_ci	cmp		r1, #6
153962306a36Sopenharmony_ci	moveq		r5, #10
154062306a36Sopenharmony_ci	addeq		r2, r3, #336
154162306a36Sopenharmony_ci	addeq		r4, r3, #336
154262306a36Sopenharmony_ci	cmp		r1, #7
154362306a36Sopenharmony_ci	moveq		r5, #50
154462306a36Sopenharmony_ci	cmp		r1, #8
154562306a36Sopenharmony_ci	moveq		r5, #100
154662306a36Sopenharmony_ci	cmp		r1, #9
154762306a36Sopenharmony_ci	moveq		r5, #50
154862306a36Sopenharmony_ci	addeq		r2, r3, #336
154962306a36Sopenharmony_ci	cmp		r1, #10
155062306a36Sopenharmony_ci	moveq		r5, #5
155162306a36Sopenharmony_ci	addeq		r2, r3, #48
155262306a36Sopenharmony_ci	cmp		r1, #11
155362306a36Sopenharmony_ci	moveq		r5, #0
155462306a36Sopenharmony_ci	addeq		r2, r3, #96
155562306a36Sopenharmony_ci	add		r6, r3, #144
155662306a36Sopenharmony_ci	add		r7, r3, #288
155762306a36Sopenharmony_ci	vld1.8		{d0-d1}, [r6, : 128]!
155862306a36Sopenharmony_ci	vld1.8		{d2-d3}, [r6, : 128]!
155962306a36Sopenharmony_ci	vld1.8		{d4}, [r6, : 64]
156062306a36Sopenharmony_ci	vst1.8		{d0-d1}, [r7, : 128]!
156162306a36Sopenharmony_ci	vst1.8		{d2-d3}, [r7, : 128]!
156262306a36Sopenharmony_ci	vst1.8		d4, [r7, : 64]
156362306a36Sopenharmony_ci	cmp		r5, #0
156462306a36Sopenharmony_ci	beq		.Lskipsquaringloop
156562306a36Sopenharmony_ci.Lsquaringloop:
156662306a36Sopenharmony_ci	add		r6, r3, #288
156762306a36Sopenharmony_ci	add		r7, r3, #288
156862306a36Sopenharmony_ci	add		r8, r3, #288
156962306a36Sopenharmony_ci	vmov.i32	q0, #19
157062306a36Sopenharmony_ci	vmov.i32	q1, #0
157162306a36Sopenharmony_ci	vmov.i32	q2, #1
157262306a36Sopenharmony_ci	vzip.i32	q1, q2
157362306a36Sopenharmony_ci	vld1.8		{d4-d5}, [r7, : 128]!
157462306a36Sopenharmony_ci	vld1.8		{d6-d7}, [r7, : 128]!
157562306a36Sopenharmony_ci	vld1.8		{d9}, [r7, : 64]
157662306a36Sopenharmony_ci	vld1.8		{d10-d11}, [r6, : 128]!
157762306a36Sopenharmony_ci	add		r7, sp, #384
157862306a36Sopenharmony_ci	vld1.8		{d12-d13}, [r6, : 128]!
157962306a36Sopenharmony_ci	vmul.i32	q7, q2, q0
158062306a36Sopenharmony_ci	vld1.8		{d8}, [r6, : 64]
158162306a36Sopenharmony_ci	vext.32		d17, d11, d10, #1
158262306a36Sopenharmony_ci	vmul.i32	q9, q3, q0
158362306a36Sopenharmony_ci	vext.32		d16, d10, d8, #1
158462306a36Sopenharmony_ci	vshl.u32	q10, q5, q1
158562306a36Sopenharmony_ci	vext.32		d22, d14, d4, #1
158662306a36Sopenharmony_ci	vext.32		d24, d18, d6, #1
158762306a36Sopenharmony_ci	vshl.u32	q13, q6, q1
158862306a36Sopenharmony_ci	vshl.u32	d28, d8, d2
158962306a36Sopenharmony_ci	vrev64.i32	d22, d22
159062306a36Sopenharmony_ci	vmul.i32	d1, d9, d1
159162306a36Sopenharmony_ci	vrev64.i32	d24, d24
159262306a36Sopenharmony_ci	vext.32		d29, d8, d13, #1
159362306a36Sopenharmony_ci	vext.32		d0, d1, d9, #1
159462306a36Sopenharmony_ci	vrev64.i32	d0, d0
159562306a36Sopenharmony_ci	vext.32		d2, d9, d1, #1
159662306a36Sopenharmony_ci	vext.32		d23, d15, d5, #1
159762306a36Sopenharmony_ci	vmull.s32	q4, d20, d4
159862306a36Sopenharmony_ci	vrev64.i32	d23, d23
159962306a36Sopenharmony_ci	vmlal.s32	q4, d21, d1
160062306a36Sopenharmony_ci	vrev64.i32	d2, d2
160162306a36Sopenharmony_ci	vmlal.s32	q4, d26, d19
160262306a36Sopenharmony_ci	vext.32		d3, d5, d15, #1
160362306a36Sopenharmony_ci	vmlal.s32	q4, d27, d18
160462306a36Sopenharmony_ci	vrev64.i32	d3, d3
160562306a36Sopenharmony_ci	vmlal.s32	q4, d28, d15
160662306a36Sopenharmony_ci	vext.32		d14, d12, d11, #1
160762306a36Sopenharmony_ci	vmull.s32	q5, d16, d23
160862306a36Sopenharmony_ci	vext.32		d15, d13, d12, #1
160962306a36Sopenharmony_ci	vmlal.s32	q5, d17, d4
161062306a36Sopenharmony_ci	vst1.8		d8, [r7, : 64]!
161162306a36Sopenharmony_ci	vmlal.s32	q5, d14, d1
161262306a36Sopenharmony_ci	vext.32		d12, d9, d8, #0
161362306a36Sopenharmony_ci	vmlal.s32	q5, d15, d19
161462306a36Sopenharmony_ci	vmov.i64	d13, #0
161562306a36Sopenharmony_ci	vmlal.s32	q5, d29, d18
161662306a36Sopenharmony_ci	vext.32		d25, d19, d7, #1
161762306a36Sopenharmony_ci	vmlal.s32	q6, d20, d5
161862306a36Sopenharmony_ci	vrev64.i32	d25, d25
161962306a36Sopenharmony_ci	vmlal.s32	q6, d21, d4
162062306a36Sopenharmony_ci	vst1.8		d11, [r7, : 64]!
162162306a36Sopenharmony_ci	vmlal.s32	q6, d26, d1
162262306a36Sopenharmony_ci	vext.32		d9, d10, d10, #0
162362306a36Sopenharmony_ci	vmlal.s32	q6, d27, d19
162462306a36Sopenharmony_ci	vmov.i64	d8, #0
162562306a36Sopenharmony_ci	vmlal.s32	q6, d28, d18
162662306a36Sopenharmony_ci	vmlal.s32	q4, d16, d24
162762306a36Sopenharmony_ci	vmlal.s32	q4, d17, d5
162862306a36Sopenharmony_ci	vmlal.s32	q4, d14, d4
162962306a36Sopenharmony_ci	vst1.8		d12, [r7, : 64]!
163062306a36Sopenharmony_ci	vmlal.s32	q4, d15, d1
163162306a36Sopenharmony_ci	vext.32		d10, d13, d12, #0
163262306a36Sopenharmony_ci	vmlal.s32	q4, d29, d19
163362306a36Sopenharmony_ci	vmov.i64	d11, #0
163462306a36Sopenharmony_ci	vmlal.s32	q5, d20, d6
163562306a36Sopenharmony_ci	vmlal.s32	q5, d21, d5
163662306a36Sopenharmony_ci	vmlal.s32	q5, d26, d4
163762306a36Sopenharmony_ci	vext.32		d13, d8, d8, #0
163862306a36Sopenharmony_ci	vmlal.s32	q5, d27, d1
163962306a36Sopenharmony_ci	vmov.i64	d12, #0
164062306a36Sopenharmony_ci	vmlal.s32	q5, d28, d19
164162306a36Sopenharmony_ci	vst1.8		d9, [r7, : 64]!
164262306a36Sopenharmony_ci	vmlal.s32	q6, d16, d25
164362306a36Sopenharmony_ci	vmlal.s32	q6, d17, d6
164462306a36Sopenharmony_ci	vst1.8		d10, [r7, : 64]
164562306a36Sopenharmony_ci	vmlal.s32	q6, d14, d5
164662306a36Sopenharmony_ci	vext.32		d8, d11, d10, #0
164762306a36Sopenharmony_ci	vmlal.s32	q6, d15, d4
164862306a36Sopenharmony_ci	vmov.i64	d9, #0
164962306a36Sopenharmony_ci	vmlal.s32	q6, d29, d1
165062306a36Sopenharmony_ci	vmlal.s32	q4, d20, d7
165162306a36Sopenharmony_ci	vmlal.s32	q4, d21, d6
165262306a36Sopenharmony_ci	vmlal.s32	q4, d26, d5
165362306a36Sopenharmony_ci	vext.32		d11, d12, d12, #0
165462306a36Sopenharmony_ci	vmlal.s32	q4, d27, d4
165562306a36Sopenharmony_ci	vmov.i64	d10, #0
165662306a36Sopenharmony_ci	vmlal.s32	q4, d28, d1
165762306a36Sopenharmony_ci	vmlal.s32	q5, d16, d0
165862306a36Sopenharmony_ci	sub		r6, r7, #32
165962306a36Sopenharmony_ci	vmlal.s32	q5, d17, d7
166062306a36Sopenharmony_ci	vmlal.s32	q5, d14, d6
166162306a36Sopenharmony_ci	vext.32		d30, d9, d8, #0
166262306a36Sopenharmony_ci	vmlal.s32	q5, d15, d5
166362306a36Sopenharmony_ci	vld1.8		{d31}, [r6, : 64]!
166462306a36Sopenharmony_ci	vmlal.s32	q5, d29, d4
166562306a36Sopenharmony_ci	vmlal.s32	q15, d20, d0
166662306a36Sopenharmony_ci	vext.32		d0, d6, d18, #1
166762306a36Sopenharmony_ci	vmlal.s32	q15, d21, d25
166862306a36Sopenharmony_ci	vrev64.i32	d0, d0
166962306a36Sopenharmony_ci	vmlal.s32	q15, d26, d24
167062306a36Sopenharmony_ci	vext.32		d1, d7, d19, #1
167162306a36Sopenharmony_ci	vext.32		d7, d10, d10, #0
167262306a36Sopenharmony_ci	vmlal.s32	q15, d27, d23
167362306a36Sopenharmony_ci	vrev64.i32	d1, d1
167462306a36Sopenharmony_ci	vld1.8		{d6}, [r6, : 64]
167562306a36Sopenharmony_ci	vmlal.s32	q15, d28, d22
167662306a36Sopenharmony_ci	vmlal.s32	q3, d16, d4
167762306a36Sopenharmony_ci	add		r6, r6, #24
167862306a36Sopenharmony_ci	vmlal.s32	q3, d17, d2
167962306a36Sopenharmony_ci	vext.32		d4, d31, d30, #0
168062306a36Sopenharmony_ci	vmov		d17, d11
168162306a36Sopenharmony_ci	vmlal.s32	q3, d14, d1
168262306a36Sopenharmony_ci	vext.32		d11, d13, d13, #0
168362306a36Sopenharmony_ci	vext.32		d13, d30, d30, #0
168462306a36Sopenharmony_ci	vmlal.s32	q3, d15, d0
168562306a36Sopenharmony_ci	vext.32		d1, d8, d8, #0
168662306a36Sopenharmony_ci	vmlal.s32	q3, d29, d3
168762306a36Sopenharmony_ci	vld1.8		{d5}, [r6, : 64]
168862306a36Sopenharmony_ci	sub		r6, r6, #16
168962306a36Sopenharmony_ci	vext.32		d10, d6, d6, #0
169062306a36Sopenharmony_ci	vmov.i32	q1, #0xffffffff
169162306a36Sopenharmony_ci	vshl.i64	q4, q1, #25
169262306a36Sopenharmony_ci	add		r7, sp, #480
169362306a36Sopenharmony_ci	vld1.8		{d14-d15}, [r7, : 128]
169462306a36Sopenharmony_ci	vadd.i64	q9, q2, q7
169562306a36Sopenharmony_ci	vshl.i64	q1, q1, #26
169662306a36Sopenharmony_ci	vshr.s64	q10, q9, #26
169762306a36Sopenharmony_ci	vld1.8		{d0}, [r6, : 64]!
169862306a36Sopenharmony_ci	vadd.i64	q5, q5, q10
169962306a36Sopenharmony_ci	vand		q9, q9, q1
170062306a36Sopenharmony_ci	vld1.8		{d16}, [r6, : 64]!
170162306a36Sopenharmony_ci	add		r6, sp, #496
170262306a36Sopenharmony_ci	vld1.8		{d20-d21}, [r6, : 128]
170362306a36Sopenharmony_ci	vadd.i64	q11, q5, q10
170462306a36Sopenharmony_ci	vsub.i64	q2, q2, q9
170562306a36Sopenharmony_ci	vshr.s64	q9, q11, #25
170662306a36Sopenharmony_ci	vext.32		d12, d5, d4, #0
170762306a36Sopenharmony_ci	vand		q11, q11, q4
170862306a36Sopenharmony_ci	vadd.i64	q0, q0, q9
170962306a36Sopenharmony_ci	vmov		d19, d7
171062306a36Sopenharmony_ci	vadd.i64	q3, q0, q7
171162306a36Sopenharmony_ci	vsub.i64	q5, q5, q11
171262306a36Sopenharmony_ci	vshr.s64	q11, q3, #26
171362306a36Sopenharmony_ci	vext.32		d18, d11, d10, #0
171462306a36Sopenharmony_ci	vand		q3, q3, q1
171562306a36Sopenharmony_ci	vadd.i64	q8, q8, q11
171662306a36Sopenharmony_ci	vadd.i64	q11, q8, q10
171762306a36Sopenharmony_ci	vsub.i64	q0, q0, q3
171862306a36Sopenharmony_ci	vshr.s64	q3, q11, #25
171962306a36Sopenharmony_ci	vand		q11, q11, q4
172062306a36Sopenharmony_ci	vadd.i64	q3, q6, q3
172162306a36Sopenharmony_ci	vadd.i64	q6, q3, q7
172262306a36Sopenharmony_ci	vsub.i64	q8, q8, q11
172362306a36Sopenharmony_ci	vshr.s64	q11, q6, #26
172462306a36Sopenharmony_ci	vand		q6, q6, q1
172562306a36Sopenharmony_ci	vadd.i64	q9, q9, q11
172662306a36Sopenharmony_ci	vadd.i64	d25, d19, d21
172762306a36Sopenharmony_ci	vsub.i64	q3, q3, q6
172862306a36Sopenharmony_ci	vshr.s64	d23, d25, #25
172962306a36Sopenharmony_ci	vand		q4, q12, q4
173062306a36Sopenharmony_ci	vadd.i64	d21, d23, d23
173162306a36Sopenharmony_ci	vshl.i64	d25, d23, #4
173262306a36Sopenharmony_ci	vadd.i64	d21, d21, d23
173362306a36Sopenharmony_ci	vadd.i64	d25, d25, d21
173462306a36Sopenharmony_ci	vadd.i64	d4, d4, d25
173562306a36Sopenharmony_ci	vzip.i32	q0, q8
173662306a36Sopenharmony_ci	vadd.i64	d12, d4, d14
173762306a36Sopenharmony_ci	add		r6, r8, #8
173862306a36Sopenharmony_ci	vst1.8		d0, [r6, : 64]
173962306a36Sopenharmony_ci	vsub.i64	d19, d19, d9
174062306a36Sopenharmony_ci	add		r6, r6, #16
174162306a36Sopenharmony_ci	vst1.8		d16, [r6, : 64]
174262306a36Sopenharmony_ci	vshr.s64	d22, d12, #26
174362306a36Sopenharmony_ci	vand		q0, q6, q1
174462306a36Sopenharmony_ci	vadd.i64	d10, d10, d22
174562306a36Sopenharmony_ci	vzip.i32	q3, q9
174662306a36Sopenharmony_ci	vsub.i64	d4, d4, d0
174762306a36Sopenharmony_ci	sub		r6, r6, #8
174862306a36Sopenharmony_ci	vst1.8		d6, [r6, : 64]
174962306a36Sopenharmony_ci	add		r6, r6, #16
175062306a36Sopenharmony_ci	vst1.8		d18, [r6, : 64]
175162306a36Sopenharmony_ci	vzip.i32	q2, q5
175262306a36Sopenharmony_ci	sub		r6, r6, #32
175362306a36Sopenharmony_ci	vst1.8		d4, [r6, : 64]
175462306a36Sopenharmony_ci	subs		r5, r5, #1
175562306a36Sopenharmony_ci	bhi		.Lsquaringloop
175662306a36Sopenharmony_ci.Lskipsquaringloop:
175762306a36Sopenharmony_ci	mov		r2, r2
175862306a36Sopenharmony_ci	add		r5, r3, #288
175962306a36Sopenharmony_ci	add		r6, r3, #144
176062306a36Sopenharmony_ci	vmov.i32	q0, #19
176162306a36Sopenharmony_ci	vmov.i32	q1, #0
176262306a36Sopenharmony_ci	vmov.i32	q2, #1
176362306a36Sopenharmony_ci	vzip.i32	q1, q2
176462306a36Sopenharmony_ci	vld1.8		{d4-d5}, [r5, : 128]!
176562306a36Sopenharmony_ci	vld1.8		{d6-d7}, [r5, : 128]!
176662306a36Sopenharmony_ci	vld1.8		{d9}, [r5, : 64]
176762306a36Sopenharmony_ci	vld1.8		{d10-d11}, [r2, : 128]!
176862306a36Sopenharmony_ci	add		r5, sp, #384
176962306a36Sopenharmony_ci	vld1.8		{d12-d13}, [r2, : 128]!
177062306a36Sopenharmony_ci	vmul.i32	q7, q2, q0
177162306a36Sopenharmony_ci	vld1.8		{d8}, [r2, : 64]
177262306a36Sopenharmony_ci	vext.32		d17, d11, d10, #1
177362306a36Sopenharmony_ci	vmul.i32	q9, q3, q0
177462306a36Sopenharmony_ci	vext.32		d16, d10, d8, #1
177562306a36Sopenharmony_ci	vshl.u32	q10, q5, q1
177662306a36Sopenharmony_ci	vext.32		d22, d14, d4, #1
177762306a36Sopenharmony_ci	vext.32		d24, d18, d6, #1
177862306a36Sopenharmony_ci	vshl.u32	q13, q6, q1
177962306a36Sopenharmony_ci	vshl.u32	d28, d8, d2
178062306a36Sopenharmony_ci	vrev64.i32	d22, d22
178162306a36Sopenharmony_ci	vmul.i32	d1, d9, d1
178262306a36Sopenharmony_ci	vrev64.i32	d24, d24
178362306a36Sopenharmony_ci	vext.32		d29, d8, d13, #1
178462306a36Sopenharmony_ci	vext.32		d0, d1, d9, #1
178562306a36Sopenharmony_ci	vrev64.i32	d0, d0
178662306a36Sopenharmony_ci	vext.32		d2, d9, d1, #1
178762306a36Sopenharmony_ci	vext.32		d23, d15, d5, #1
178862306a36Sopenharmony_ci	vmull.s32	q4, d20, d4
178962306a36Sopenharmony_ci	vrev64.i32	d23, d23
179062306a36Sopenharmony_ci	vmlal.s32	q4, d21, d1
179162306a36Sopenharmony_ci	vrev64.i32	d2, d2
179262306a36Sopenharmony_ci	vmlal.s32	q4, d26, d19
179362306a36Sopenharmony_ci	vext.32		d3, d5, d15, #1
179462306a36Sopenharmony_ci	vmlal.s32	q4, d27, d18
179562306a36Sopenharmony_ci	vrev64.i32	d3, d3
179662306a36Sopenharmony_ci	vmlal.s32	q4, d28, d15
179762306a36Sopenharmony_ci	vext.32		d14, d12, d11, #1
179862306a36Sopenharmony_ci	vmull.s32	q5, d16, d23
179962306a36Sopenharmony_ci	vext.32		d15, d13, d12, #1
180062306a36Sopenharmony_ci	vmlal.s32	q5, d17, d4
180162306a36Sopenharmony_ci	vst1.8		d8, [r5, : 64]!
180262306a36Sopenharmony_ci	vmlal.s32	q5, d14, d1
180362306a36Sopenharmony_ci	vext.32		d12, d9, d8, #0
180462306a36Sopenharmony_ci	vmlal.s32	q5, d15, d19
180562306a36Sopenharmony_ci	vmov.i64	d13, #0
180662306a36Sopenharmony_ci	vmlal.s32	q5, d29, d18
180762306a36Sopenharmony_ci	vext.32		d25, d19, d7, #1
180862306a36Sopenharmony_ci	vmlal.s32	q6, d20, d5
180962306a36Sopenharmony_ci	vrev64.i32	d25, d25
181062306a36Sopenharmony_ci	vmlal.s32	q6, d21, d4
181162306a36Sopenharmony_ci	vst1.8		d11, [r5, : 64]!
181262306a36Sopenharmony_ci	vmlal.s32	q6, d26, d1
181362306a36Sopenharmony_ci	vext.32		d9, d10, d10, #0
181462306a36Sopenharmony_ci	vmlal.s32	q6, d27, d19
181562306a36Sopenharmony_ci	vmov.i64	d8, #0
181662306a36Sopenharmony_ci	vmlal.s32	q6, d28, d18
181762306a36Sopenharmony_ci	vmlal.s32	q4, d16, d24
181862306a36Sopenharmony_ci	vmlal.s32	q4, d17, d5
181962306a36Sopenharmony_ci	vmlal.s32	q4, d14, d4
182062306a36Sopenharmony_ci	vst1.8		d12, [r5, : 64]!
182162306a36Sopenharmony_ci	vmlal.s32	q4, d15, d1
182262306a36Sopenharmony_ci	vext.32		d10, d13, d12, #0
182362306a36Sopenharmony_ci	vmlal.s32	q4, d29, d19
182462306a36Sopenharmony_ci	vmov.i64	d11, #0
182562306a36Sopenharmony_ci	vmlal.s32	q5, d20, d6
182662306a36Sopenharmony_ci	vmlal.s32	q5, d21, d5
182762306a36Sopenharmony_ci	vmlal.s32	q5, d26, d4
182862306a36Sopenharmony_ci	vext.32		d13, d8, d8, #0
182962306a36Sopenharmony_ci	vmlal.s32	q5, d27, d1
183062306a36Sopenharmony_ci	vmov.i64	d12, #0
183162306a36Sopenharmony_ci	vmlal.s32	q5, d28, d19
183262306a36Sopenharmony_ci	vst1.8		d9, [r5, : 64]!
183362306a36Sopenharmony_ci	vmlal.s32	q6, d16, d25
183462306a36Sopenharmony_ci	vmlal.s32	q6, d17, d6
183562306a36Sopenharmony_ci	vst1.8		d10, [r5, : 64]
183662306a36Sopenharmony_ci	vmlal.s32	q6, d14, d5
183762306a36Sopenharmony_ci	vext.32		d8, d11, d10, #0
183862306a36Sopenharmony_ci	vmlal.s32	q6, d15, d4
183962306a36Sopenharmony_ci	vmov.i64	d9, #0
184062306a36Sopenharmony_ci	vmlal.s32	q6, d29, d1
184162306a36Sopenharmony_ci	vmlal.s32	q4, d20, d7
184262306a36Sopenharmony_ci	vmlal.s32	q4, d21, d6
184362306a36Sopenharmony_ci	vmlal.s32	q4, d26, d5
184462306a36Sopenharmony_ci	vext.32		d11, d12, d12, #0
184562306a36Sopenharmony_ci	vmlal.s32	q4, d27, d4
184662306a36Sopenharmony_ci	vmov.i64	d10, #0
184762306a36Sopenharmony_ci	vmlal.s32	q4, d28, d1
184862306a36Sopenharmony_ci	vmlal.s32	q5, d16, d0
184962306a36Sopenharmony_ci	sub		r2, r5, #32
185062306a36Sopenharmony_ci	vmlal.s32	q5, d17, d7
185162306a36Sopenharmony_ci	vmlal.s32	q5, d14, d6
185262306a36Sopenharmony_ci	vext.32		d30, d9, d8, #0
185362306a36Sopenharmony_ci	vmlal.s32	q5, d15, d5
185462306a36Sopenharmony_ci	vld1.8		{d31}, [r2, : 64]!
185562306a36Sopenharmony_ci	vmlal.s32	q5, d29, d4
185662306a36Sopenharmony_ci	vmlal.s32	q15, d20, d0
185762306a36Sopenharmony_ci	vext.32		d0, d6, d18, #1
185862306a36Sopenharmony_ci	vmlal.s32	q15, d21, d25
185962306a36Sopenharmony_ci	vrev64.i32	d0, d0
186062306a36Sopenharmony_ci	vmlal.s32	q15, d26, d24
186162306a36Sopenharmony_ci	vext.32		d1, d7, d19, #1
186262306a36Sopenharmony_ci	vext.32		d7, d10, d10, #0
186362306a36Sopenharmony_ci	vmlal.s32	q15, d27, d23
186462306a36Sopenharmony_ci	vrev64.i32	d1, d1
186562306a36Sopenharmony_ci	vld1.8		{d6}, [r2, : 64]
186662306a36Sopenharmony_ci	vmlal.s32	q15, d28, d22
186762306a36Sopenharmony_ci	vmlal.s32	q3, d16, d4
186862306a36Sopenharmony_ci	add		r2, r2, #24
186962306a36Sopenharmony_ci	vmlal.s32	q3, d17, d2
187062306a36Sopenharmony_ci	vext.32		d4, d31, d30, #0
187162306a36Sopenharmony_ci	vmov		d17, d11
187262306a36Sopenharmony_ci	vmlal.s32	q3, d14, d1
187362306a36Sopenharmony_ci	vext.32		d11, d13, d13, #0
187462306a36Sopenharmony_ci	vext.32		d13, d30, d30, #0
187562306a36Sopenharmony_ci	vmlal.s32	q3, d15, d0
187662306a36Sopenharmony_ci	vext.32		d1, d8, d8, #0
187762306a36Sopenharmony_ci	vmlal.s32	q3, d29, d3
187862306a36Sopenharmony_ci	vld1.8		{d5}, [r2, : 64]
187962306a36Sopenharmony_ci	sub		r2, r2, #16
188062306a36Sopenharmony_ci	vext.32		d10, d6, d6, #0
188162306a36Sopenharmony_ci	vmov.i32	q1, #0xffffffff
188262306a36Sopenharmony_ci	vshl.i64	q4, q1, #25
188362306a36Sopenharmony_ci	add		r5, sp, #480
188462306a36Sopenharmony_ci	vld1.8		{d14-d15}, [r5, : 128]
188562306a36Sopenharmony_ci	vadd.i64	q9, q2, q7
188662306a36Sopenharmony_ci	vshl.i64	q1, q1, #26
188762306a36Sopenharmony_ci	vshr.s64	q10, q9, #26
188862306a36Sopenharmony_ci	vld1.8		{d0}, [r2, : 64]!
188962306a36Sopenharmony_ci	vadd.i64	q5, q5, q10
189062306a36Sopenharmony_ci	vand		q9, q9, q1
189162306a36Sopenharmony_ci	vld1.8		{d16}, [r2, : 64]!
189262306a36Sopenharmony_ci	add		r2, sp, #496
189362306a36Sopenharmony_ci	vld1.8		{d20-d21}, [r2, : 128]
189462306a36Sopenharmony_ci	vadd.i64	q11, q5, q10
189562306a36Sopenharmony_ci	vsub.i64	q2, q2, q9
189662306a36Sopenharmony_ci	vshr.s64	q9, q11, #25
189762306a36Sopenharmony_ci	vext.32		d12, d5, d4, #0
189862306a36Sopenharmony_ci	vand		q11, q11, q4
189962306a36Sopenharmony_ci	vadd.i64	q0, q0, q9
190062306a36Sopenharmony_ci	vmov		d19, d7
190162306a36Sopenharmony_ci	vadd.i64	q3, q0, q7
190262306a36Sopenharmony_ci	vsub.i64	q5, q5, q11
190362306a36Sopenharmony_ci	vshr.s64	q11, q3, #26
190462306a36Sopenharmony_ci	vext.32		d18, d11, d10, #0
190562306a36Sopenharmony_ci	vand		q3, q3, q1
190662306a36Sopenharmony_ci	vadd.i64	q8, q8, q11
190762306a36Sopenharmony_ci	vadd.i64	q11, q8, q10
190862306a36Sopenharmony_ci	vsub.i64	q0, q0, q3
190962306a36Sopenharmony_ci	vshr.s64	q3, q11, #25
191062306a36Sopenharmony_ci	vand		q11, q11, q4
191162306a36Sopenharmony_ci	vadd.i64	q3, q6, q3
191262306a36Sopenharmony_ci	vadd.i64	q6, q3, q7
191362306a36Sopenharmony_ci	vsub.i64	q8, q8, q11
191462306a36Sopenharmony_ci	vshr.s64	q11, q6, #26
191562306a36Sopenharmony_ci	vand		q6, q6, q1
191662306a36Sopenharmony_ci	vadd.i64	q9, q9, q11
191762306a36Sopenharmony_ci	vadd.i64	d25, d19, d21
191862306a36Sopenharmony_ci	vsub.i64	q3, q3, q6
191962306a36Sopenharmony_ci	vshr.s64	d23, d25, #25
192062306a36Sopenharmony_ci	vand		q4, q12, q4
192162306a36Sopenharmony_ci	vadd.i64	d21, d23, d23
192262306a36Sopenharmony_ci	vshl.i64	d25, d23, #4
192362306a36Sopenharmony_ci	vadd.i64	d21, d21, d23
192462306a36Sopenharmony_ci	vadd.i64	d25, d25, d21
192562306a36Sopenharmony_ci	vadd.i64	d4, d4, d25
192662306a36Sopenharmony_ci	vzip.i32	q0, q8
192762306a36Sopenharmony_ci	vadd.i64	d12, d4, d14
192862306a36Sopenharmony_ci	add		r2, r6, #8
192962306a36Sopenharmony_ci	vst1.8		d0, [r2, : 64]
193062306a36Sopenharmony_ci	vsub.i64	d19, d19, d9
193162306a36Sopenharmony_ci	add		r2, r2, #16
193262306a36Sopenharmony_ci	vst1.8		d16, [r2, : 64]
193362306a36Sopenharmony_ci	vshr.s64	d22, d12, #26
193462306a36Sopenharmony_ci	vand		q0, q6, q1
193562306a36Sopenharmony_ci	vadd.i64	d10, d10, d22
193662306a36Sopenharmony_ci	vzip.i32	q3, q9
193762306a36Sopenharmony_ci	vsub.i64	d4, d4, d0
193862306a36Sopenharmony_ci	sub		r2, r2, #8
193962306a36Sopenharmony_ci	vst1.8		d6, [r2, : 64]
194062306a36Sopenharmony_ci	add		r2, r2, #16
194162306a36Sopenharmony_ci	vst1.8		d18, [r2, : 64]
194262306a36Sopenharmony_ci	vzip.i32	q2, q5
194362306a36Sopenharmony_ci	sub		r2, r2, #32
194462306a36Sopenharmony_ci	vst1.8		d4, [r2, : 64]
194562306a36Sopenharmony_ci	cmp		r4, #0
194662306a36Sopenharmony_ci	beq		.Lskippostcopy
194762306a36Sopenharmony_ci	add		r2, r3, #144
194862306a36Sopenharmony_ci	mov		r4, r4
194962306a36Sopenharmony_ci	vld1.8		{d0-d1}, [r2, : 128]!
195062306a36Sopenharmony_ci	vld1.8		{d2-d3}, [r2, : 128]!
195162306a36Sopenharmony_ci	vld1.8		{d4}, [r2, : 64]
195262306a36Sopenharmony_ci	vst1.8		{d0-d1}, [r4, : 128]!
195362306a36Sopenharmony_ci	vst1.8		{d2-d3}, [r4, : 128]!
195462306a36Sopenharmony_ci	vst1.8		d4, [r4, : 64]
195562306a36Sopenharmony_ci.Lskippostcopy:
195662306a36Sopenharmony_ci	cmp		r1, #1
195762306a36Sopenharmony_ci	bne		.Lskipfinalcopy
195862306a36Sopenharmony_ci	add		r2, r3, #288
195962306a36Sopenharmony_ci	add		r4, r3, #144
196062306a36Sopenharmony_ci	vld1.8		{d0-d1}, [r2, : 128]!
196162306a36Sopenharmony_ci	vld1.8		{d2-d3}, [r2, : 128]!
196262306a36Sopenharmony_ci	vld1.8		{d4}, [r2, : 64]
196362306a36Sopenharmony_ci	vst1.8		{d0-d1}, [r4, : 128]!
196462306a36Sopenharmony_ci	vst1.8		{d2-d3}, [r4, : 128]!
196562306a36Sopenharmony_ci	vst1.8		d4, [r4, : 64]
196662306a36Sopenharmony_ci.Lskipfinalcopy:
196762306a36Sopenharmony_ci	add		r1, r1, #1
196862306a36Sopenharmony_ci	cmp		r1, #12
196962306a36Sopenharmony_ci	blo		.Linvertloop
197062306a36Sopenharmony_ci	add		r1, r3, #144
197162306a36Sopenharmony_ci	ldr		r2, [r1], #4
197262306a36Sopenharmony_ci	ldr		r3, [r1], #4
197362306a36Sopenharmony_ci	ldr		r4, [r1], #4
197462306a36Sopenharmony_ci	ldr		r5, [r1], #4
197562306a36Sopenharmony_ci	ldr		r6, [r1], #4
197662306a36Sopenharmony_ci	ldr		r7, [r1], #4
197762306a36Sopenharmony_ci	ldr		r8, [r1], #4
197862306a36Sopenharmony_ci	ldr		r9, [r1], #4
197962306a36Sopenharmony_ci	ldr		r10, [r1], #4
198062306a36Sopenharmony_ci	ldr		r1, [r1]
198162306a36Sopenharmony_ci	add		r11, r1, r1, LSL #4
198262306a36Sopenharmony_ci	add		r11, r11, r1, LSL #1
198362306a36Sopenharmony_ci	add		r11, r11, #16777216
198462306a36Sopenharmony_ci	mov		r11, r11, ASR #25
198562306a36Sopenharmony_ci	add		r11, r11, r2
198662306a36Sopenharmony_ci	mov		r11, r11, ASR #26
198762306a36Sopenharmony_ci	add		r11, r11, r3
198862306a36Sopenharmony_ci	mov		r11, r11, ASR #25
198962306a36Sopenharmony_ci	add		r11, r11, r4
199062306a36Sopenharmony_ci	mov		r11, r11, ASR #26
199162306a36Sopenharmony_ci	add		r11, r11, r5
199262306a36Sopenharmony_ci	mov		r11, r11, ASR #25
199362306a36Sopenharmony_ci	add		r11, r11, r6
199462306a36Sopenharmony_ci	mov		r11, r11, ASR #26
199562306a36Sopenharmony_ci	add		r11, r11, r7
199662306a36Sopenharmony_ci	mov		r11, r11, ASR #25
199762306a36Sopenharmony_ci	add		r11, r11, r8
199862306a36Sopenharmony_ci	mov		r11, r11, ASR #26
199962306a36Sopenharmony_ci	add		r11, r11, r9
200062306a36Sopenharmony_ci	mov		r11, r11, ASR #25
200162306a36Sopenharmony_ci	add		r11, r11, r10
200262306a36Sopenharmony_ci	mov		r11, r11, ASR #26
200362306a36Sopenharmony_ci	add		r11, r11, r1
200462306a36Sopenharmony_ci	mov		r11, r11, ASR #25
200562306a36Sopenharmony_ci	add		r2, r2, r11
200662306a36Sopenharmony_ci	add		r2, r2, r11, LSL #1
200762306a36Sopenharmony_ci	add		r2, r2, r11, LSL #4
200862306a36Sopenharmony_ci	mov		r11, r2, ASR #26
200962306a36Sopenharmony_ci	add		r3, r3, r11
201062306a36Sopenharmony_ci	sub		r2, r2, r11, LSL #26
201162306a36Sopenharmony_ci	mov		r11, r3, ASR #25
201262306a36Sopenharmony_ci	add		r4, r4, r11
201362306a36Sopenharmony_ci	sub		r3, r3, r11, LSL #25
201462306a36Sopenharmony_ci	mov		r11, r4, ASR #26
201562306a36Sopenharmony_ci	add		r5, r5, r11
201662306a36Sopenharmony_ci	sub		r4, r4, r11, LSL #26
201762306a36Sopenharmony_ci	mov		r11, r5, ASR #25
201862306a36Sopenharmony_ci	add		r6, r6, r11
201962306a36Sopenharmony_ci	sub		r5, r5, r11, LSL #25
202062306a36Sopenharmony_ci	mov		r11, r6, ASR #26
202162306a36Sopenharmony_ci	add		r7, r7, r11
202262306a36Sopenharmony_ci	sub		r6, r6, r11, LSL #26
202362306a36Sopenharmony_ci	mov		r11, r7, ASR #25
202462306a36Sopenharmony_ci	add		r8, r8, r11
202562306a36Sopenharmony_ci	sub		r7, r7, r11, LSL #25
202662306a36Sopenharmony_ci	mov		r11, r8, ASR #26
202762306a36Sopenharmony_ci	add		r9, r9, r11
202862306a36Sopenharmony_ci	sub		r8, r8, r11, LSL #26
202962306a36Sopenharmony_ci	mov		r11, r9, ASR #25
203062306a36Sopenharmony_ci	add		r10, r10, r11
203162306a36Sopenharmony_ci	sub		r9, r9, r11, LSL #25
203262306a36Sopenharmony_ci	mov		r11, r10, ASR #26
203362306a36Sopenharmony_ci	add		r1, r1, r11
203462306a36Sopenharmony_ci	sub		r10, r10, r11, LSL #26
203562306a36Sopenharmony_ci	mov		r11, r1, ASR #25
203662306a36Sopenharmony_ci	sub		r1, r1, r11, LSL #25
203762306a36Sopenharmony_ci	add		r2, r2, r3, LSL #26
203862306a36Sopenharmony_ci	mov		r3, r3, LSR #6
203962306a36Sopenharmony_ci	add		r3, r3, r4, LSL #19
204062306a36Sopenharmony_ci	mov		r4, r4, LSR #13
204162306a36Sopenharmony_ci	add		r4, r4, r5, LSL #13
204262306a36Sopenharmony_ci	mov		r5, r5, LSR #19
204362306a36Sopenharmony_ci	add		r5, r5, r6, LSL #6
204462306a36Sopenharmony_ci	add		r6, r7, r8, LSL #25
204562306a36Sopenharmony_ci	mov		r7, r8, LSR #7
204662306a36Sopenharmony_ci	add		r7, r7, r9, LSL #19
204762306a36Sopenharmony_ci	mov		r8, r9, LSR #13
204862306a36Sopenharmony_ci	add		r8, r8, r10, LSL #12
204962306a36Sopenharmony_ci	mov		r9, r10, LSR #20
205062306a36Sopenharmony_ci	add		r1, r9, r1, LSL #6
205162306a36Sopenharmony_ci	str		r2, [r0]
205262306a36Sopenharmony_ci	str		r3, [r0, #4]
205362306a36Sopenharmony_ci	str		r4, [r0, #8]
205462306a36Sopenharmony_ci	str		r5, [r0, #12]
205562306a36Sopenharmony_ci	str		r6, [r0, #16]
205662306a36Sopenharmony_ci	str		r7, [r0, #20]
205762306a36Sopenharmony_ci	str		r8, [r0, #24]
205862306a36Sopenharmony_ci	str		r1, [r0, #28]
205962306a36Sopenharmony_ci	movw		r0, #0
206062306a36Sopenharmony_ci	mov		sp, ip
206162306a36Sopenharmony_ci	pop		{r4-r11, pc}
206262306a36Sopenharmony_ciENDPROC(curve25519_neon)
2063