aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/crypto
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2018-08-27 23:39:19 -0600
committerJason A. Donenfeld <Jason@zx2c4.com>2018-08-28 23:20:33 -0600
commit7987983a9205ace88090312a68b091bc07c51bdd (patch)
treeea426c695a6aebc7303b47f7a8e5c54cdaee686f /src/crypto
parentcurve25519-arm: cleanups from lkml (diff)
downloadwireguard-monolithic-historical-7987983a9205ace88090312a68b091bc07c51bdd.tar.xz
wireguard-monolithic-historical-7987983a9205ace88090312a68b091bc07c51bdd.zip
curve25519-arm: add spaces after commas
Diffstat (limited to 'src/crypto')
-rw-r--r--src/crypto/curve25519-arm.S4148
1 files changed, 2074 insertions, 2074 deletions
diff --git a/src/crypto/curve25519-arm.S b/src/crypto/curve25519-arm.S
index a6b759f..923241d 100644
--- a/src/crypto/curve25519-arm.S
+++ b/src/crypto/curve25519-arm.S
@@ -16,2092 +16,2092 @@
.align 4
ENTRY(curve25519_neon)
- mov r12,sp
- sub r3,sp,#736
- and r3,r3,#0xfffffff0
- mov sp,r3
- strd r4,[sp,#0]
- strd r6,[sp,#8]
- strd r8,[sp,#16]
- strd r10,[sp,#24]
- str r12,[sp,#480]
- str r14,[sp,#484]
- add r3,sp,#32
- movw r4,0
- movw r5,254
- vmov.i32 q0,#1
- vshr.u64 q1,q0,#7
- vshr.u64 q0,q0,#8
- vmov.i32 d4,#19
- vmov.i32 d5,#38
- add r6,sp,#512
- vst1.8 {d2-d3},[r6,: 128]
- add r6,sp,#528
- vst1.8 {d0-d1},[r6,: 128]
- add r6,sp,#544
- vst1.8 {d4-d5},[r6,: 128]
- add r6,r3,#0
- vmov.i32 q2,#0
- vst1.8 {d4-d5},[r6,: 128]!
- vst1.8 {d4-d5},[r6,: 128]!
- vst1.8 d4,[r6,: 64]
- add r6,r3,#0
- movw r7,960
- sub r7,r7,#2
- neg r7,r7
- sub r7,r7,r7,LSL #7
- str r7,[r6]
- add r6,sp,#704
- vld1.8 {d4-d5},[r1]!
- vld1.8 {d6-d7},[r1]
- vst1.8 {d4-d5},[r6,: 128]!
- vst1.8 {d6-d7},[r6,: 128]
- sub r1,r6,#16
- ldrb r6,[r1]
- and r6,r6,#248
- strb r6,[r1]
- ldrb r6,[r1,#31]
- and r6,r6,#127
- orr r6,r6,#64
- strb r6,[r1,#31]
- vmov.i64 q2,#0xffffffff
- vshr.u64 q3,q2,#7
- vshr.u64 q2,q2,#6
- vld1.8 {d8},[r2]
- vld1.8 {d10},[r2]
- add r2,r2,#6
- vld1.8 {d12},[r2]
- vld1.8 {d14},[r2]
- add r2,r2,#6
- vld1.8 {d16},[r2]
- add r2,r2,#4
- vld1.8 {d18},[r2]
- vld1.8 {d20},[r2]
- add r2,r2,#6
- vld1.8 {d22},[r2]
- add r2,r2,#2
- vld1.8 {d24},[r2]
- vld1.8 {d26},[r2]
- vshr.u64 q5,q5,#26
- vshr.u64 q6,q6,#3
- vshr.u64 q7,q7,#29
- vshr.u64 q8,q8,#6
- vshr.u64 q10,q10,#25
- vshr.u64 q11,q11,#3
- vshr.u64 q12,q12,#12
- vshr.u64 q13,q13,#38
- vand q4,q4,q2
- vand q6,q6,q2
- vand q8,q8,q2
- vand q10,q10,q2
- vand q2,q12,q2
- vand q5,q5,q3
- vand q7,q7,q3
- vand q9,q9,q3
- vand q11,q11,q3
- vand q3,q13,q3
- add r2,r3,#48
- vadd.i64 q12,q4,q1
- vadd.i64 q13,q10,q1
- vshr.s64 q12,q12,#26
- vshr.s64 q13,q13,#26
- vadd.i64 q5,q5,q12
- vshl.i64 q12,q12,#26
- vadd.i64 q14,q5,q0
- vadd.i64 q11,q11,q13
- vshl.i64 q13,q13,#26
- vadd.i64 q15,q11,q0
- vsub.i64 q4,q4,q12
- vshr.s64 q12,q14,#25
- vsub.i64 q10,q10,q13
- vshr.s64 q13,q15,#25
- vadd.i64 q6,q6,q12
- vshl.i64 q12,q12,#25
- vadd.i64 q14,q6,q1
- vadd.i64 q2,q2,q13
- vsub.i64 q5,q5,q12
- vshr.s64 q12,q14,#26
- vshl.i64 q13,q13,#25
- vadd.i64 q14,q2,q1
- vadd.i64 q7,q7,q12
- vshl.i64 q12,q12,#26
- vadd.i64 q15,q7,q0
- vsub.i64 q11,q11,q13
- vshr.s64 q13,q14,#26
- vsub.i64 q6,q6,q12
- vshr.s64 q12,q15,#25
- vadd.i64 q3,q3,q13
- vshl.i64 q13,q13,#26
- vadd.i64 q14,q3,q0
- vadd.i64 q8,q8,q12
- vshl.i64 q12,q12,#25
- vadd.i64 q15,q8,q1
- add r2,r2,#8
- vsub.i64 q2,q2,q13
- vshr.s64 q13,q14,#25
- vsub.i64 q7,q7,q12
- vshr.s64 q12,q15,#26
- vadd.i64 q14,q13,q13
- vadd.i64 q9,q9,q12
- vtrn.32 d12,d14
- vshl.i64 q12,q12,#26
- vtrn.32 d13,d15
- vadd.i64 q0,q9,q0
- vadd.i64 q4,q4,q14
- vst1.8 d12,[r2,: 64]!
- vshl.i64 q6,q13,#4
- vsub.i64 q7,q8,q12
- vshr.s64 q0,q0,#25
- vadd.i64 q4,q4,q6
- vadd.i64 q6,q10,q0
- vshl.i64 q0,q0,#25
- vadd.i64 q8,q6,q1
- vadd.i64 q4,q4,q13
- vshl.i64 q10,q13,#25
- vadd.i64 q1,q4,q1
- vsub.i64 q0,q9,q0
- vshr.s64 q8,q8,#26
- vsub.i64 q3,q3,q10
- vtrn.32 d14,d0
- vshr.s64 q1,q1,#26
- vtrn.32 d15,d1
- vadd.i64 q0,q11,q8
- vst1.8 d14,[r2,: 64]
- vshl.i64 q7,q8,#26
- vadd.i64 q5,q5,q1
- vtrn.32 d4,d6
- vshl.i64 q1,q1,#26
- vtrn.32 d5,d7
- vsub.i64 q3,q6,q7
- add r2,r2,#16
- vsub.i64 q1,q4,q1
- vst1.8 d4,[r2,: 64]
- vtrn.32 d6,d0
- vtrn.32 d7,d1
- sub r2,r2,#8
- vtrn.32 d2,d10
- vtrn.32 d3,d11
- vst1.8 d6,[r2,: 64]
- sub r2,r2,#24
- vst1.8 d2,[r2,: 64]
- add r2,r3,#96
- vmov.i32 q0,#0
- vmov.i64 d2,#0xff
- vmov.i64 d3,#0
- vshr.u32 q1,q1,#7
- vst1.8 {d2-d3},[r2,: 128]!
- vst1.8 {d0-d1},[r2,: 128]!
- vst1.8 d0,[r2,: 64]
- add r2,r3,#144
- vmov.i32 q0,#0
- vst1.8 {d0-d1},[r2,: 128]!
- vst1.8 {d0-d1},[r2,: 128]!
- vst1.8 d0,[r2,: 64]
- add r2,r3,#240
- vmov.i32 q0,#0
- vmov.i64 d2,#0xff
- vmov.i64 d3,#0
- vshr.u32 q1,q1,#7
- vst1.8 {d2-d3},[r2,: 128]!
- vst1.8 {d0-d1},[r2,: 128]!
- vst1.8 d0,[r2,: 64]
- add r2,r3,#48
- add r6,r3,#192
- vld1.8 {d0-d1},[r2,: 128]!
- vld1.8 {d2-d3},[r2,: 128]!
- vld1.8 {d4},[r2,: 64]
- vst1.8 {d0-d1},[r6,: 128]!
- vst1.8 {d2-d3},[r6,: 128]!
- vst1.8 d4,[r6,: 64]
+ mov r12, sp
+ sub r3, sp, #736
+ and r3, r3, #0xfffffff0
+ mov sp, r3
+ strd r4, [sp, #0]
+ strd r6, [sp, #8]
+ strd r8, [sp, #16]
+ strd r10, [sp, #24]
+ str r12, [sp, #480]
+ str r14, [sp, #484]
+ add r3, sp, #32
+ movw r4, 0
+ movw r5, 254
+ vmov.i32 q0, #1
+ vshr.u64 q1, q0, #7
+ vshr.u64 q0, q0, #8
+ vmov.i32 d4, #19
+ vmov.i32 d5, #38
+ add r6, sp, #512
+ vst1.8 {d2-d3}, [r6, : 128]
+ add r6, sp, #528
+ vst1.8 {d0-d1}, [r6, : 128]
+ add r6, sp, #544
+ vst1.8 {d4-d5}, [r6, : 128]
+ add r6, r3, #0
+ vmov.i32 q2, #0
+ vst1.8 {d4-d5}, [r6, : 128]!
+ vst1.8 {d4-d5}, [r6, : 128]!
+ vst1.8 d4, [r6, : 64]
+ add r6, r3, #0
+ movw r7, 960
+ sub r7, r7, #2
+ neg r7, r7
+ sub r7, r7, r7, LSL #7
+ str r7, [r6]
+ add r6, sp, #704
+ vld1.8 {d4-d5}, [r1]!
+ vld1.8 {d6-d7}, [r1]
+ vst1.8 {d4-d5}, [r6, : 128]!
+ vst1.8 {d6-d7}, [r6, : 128]
+ sub r1, r6, #16
+ ldrb r6, [r1]
+ and r6, r6, #248
+ strb r6, [r1]
+ ldrb r6, [r1, #31]
+ and r6, r6, #127
+ orr r6, r6, #64
+ strb r6, [r1, #31]
+ vmov.i64 q2, #0xffffffff
+ vshr.u64 q3, q2, #7
+ vshr.u64 q2, q2, #6
+ vld1.8 {d8}, [r2]
+ vld1.8 {d10}, [r2]
+ add r2, r2, #6
+ vld1.8 {d12}, [r2]
+ vld1.8 {d14}, [r2]
+ add r2, r2, #6
+ vld1.8 {d16}, [r2]
+ add r2, r2, #4
+ vld1.8 {d18}, [r2]
+ vld1.8 {d20}, [r2]
+ add r2, r2, #6
+ vld1.8 {d22}, [r2]
+ add r2, r2, #2
+ vld1.8 {d24}, [r2]
+ vld1.8 {d26}, [r2]
+ vshr.u64 q5, q5, #26
+ vshr.u64 q6, q6, #3
+ vshr.u64 q7, q7, #29
+ vshr.u64 q8, q8, #6
+ vshr.u64 q10, q10, #25
+ vshr.u64 q11, q11, #3
+ vshr.u64 q12, q12, #12
+ vshr.u64 q13, q13, #38
+ vand q4, q4, q2
+ vand q6, q6, q2
+ vand q8, q8, q2
+ vand q10, q10, q2
+ vand q2, q12, q2
+ vand q5, q5, q3
+ vand q7, q7, q3
+ vand q9, q9, q3
+ vand q11, q11, q3
+ vand q3, q13, q3
+ add r2, r3, #48
+ vadd.i64 q12, q4, q1
+ vadd.i64 q13, q10, q1
+ vshr.s64 q12, q12, #26
+ vshr.s64 q13, q13, #26
+ vadd.i64 q5, q5, q12
+ vshl.i64 q12, q12, #26
+ vadd.i64 q14, q5, q0
+ vadd.i64 q11, q11, q13
+ vshl.i64 q13, q13, #26
+ vadd.i64 q15, q11, q0
+ vsub.i64 q4, q4, q12
+ vshr.s64 q12, q14, #25
+ vsub.i64 q10, q10, q13
+ vshr.s64 q13, q15, #25
+ vadd.i64 q6, q6, q12
+ vshl.i64 q12, q12, #25
+ vadd.i64 q14, q6, q1
+ vadd.i64 q2, q2, q13
+ vsub.i64 q5, q5, q12
+ vshr.s64 q12, q14, #26
+ vshl.i64 q13, q13, #25
+ vadd.i64 q14, q2, q1
+ vadd.i64 q7, q7, q12
+ vshl.i64 q12, q12, #26
+ vadd.i64 q15, q7, q0
+ vsub.i64 q11, q11, q13
+ vshr.s64 q13, q14, #26
+ vsub.i64 q6, q6, q12
+ vshr.s64 q12, q15, #25
+ vadd.i64 q3, q3, q13
+ vshl.i64 q13, q13, #26
+ vadd.i64 q14, q3, q0
+ vadd.i64 q8, q8, q12
+ vshl.i64 q12, q12, #25
+ vadd.i64 q15, q8, q1
+ add r2, r2, #8
+ vsub.i64 q2, q2, q13
+ vshr.s64 q13, q14, #25
+ vsub.i64 q7, q7, q12
+ vshr.s64 q12, q15, #26
+ vadd.i64 q14, q13, q13
+ vadd.i64 q9, q9, q12
+ vtrn.32 d12, d14
+ vshl.i64 q12, q12, #26
+ vtrn.32 d13, d15
+ vadd.i64 q0, q9, q0
+ vadd.i64 q4, q4, q14
+ vst1.8 d12, [r2, : 64]!
+ vshl.i64 q6, q13, #4
+ vsub.i64 q7, q8, q12
+ vshr.s64 q0, q0, #25
+ vadd.i64 q4, q4, q6
+ vadd.i64 q6, q10, q0
+ vshl.i64 q0, q0, #25
+ vadd.i64 q8, q6, q1
+ vadd.i64 q4, q4, q13
+ vshl.i64 q10, q13, #25
+ vadd.i64 q1, q4, q1
+ vsub.i64 q0, q9, q0
+ vshr.s64 q8, q8, #26
+ vsub.i64 q3, q3, q10
+ vtrn.32 d14, d0
+ vshr.s64 q1, q1, #26
+ vtrn.32 d15, d1
+ vadd.i64 q0, q11, q8
+ vst1.8 d14, [r2, : 64]
+ vshl.i64 q7, q8, #26
+ vadd.i64 q5, q5, q1
+ vtrn.32 d4, d6
+ vshl.i64 q1, q1, #26
+ vtrn.32 d5, d7
+ vsub.i64 q3, q6, q7
+ add r2, r2, #16
+ vsub.i64 q1, q4, q1
+ vst1.8 d4, [r2, : 64]
+ vtrn.32 d6, d0
+ vtrn.32 d7, d1
+ sub r2, r2, #8
+ vtrn.32 d2, d10
+ vtrn.32 d3, d11
+ vst1.8 d6, [r2, : 64]
+ sub r2, r2, #24
+ vst1.8 d2, [r2, : 64]
+ add r2, r3, #96
+ vmov.i32 q0, #0
+ vmov.i64 d2, #0xff
+ vmov.i64 d3, #0
+ vshr.u32 q1, q1, #7
+ vst1.8 {d2-d3}, [r2, : 128]!
+ vst1.8 {d0-d1}, [r2, : 128]!
+ vst1.8 d0, [r2, : 64]
+ add r2, r3, #144
+ vmov.i32 q0, #0
+ vst1.8 {d0-d1}, [r2, : 128]!
+ vst1.8 {d0-d1}, [r2, : 128]!
+ vst1.8 d0, [r2, : 64]
+ add r2, r3, #240
+ vmov.i32 q0, #0
+ vmov.i64 d2, #0xff
+ vmov.i64 d3, #0
+ vshr.u32 q1, q1, #7
+ vst1.8 {d2-d3}, [r2, : 128]!
+ vst1.8 {d0-d1}, [r2, : 128]!
+ vst1.8 d0, [r2, : 64]
+ add r2, r3, #48
+ add r6, r3, #192
+ vld1.8 {d0-d1}, [r2, : 128]!
+ vld1.8 {d2-d3}, [r2, : 128]!
+ vld1.8 {d4}, [r2, : 64]
+ vst1.8 {d0-d1}, [r6, : 128]!
+ vst1.8 {d2-d3}, [r6, : 128]!
+ vst1.8 d4, [r6, : 64]
.Lmainloop:
- mov r2,r5,LSR #3
- and r6,r5,#7
- ldrb r2,[r1,r2]
- mov r2,r2,LSR r6
- and r2,r2,#1
- str r5,[sp,#488]
- eor r4,r4,r2
- str r2,[sp,#492]
- neg r2,r4
- add r4,r3,#96
- add r5,r3,#192
- add r6,r3,#144
- vld1.8 {d8-d9},[r4,: 128]!
- add r7,r3,#240
- vld1.8 {d10-d11},[r5,: 128]!
- veor q6,q4,q5
- vld1.8 {d14-d15},[r6,: 128]!
- vdup.i32 q8,r2
- vld1.8 {d18-d19},[r7,: 128]!
- veor q10,q7,q9
- vld1.8 {d22-d23},[r4,: 128]!
- vand q6,q6,q8
- vld1.8 {d24-d25},[r5,: 128]!
- vand q10,q10,q8
- vld1.8 {d26-d27},[r6,: 128]!
- veor q4,q4,q6
- vld1.8 {d28-d29},[r7,: 128]!
- veor q5,q5,q6
- vld1.8 {d0},[r4,: 64]
- veor q6,q7,q10
- vld1.8 {d2},[r5,: 64]
- veor q7,q9,q10
- vld1.8 {d4},[r6,: 64]
- veor q9,q11,q12
- vld1.8 {d6},[r7,: 64]
- veor q10,q0,q1
- sub r2,r4,#32
- vand q9,q9,q8
- sub r4,r5,#32
- vand q10,q10,q8
- sub r5,r6,#32
- veor q11,q11,q9
- sub r6,r7,#32
- veor q0,q0,q10
- veor q9,q12,q9
- veor q1,q1,q10
- veor q10,q13,q14
- veor q12,q2,q3
- vand q10,q10,q8
- vand q8,q12,q8
- veor q12,q13,q10
- veor q2,q2,q8
- veor q10,q14,q10
- veor q3,q3,q8
- vadd.i32 q8,q4,q6
- vsub.i32 q4,q4,q6
- vst1.8 {d16-d17},[r2,: 128]!
- vadd.i32 q6,q11,q12
- vst1.8 {d8-d9},[r5,: 128]!
- vsub.i32 q4,q11,q12
- vst1.8 {d12-d13},[r2,: 128]!
- vadd.i32 q6,q0,q2
- vst1.8 {d8-d9},[r5,: 128]!
- vsub.i32 q0,q0,q2
- vst1.8 d12,[r2,: 64]
- vadd.i32 q2,q5,q7
- vst1.8 d0,[r5,: 64]
- vsub.i32 q0,q5,q7
- vst1.8 {d4-d5},[r4,: 128]!
- vadd.i32 q2,q9,q10
- vst1.8 {d0-d1},[r6,: 128]!
- vsub.i32 q0,q9,q10
- vst1.8 {d4-d5},[r4,: 128]!
- vadd.i32 q2,q1,q3
- vst1.8 {d0-d1},[r6,: 128]!
- vsub.i32 q0,q1,q3
- vst1.8 d4,[r4,: 64]
- vst1.8 d0,[r6,: 64]
- add r2,sp,#544
- add r4,r3,#96
- add r5,r3,#144
- vld1.8 {d0-d1},[r2,: 128]
- vld1.8 {d2-d3},[r4,: 128]!
- vld1.8 {d4-d5},[r5,: 128]!
- vzip.i32 q1,q2
- vld1.8 {d6-d7},[r4,: 128]!
- vld1.8 {d8-d9},[r5,: 128]!
- vshl.i32 q5,q1,#1
- vzip.i32 q3,q4
- vshl.i32 q6,q2,#1
- vld1.8 {d14},[r4,: 64]
- vshl.i32 q8,q3,#1
- vld1.8 {d15},[r5,: 64]
- vshl.i32 q9,q4,#1
- vmul.i32 d21,d7,d1
- vtrn.32 d14,d15
- vmul.i32 q11,q4,q0
- vmul.i32 q0,q7,q0
- vmull.s32 q12,d2,d2
- vmlal.s32 q12,d11,d1
- vmlal.s32 q12,d12,d0
- vmlal.s32 q12,d13,d23
- vmlal.s32 q12,d16,d22
- vmlal.s32 q12,d7,d21
- vmull.s32 q10,d2,d11
- vmlal.s32 q10,d4,d1
- vmlal.s32 q10,d13,d0
- vmlal.s32 q10,d6,d23
- vmlal.s32 q10,d17,d22
- vmull.s32 q13,d10,d4
- vmlal.s32 q13,d11,d3
- vmlal.s32 q13,d13,d1
- vmlal.s32 q13,d16,d0
- vmlal.s32 q13,d17,d23
- vmlal.s32 q13,d8,d22
- vmull.s32 q1,d10,d5
- vmlal.s32 q1,d11,d4
- vmlal.s32 q1,d6,d1
- vmlal.s32 q1,d17,d0
- vmlal.s32 q1,d8,d23
- vmull.s32 q14,d10,d6
- vmlal.s32 q14,d11,d13
- vmlal.s32 q14,d4,d4
- vmlal.s32 q14,d17,d1
- vmlal.s32 q14,d18,d0
- vmlal.s32 q14,d9,d23
- vmull.s32 q11,d10,d7
- vmlal.s32 q11,d11,d6
- vmlal.s32 q11,d12,d5
- vmlal.s32 q11,d8,d1
- vmlal.s32 q11,d19,d0
- vmull.s32 q15,d10,d8
- vmlal.s32 q15,d11,d17
- vmlal.s32 q15,d12,d6
- vmlal.s32 q15,d13,d5
- vmlal.s32 q15,d19,d1
- vmlal.s32 q15,d14,d0
- vmull.s32 q2,d10,d9
- vmlal.s32 q2,d11,d8
- vmlal.s32 q2,d12,d7
- vmlal.s32 q2,d13,d6
- vmlal.s32 q2,d14,d1
- vmull.s32 q0,d15,d1
- vmlal.s32 q0,d10,d14
- vmlal.s32 q0,d11,d19
- vmlal.s32 q0,d12,d8
- vmlal.s32 q0,d13,d17
- vmlal.s32 q0,d6,d6
- add r2,sp,#512
- vld1.8 {d18-d19},[r2,: 128]
- vmull.s32 q3,d16,d7
- vmlal.s32 q3,d10,d15
- vmlal.s32 q3,d11,d14
- vmlal.s32 q3,d12,d9
- vmlal.s32 q3,d13,d8
- add r2,sp,#528
- vld1.8 {d8-d9},[r2,: 128]
- vadd.i64 q5,q12,q9
- vadd.i64 q6,q15,q9
- vshr.s64 q5,q5,#26
- vshr.s64 q6,q6,#26
- vadd.i64 q7,q10,q5
- vshl.i64 q5,q5,#26
- vadd.i64 q8,q7,q4
- vadd.i64 q2,q2,q6
- vshl.i64 q6,q6,#26
- vadd.i64 q10,q2,q4
- vsub.i64 q5,q12,q5
- vshr.s64 q8,q8,#25
- vsub.i64 q6,q15,q6
- vshr.s64 q10,q10,#25
- vadd.i64 q12,q13,q8
- vshl.i64 q8,q8,#25
- vadd.i64 q13,q12,q9
- vadd.i64 q0,q0,q10
- vsub.i64 q7,q7,q8
- vshr.s64 q8,q13,#26
- vshl.i64 q10,q10,#25
- vadd.i64 q13,q0,q9
- vadd.i64 q1,q1,q8
- vshl.i64 q8,q8,#26
- vadd.i64 q15,q1,q4
- vsub.i64 q2,q2,q10
- vshr.s64 q10,q13,#26
- vsub.i64 q8,q12,q8
- vshr.s64 q12,q15,#25
- vadd.i64 q3,q3,q10
- vshl.i64 q10,q10,#26
- vadd.i64 q13,q3,q4
- vadd.i64 q14,q14,q12
- add r2,r3,#288
- vshl.i64 q12,q12,#25
- add r4,r3,#336
- vadd.i64 q15,q14,q9
- add r2,r2,#8
- vsub.i64 q0,q0,q10
- add r4,r4,#8
- vshr.s64 q10,q13,#25
- vsub.i64 q1,q1,q12
- vshr.s64 q12,q15,#26
- vadd.i64 q13,q10,q10
- vadd.i64 q11,q11,q12
- vtrn.32 d16,d2
- vshl.i64 q12,q12,#26
- vtrn.32 d17,d3
- vadd.i64 q1,q11,q4
- vadd.i64 q4,q5,q13
- vst1.8 d16,[r2,: 64]!
- vshl.i64 q5,q10,#4
- vst1.8 d17,[r4,: 64]!
- vsub.i64 q8,q14,q12
- vshr.s64 q1,q1,#25
- vadd.i64 q4,q4,q5
- vadd.i64 q5,q6,q1
- vshl.i64 q1,q1,#25
- vadd.i64 q6,q5,q9
- vadd.i64 q4,q4,q10
- vshl.i64 q10,q10,#25
- vadd.i64 q9,q4,q9
- vsub.i64 q1,q11,q1
- vshr.s64 q6,q6,#26
- vsub.i64 q3,q3,q10
- vtrn.32 d16,d2
- vshr.s64 q9,q9,#26
- vtrn.32 d17,d3
- vadd.i64 q1,q2,q6
- vst1.8 d16,[r2,: 64]
- vshl.i64 q2,q6,#26
- vst1.8 d17,[r4,: 64]
- vadd.i64 q6,q7,q9
- vtrn.32 d0,d6
- vshl.i64 q7,q9,#26
- vtrn.32 d1,d7
- vsub.i64 q2,q5,q2
- add r2,r2,#16
- vsub.i64 q3,q4,q7
- vst1.8 d0,[r2,: 64]
- add r4,r4,#16
- vst1.8 d1,[r4,: 64]
- vtrn.32 d4,d2
- vtrn.32 d5,d3
- sub r2,r2,#8
- sub r4,r4,#8
- vtrn.32 d6,d12
- vtrn.32 d7,d13
- vst1.8 d4,[r2,: 64]
- vst1.8 d5,[r4,: 64]
- sub r2,r2,#24
- sub r4,r4,#24
- vst1.8 d6,[r2,: 64]
- vst1.8 d7,[r4,: 64]
- add r2,r3,#240
- add r4,r3,#96
- vld1.8 {d0-d1},[r4,: 128]!
- vld1.8 {d2-d3},[r4,: 128]!
- vld1.8 {d4},[r4,: 64]
- add r4,r3,#144
- vld1.8 {d6-d7},[r4,: 128]!
- vtrn.32 q0,q3
- vld1.8 {d8-d9},[r4,: 128]!
- vshl.i32 q5,q0,#4
- vtrn.32 q1,q4
- vshl.i32 q6,q3,#4
- vadd.i32 q5,q5,q0
- vadd.i32 q6,q6,q3
- vshl.i32 q7,q1,#4
- vld1.8 {d5},[r4,: 64]
- vshl.i32 q8,q4,#4
- vtrn.32 d4,d5
- vadd.i32 q7,q7,q1
- vadd.i32 q8,q8,q4
- vld1.8 {d18-d19},[r2,: 128]!
- vshl.i32 q10,q2,#4
- vld1.8 {d22-d23},[r2,: 128]!
- vadd.i32 q10,q10,q2
- vld1.8 {d24},[r2,: 64]
- vadd.i32 q5,q5,q0
- add r2,r3,#192
- vld1.8 {d26-d27},[r2,: 128]!
- vadd.i32 q6,q6,q3
- vld1.8 {d28-d29},[r2,: 128]!
- vadd.i32 q8,q8,q4
- vld1.8 {d25},[r2,: 64]
- vadd.i32 q10,q10,q2
- vtrn.32 q9,q13
- vadd.i32 q7,q7,q1
- vadd.i32 q5,q5,q0
- vtrn.32 q11,q14
- vadd.i32 q6,q6,q3
- add r2,sp,#560
- vadd.i32 q10,q10,q2
- vtrn.32 d24,d25
- vst1.8 {d12-d13},[r2,: 128]
- vshl.i32 q6,q13,#1
- add r2,sp,#576
- vst1.8 {d20-d21},[r2,: 128]
- vshl.i32 q10,q14,#1
- add r2,sp,#592
- vst1.8 {d12-d13},[r2,: 128]
- vshl.i32 q15,q12,#1
- vadd.i32 q8,q8,q4
- vext.32 d10,d31,d30,#0
- vadd.i32 q7,q7,q1
- add r2,sp,#608
- vst1.8 {d16-d17},[r2,: 128]
- vmull.s32 q8,d18,d5
- vmlal.s32 q8,d26,d4
- vmlal.s32 q8,d19,d9
- vmlal.s32 q8,d27,d3
- vmlal.s32 q8,d22,d8
- vmlal.s32 q8,d28,d2
- vmlal.s32 q8,d23,d7
- vmlal.s32 q8,d29,d1
- vmlal.s32 q8,d24,d6
- vmlal.s32 q8,d25,d0
- add r2,sp,#624
- vst1.8 {d14-d15},[r2,: 128]
- vmull.s32 q2,d18,d4
- vmlal.s32 q2,d12,d9
- vmlal.s32 q2,d13,d8
- vmlal.s32 q2,d19,d3
- vmlal.s32 q2,d22,d2
- vmlal.s32 q2,d23,d1
- vmlal.s32 q2,d24,d0
- add r2,sp,#640
- vst1.8 {d20-d21},[r2,: 128]
- vmull.s32 q7,d18,d9
- vmlal.s32 q7,d26,d3
- vmlal.s32 q7,d19,d8
- vmlal.s32 q7,d27,d2
- vmlal.s32 q7,d22,d7
- vmlal.s32 q7,d28,d1
- vmlal.s32 q7,d23,d6
- vmlal.s32 q7,d29,d0
- add r2,sp,#656
- vst1.8 {d10-d11},[r2,: 128]
- vmull.s32 q5,d18,d3
- vmlal.s32 q5,d19,d2
- vmlal.s32 q5,d22,d1
- vmlal.s32 q5,d23,d0
- vmlal.s32 q5,d12,d8
- add r2,sp,#672
- vst1.8 {d16-d17},[r2,: 128]
- vmull.s32 q4,d18,d8
- vmlal.s32 q4,d26,d2
- vmlal.s32 q4,d19,d7
- vmlal.s32 q4,d27,d1
- vmlal.s32 q4,d22,d6
- vmlal.s32 q4,d28,d0
- vmull.s32 q8,d18,d7
- vmlal.s32 q8,d26,d1
- vmlal.s32 q8,d19,d6
- vmlal.s32 q8,d27,d0
- add r2,sp,#576
- vld1.8 {d20-d21},[r2,: 128]
- vmlal.s32 q7,d24,d21
- vmlal.s32 q7,d25,d20
- vmlal.s32 q4,d23,d21
- vmlal.s32 q4,d29,d20
- vmlal.s32 q8,d22,d21
- vmlal.s32 q8,d28,d20
- vmlal.s32 q5,d24,d20
- add r2,sp,#576
- vst1.8 {d14-d15},[r2,: 128]
- vmull.s32 q7,d18,d6
- vmlal.s32 q7,d26,d0
- add r2,sp,#656
- vld1.8 {d30-d31},[r2,: 128]
- vmlal.s32 q2,d30,d21
- vmlal.s32 q7,d19,d21
- vmlal.s32 q7,d27,d20
- add r2,sp,#624
- vld1.8 {d26-d27},[r2,: 128]
- vmlal.s32 q4,d25,d27
- vmlal.s32 q8,d29,d27
- vmlal.s32 q8,d25,d26
- vmlal.s32 q7,d28,d27
- vmlal.s32 q7,d29,d26
- add r2,sp,#608
- vld1.8 {d28-d29},[r2,: 128]
- vmlal.s32 q4,d24,d29
- vmlal.s32 q8,d23,d29
- vmlal.s32 q8,d24,d28
- vmlal.s32 q7,d22,d29
- vmlal.s32 q7,d23,d28
- add r2,sp,#608
- vst1.8 {d8-d9},[r2,: 128]
- add r2,sp,#560
- vld1.8 {d8-d9},[r2,: 128]
- vmlal.s32 q7,d24,d9
- vmlal.s32 q7,d25,d31
- vmull.s32 q1,d18,d2
- vmlal.s32 q1,d19,d1
- vmlal.s32 q1,d22,d0
- vmlal.s32 q1,d24,d27
- vmlal.s32 q1,d23,d20
- vmlal.s32 q1,d12,d7
- vmlal.s32 q1,d13,d6
- vmull.s32 q6,d18,d1
- vmlal.s32 q6,d19,d0
- vmlal.s32 q6,d23,d27
- vmlal.s32 q6,d22,d20
- vmlal.s32 q6,d24,d26
- vmull.s32 q0,d18,d0
- vmlal.s32 q0,d22,d27
- vmlal.s32 q0,d23,d26
- vmlal.s32 q0,d24,d31
- vmlal.s32 q0,d19,d20
- add r2,sp,#640
- vld1.8 {d18-d19},[r2,: 128]
- vmlal.s32 q2,d18,d7
- vmlal.s32 q2,d19,d6
- vmlal.s32 q5,d18,d6
- vmlal.s32 q5,d19,d21
- vmlal.s32 q1,d18,d21
- vmlal.s32 q1,d19,d29
- vmlal.s32 q0,d18,d28
- vmlal.s32 q0,d19,d9
- vmlal.s32 q6,d18,d29
- vmlal.s32 q6,d19,d28
- add r2,sp,#592
- vld1.8 {d18-d19},[r2,: 128]
- add r2,sp,#512
- vld1.8 {d22-d23},[r2,: 128]
- vmlal.s32 q5,d19,d7
- vmlal.s32 q0,d18,d21
- vmlal.s32 q0,d19,d29
- vmlal.s32 q6,d18,d6
- add r2,sp,#528
- vld1.8 {d6-d7},[r2,: 128]
- vmlal.s32 q6,d19,d21
- add r2,sp,#576
- vld1.8 {d18-d19},[r2,: 128]
- vmlal.s32 q0,d30,d8
- add r2,sp,#672
- vld1.8 {d20-d21},[r2,: 128]
- vmlal.s32 q5,d30,d29
- add r2,sp,#608
- vld1.8 {d24-d25},[r2,: 128]
- vmlal.s32 q1,d30,d28
- vadd.i64 q13,q0,q11
- vadd.i64 q14,q5,q11
- vmlal.s32 q6,d30,d9
- vshr.s64 q4,q13,#26
- vshr.s64 q13,q14,#26
- vadd.i64 q7,q7,q4
- vshl.i64 q4,q4,#26
- vadd.i64 q14,q7,q3
- vadd.i64 q9,q9,q13
- vshl.i64 q13,q13,#26
- vadd.i64 q15,q9,q3
- vsub.i64 q0,q0,q4
- vshr.s64 q4,q14,#25
- vsub.i64 q5,q5,q13
- vshr.s64 q13,q15,#25
- vadd.i64 q6,q6,q4
- vshl.i64 q4,q4,#25
- vadd.i64 q14,q6,q11
- vadd.i64 q2,q2,q13
- vsub.i64 q4,q7,q4
- vshr.s64 q7,q14,#26
- vshl.i64 q13,q13,#25
- vadd.i64 q14,q2,q11
- vadd.i64 q8,q8,q7
- vshl.i64 q7,q7,#26
- vadd.i64 q15,q8,q3
- vsub.i64 q9,q9,q13
- vshr.s64 q13,q14,#26
- vsub.i64 q6,q6,q7
- vshr.s64 q7,q15,#25
- vadd.i64 q10,q10,q13
- vshl.i64 q13,q13,#26
- vadd.i64 q14,q10,q3
- vadd.i64 q1,q1,q7
- add r2,r3,#144
- vshl.i64 q7,q7,#25
- add r4,r3,#96
- vadd.i64 q15,q1,q11
- add r2,r2,#8
- vsub.i64 q2,q2,q13
- add r4,r4,#8
- vshr.s64 q13,q14,#25
- vsub.i64 q7,q8,q7
- vshr.s64 q8,q15,#26
- vadd.i64 q14,q13,q13
- vadd.i64 q12,q12,q8
- vtrn.32 d12,d14
- vshl.i64 q8,q8,#26
- vtrn.32 d13,d15
- vadd.i64 q3,q12,q3
- vadd.i64 q0,q0,q14
- vst1.8 d12,[r2,: 64]!
- vshl.i64 q7,q13,#4
- vst1.8 d13,[r4,: 64]!
- vsub.i64 q1,q1,q8
- vshr.s64 q3,q3,#25
- vadd.i64 q0,q0,q7
- vadd.i64 q5,q5,q3
- vshl.i64 q3,q3,#25
- vadd.i64 q6,q5,q11
- vadd.i64 q0,q0,q13
- vshl.i64 q7,q13,#25
- vadd.i64 q8,q0,q11
- vsub.i64 q3,q12,q3
- vshr.s64 q6,q6,#26
- vsub.i64 q7,q10,q7
- vtrn.32 d2,d6
- vshr.s64 q8,q8,#26
- vtrn.32 d3,d7
- vadd.i64 q3,q9,q6
- vst1.8 d2,[r2,: 64]
- vshl.i64 q6,q6,#26
- vst1.8 d3,[r4,: 64]
- vadd.i64 q1,q4,q8
- vtrn.32 d4,d14
- vshl.i64 q4,q8,#26
- vtrn.32 d5,d15
- vsub.i64 q5,q5,q6
- add r2,r2,#16
- vsub.i64 q0,q0,q4
- vst1.8 d4,[r2,: 64]
- add r4,r4,#16
- vst1.8 d5,[r4,: 64]
- vtrn.32 d10,d6
- vtrn.32 d11,d7
- sub r2,r2,#8
- sub r4,r4,#8
- vtrn.32 d0,d2
- vtrn.32 d1,d3
- vst1.8 d10,[r2,: 64]
- vst1.8 d11,[r4,: 64]
- sub r2,r2,#24
- sub r4,r4,#24
- vst1.8 d0,[r2,: 64]
- vst1.8 d1,[r4,: 64]
- add r2,r3,#288
- add r4,r3,#336
- vld1.8 {d0-d1},[r2,: 128]!
- vld1.8 {d2-d3},[r4,: 128]!
- vsub.i32 q0,q0,q1
- vld1.8 {d2-d3},[r2,: 128]!
- vld1.8 {d4-d5},[r4,: 128]!
- vsub.i32 q1,q1,q2
- add r5,r3,#240
- vld1.8 {d4},[r2,: 64]
- vld1.8 {d6},[r4,: 64]
- vsub.i32 q2,q2,q3
- vst1.8 {d0-d1},[r5,: 128]!
- vst1.8 {d2-d3},[r5,: 128]!
- vst1.8 d4,[r5,: 64]
- add r2,r3,#144
- add r4,r3,#96
- add r5,r3,#144
- add r6,r3,#192
- vld1.8 {d0-d1},[r2,: 128]!
- vld1.8 {d2-d3},[r4,: 128]!
- vsub.i32 q2,q0,q1
- vadd.i32 q0,q0,q1
- vld1.8 {d2-d3},[r2,: 128]!
- vld1.8 {d6-d7},[r4,: 128]!
- vsub.i32 q4,q1,q3
- vadd.i32 q1,q1,q3
- vld1.8 {d6},[r2,: 64]
- vld1.8 {d10},[r4,: 64]
- vsub.i32 q6,q3,q5
- vadd.i32 q3,q3,q5
- vst1.8 {d4-d5},[r5,: 128]!
- vst1.8 {d0-d1},[r6,: 128]!
- vst1.8 {d8-d9},[r5,: 128]!
- vst1.8 {d2-d3},[r6,: 128]!
- vst1.8 d12,[r5,: 64]
- vst1.8 d6,[r6,: 64]
- add r2,r3,#0
- add r4,r3,#240
- vld1.8 {d0-d1},[r4,: 128]!
- vld1.8 {d2-d3},[r4,: 128]!
- vld1.8 {d4},[r4,: 64]
- add r4,r3,#336
- vld1.8 {d6-d7},[r4,: 128]!
- vtrn.32 q0,q3
- vld1.8 {d8-d9},[r4,: 128]!
- vshl.i32 q5,q0,#4
- vtrn.32 q1,q4
- vshl.i32 q6,q3,#4
- vadd.i32 q5,q5,q0
- vadd.i32 q6,q6,q3
- vshl.i32 q7,q1,#4
- vld1.8 {d5},[r4,: 64]
- vshl.i32 q8,q4,#4
- vtrn.32 d4,d5
- vadd.i32 q7,q7,q1
- vadd.i32 q8,q8,q4
- vld1.8 {d18-d19},[r2,: 128]!
- vshl.i32 q10,q2,#4
- vld1.8 {d22-d23},[r2,: 128]!
- vadd.i32 q10,q10,q2
- vld1.8 {d24},[r2,: 64]
- vadd.i32 q5,q5,q0
- add r2,r3,#288
- vld1.8 {d26-d27},[r2,: 128]!
- vadd.i32 q6,q6,q3
- vld1.8 {d28-d29},[r2,: 128]!
- vadd.i32 q8,q8,q4
- vld1.8 {d25},[r2,: 64]
- vadd.i32 q10,q10,q2
- vtrn.32 q9,q13
- vadd.i32 q7,q7,q1
- vadd.i32 q5,q5,q0
- vtrn.32 q11,q14
- vadd.i32 q6,q6,q3
- add r2,sp,#560
- vadd.i32 q10,q10,q2
- vtrn.32 d24,d25
- vst1.8 {d12-d13},[r2,: 128]
- vshl.i32 q6,q13,#1
- add r2,sp,#576
- vst1.8 {d20-d21},[r2,: 128]
- vshl.i32 q10,q14,#1
- add r2,sp,#592
- vst1.8 {d12-d13},[r2,: 128]
- vshl.i32 q15,q12,#1
- vadd.i32 q8,q8,q4
- vext.32 d10,d31,d30,#0
- vadd.i32 q7,q7,q1
- add r2,sp,#608
- vst1.8 {d16-d17},[r2,: 128]
- vmull.s32 q8,d18,d5
- vmlal.s32 q8,d26,d4
- vmlal.s32 q8,d19,d9
- vmlal.s32 q8,d27,d3
- vmlal.s32 q8,d22,d8
- vmlal.s32 q8,d28,d2
- vmlal.s32 q8,d23,d7
- vmlal.s32 q8,d29,d1
- vmlal.s32 q8,d24,d6
- vmlal.s32 q8,d25,d0
- add r2,sp,#624
- vst1.8 {d14-d15},[r2,: 128]
- vmull.s32 q2,d18,d4
- vmlal.s32 q2,d12,d9
- vmlal.s32 q2,d13,d8
- vmlal.s32 q2,d19,d3
- vmlal.s32 q2,d22,d2
- vmlal.s32 q2,d23,d1
- vmlal.s32 q2,d24,d0
- add r2,sp,#640
- vst1.8 {d20-d21},[r2,: 128]
- vmull.s32 q7,d18,d9
- vmlal.s32 q7,d26,d3
- vmlal.s32 q7,d19,d8
- vmlal.s32 q7,d27,d2
- vmlal.s32 q7,d22,d7
- vmlal.s32 q7,d28,d1
- vmlal.s32 q7,d23,d6
- vmlal.s32 q7,d29,d0
- add r2,sp,#656
- vst1.8 {d10-d11},[r2,: 128]
- vmull.s32 q5,d18,d3
- vmlal.s32 q5,d19,d2
- vmlal.s32 q5,d22,d1
- vmlal.s32 q5,d23,d0
- vmlal.s32 q5,d12,d8
- add r2,sp,#672
- vst1.8 {d16-d17},[r2,: 128]
- vmull.s32 q4,d18,d8
- vmlal.s32 q4,d26,d2
- vmlal.s32 q4,d19,d7
- vmlal.s32 q4,d27,d1
- vmlal.s32 q4,d22,d6
- vmlal.s32 q4,d28,d0
- vmull.s32 q8,d18,d7
- vmlal.s32 q8,d26,d1
- vmlal.s32 q8,d19,d6
- vmlal.s32 q8,d27,d0
- add r2,sp,#576
- vld1.8 {d20-d21},[r2,: 128]
- vmlal.s32 q7,d24,d21
- vmlal.s32 q7,d25,d20
- vmlal.s32 q4,d23,d21
- vmlal.s32 q4,d29,d20
- vmlal.s32 q8,d22,d21
- vmlal.s32 q8,d28,d20
- vmlal.s32 q5,d24,d20
- add r2,sp,#576
- vst1.8 {d14-d15},[r2,: 128]
- vmull.s32 q7,d18,d6
- vmlal.s32 q7,d26,d0
- add r2,sp,#656
- vld1.8 {d30-d31},[r2,: 128]
- vmlal.s32 q2,d30,d21
- vmlal.s32 q7,d19,d21
- vmlal.s32 q7,d27,d20
- add r2,sp,#624
- vld1.8 {d26-d27},[r2,: 128]
- vmlal.s32 q4,d25,d27
- vmlal.s32 q8,d29,d27
- vmlal.s32 q8,d25,d26
- vmlal.s32 q7,d28,d27
- vmlal.s32 q7,d29,d26
- add r2,sp,#608
- vld1.8 {d28-d29},[r2,: 128]
- vmlal.s32 q4,d24,d29
- vmlal.s32 q8,d23,d29
- vmlal.s32 q8,d24,d28
- vmlal.s32 q7,d22,d29
- vmlal.s32 q7,d23,d28
- add r2,sp,#608
- vst1.8 {d8-d9},[r2,: 128]
- add r2,sp,#560
- vld1.8 {d8-d9},[r2,: 128]
- vmlal.s32 q7,d24,d9
- vmlal.s32 q7,d25,d31
- vmull.s32 q1,d18,d2
- vmlal.s32 q1,d19,d1
- vmlal.s32 q1,d22,d0
- vmlal.s32 q1,d24,d27
- vmlal.s32 q1,d23,d20
- vmlal.s32 q1,d12,d7
- vmlal.s32 q1,d13,d6
- vmull.s32 q6,d18,d1
- vmlal.s32 q6,d19,d0
- vmlal.s32 q6,d23,d27
- vmlal.s32 q6,d22,d20
- vmlal.s32 q6,d24,d26
- vmull.s32 q0,d18,d0
- vmlal.s32 q0,d22,d27
- vmlal.s32 q0,d23,d26
- vmlal.s32 q0,d24,d31
- vmlal.s32 q0,d19,d20
- add r2,sp,#640
- vld1.8 {d18-d19},[r2,: 128]
- vmlal.s32 q2,d18,d7
- vmlal.s32 q2,d19,d6
- vmlal.s32 q5,d18,d6
- vmlal.s32 q5,d19,d21
- vmlal.s32 q1,d18,d21
- vmlal.s32 q1,d19,d29
- vmlal.s32 q0,d18,d28
- vmlal.s32 q0,d19,d9
- vmlal.s32 q6,d18,d29
- vmlal.s32 q6,d19,d28
- add r2,sp,#592
- vld1.8 {d18-d19},[r2,: 128]
- add r2,sp,#512
- vld1.8 {d22-d23},[r2,: 128]
- vmlal.s32 q5,d19,d7
- vmlal.s32 q0,d18,d21
- vmlal.s32 q0,d19,d29
- vmlal.s32 q6,d18,d6
- add r2,sp,#528
- vld1.8 {d6-d7},[r2,: 128]
- vmlal.s32 q6,d19,d21
- add r2,sp,#576
- vld1.8 {d18-d19},[r2,: 128]
- vmlal.s32 q0,d30,d8
- add r2,sp,#672
- vld1.8 {d20-d21},[r2,: 128]
- vmlal.s32 q5,d30,d29
- add r2,sp,#608
- vld1.8 {d24-d25},[r2,: 128]
- vmlal.s32 q1,d30,d28
- vadd.i64 q13,q0,q11
- vadd.i64 q14,q5,q11
- vmlal.s32 q6,d30,d9
- vshr.s64 q4,q13,#26
- vshr.s64 q13,q14,#26
- vadd.i64 q7,q7,q4
- vshl.i64 q4,q4,#26
- vadd.i64 q14,q7,q3
- vadd.i64 q9,q9,q13
- vshl.i64 q13,q13,#26
- vadd.i64 q15,q9,q3
- vsub.i64 q0,q0,q4
- vshr.s64 q4,q14,#25
- vsub.i64 q5,q5,q13
- vshr.s64 q13,q15,#25
- vadd.i64 q6,q6,q4
- vshl.i64 q4,q4,#25
- vadd.i64 q14,q6,q11
- vadd.i64 q2,q2,q13
- vsub.i64 q4,q7,q4
- vshr.s64 q7,q14,#26
- vshl.i64 q13,q13,#25
- vadd.i64 q14,q2,q11
- vadd.i64 q8,q8,q7
- vshl.i64 q7,q7,#26
- vadd.i64 q15,q8,q3
- vsub.i64 q9,q9,q13
- vshr.s64 q13,q14,#26
- vsub.i64 q6,q6,q7
- vshr.s64 q7,q15,#25
- vadd.i64 q10,q10,q13
- vshl.i64 q13,q13,#26
- vadd.i64 q14,q10,q3
- vadd.i64 q1,q1,q7
- add r2,r3,#288
- vshl.i64 q7,q7,#25
- add r4,r3,#96
- vadd.i64 q15,q1,q11
- add r2,r2,#8
- vsub.i64 q2,q2,q13
- add r4,r4,#8
- vshr.s64 q13,q14,#25
- vsub.i64 q7,q8,q7
- vshr.s64 q8,q15,#26
- vadd.i64 q14,q13,q13
- vadd.i64 q12,q12,q8
- vtrn.32 d12,d14
- vshl.i64 q8,q8,#26
- vtrn.32 d13,d15
- vadd.i64 q3,q12,q3
- vadd.i64 q0,q0,q14
- vst1.8 d12,[r2,: 64]!
- vshl.i64 q7,q13,#4
- vst1.8 d13,[r4,: 64]!
- vsub.i64 q1,q1,q8
- vshr.s64 q3,q3,#25
- vadd.i64 q0,q0,q7
- vadd.i64 q5,q5,q3
- vshl.i64 q3,q3,#25
- vadd.i64 q6,q5,q11
- vadd.i64 q0,q0,q13
- vshl.i64 q7,q13,#25
- vadd.i64 q8,q0,q11
- vsub.i64 q3,q12,q3
- vshr.s64 q6,q6,#26
- vsub.i64 q7,q10,q7
- vtrn.32 d2,d6
- vshr.s64 q8,q8,#26
- vtrn.32 d3,d7
- vadd.i64 q3,q9,q6
- vst1.8 d2,[r2,: 64]
- vshl.i64 q6,q6,#26
- vst1.8 d3,[r4,: 64]
- vadd.i64 q1,q4,q8
- vtrn.32 d4,d14
- vshl.i64 q4,q8,#26
- vtrn.32 d5,d15
- vsub.i64 q5,q5,q6
- add r2,r2,#16
- vsub.i64 q0,q0,q4
- vst1.8 d4,[r2,: 64]
- add r4,r4,#16
- vst1.8 d5,[r4,: 64]
- vtrn.32 d10,d6
- vtrn.32 d11,d7
- sub r2,r2,#8
- sub r4,r4,#8
- vtrn.32 d0,d2
- vtrn.32 d1,d3
- vst1.8 d10,[r2,: 64]
- vst1.8 d11,[r4,: 64]
- sub r2,r2,#24
- sub r4,r4,#24
- vst1.8 d0,[r2,: 64]
- vst1.8 d1,[r4,: 64]
- add r2,sp,#544
- add r4,r3,#144
- add r5,r3,#192
- vld1.8 {d0-d1},[r2,: 128]
- vld1.8 {d2-d3},[r4,: 128]!
- vld1.8 {d4-d5},[r5,: 128]!
- vzip.i32 q1,q2
- vld1.8 {d6-d7},[r4,: 128]!
- vld1.8 {d8-d9},[r5,: 128]!
- vshl.i32 q5,q1,#1
- vzip.i32 q3,q4
- vshl.i32 q6,q2,#1
- vld1.8 {d14},[r4,: 64]
- vshl.i32 q8,q3,#1
- vld1.8 {d15},[r5,: 64]
- vshl.i32 q9,q4,#1
- vmul.i32 d21,d7,d1
- vtrn.32 d14,d15
- vmul.i32 q11,q4,q0
- vmul.i32 q0,q7,q0
- vmull.s32 q12,d2,d2
- vmlal.s32 q12,d11,d1
- vmlal.s32 q12,d12,d0
- vmlal.s32 q12,d13,d23
- vmlal.s32 q12,d16,d22
- vmlal.s32 q12,d7,d21
- vmull.s32 q10,d2,d11
- vmlal.s32 q10,d4,d1
- vmlal.s32 q10,d13,d0
- vmlal.s32 q10,d6,d23
- vmlal.s32 q10,d17,d22
- vmull.s32 q13,d10,d4
- vmlal.s32 q13,d11,d3
- vmlal.s32 q13,d13,d1
- vmlal.s32 q13,d16,d0
- vmlal.s32 q13,d17,d23
- vmlal.s32 q13,d8,d22
- vmull.s32 q1,d10,d5
- vmlal.s32 q1,d11,d4
- vmlal.s32 q1,d6,d1
- vmlal.s32 q1,d17,d0
- vmlal.s32 q1,d8,d23
- vmull.s32 q14,d10,d6
- vmlal.s32 q14,d11,d13
- vmlal.s32 q14,d4,d4
- vmlal.s32 q14,d17,d1
- vmlal.s32 q14,d18,d0
- vmlal.s32 q14,d9,d23
- vmull.s32 q11,d10,d7
- vmlal.s32 q11,d11,d6
- vmlal.s32 q11,d12,d5
- vmlal.s32 q11,d8,d1
- vmlal.s32 q11,d19,d0
- vmull.s32 q15,d10,d8
- vmlal.s32 q15,d11,d17
- vmlal.s32 q15,d12,d6
- vmlal.s32 q15,d13,d5
- vmlal.s32 q15,d19,d1
- vmlal.s32 q15,d14,d0
- vmull.s32 q2,d10,d9
- vmlal.s32 q2,d11,d8
- vmlal.s32 q2,d12,d7
- vmlal.s32 q2,d13,d6
- vmlal.s32 q2,d14,d1
- vmull.s32 q0,d15,d1
- vmlal.s32 q0,d10,d14
- vmlal.s32 q0,d11,d19
- vmlal.s32 q0,d12,d8
- vmlal.s32 q0,d13,d17
- vmlal.s32 q0,d6,d6
- add r2,sp,#512
- vld1.8 {d18-d19},[r2,: 128]
- vmull.s32 q3,d16,d7
- vmlal.s32 q3,d10,d15
- vmlal.s32 q3,d11,d14
- vmlal.s32 q3,d12,d9
- vmlal.s32 q3,d13,d8
- add r2,sp,#528
- vld1.8 {d8-d9},[r2,: 128]
- vadd.i64 q5,q12,q9
- vadd.i64 q6,q15,q9
- vshr.s64 q5,q5,#26
- vshr.s64 q6,q6,#26
- vadd.i64 q7,q10,q5
- vshl.i64 q5,q5,#26
- vadd.i64 q8,q7,q4
- vadd.i64 q2,q2,q6
- vshl.i64 q6,q6,#26
- vadd.i64 q10,q2,q4
- vsub.i64 q5,q12,q5
- vshr.s64 q8,q8,#25
- vsub.i64 q6,q15,q6
- vshr.s64 q10,q10,#25
- vadd.i64 q12,q13,q8
- vshl.i64 q8,q8,#25
- vadd.i64 q13,q12,q9
- vadd.i64 q0,q0,q10
- vsub.i64 q7,q7,q8
- vshr.s64 q8,q13,#26
- vshl.i64 q10,q10,#25
- vadd.i64 q13,q0,q9
- vadd.i64 q1,q1,q8
- vshl.i64 q8,q8,#26
- vadd.i64 q15,q1,q4
- vsub.i64 q2,q2,q10
- vshr.s64 q10,q13,#26
- vsub.i64 q8,q12,q8
- vshr.s64 q12,q15,#25
- vadd.i64 q3,q3,q10
- vshl.i64 q10,q10,#26
- vadd.i64 q13,q3,q4
- vadd.i64 q14,q14,q12
- add r2,r3,#144
- vshl.i64 q12,q12,#25
- add r4,r3,#192
- vadd.i64 q15,q14,q9
- add r2,r2,#8
- vsub.i64 q0,q0,q10
- add r4,r4,#8
- vshr.s64 q10,q13,#25
- vsub.i64 q1,q1,q12
- vshr.s64 q12,q15,#26
- vadd.i64 q13,q10,q10
- vadd.i64 q11,q11,q12
- vtrn.32 d16,d2
- vshl.i64 q12,q12,#26
- vtrn.32 d17,d3
- vadd.i64 q1,q11,q4
- vadd.i64 q4,q5,q13
- vst1.8 d16,[r2,: 64]!
- vshl.i64 q5,q10,#4
- vst1.8 d17,[r4,: 64]!
- vsub.i64 q8,q14,q12
- vshr.s64 q1,q1,#25
- vadd.i64 q4,q4,q5
- vadd.i64 q5,q6,q1
- vshl.i64 q1,q1,#25
- vadd.i64 q6,q5,q9
- vadd.i64 q4,q4,q10
- vshl.i64 q10,q10,#25
- vadd.i64 q9,q4,q9
- vsub.i64 q1,q11,q1
- vshr.s64 q6,q6,#26
- vsub.i64 q3,q3,q10
- vtrn.32 d16,d2
- vshr.s64 q9,q9,#26
- vtrn.32 d17,d3
- vadd.i64 q1,q2,q6
- vst1.8 d16,[r2,: 64]
- vshl.i64 q2,q6,#26
- vst1.8 d17,[r4,: 64]
- vadd.i64 q6,q7,q9
- vtrn.32 d0,d6
- vshl.i64 q7,q9,#26
- vtrn.32 d1,d7
- vsub.i64 q2,q5,q2
- add r2,r2,#16
- vsub.i64 q3,q4,q7
- vst1.8 d0,[r2,: 64]
- add r4,r4,#16
- vst1.8 d1,[r4,: 64]
- vtrn.32 d4,d2
- vtrn.32 d5,d3
- sub r2,r2,#8
- sub r4,r4,#8
- vtrn.32 d6,d12
- vtrn.32 d7,d13
- vst1.8 d4,[r2,: 64]
- vst1.8 d5,[r4,: 64]
- sub r2,r2,#24
- sub r4,r4,#24
- vst1.8 d6,[r2,: 64]
- vst1.8 d7,[r4,: 64]
- add r2,r3,#336
- add r4,r3,#288
- vld1.8 {d0-d1},[r2,: 128]!
- vld1.8 {d2-d3},[r4,: 128]!
- vadd.i32 q0,q0,q1
- vld1.8 {d2-d3},[r2,: 128]!
- vld1.8 {d4-d5},[r4,: 128]!
- vadd.i32 q1,q1,q2
- add r5,r3,#288
- vld1.8 {d4},[r2,: 64]
- vld1.8 {d6},[r4,: 64]
- vadd.i32 q2,q2,q3
- vst1.8 {d0-d1},[r5,: 128]!
- vst1.8 {d2-d3},[r5,: 128]!
- vst1.8 d4,[r5,: 64]
- add r2,r3,#48
- add r4,r3,#144
- vld1.8 {d0-d1},[r4,: 128]!
- vld1.8 {d2-d3},[r4,: 128]!
- vld1.8 {d4},[r4,: 64]
- add r4,r3,#288
- vld1.8 {d6-d7},[r4,: 128]!
- vtrn.32 q0,q3
- vld1.8 {d8-d9},[r4,: 128]!
- vshl.i32 q5,q0,#4
- vtrn.32 q1,q4
- vshl.i32 q6,q3,#4
- vadd.i32 q5,q5,q0
- vadd.i32 q6,q6,q3
- vshl.i32 q7,q1,#4
- vld1.8 {d5},[r4,: 64]
- vshl.i32 q8,q4,#4
- vtrn.32 d4,d5
- vadd.i32 q7,q7,q1
- vadd.i32 q8,q8,q4
- vld1.8 {d18-d19},[r2,: 128]!
- vshl.i32 q10,q2,#4
- vld1.8 {d22-d23},[r2,: 128]!
- vadd.i32 q10,q10,q2
- vld1.8 {d24},[r2,: 64]
- vadd.i32 q5,q5,q0
- add r2,r3,#240
- vld1.8 {d26-d27},[r2,: 128]!
- vadd.i32 q6,q6,q3
- vld1.8 {d28-d29},[r2,: 128]!
- vadd.i32 q8,q8,q4
- vld1.8 {d25},[r2,: 64]
- vadd.i32 q10,q10,q2
- vtrn.32 q9,q13
- vadd.i32 q7,q7,q1
- vadd.i32 q5,q5,q0
- vtrn.32 q11,q14
- vadd.i32 q6,q6,q3
- add r2,sp,#560
- vadd.i32 q10,q10,q2
- vtrn.32 d24,d25
- vst1.8 {d12-d13},[r2,: 128]
- vshl.i32 q6,q13,#1
- add r2,sp,#576
- vst1.8 {d20-d21},[r2,: 128]
- vshl.i32 q10,q14,#1
- add r2,sp,#592
- vst1.8 {d12-d13},[r2,: 128]
- vshl.i32 q15,q12,#1
- vadd.i32 q8,q8,q4
- vext.32 d10,d31,d30,#0
- vadd.i32 q7,q7,q1
- add r2,sp,#608
- vst1.8 {d16-d17},[r2,: 128]
- vmull.s32 q8,d18,d5
- vmlal.s32 q8,d26,d4
- vmlal.s32 q8,d19,d9
- vmlal.s32 q8,d27,d3
- vmlal.s32 q8,d22,d8
- vmlal.s32 q8,d28,d2
- vmlal.s32 q8,d23,d7
- vmlal.s32 q8,d29,d1
- vmlal.s32 q8,d24,d6
- vmlal.s32 q8,d25,d0
- add r2,sp,#624
- vst1.8 {d14-d15},[r2,: 128]
- vmull.s32 q2,d18,d4
- vmlal.s32 q2,d12,d9
- vmlal.s32 q2,d13,d8
- vmlal.s32 q2,d19,d3
- vmlal.s32 q2,d22,d2
- vmlal.s32 q2,d23,d1
- vmlal.s32 q2,d24,d0
- add r2,sp,#640
- vst1.8 {d20-d21},[r2,: 128]
- vmull.s32 q7,d18,d9
- vmlal.s32 q7,d26,d3
- vmlal.s32 q7,d19,d8
- vmlal.s32 q7,d27,d2
- vmlal.s32 q7,d22,d7
- vmlal.s32 q7,d28,d1
- vmlal.s32 q7,d23,d6
- vmlal.s32 q7,d29,d0
- add r2,sp,#656
- vst1.8 {d10-d11},[r2,: 128]
- vmull.s32 q5,d18,d3
- vmlal.s32 q5,d19,d2
- vmlal.s32 q5,d22,d1
- vmlal.s32 q5,d23,d0
- vmlal.s32 q5,d12,d8
- add r2,sp,#672
- vst1.8 {d16-d17},[r2,: 128]
- vmull.s32 q4,d18,d8
- vmlal.s32 q4,d26,d2
- vmlal.s32 q4,d19,d7
- vmlal.s32 q4,d27,d1
- vmlal.s32 q4,d22,d6
- vmlal.s32 q4,d28,d0
- vmull.s32 q8,d18,d7
- vmlal.s32 q8,d26,d1
- vmlal.s32 q8,d19,d6
- vmlal.s32 q8,d27,d0
- add r2,sp,#576
- vld1.8 {d20-d21},[r2,: 128]
- vmlal.s32 q7,d24,d21
- vmlal.s32 q7,d25,d20
- vmlal.s32 q4,d23,d21
- vmlal.s32 q4,d29,d20
- vmlal.s32 q8,d22,d21
- vmlal.s32 q8,d28,d20
- vmlal.s32 q5,d24,d20
- add r2,sp,#576
- vst1.8 {d14-d15},[r2,: 128]
- vmull.s32 q7,d18,d6
- vmlal.s32 q7,d26,d0
- add r2,sp,#656
- vld1.8 {d30-d31},[r2,: 128]
- vmlal.s32 q2,d30,d21
- vmlal.s32 q7,d19,d21
- vmlal.s32 q7,d27,d20
- add r2,sp,#624
- vld1.8 {d26-d27},[r2,: 128]
- vmlal.s32 q4,d25,d27
- vmlal.s32 q8,d29,d27
- vmlal.s32 q8,d25,d26
- vmlal.s32 q7,d28,d27
- vmlal.s32 q7,d29,d26
- add r2,sp,#608
- vld1.8 {d28-d29},[r2,: 128]
- vmlal.s32 q4,d24,d29
- vmlal.s32 q8,d23,d29
- vmlal.s32 q8,d24,d28
- vmlal.s32 q7,d22,d29
- vmlal.s32 q7,d23,d28
- add r2,sp,#608
- vst1.8 {d8-d9},[r2,: 128]
- add r2,sp,#560
- vld1.8 {d8-d9},[r2,: 128]
- vmlal.s32 q7,d24,d9
- vmlal.s32 q7,d25,d31
- vmull.s32 q1,d18,d2
- vmlal.s32 q1,d19,d1
- vmlal.s32 q1,d22,d0
- vmlal.s32 q1,d24,d27
- vmlal.s32 q1,d23,d20
- vmlal.s32 q1,d12,d7
- vmlal.s32 q1,d13,d6
- vmull.s32 q6,d18,d1
- vmlal.s32 q6,d19,d0
- vmlal.s32 q6,d23,d27
- vmlal.s32 q6,d22,d20
- vmlal.s32 q6,d24,d26
- vmull.s32 q0,d18,d0
- vmlal.s32 q0,d22,d27
- vmlal.s32 q0,d23,d26
- vmlal.s32 q0,d24,d31
- vmlal.s32 q0,d19,d20
- add r2,sp,#640
- vld1.8 {d18-d19},[r2,: 128]
- vmlal.s32 q2,d18,d7
- vmlal.s32 q2,d19,d6
- vmlal.s32 q5,d18,d6
- vmlal.s32 q5,d19,d21
- vmlal.s32 q1,d18,d21
- vmlal.s32 q1,d19,d29
- vmlal.s32 q0,d18,d28
- vmlal.s32 q0,d19,d9
- vmlal.s32 q6,d18,d29
- vmlal.s32 q6,d19,d28
- add r2,sp,#592
- vld1.8 {d18-d19},[r2,: 128]
- add r2,sp,#512
- vld1.8 {d22-d23},[r2,: 128]
- vmlal.s32 q5,d19,d7
- vmlal.s32 q0,d18,d21
- vmlal.s32 q0,d19,d29
- vmlal.s32 q6,d18,d6
- add r2,sp,#528
- vld1.8 {d6-d7},[r2,: 128]
- vmlal.s32 q6,d19,d21
- add r2,sp,#576
- vld1.8 {d18-d19},[r2,: 128]
- vmlal.s32 q0,d30,d8
- add r2,sp,#672
- vld1.8 {d20-d21},[r2,: 128]
- vmlal.s32 q5,d30,d29
- add r2,sp,#608
- vld1.8 {d24-d25},[r2,: 128]
- vmlal.s32 q1,d30,d28
- vadd.i64 q13,q0,q11
- vadd.i64 q14,q5,q11
- vmlal.s32 q6,d30,d9
- vshr.s64 q4,q13,#26
- vshr.s64 q13,q14,#26
- vadd.i64 q7,q7,q4
- vshl.i64 q4,q4,#26
- vadd.i64 q14,q7,q3
- vadd.i64 q9,q9,q13
- vshl.i64 q13,q13,#26
- vadd.i64 q15,q9,q3
- vsub.i64 q0,q0,q4
- vshr.s64 q4,q14,#25
- vsub.i64 q5,q5,q13
- vshr.s64 q13,q15,#25
- vadd.i64 q6,q6,q4
- vshl.i64 q4,q4,#25
- vadd.i64 q14,q6,q11
- vadd.i64 q2,q2,q13
- vsub.i64 q4,q7,q4
- vshr.s64 q7,q14,#26
- vshl.i64 q13,q13,#25
- vadd.i64 q14,q2,q11
- vadd.i64 q8,q8,q7
- vshl.i64 q7,q7,#26
- vadd.i64 q15,q8,q3
- vsub.i64 q9,q9,q13
- vshr.s64 q13,q14,#26
- vsub.i64 q6,q6,q7
- vshr.s64 q7,q15,#25
- vadd.i64 q10,q10,q13
- vshl.i64 q13,q13,#26
- vadd.i64 q14,q10,q3
- vadd.i64 q1,q1,q7
- add r2,r3,#240
- vshl.i64 q7,q7,#25
- add r4,r3,#144
- vadd.i64 q15,q1,q11
- add r2,r2,#8
- vsub.i64 q2,q2,q13
- add r4,r4,#8
- vshr.s64 q13,q14,#25
- vsub.i64 q7,q8,q7
- vshr.s64 q8,q15,#26
- vadd.i64 q14,q13,q13
- vadd.i64 q12,q12,q8
- vtrn.32 d12,d14
- vshl.i64 q8,q8,#26
- vtrn.32 d13,d15
- vadd.i64 q3,q12,q3
- vadd.i64 q0,q0,q14
- vst1.8 d12,[r2,: 64]!
- vshl.i64 q7,q13,#4
- vst1.8 d13,[r4,: 64]!
- vsub.i64 q1,q1,q8
- vshr.s64 q3,q3,#25
- vadd.i64 q0,q0,q7
- vadd.i64 q5,q5,q3
- vshl.i64 q3,q3,#25
- vadd.i64 q6,q5,q11
- vadd.i64 q0,q0,q13
- vshl.i64 q7,q13,#25
- vadd.i64 q8,q0,q11
- vsub.i64 q3,q12,q3
- vshr.s64 q6,q6,#26
- vsub.i64 q7,q10,q7
- vtrn.32 d2,d6
- vshr.s64 q8,q8,#26
- vtrn.32 d3,d7
- vadd.i64 q3,q9,q6
- vst1.8 d2,[r2,: 64]
- vshl.i64 q6,q6,#26
- vst1.8 d3,[r4,: 64]
- vadd.i64 q1,q4,q8
- vtrn.32 d4,d14
- vshl.i64 q4,q8,#26
- vtrn.32 d5,d15
- vsub.i64 q5,q5,q6
- add r2,r2,#16
- vsub.i64 q0,q0,q4
- vst1.8 d4,[r2,: 64]
- add r4,r4,#16
- vst1.8 d5,[r4,: 64]
- vtrn.32 d10,d6
- vtrn.32 d11,d7
- sub r2,r2,#8
- sub r4,r4,#8
- vtrn.32 d0,d2
- vtrn.32 d1,d3
- vst1.8 d10,[r2,: 64]
- vst1.8 d11,[r4,: 64]
- sub r2,r2,#24
- sub r4,r4,#24
- vst1.8 d0,[r2,: 64]
- vst1.8 d1,[r4,: 64]
- ldr r2,[sp,#488]
- ldr r4,[sp,#492]
- subs r5,r2,#1
+ mov r2, r5, LSR #3
+ and r6, r5, #7
+ ldrb r2, [r1, r2]
+ mov r2, r2, LSR r6
+ and r2, r2, #1
+ str r5, [sp, #488]
+ eor r4, r4, r2
+ str r2, [sp, #492]
+ neg r2, r4
+ add r4, r3, #96
+ add r5, r3, #192
+ add r6, r3, #144
+ vld1.8 {d8-d9}, [r4, : 128]!
+ add r7, r3, #240
+ vld1.8 {d10-d11}, [r5, : 128]!
+ veor q6, q4, q5
+ vld1.8 {d14-d15}, [r6, : 128]!
+ vdup.i32 q8, r2
+ vld1.8 {d18-d19}, [r7, : 128]!
+ veor q10, q7, q9
+ vld1.8 {d22-d23}, [r4, : 128]!
+ vand q6, q6, q8
+ vld1.8 {d24-d25}, [r5, : 128]!
+ vand q10, q10, q8
+ vld1.8 {d26-d27}, [r6, : 128]!
+ veor q4, q4, q6
+ vld1.8 {d28-d29}, [r7, : 128]!
+ veor q5, q5, q6
+ vld1.8 {d0}, [r4, : 64]
+ veor q6, q7, q10
+ vld1.8 {d2}, [r5, : 64]
+ veor q7, q9, q10
+ vld1.8 {d4}, [r6, : 64]
+ veor q9, q11, q12
+ vld1.8 {d6}, [r7, : 64]
+ veor q10, q0, q1
+ sub r2, r4, #32
+ vand q9, q9, q8
+ sub r4, r5, #32
+ vand q10, q10, q8
+ sub r5, r6, #32
+ veor q11, q11, q9
+ sub r6, r7, #32
+ veor q0, q0, q10
+ veor q9, q12, q9
+ veor q1, q1, q10
+ veor q10, q13, q14
+ veor q12, q2, q3
+ vand q10, q10, q8
+ vand q8, q12, q8
+ veor q12, q13, q10
+ veor q2, q2, q8
+ veor q10, q14, q10
+ veor q3, q3, q8
+ vadd.i32 q8, q4, q6
+ vsub.i32 q4, q4, q6
+ vst1.8 {d16-d17}, [r2, : 128]!
+ vadd.i32 q6, q11, q12
+ vst1.8 {d8-d9}, [r5, : 128]!
+ vsub.i32 q4, q11, q12
+ vst1.8 {d12-d13}, [r2, : 128]!
+ vadd.i32 q6, q0, q2
+ vst1.8 {d8-d9}, [r5, : 128]!
+ vsub.i32 q0, q0, q2
+ vst1.8 d12, [r2, : 64]
+ vadd.i32 q2, q5, q7
+ vst1.8 d0, [r5, : 64]
+ vsub.i32 q0, q5, q7
+ vst1.8 {d4-d5}, [r4, : 128]!
+ vadd.i32 q2, q9, q10
+ vst1.8 {d0-d1}, [r6, : 128]!
+ vsub.i32 q0, q9, q10
+ vst1.8 {d4-d5}, [r4, : 128]!
+ vadd.i32 q2, q1, q3
+ vst1.8 {d0-d1}, [r6, : 128]!
+ vsub.i32 q0, q1, q3
+ vst1.8 d4, [r4, : 64]
+ vst1.8 d0, [r6, : 64]
+ add r2, sp, #544
+ add r4, r3, #96
+ add r5, r3, #144
+ vld1.8 {d0-d1}, [r2, : 128]
+ vld1.8 {d2-d3}, [r4, : 128]!
+ vld1.8 {d4-d5}, [r5, : 128]!
+ vzip.i32 q1, q2
+ vld1.8 {d6-d7}, [r4, : 128]!
+ vld1.8 {d8-d9}, [r5, : 128]!
+ vshl.i32 q5, q1, #1
+ vzip.i32 q3, q4
+ vshl.i32 q6, q2, #1
+ vld1.8 {d14}, [r4, : 64]
+ vshl.i32 q8, q3, #1
+ vld1.8 {d15}, [r5, : 64]
+ vshl.i32 q9, q4, #1
+ vmul.i32 d21, d7, d1
+ vtrn.32 d14, d15
+ vmul.i32 q11, q4, q0
+ vmul.i32 q0, q7, q0
+ vmull.s32 q12, d2, d2
+ vmlal.s32 q12, d11, d1
+ vmlal.s32 q12, d12, d0
+ vmlal.s32 q12, d13, d23
+ vmlal.s32 q12, d16, d22
+ vmlal.s32 q12, d7, d21
+ vmull.s32 q10, d2, d11
+ vmlal.s32 q10, d4, d1
+ vmlal.s32 q10, d13, d0
+ vmlal.s32 q10, d6, d23
+ vmlal.s32 q10, d17, d22
+ vmull.s32 q13, d10, d4
+ vmlal.s32 q13, d11, d3
+ vmlal.s32 q13, d13, d1
+ vmlal.s32 q13, d16, d0
+ vmlal.s32 q13, d17, d23
+ vmlal.s32 q13, d8, d22
+ vmull.s32 q1, d10, d5
+ vmlal.s32 q1, d11, d4
+ vmlal.s32 q1, d6, d1
+ vmlal.s32 q1, d17, d0
+ vmlal.s32 q1, d8, d23
+ vmull.s32 q14, d10, d6
+ vmlal.s32 q14, d11, d13
+ vmlal.s32 q14, d4, d4
+ vmlal.s32 q14, d17, d1
+ vmlal.s32 q14, d18, d0
+ vmlal.s32 q14, d9, d23
+ vmull.s32 q11, d10, d7
+ vmlal.s32 q11, d11, d6
+ vmlal.s32 q11, d12, d5
+ vmlal.s32 q11, d8, d1
+ vmlal.s32 q11, d19, d0
+ vmull.s32 q15, d10, d8
+ vmlal.s32 q15, d11, d17
+ vmlal.s32 q15, d12, d6
+ vmlal.s32 q15, d13, d5
+ vmlal.s32 q15, d19, d1
+ vmlal.s32 q15, d14, d0
+ vmull.s32 q2, d10, d9
+ vmlal.s32 q2, d11, d8
+ vmlal.s32 q2, d12, d7
+ vmlal.s32 q2, d13, d6
+ vmlal.s32 q2, d14, d1
+ vmull.s32 q0, d15, d1
+ vmlal.s32 q0, d10, d14
+ vmlal.s32 q0, d11, d19
+ vmlal.s32 q0, d12, d8
+ vmlal.s32 q0, d13, d17
+ vmlal.s32 q0, d6, d6
+ add r2, sp, #512
+ vld1.8 {d18-d19}, [r2, : 128]
+ vmull.s32 q3, d16, d7
+ vmlal.s32 q3, d10, d15
+ vmlal.s32 q3, d11, d14
+ vmlal.s32 q3, d12, d9
+ vmlal.s32 q3, d13, d8
+ add r2, sp, #528
+ vld1.8 {d8-d9}, [r2, : 128]
+ vadd.i64 q5, q12, q9
+ vadd.i64 q6, q15, q9
+ vshr.s64 q5, q5, #26
+ vshr.s64 q6, q6, #26
+ vadd.i64 q7, q10, q5
+ vshl.i64 q5, q5, #26
+ vadd.i64 q8, q7, q4
+ vadd.i64 q2, q2, q6
+ vshl.i64 q6, q6, #26
+ vadd.i64 q10, q2, q4
+ vsub.i64 q5, q12, q5
+ vshr.s64 q8, q8, #25
+ vsub.i64 q6, q15, q6
+ vshr.s64 q10, q10, #25
+ vadd.i64 q12, q13, q8
+ vshl.i64 q8, q8, #25
+ vadd.i64 q13, q12, q9
+ vadd.i64 q0, q0, q10
+ vsub.i64 q7, q7, q8
+ vshr.s64 q8, q13, #26
+ vshl.i64 q10, q10, #25
+ vadd.i64 q13, q0, q9
+ vadd.i64 q1, q1, q8
+ vshl.i64 q8, q8, #26
+ vadd.i64 q15, q1, q4
+ vsub.i64 q2, q2, q10
+ vshr.s64 q10, q13, #26
+ vsub.i64 q8, q12, q8
+ vshr.s64 q12, q15, #25
+ vadd.i64 q3, q3, q10
+ vshl.i64 q10, q10, #26
+ vadd.i64 q13, q3, q4
+ vadd.i64 q14, q14, q12
+ add r2, r3, #288
+ vshl.i64 q12, q12, #25
+ add r4, r3, #336
+ vadd.i64 q15, q14, q9
+ add r2, r2, #8
+ vsub.i64 q0, q0, q10
+ add r4, r4, #8
+ vshr.s64 q10, q13, #25
+ vsub.i64 q1, q1, q12
+ vshr.s64 q12, q15, #26
+ vadd.i64 q13, q10, q10
+ vadd.i64 q11, q11, q12
+ vtrn.32 d16, d2
+ vshl.i64 q12, q12, #26
+ vtrn.32 d17, d3
+ vadd.i64 q1, q11, q4
+ vadd.i64 q4, q5, q13
+ vst1.8 d16, [r2, : 64]!
+ vshl.i64 q5, q10, #4
+ vst1.8 d17, [r4, : 64]!
+ vsub.i64 q8, q14, q12
+ vshr.s64 q1, q1, #25
+ vadd.i64 q4, q4, q5
+ vadd.i64 q5, q6, q1
+ vshl.i64 q1, q1, #25
+ vadd.i64 q6, q5, q9
+ vadd.i64 q4, q4, q10
+ vshl.i64 q10, q10, #25
+ vadd.i64 q9, q4, q9
+ vsub.i64 q1, q11, q1
+ vshr.s64 q6, q6, #26
+ vsub.i64 q3, q3, q10
+ vtrn.32 d16, d2
+ vshr.s64 q9, q9, #26
+ vtrn.32 d17, d3
+ vadd.i64 q1, q2, q6
+ vst1.8 d16, [r2, : 64]
+ vshl.i64 q2, q6, #26
+ vst1.8 d17, [r4, : 64]
+ vadd.i64 q6, q7, q9
+ vtrn.32 d0, d6
+ vshl.i64 q7, q9, #26
+ vtrn.32 d1, d7
+ vsub.i64 q2, q5, q2
+ add r2, r2, #16
+ vsub.i64 q3, q4, q7
+ vst1.8 d0, [r2, : 64]
+ add r4, r4, #16
+ vst1.8 d1, [r4, : 64]
+ vtrn.32 d4, d2
+ vtrn.32 d5, d3
+ sub r2, r2, #8
+ sub r4, r4, #8
+ vtrn.32 d6, d12
+ vtrn.32 d7, d13
+ vst1.8 d4, [r2, : 64]
+ vst1.8 d5, [r4, : 64]
+ sub r2, r2, #24
+ sub r4, r4, #24
+ vst1.8 d6, [r2, : 64]
+ vst1.8 d7, [r4, : 64]
+ add r2, r3, #240
+ add r4, r3, #96
+ vld1.8 {d0-d1}, [r4, : 128]!
+ vld1.8 {d2-d3}, [r4, : 128]!
+ vld1.8 {d4}, [r4, : 64]
+ add r4, r3, #144
+ vld1.8 {d6-d7}, [r4, : 128]!
+ vtrn.32 q0, q3
+ vld1.8 {d8-d9}, [r4, : 128]!
+ vshl.i32 q5, q0, #4
+ vtrn.32 q1, q4
+ vshl.i32 q6, q3, #4
+ vadd.i32 q5, q5, q0
+ vadd.i32 q6, q6, q3
+ vshl.i32 q7, q1, #4
+ vld1.8 {d5}, [r4, : 64]
+ vshl.i32 q8, q4, #4
+ vtrn.32 d4, d5
+ vadd.i32 q7, q7, q1
+ vadd.i32 q8, q8, q4
+ vld1.8 {d18-d19}, [r2, : 128]!
+ vshl.i32 q10, q2, #4
+ vld1.8 {d22-d23}, [r2, : 128]!
+ vadd.i32 q10, q10, q2
+ vld1.8 {d24}, [r2, : 64]
+ vadd.i32 q5, q5, q0
+ add r2, r3, #192
+ vld1.8 {d26-d27}, [r2, : 128]!
+ vadd.i32 q6, q6, q3
+ vld1.8 {d28-d29}, [r2, : 128]!
+ vadd.i32 q8, q8, q4
+ vld1.8 {d25}, [r2, : 64]
+ vadd.i32 q10, q10, q2
+ vtrn.32 q9, q13
+ vadd.i32 q7, q7, q1
+ vadd.i32 q5, q5, q0
+ vtrn.32 q11, q14
+ vadd.i32 q6, q6, q3
+ add r2, sp, #560
+ vadd.i32 q10, q10, q2
+ vtrn.32 d24, d25
+ vst1.8 {d12-d13}, [r2, : 128]
+ vshl.i32 q6, q13, #1
+ add r2, sp, #576
+ vst1.8 {d20-d21}, [r2, : 128]
+ vshl.i32 q10, q14, #1
+ add r2, sp, #592
+ vst1.8 {d12-d13}, [r2, : 128]
+ vshl.i32 q15, q12, #1
+ vadd.i32 q8, q8, q4
+ vext.32 d10, d31, d30, #0
+ vadd.i32 q7, q7, q1
+ add r2, sp, #608
+ vst1.8 {d16-d17}, [r2, : 128]
+ vmull.s32 q8, d18, d5
+ vmlal.s32 q8, d26, d4
+ vmlal.s32 q8, d19, d9
+ vmlal.s32 q8, d27, d3
+ vmlal.s32 q8, d22, d8
+ vmlal.s32 q8, d28, d2
+ vmlal.s32 q8, d23, d7
+ vmlal.s32 q8, d29, d1
+ vmlal.s32 q8, d24, d6
+ vmlal.s32 q8, d25, d0
+ add r2, sp, #624
+ vst1.8 {d14-d15}, [r2, : 128]
+ vmull.s32 q2, d18, d4
+ vmlal.s32 q2, d12, d9
+ vmlal.s32 q2, d13, d8
+ vmlal.s32 q2, d19, d3
+ vmlal.s32 q2, d22, d2
+ vmlal.s32 q2, d23, d1
+ vmlal.s32 q2, d24, d0
+ add r2, sp, #640
+ vst1.8 {d20-d21}, [r2, : 128]
+ vmull.s32 q7, d18, d9
+ vmlal.s32 q7, d26, d3
+ vmlal.s32 q7, d19, d8
+ vmlal.s32 q7, d27, d2
+ vmlal.s32 q7, d22, d7
+ vmlal.s32 q7, d28, d1
+ vmlal.s32 q7, d23, d6
+ vmlal.s32 q7, d29, d0
+ add r2, sp, #656
+ vst1.8 {d10-d11}, [r2, : 128]
+ vmull.s32 q5, d18, d3
+ vmlal.s32 q5, d19, d2
+ vmlal.s32 q5, d22, d1
+ vmlal.s32 q5, d23, d0
+ vmlal.s32 q5, d12, d8
+ add r2, sp, #672
+ vst1.8 {d16-d17}, [r2, : 128]
+ vmull.s32 q4, d18, d8
+ vmlal.s32 q4, d26, d2
+ vmlal.s32 q4, d19, d7
+ vmlal.s32 q4, d27, d1
+ vmlal.s32 q4, d22, d6
+ vmlal.s32 q4, d28, d0
+ vmull.s32 q8, d18, d7
+ vmlal.s32 q8, d26, d1
+ vmlal.s32 q8, d19, d6
+ vmlal.s32 q8, d27, d0
+ add r2, sp, #576
+ vld1.8 {d20-d21}, [r2, : 128]
+ vmlal.s32 q7, d24, d21
+ vmlal.s32 q7, d25, d20
+ vmlal.s32 q4, d23, d21
+ vmlal.s32 q4, d29, d20
+ vmlal.s32 q8, d22, d21
+ vmlal.s32 q8, d28, d20
+ vmlal.s32 q5, d24, d20
+ add r2, sp, #576
+ vst1.8 {d14-d15}, [r2, : 128]
+ vmull.s32 q7, d18, d6
+ vmlal.s32 q7, d26, d0
+ add r2, sp, #656
+ vld1.8 {d30-d31}, [r2, : 128]
+ vmlal.s32 q2, d30, d21
+ vmlal.s32 q7, d19, d21
+ vmlal.s32 q7, d27, d20
+ add r2, sp, #624
+ vld1.8 {d26-d27}, [r2, : 128]
+ vmlal.s32 q4, d25, d27
+ vmlal.s32 q8, d29, d27
+ vmlal.s32 q8, d25, d26
+ vmlal.s32 q7, d28, d27
+ vmlal.s32 q7, d29, d26
+ add r2, sp, #608
+ vld1.8 {d28-d29}, [r2, : 128]
+ vmlal.s32 q4, d24, d29
+ vmlal.s32 q8, d23, d29
+ vmlal.s32 q8, d24, d28
+ vmlal.s32 q7, d22, d29
+ vmlal.s32 q7, d23, d28
+ add r2, sp, #608
+ vst1.8 {d8-d9}, [r2, : 128]
+ add r2, sp, #560
+ vld1.8 {d8-d9}, [r2, : 128]
+ vmlal.s32 q7, d24, d9
+ vmlal.s32 q7, d25, d31
+ vmull.s32 q1, d18, d2
+ vmlal.s32 q1, d19, d1
+ vmlal.s32 q1, d22, d0
+ vmlal.s32 q1, d24, d27
+ vmlal.s32 q1, d23, d20
+ vmlal.s32 q1, d12, d7
+ vmlal.s32 q1, d13, d6
+ vmull.s32 q6, d18, d1
+ vmlal.s32 q6, d19, d0
+ vmlal.s32 q6, d23, d27
+ vmlal.s32 q6, d22, d20
+ vmlal.s32 q6, d24, d26
+ vmull.s32 q0, d18, d0
+ vmlal.s32 q0, d22, d27
+ vmlal.s32 q0, d23, d26
+ vmlal.s32 q0, d24, d31
+ vmlal.s32 q0, d19, d20
+ add r2, sp, #640
+ vld1.8 {d18-d19}, [r2, : 128]
+ vmlal.s32 q2, d18, d7
+ vmlal.s32 q2, d19, d6
+ vmlal.s32 q5, d18, d6
+ vmlal.s32 q5, d19, d21
+ vmlal.s32 q1, d18, d21
+ vmlal.s32 q1, d19, d29
+ vmlal.s32 q0, d18, d28
+ vmlal.s32 q0, d19, d9
+ vmlal.s32 q6, d18, d29
+ vmlal.s32 q6, d19, d28
+ add r2, sp, #592
+ vld1.8 {d18-d19}, [r2, : 128]
+ add r2, sp, #512
+ vld1.8 {d22-d23}, [r2, : 128]
+ vmlal.s32 q5, d19, d7
+ vmlal.s32 q0, d18, d21
+ vmlal.s32 q0, d19, d29
+ vmlal.s32 q6, d18, d6
+ add r2, sp, #528
+ vld1.8 {d6-d7}, [r2, : 128]
+ vmlal.s32 q6, d19, d21
+ add r2, sp, #576
+ vld1.8 {d18-d19}, [r2, : 128]
+ vmlal.s32 q0, d30, d8
+ add r2, sp, #672
+ vld1.8 {d20-d21}, [r2, : 128]
+ vmlal.s32 q5, d30, d29
+ add r2, sp, #608
+ vld1.8 {d24-d25}, [r2, : 128]
+ vmlal.s32 q1, d30, d28
+ vadd.i64 q13, q0, q11
+ vadd.i64 q14, q5, q11
+ vmlal.s32 q6, d30, d9
+ vshr.s64 q4, q13, #26
+ vshr.s64 q13, q14, #26
+ vadd.i64 q7, q7, q4
+ vshl.i64 q4, q4, #26
+ vadd.i64 q14, q7, q3
+ vadd.i64 q9, q9, q13
+ vshl.i64 q13, q13, #26
+ vadd.i64 q15, q9, q3
+ vsub.i64 q0, q0, q4
+ vshr.s64 q4, q14, #25
+ vsub.i64 q5, q5, q13
+ vshr.s64 q13, q15, #25
+ vadd.i64 q6, q6, q4
+ vshl.i64 q4, q4, #25
+ vadd.i64 q14, q6, q11
+ vadd.i64 q2, q2, q13
+ vsub.i64 q4, q7, q4
+ vshr.s64 q7, q14, #26
+ vshl.i64 q13, q13, #25
+ vadd.i64 q14, q2, q11
+ vadd.i64 q8, q8, q7
+ vshl.i64 q7, q7, #26
+ vadd.i64 q15, q8, q3
+ vsub.i64 q9, q9, q13
+ vshr.s64 q13, q14, #26
+ vsub.i64 q6, q6, q7
+ vshr.s64 q7, q15, #25
+ vadd.i64 q10, q10, q13
+ vshl.i64 q13, q13, #26
+ vadd.i64 q14, q10, q3
+ vadd.i64 q1, q1, q7
+ add r2, r3, #144
+ vshl.i64 q7, q7, #25
+ add r4, r3, #96
+ vadd.i64 q15, q1, q11
+ add r2, r2, #8
+ vsub.i64 q2, q2, q13
+ add r4, r4, #8
+ vshr.s64 q13, q14, #25
+ vsub.i64 q7, q8, q7
+ vshr.s64 q8, q15, #26
+ vadd.i64 q14, q13, q13
+ vadd.i64 q12, q12, q8
+ vtrn.32 d12, d14
+ vshl.i64 q8, q8, #26
+ vtrn.32 d13, d15
+ vadd.i64 q3, q12, q3
+ vadd.i64 q0, q0, q14
+ vst1.8 d12, [r2, : 64]!
+ vshl.i64 q7, q13, #4
+ vst1.8 d13, [r4, : 64]!
+ vsub.i64 q1, q1, q8
+ vshr.s64 q3, q3, #25
+ vadd.i64 q0, q0, q7
+ vadd.i64 q5, q5, q3
+ vshl.i64 q3, q3, #25
+ vadd.i64 q6, q5, q11
+ vadd.i64 q0, q0, q13
+ vshl.i64 q7, q13, #25
+ vadd.i64 q8, q0, q11
+ vsub.i64 q3, q12, q3
+ vshr.s64 q6, q6, #26
+ vsub.i64 q7, q10, q7
+ vtrn.32 d2, d6
+ vshr.s64 q8, q8, #26
+ vtrn.32 d3, d7
+ vadd.i64 q3, q9, q6
+ vst1.8 d2, [r2, : 64]
+ vshl.i64 q6, q6, #26
+ vst1.8 d3, [r4, : 64]
+ vadd.i64 q1, q4, q8
+ vtrn.32 d4, d14
+ vshl.i64 q4, q8, #26
+ vtrn.32 d5, d15
+ vsub.i64 q5, q5, q6
+ add r2, r2, #16
+ vsub.i64 q0, q0, q4
+ vst1.8 d4, [r2, : 64]
+ add r4, r4, #16
+ vst1.8 d5, [r4, : 64]
+ vtrn.32 d10, d6
+ vtrn.32 d11, d7
+ sub r2, r2, #8
+ sub r4, r4, #8
+ vtrn.32 d0, d2
+ vtrn.32 d1, d3
+ vst1.8 d10, [r2, : 64]
+ vst1.8 d11, [r4, : 64]
+ sub r2, r2, #24
+ sub r4, r4, #24
+ vst1.8 d0, [r2, : 64]
+ vst1.8 d1, [r4, : 64]
+ add r2, r3, #288
+ add r4, r3, #336
+ vld1.8 {d0-d1}, [r2, : 128]!
+ vld1.8 {d2-d3}, [r4, : 128]!
+ vsub.i32 q0, q0, q1
+ vld1.8 {d2-d3}, [r2, : 128]!
+ vld1.8 {d4-d5}, [r4, : 128]!
+ vsub.i32 q1, q1, q2
+ add r5, r3, #240
+ vld1.8 {d4}, [r2, : 64]
+ vld1.8 {d6}, [r4, : 64]
+ vsub.i32 q2, q2, q3
+ vst1.8 {d0-d1}, [r5, : 128]!
+ vst1.8 {d2-d3}, [r5, : 128]!
+ vst1.8 d4, [r5, : 64]
+ add r2, r3, #144
+ add r4, r3, #96
+ add r5, r3, #144
+ add r6, r3, #192
+ vld1.8 {d0-d1}, [r2, : 128]!
+ vld1.8 {d2-d3}, [r4, : 128]!
+ vsub.i32 q2, q0, q1
+ vadd.i32 q0, q0, q1
+ vld1.8 {d2-d3}, [r2, : 128]!
+ vld1.8 {d6-d7}, [r4, : 128]!
+ vsub.i32 q4, q1, q3
+ vadd.i32 q1, q1, q3
+ vld1.8 {d6}, [r2, : 64]
+ vld1.8 {d10}, [r4, : 64]
+ vsub.i32 q6, q3, q5
+ vadd.i32 q3, q3, q5
+ vst1.8 {d4-d5}, [r5, : 128]!
+ vst1.8 {d0-d1}, [r6, : 128]!
+ vst1.8 {d8-d9}, [r5, : 128]!
+ vst1.8 {d2-d3}, [r6, : 128]!
+ vst1.8 d12, [r5, : 64]
+ vst1.8 d6, [r6, : 64]
+ add r2, r3, #0
+ add r4, r3, #240
+ vld1.8 {d0-d1}, [r4, : 128]!
+ vld1.8 {d2-d3}, [r4, : 128]!
+ vld1.8 {d4}, [r4, : 64]
+ add r4, r3, #336
+ vld1.8 {d6-d7}, [r4, : 128]!
+ vtrn.32 q0, q3
+ vld1.8 {d8-d9}, [r4, : 128]!
+ vshl.i32 q5, q0, #4
+ vtrn.32 q1, q4
+ vshl.i32 q6, q3, #4
+ vadd.i32 q5, q5, q0
+ vadd.i32 q6, q6, q3
+ vshl.i32 q7, q1, #4
+ vld1.8 {d5}, [r4, : 64]
+ vshl.i32 q8, q4, #4
+ vtrn.32 d4, d5
+ vadd.i32 q7, q7, q1
+ vadd.i32 q8, q8, q4
+ vld1.8 {d18-d19}, [r2, : 128]!
+ vshl.i32 q10, q2, #4
+ vld1.8 {d22-d23}, [r2, : 128]!
+ vadd.i32 q10, q10, q2
+ vld1.8 {d24}, [r2, : 64]
+ vadd.i32 q5, q5, q0
+ add r2, r3, #288
+ vld1.8 {d26-d27}, [r2, : 128]!
+ vadd.i32 q6, q6, q3
+ vld1.8 {d28-d29}, [r2, : 128]!
+ vadd.i32 q8, q8, q4
+ vld1.8 {d25}, [r2, : 64]
+ vadd.i32 q10, q10, q2
+ vtrn.32 q9, q13
+ vadd.i32 q7, q7, q1
+ vadd.i32 q5, q5, q0
+ vtrn.32 q11, q14
+ vadd.i32 q6, q6, q3
+ add r2, sp, #560
+ vadd.i32 q10, q10, q2
+ vtrn.32 d24, d25
+ vst1.8 {d12-d13}, [r2, : 128]
+ vshl.i32 q6, q13, #1
+ add r2, sp, #576
+ vst1.8 {d20-d21}, [r2, : 128]
+ vshl.i32 q10, q14, #1
+ add r2, sp, #592
+ vst1.8 {d12-d13}, [r2, : 128]
+ vshl.i32 q15, q12, #1
+ vadd.i32 q8, q8, q4
+ vext.32 d10, d31, d30, #0
+ vadd.i32 q7, q7, q1
+ add r2, sp, #608
+ vst1.8 {d16-d17}, [r2, : 128]
+ vmull.s32 q8, d18, d5
+ vmlal.s32 q8, d26, d4
+ vmlal.s32 q8, d19, d9
+ vmlal.s32 q8, d27, d3
+ vmlal.s32 q8, d22, d8
+ vmlal.s32 q8, d28, d2
+ vmlal.s32 q8, d23, d7
+ vmlal.s32 q8, d29, d1
+ vmlal.s32 q8, d24, d6
+ vmlal.s32 q8, d25, d0
+ add r2, sp, #624
+ vst1.8 {d14-d15}, [r2, : 128]
+ vmull.s32 q2, d18, d4
+ vmlal.s32 q2, d12, d9
+ vmlal.s32 q2, d13, d8
+ vmlal.s32 q2, d19, d3
+ vmlal.s32 q2, d22, d2
+ vmlal.s32 q2, d23, d1
+ vmlal.s32 q2, d24, d0
+ add r2, sp, #640
+ vst1.8 {d20-d21}, [r2, : 128]
+ vmull.s32 q7, d18, d9
+ vmlal.s32 q7, d26, d3
+ vmlal.s32 q7, d19, d8
+ vmlal.s32 q7, d27, d2
+ vmlal.s32 q7, d22, d7
+ vmlal.s32 q7, d28, d1
+ vmlal.s32 q7, d23, d6
+ vmlal.s32 q7, d29, d0
+ add r2, sp, #656
+ vst1.8 {d10-d11}, [r2, : 128]
+ vmull.s32 q5, d18, d3
+ vmlal.s32 q5, d19, d2
+ vmlal.s32 q5, d22, d1
+ vmlal.s32 q5, d23, d0
+ vmlal.s32 q5, d12, d8
+ add r2, sp, #672
+ vst1.8 {d16-d17}, [r2, : 128]
+ vmull.s32 q4, d18, d8
+ vmlal.s32 q4, d26, d2
+ vmlal.s32 q4, d19, d7
+ vmlal.s32 q4, d27, d1
+ vmlal.s32 q4, d22, d6
+ vmlal.s32 q4, d28, d0
+ vmull.s32 q8, d18, d7
+ vmlal.s32 q8, d26, d1
+ vmlal.s32 q8, d19, d6
+ vmlal.s32 q8, d27, d0
+ add r2, sp, #576
+ vld1.8 {d20-d21}, [r2, : 128]
+ vmlal.s32 q7, d24, d21
+ vmlal.s32 q7, d25, d20
+ vmlal.s32 q4, d23, d21
+ vmlal.s32 q4, d29, d20
+ vmlal.s32 q8, d22, d21
+ vmlal.s32 q8, d28, d20
+ vmlal.s32 q5, d24, d20
+ add r2, sp, #576
+ vst1.8 {d14-d15}, [r2, : 128]
+ vmull.s32 q7, d18, d6
+ vmlal.s32 q7, d26, d0
+ add r2, sp, #656
+ vld1.8 {d30-d31}, [r2, : 128]
+ vmlal.s32 q2, d30, d21
+ vmlal.s32 q7, d19, d21
+ vmlal.s32 q7, d27, d20
+ add r2, sp, #624
+ vld1.8 {d26-d27}, [r2, : 128]
+ vmlal.s32 q4, d25, d27
+ vmlal.s32 q8, d29, d27
+ vmlal.s32 q8, d25, d26
+ vmlal.s32 q7, d28, d27
+ vmlal.s32 q7, d29, d26
+ add r2, sp, #608
+ vld1.8 {d28-d29}, [r2, : 128]
+ vmlal.s32 q4, d24, d29
+ vmlal.s32 q8, d23, d29
+ vmlal.s32 q8, d24, d28
+ vmlal.s32 q7, d22, d29
+ vmlal.s32 q7, d23, d28
+ add r2, sp, #608
+ vst1.8 {d8-d9}, [r2, : 128]
+ add r2, sp, #560
+ vld1.8 {d8-d9}, [r2, : 128]
+ vmlal.s32 q7, d24, d9
+ vmlal.s32 q7, d25, d31
+ vmull.s32 q1, d18, d2
+ vmlal.s32 q1, d19, d1
+ vmlal.s32 q1, d22, d0
+ vmlal.s32 q1, d24, d27
+ vmlal.s32 q1, d23, d20
+ vmlal.s32 q1, d12, d7
+ vmlal.s32 q1, d13, d6
+ vmull.s32 q6, d18, d1
+ vmlal.s32 q6, d19, d0
+ vmlal.s32 q6, d23, d27
+ vmlal.s32 q6, d22, d20
+ vmlal.s32 q6, d24, d26
+ vmull.s32 q0, d18, d0
+ vmlal.s32 q0, d22, d27
+ vmlal.s32 q0, d23, d26
+ vmlal.s32 q0, d24, d31
+ vmlal.s32 q0, d19, d20
+ add r2, sp, #640
+ vld1.8 {d18-d19}, [r2, : 128]
+ vmlal.s32 q2, d18, d7
+ vmlal.s32 q2, d19, d6
+ vmlal.s32 q5, d18, d6
+ vmlal.s32 q5, d19, d21
+ vmlal.s32 q1, d18, d21
+ vmlal.s32 q1, d19, d29
+ vmlal.s32 q0, d18, d28
+ vmlal.s32 q0, d19, d9
+ vmlal.s32 q6, d18, d29
+ vmlal.s32 q6, d19, d28
+ add r2, sp, #592
+ vld1.8 {d18-d19}, [r2, : 128]
+ add r2, sp, #512
+ vld1.8 {d22-d23}, [r2, : 128]
+ vmlal.s32 q5, d19, d7
+ vmlal.s32 q0, d18, d21
+ vmlal.s32 q0, d19, d29
+ vmlal.s32 q6, d18, d6
+ add r2, sp, #528
+ vld1.8 {d6-d7}, [r2, : 128]
+ vmlal.s32 q6, d19, d21
+ add r2, sp, #576
+ vld1.8 {d18-d19}, [r2, : 128]
+ vmlal.s32 q0, d30, d8
+ add r2, sp, #672
+ vld1.8 {d20-d21}, [r2, : 128]
+ vmlal.s32 q5, d30, d29
+ add r2, sp, #608
+ vld1.8 {d24-d25}, [r2, : 128]
+ vmlal.s32 q1, d30, d28
+ vadd.i64 q13, q0, q11
+ vadd.i64 q14, q5, q11
+ vmlal.s32 q6, d30, d9
+ vshr.s64 q4, q13, #26
+ vshr.s64 q13, q14, #26
+ vadd.i64 q7, q7, q4
+ vshl.i64 q4, q4, #26
+ vadd.i64 q14, q7, q3
+ vadd.i64 q9, q9, q13
+ vshl.i64 q13, q13, #26
+ vadd.i64 q15, q9, q3
+ vsub.i64 q0, q0, q4
+ vshr.s64 q4, q14, #25
+ vsub.i64 q5, q5, q13
+ vshr.s64 q13, q15, #25
+ vadd.i64 q6, q6, q4
+ vshl.i64 q4, q4, #25
+ vadd.i64 q14, q6, q11
+ vadd.i64 q2, q2, q13
+ vsub.i64 q4, q7, q4
+ vshr.s64 q7, q14, #26
+ vshl.i64 q13, q13, #25
+ vadd.i64 q14, q2, q11
+ vadd.i64 q8, q8, q7
+ vshl.i64 q7, q7, #26
+ vadd.i64 q15, q8, q3
+ vsub.i64 q9, q9, q13
+ vshr.s64 q13, q14, #26
+ vsub.i64 q6, q6, q7
+ vshr.s64 q7, q15, #25
+ vadd.i64 q10, q10, q13
+ vshl.i64 q13, q13, #26
+ vadd.i64 q14, q10, q3
+ vadd.i64 q1, q1, q7
+ add r2, r3, #288
+ vshl.i64 q7, q7, #25
+ add r4, r3, #96
+ vadd.i64 q15, q1, q11
+ add r2, r2, #8
+ vsub.i64 q2, q2, q13
+ add r4, r4, #8
+ vshr.s64 q13, q14, #25
+ vsub.i64 q7, q8, q7
+ vshr.s64 q8, q15, #26
+ vadd.i64 q14, q13, q13
+ vadd.i64 q12, q12, q8
+ vtrn.32 d12, d14
+ vshl.i64 q8, q8, #26
+ vtrn.32 d13, d15
+ vadd.i64 q3, q12, q3
+ vadd.i64 q0, q0, q14
+ vst1.8 d12, [r2, : 64]!
+ vshl.i64 q7, q13, #4
+ vst1.8 d13, [r4, : 64]!
+ vsub.i64 q1, q1, q8
+ vshr.s64 q3, q3, #25
+ vadd.i64 q0, q0, q7
+ vadd.i64 q5, q5, q3
+ vshl.i64 q3, q3, #25
+ vadd.i64 q6, q5, q11
+ vadd.i64 q0, q0, q13
+ vshl.i64 q7, q13, #25
+ vadd.i64 q8, q0, q11
+ vsub.i64 q3, q12, q3
+ vshr.s64 q6, q6, #26
+ vsub.i64 q7, q10, q7
+ vtrn.32 d2, d6
+ vshr.s64 q8, q8, #26
+ vtrn.32 d3, d7
+ vadd.i64 q3, q9, q6
+ vst1.8 d2, [r2, : 64]
+ vshl.i64 q6, q6, #26
+ vst1.8 d3, [r4, : 64]
+ vadd.i64 q1, q4, q8
+ vtrn.32 d4, d14
+ vshl.i64 q4, q8, #26
+ vtrn.32 d5, d15
+ vsub.i64 q5, q5, q6
+ add r2, r2, #16
+ vsub.i64 q0, q0, q4
+ vst1.8 d4, [r2, : 64]
+ add r4, r4, #16
+ vst1.8 d5, [r4, : 64]
+ vtrn.32 d10, d6
+ vtrn.32 d11, d7
+ sub r2, r2, #8
+ sub r4, r4, #8
+ vtrn.32 d0, d2
+ vtrn.32 d1, d3
+ vst1.8 d10, [r2, : 64]
+ vst1.8 d11, [r4, : 64]
+ sub r2, r2, #24
+ sub r4, r4, #24
+ vst1.8 d0, [r2, : 64]
+ vst1.8 d1, [r4, : 64]
+ add r2, sp, #544
+ add r4, r3, #144
+ add r5, r3, #192
+ vld1.8 {d0-d1}, [r2, : 128]
+ vld1.8 {d2-d3}, [r4, : 128]!
+ vld1.8 {d4-d5}, [r5, : 128]!
+ vzip.i32 q1, q2
+ vld1.8 {d6-d7}, [r4, : 128]!
+ vld1.8 {d8-d9}, [r5, : 128]!
+ vshl.i32 q5, q1, #1
+ vzip.i32 q3, q4
+ vshl.i32 q6, q2, #1
+ vld1.8 {d14}, [r4, : 64]
+ vshl.i32 q8, q3, #1
+ vld1.8 {d15}, [r5, : 64]
+ vshl.i32 q9, q4, #1
+ vmul.i32 d21, d7, d1
+ vtrn.32 d14, d15
+ vmul.i32 q11, q4, q0
+ vmul.i32 q0, q7, q0
+ vmull.s32 q12, d2, d2
+ vmlal.s32 q12, d11, d1
+ vmlal.s32 q12, d12, d0
+ vmlal.s32 q12, d13, d23
+ vmlal.s32 q12, d16, d22
+ vmlal.s32 q12, d7, d21
+ vmull.s32 q10, d2, d11
+ vmlal.s32 q10, d4, d1
+ vmlal.s32 q10, d13, d0
+ vmlal.s32 q10, d6, d23
+ vmlal.s32 q10, d17, d22
+ vmull.s32 q13, d10, d4
+ vmlal.s32 q13, d11, d3
+ vmlal.s32 q13, d13, d1
+ vmlal.s32 q13, d16, d0
+ vmlal.s32 q13, d17, d23
+ vmlal.s32 q13, d8, d22
+ vmull.s32 q1, d10, d5
+ vmlal.s32 q1, d11, d4
+ vmlal.s32 q1, d6, d1
+ vmlal.s32 q1, d17, d0
+ vmlal.s32 q1, d8, d23
+ vmull.s32 q14, d10, d6
+ vmlal.s32 q14, d11, d13
+ vmlal.s32 q14, d4, d4
+ vmlal.s32 q14, d17, d1
+ vmlal.s32 q14, d18, d0
+ vmlal.s32 q14, d9, d23
+ vmull.s32 q11, d10, d7
+ vmlal.s32 q11, d11, d6
+ vmlal.s32 q11, d12, d5
+ vmlal.s32 q11, d8, d1
+ vmlal.s32 q11, d19, d0
+ vmull.s32 q15, d10, d8
+ vmlal.s32 q15, d11, d17
+ vmlal.s32 q15, d12, d6
+ vmlal.s32 q15, d13, d5
+ vmlal.s32 q15, d19, d1
+ vmlal.s32 q15, d14, d0
+ vmull.s32 q2, d10, d9
+ vmlal.s32 q2, d11, d8
+ vmlal.s32 q2, d12, d7
+ vmlal.s32 q2, d13, d6
+ vmlal.s32 q2, d14, d1
+ vmull.s32 q0, d15, d1
+ vmlal.s32 q0, d10, d14
+ vmlal.s32 q0, d11, d19
+ vmlal.s32 q0, d12, d8
+ vmlal.s32 q0, d13, d17
+ vmlal.s32 q0, d6, d6
+ add r2, sp, #512
+ vld1.8 {d18-d19}, [r2, : 128]
+ vmull.s32 q3, d16, d7
+ vmlal.s32 q3, d10, d15
+ vmlal.s32 q3, d11, d14
+ vmlal.s32 q3, d12, d9
+ vmlal.s32 q3, d13, d8
+ add r2, sp, #528
+ vld1.8 {d8-d9}, [r2, : 128]
+ vadd.i64 q5, q12, q9
+ vadd.i64 q6, q15, q9
+ vshr.s64 q5, q5, #26
+ vshr.s64 q6, q6, #26
+ vadd.i64 q7, q10, q5
+ vshl.i64 q5, q5, #26
+ vadd.i64 q8, q7, q4
+ vadd.i64 q2, q2, q6
+ vshl.i64 q6, q6, #26
+ vadd.i64 q10, q2, q4
+ vsub.i64 q5, q12, q5
+ vshr.s64 q8, q8, #25
+ vsub.i64 q6, q15, q6
+ vshr.s64 q10, q10, #25
+ vadd.i64 q12, q13, q8
+ vshl.i64 q8, q8, #25
+ vadd.i64 q13, q12, q9
+ vadd.i64 q0, q0, q10
+ vsub.i64 q7, q7, q8
+ vshr.s64 q8, q13, #26
+ vshl.i64 q10, q10, #25
+ vadd.i64 q13, q0, q9
+ vadd.i64 q1, q1, q8
+ vshl.i64 q8, q8, #26
+ vadd.i64 q15, q1, q4
+ vsub.i64 q2, q2, q10
+ vshr.s64 q10, q13, #26
+ vsub.i64 q8, q12, q8
+ vshr.s64 q12, q15, #25
+ vadd.i64 q3, q3, q10
+ vshl.i64 q10, q10, #26
+ vadd.i64 q13, q3, q4
+ vadd.i64 q14, q14, q12
+ add r2, r3, #144
+ vshl.i64 q12, q12, #25
+ add r4, r3, #192
+ vadd.i64 q15, q14, q9
+ add r2, r2, #8
+ vsub.i64 q0, q0, q10
+ add r4, r4, #8
+ vshr.s64 q10, q13, #25
+ vsub.i64 q1, q1, q12
+ vshr.s64 q12, q15, #26
+ vadd.i64 q13, q10, q10
+ vadd.i64 q11, q11, q12
+ vtrn.32 d16, d2
+ vshl.i64 q12, q12, #26
+ vtrn.32 d17, d3
+ vadd.i64 q1, q11, q4
+ vadd.i64 q4, q5, q13
+ vst1.8 d16, [r2, : 64]!
+ vshl.i64 q5, q10, #4
+ vst1.8 d17, [r4, : 64]!
+ vsub.i64 q8, q14, q12
+ vshr.s64 q1, q1, #25
+ vadd.i64 q4, q4, q5
+ vadd.i64 q5, q6, q1
+ vshl.i64 q1, q1, #25
+ vadd.i64 q6, q5, q9
+ vadd.i64 q4, q4, q10
+ vshl.i64 q10, q10, #25
+ vadd.i64 q9, q4, q9
+ vsub.i64 q1, q11, q1
+ vshr.s64 q6, q6, #26
+ vsub.i64 q3, q3, q10
+ vtrn.32 d16, d2
+ vshr.s64 q9, q9, #26
+ vtrn.32 d17, d3
+ vadd.i64 q1, q2, q6
+ vst1.8 d16, [r2, : 64]
+ vshl.i64 q2, q6, #26
+ vst1.8 d17, [r4, : 64]
+ vadd.i64 q6, q7, q9
+ vtrn.32 d0, d6
+ vshl.i64 q7, q9, #26
+ vtrn.32 d1, d7
+ vsub.i64 q2, q5, q2
+ add r2, r2, #16
+ vsub.i64 q3, q4, q7
+ vst1.8 d0, [r2, : 64]
+ add r4, r4, #16
+ vst1.8 d1, [r4, : 64]
+ vtrn.32 d4, d2
+ vtrn.32 d5, d3
+ sub r2, r2, #8
+ sub r4, r4, #8
+ vtrn.32 d6, d12
+ vtrn.32 d7, d13
+ vst1.8 d4, [r2, : 64]
+ vst1.8 d5, [r4, : 64]
+ sub r2, r2, #24
+ sub r4, r4, #24
+ vst1.8 d6, [r2, : 64]
+ vst1.8 d7, [r4, : 64]
+ add r2, r3, #336
+ add r4, r3, #288
+ vld1.8 {d0-d1}, [r2, : 128]!
+ vld1.8 {d2-d3}, [r4, : 128]!
+ vadd.i32 q0, q0, q1
+ vld1.8 {d2-d3}, [r2, : 128]!
+ vld1.8 {d4-d5}, [r4, : 128]!
+ vadd.i32 q1, q1, q2
+ add r5, r3, #288
+ vld1.8 {d4}, [r2, : 64]
+ vld1.8 {d6}, [r4, : 64]
+ vadd.i32 q2, q2, q3
+ vst1.8 {d0-d1}, [r5, : 128]!
+ vst1.8 {d2-d3}, [r5, : 128]!
+ vst1.8 d4, [r5, : 64]
+ add r2, r3, #48
+ add r4, r3, #144
+ vld1.8 {d0-d1}, [r4, : 128]!
+ vld1.8 {d2-d3}, [r4, : 128]!
+ vld1.8 {d4}, [r4, : 64]
+ add r4, r3, #288
+ vld1.8 {d6-d7}, [r4, : 128]!
+ vtrn.32 q0, q3
+ vld1.8 {d8-d9}, [r4, : 128]!
+ vshl.i32 q5, q0, #4
+ vtrn.32 q1, q4
+ vshl.i32 q6, q3, #4
+ vadd.i32 q5, q5, q0
+ vadd.i32 q6, q6, q3
+ vshl.i32 q7, q1, #4
+ vld1.8 {d5}, [r4, : 64]
+ vshl.i32 q8, q4, #4
+ vtrn.32 d4, d5
+ vadd.i32 q7, q7, q1
+ vadd.i32 q8, q8, q4
+ vld1.8 {d18-d19}, [r2, : 128]!
+ vshl.i32 q10, q2, #4
+ vld1.8 {d22-d23}, [r2, : 128]!
+ vadd.i32 q10, q10, q2
+ vld1.8 {d24}, [r2, : 64]
+ vadd.i32 q5, q5, q0
+ add r2, r3, #240
+ vld1.8 {d26-d27}, [r2, : 128]!
+ vadd.i32 q6, q6, q3
+ vld1.8 {d28-d29}, [r2, : 128]!
+ vadd.i32 q8, q8, q4
+ vld1.8 {d25}, [r2, : 64]
+ vadd.i32 q10, q10, q2
+ vtrn.32 q9, q13
+ vadd.i32 q7, q7, q1
+ vadd.i32 q5, q5, q0
+ vtrn.32 q11, q14
+ vadd.i32 q6, q6, q3
+ add r2, sp, #560
+ vadd.i32 q10, q10, q2
+ vtrn.32 d24, d25
+ vst1.8 {d12-d13}, [r2, : 128]
+ vshl.i32 q6, q13, #1
+ add r2, sp, #576
+ vst1.8 {d20-d21}, [r2, : 128]
+ vshl.i32 q10, q14, #1
+ add r2, sp, #592
+ vst1.8 {d12-d13}, [r2, : 128]
+ vshl.i32 q15, q12, #1
+ vadd.i32 q8, q8, q4
+ vext.32 d10, d31, d30, #0
+ vadd.i32 q7, q7, q1
+ add r2, sp, #608
+ vst1.8 {d16-d17}, [r2, : 128]
+ vmull.s32 q8, d18, d5
+ vmlal.s32 q8, d26, d4
+ vmlal.s32 q8, d19, d9
+ vmlal.s32 q8, d27, d3
+ vmlal.s32 q8, d22, d8
+ vmlal.s32 q8, d28, d2
+ vmlal.s32 q8, d23, d7
+ vmlal.s32 q8, d29, d1
+ vmlal.s32 q8, d24, d6
+ vmlal.s32 q8, d25, d0
+ add r2, sp, #624
+ vst1.8 {d14-d15}, [r2, : 128]
+ vmull.s32 q2, d18, d4
+ vmlal.s32 q2, d12, d9
+ vmlal.s32 q2, d13, d8
+ vmlal.s32 q2, d19, d3
+ vmlal.s32 q2, d22, d2
+ vmlal.s32 q2, d23, d1
+ vmlal.s32 q2, d24, d0
+ add r2, sp, #640
+ vst1.8 {d20-d21}, [r2, : 128]
+ vmull.s32 q7, d18, d9
+ vmlal.s32 q7, d26, d3
+ vmlal.s32 q7, d19, d8
+ vmlal.s32 q7, d27, d2
+ vmlal.s32 q7, d22, d7
+ vmlal.s32 q7, d28, d1
+ vmlal.s32 q7, d23, d6
+ vmlal.s32 q7, d29, d0
+ add r2, sp, #656
+ vst1.8 {d10-d11}, [r2, : 128]
+ vmull.s32 q5, d18, d3
+ vmlal.s32 q5, d19, d2
+ vmlal.s32 q5, d22, d1
+ vmlal.s32 q5, d23, d0
+ vmlal.s32 q5, d12, d8
+ add r2, sp, #672
+ vst1.8 {d16-d17}, [r2, : 128]
+ vmull.s32 q4, d18, d8
+ vmlal.s32 q4, d26, d2
+ vmlal.s32 q4, d19, d7
+ vmlal.s32 q4, d27, d1
+ vmlal.s32 q4, d22, d6
+ vmlal.s32 q4, d28, d0
+ vmull.s32 q8, d18, d7
+ vmlal.s32 q8, d26, d1
+ vmlal.s32 q8, d19, d6
+ vmlal.s32 q8, d27, d0
+ add r2, sp, #576
+ vld1.8 {d20-d21}, [r2, : 128]
+ vmlal.s32 q7, d24, d21
+ vmlal.s32 q7, d25, d20
+ vmlal.s32 q4, d23, d21
+ vmlal.s32 q4, d29, d20
+ vmlal.s32 q8, d22, d21
+ vmlal.s32 q8, d28, d20
+ vmlal.s32 q5, d24, d20
+ add r2, sp, #576
+ vst1.8 {d14-d15}, [r2, : 128]
+ vmull.s32 q7, d18, d6
+ vmlal.s32 q7, d26, d0
+ add r2, sp, #656
+ vld1.8 {d30-d31}, [r2, : 128]
+ vmlal.s32 q2, d30, d21
+ vmlal.s32 q7, d19, d21
+ vmlal.s32 q7, d27, d20
+ add r2, sp, #624
+ vld1.8 {d26-d27}, [r2, : 128]
+ vmlal.s32 q4, d25, d27
+ vmlal.s32 q8, d29, d27
+ vmlal.s32 q8, d25, d26
+ vmlal.s32 q7, d28, d27
+ vmlal.s32 q7, d29, d26
+ add r2, sp, #608
+ vld1.8 {d28-d29}, [r2, : 128]
+ vmlal.s32 q4, d24, d29
+ vmlal.s32 q8, d23, d29
+ vmlal.s32 q8, d24, d28
+ vmlal.s32 q7, d22, d29
+ vmlal.s32 q7, d23, d28
+ add r2, sp, #608
+ vst1.8 {d8-d9}, [r2, : 128]
+ add r2, sp, #560
+ vld1.8 {d8-d9}, [r2, : 128]
+ vmlal.s32 q7, d24, d9
+ vmlal.s32 q7, d25, d31
+ vmull.s32 q1, d18, d2
+ vmlal.s32 q1, d19, d1
+ vmlal.s32 q1, d22, d0
+ vmlal.s32 q1, d24, d27
+ vmlal.s32 q1, d23, d20
+ vmlal.s32 q1, d12, d7
+ vmlal.s32 q1, d13, d6
+ vmull.s32 q6, d18, d1
+ vmlal.s32 q6, d19, d0
+ vmlal.s32 q6, d23, d27
+ vmlal.s32 q6, d22, d20
+ vmlal.s32 q6, d24, d26
+ vmull.s32 q0, d18, d0
+ vmlal.s32 q0, d22, d27
+ vmlal.s32 q0, d23, d26
+ vmlal.s32 q0, d24, d31
+ vmlal.s32 q0, d19, d20
+ add r2, sp, #640
+ vld1.8 {d18-d19}, [r2, : 128]
+ vmlal.s32 q2, d18, d7
+ vmlal.s32 q2, d19, d6
+ vmlal.s32 q5, d18, d6
+ vmlal.s32 q5, d19, d21
+ vmlal.s32 q1, d18, d21
+ vmlal.s32 q1, d19, d29
+ vmlal.s32 q0, d18, d28
+ vmlal.s32 q0, d19, d9
+ vmlal.s32 q6, d18, d29
+ vmlal.s32 q6, d19, d28
+ add r2, sp, #592
+ vld1.8 {d18-d19}, [r2, : 128]
+ add r2, sp, #512
+ vld1.8 {d22-d23}, [r2, : 128]
+ vmlal.s32 q5, d19, d7
+ vmlal.s32 q0, d18, d21
+ vmlal.s32 q0, d19, d29
+ vmlal.s32 q6, d18, d6
+ add r2, sp, #528
+ vld1.8 {d6-d7}, [r2, : 128]
+ vmlal.s32 q6, d19, d21
+ add r2, sp, #576
+ vld1.8 {d18-d19}, [r2, : 128]
+ vmlal.s32 q0, d30, d8
+ add r2, sp, #672
+ vld1.8 {d20-d21}, [r2, : 128]
+ vmlal.s32 q5, d30, d29
+ add r2, sp, #608
+ vld1.8 {d24-d25}, [r2, : 128]
+ vmlal.s32 q1, d30, d28
+ vadd.i64 q13, q0, q11
+ vadd.i64 q14, q5, q11
+ vmlal.s32 q6, d30, d9
+ vshr.s64 q4, q13, #26
+ vshr.s64 q13, q14, #26
+ vadd.i64 q7, q7, q4
+ vshl.i64 q4, q4, #26
+ vadd.i64 q14, q7, q3
+ vadd.i64 q9, q9, q13
+ vshl.i64 q13, q13, #26
+ vadd.i64 q15, q9, q3
+ vsub.i64 q0, q0, q4
+ vshr.s64 q4, q14, #25
+ vsub.i64 q5, q5, q13
+ vshr.s64 q13, q15, #25
+ vadd.i64 q6, q6, q4
+ vshl.i64 q4, q4, #25
+ vadd.i64 q14, q6, q11
+ vadd.i64 q2, q2, q13
+ vsub.i64 q4, q7, q4
+ vshr.s64 q7, q14, #26
+ vshl.i64 q13, q13, #25
+ vadd.i64 q14, q2, q11
+ vadd.i64 q8, q8, q7
+ vshl.i64 q7, q7, #26
+ vadd.i64 q15, q8, q3
+ vsub.i64 q9, q9, q13
+ vshr.s64 q13, q14, #26
+ vsub.i64 q6, q6, q7
+ vshr.s64 q7, q15, #25
+ vadd.i64 q10, q10, q13
+ vshl.i64 q13, q13, #26
+ vadd.i64 q14, q10, q3
+ vadd.i64 q1, q1, q7
+ add r2, r3, #240
+ vshl.i64 q7, q7, #25
+ add r4, r3, #144
+ vadd.i64 q15, q1, q11
+ add r2, r2, #8
+ vsub.i64 q2, q2, q13
+ add r4, r4, #8
+ vshr.s64 q13, q14, #25
+ vsub.i64 q7, q8, q7
+ vshr.s64 q8, q15, #26
+ vadd.i64 q14, q13, q13
+ vadd.i64 q12, q12, q8
+ vtrn.32 d12, d14
+ vshl.i64 q8, q8, #26
+ vtrn.32 d13, d15
+ vadd.i64 q3, q12, q3
+ vadd.i64 q0, q0, q14
+ vst1.8 d12, [r2, : 64]!
+ vshl.i64 q7, q13, #4
+ vst1.8 d13, [r4, : 64]!
+ vsub.i64 q1, q1, q8
+ vshr.s64 q3, q3, #25
+ vadd.i64 q0, q0, q7
+ vadd.i64 q5, q5, q3
+ vshl.i64 q3, q3, #25
+ vadd.i64 q6, q5, q11
+ vadd.i64 q0, q0, q13
+ vshl.i64 q7, q13, #25
+ vadd.i64 q8, q0, q11
+ vsub.i64 q3, q12, q3
+ vshr.s64 q6, q6, #26
+ vsub.i64 q7, q10, q7
+ vtrn.32 d2, d6
+ vshr.s64 q8, q8, #26
+ vtrn.32 d3, d7
+ vadd.i64 q3, q9, q6
+ vst1.8 d2, [r2, : 64]
+ vshl.i64 q6, q6, #26
+ vst1.8 d3, [r4, : 64]
+ vadd.i64 q1, q4, q8
+ vtrn.32 d4, d14
+ vshl.i64 q4, q8, #26
+ vtrn.32 d5, d15
+ vsub.i64 q5, q5, q6
+ add r2, r2, #16
+ vsub.i64 q0, q0, q4
+ vst1.8 d4, [r2, : 64]
+ add r4, r4, #16
+ vst1.8 d5, [r4, : 64]
+ vtrn.32 d10, d6
+ vtrn.32 d11, d7
+ sub r2, r2, #8
+ sub r4, r4, #8
+ vtrn.32 d0, d2
+ vtrn.32 d1, d3
+ vst1.8 d10, [r2, : 64]
+ vst1.8 d11, [r4, : 64]
+ sub r2, r2, #24
+ sub r4, r4, #24
+ vst1.8 d0, [r2, : 64]
+ vst1.8 d1, [r4, : 64]
+ ldr r2, [sp, #488]
+ ldr r4, [sp, #492]
+ subs r5, r2, #1
bge .Lmainloop
- add r1,r3,#144
- add r2,r3,#336
- vld1.8 {d0-d1},[r1,: 128]!
- vld1.8 {d2-d3},[r1,: 128]!
- vld1.8 {d4},[r1,: 64]
- vst1.8 {d0-d1},[r2,: 128]!
- vst1.8 {d2-d3},[r2,: 128]!
- vst1.8 d4,[r2,: 64]
- movw r1,0
+ add r1, r3, #144
+ add r2, r3, #336
+ vld1.8 {d0-d1}, [r1, : 128]!
+ vld1.8 {d2-d3}, [r1, : 128]!
+ vld1.8 {d4}, [r1, : 64]
+ vst1.8 {d0-d1}, [r2, : 128]!
+ vst1.8 {d2-d3}, [r2, : 128]!
+ vst1.8 d4, [r2, : 64]
+ movw r1, 0
.Linvertloop:
- add r2,r3,#144
- movw r4,0
- movw r5,2
- cmp r1,#1
- moveq r5,1
- addeq r2,r3,#336
- addeq r4,r3,#48
- cmp r1,#2
- moveq r5,1
- addeq r2,r3,#48
- cmp r1,#3
- moveq r5,5
- addeq r4,r3,#336
- cmp r1,#4
- moveq r5,10
- cmp r1,#5
- moveq r5,20
- cmp r1,#6
- moveq r5,10
- addeq r2,r3,#336
- addeq r4,r3,#336
- cmp r1,#7
- moveq r5,50
- cmp r1,#8
- moveq r5,100
- cmp r1,#9
- moveq r5,50
- addeq r2,r3,#336
- cmp r1,#10
- moveq r5,5
- addeq r2,r3,#48
- cmp r1,#11
- moveq r5,0
- addeq r2,r3,#96
- add r6,r3,#144
- add r7,r3,#288
- vld1.8 {d0-d1},[r6,: 128]!
- vld1.8 {d2-d3},[r6,: 128]!
- vld1.8 {d4},[r6,: 64]
- vst1.8 {d0-d1},[r7,: 128]!
- vst1.8 {d2-d3},[r7,: 128]!
- vst1.8 d4,[r7,: 64]
- cmp r5,#0
+ add r2, r3, #144
+ movw r4, 0
+ movw r5, 2
+ cmp r1, #1
+ moveq r5, 1
+ addeq r2, r3, #336
+ addeq r4, r3, #48
+ cmp r1, #2
+ moveq r5, 1
+ addeq r2, r3, #48
+ cmp r1, #3
+ moveq r5, 5
+ addeq r4, r3, #336
+ cmp r1, #4
+ moveq r5, 10
+ cmp r1, #5
+ moveq r5, 20
+ cmp r1, #6
+ moveq r5, 10
+ addeq r2, r3, #336
+ addeq r4, r3, #336
+ cmp r1, #7
+ moveq r5, 50
+ cmp r1, #8
+ moveq r5, 100
+ cmp r1, #9
+ moveq r5, 50
+ addeq r2, r3, #336
+ cmp r1, #10
+ moveq r5, 5
+ addeq r2, r3, #48
+ cmp r1, #11
+ moveq r5, 0
+ addeq r2, r3, #96
+ add r6, r3, #144
+ add r7, r3, #288
+ vld1.8 {d0-d1}, [r6, : 128]!
+ vld1.8 {d2-d3}, [r6, : 128]!
+ vld1.8 {d4}, [r6, : 64]
+ vst1.8 {d0-d1}, [r7, : 128]!
+ vst1.8 {d2-d3}, [r7, : 128]!
+ vst1.8 d4, [r7, : 64]
+ cmp r5, #0
beq .Lskipsquaringloop
.Lsquaringloop:
- add r6,r3,#288
- add r7,r3,#288
- add r8,r3,#288
- vmov.i32 q0,#19
- vmov.i32 q1,#0
- vmov.i32 q2,#1
- vzip.i32 q1,q2
- vld1.8 {d4-d5},[r7,: 128]!
- vld1.8 {d6-d7},[r7,: 128]!
- vld1.8 {d9},[r7,: 64]
- vld1.8 {d10-d11},[r6,: 128]!
- add r7,sp,#416
- vld1.8 {d12-d13},[r6,: 128]!
- vmul.i32 q7,q2,q0
- vld1.8 {d8},[r6,: 64]
- vext.32 d17,d11,d10,#1
- vmul.i32 q9,q3,q0
- vext.32 d16,d10,d8,#1
- vshl.u32 q10,q5,q1
- vext.32 d22,d14,d4,#1
- vext.32 d24,d18,d6,#1
- vshl.u32 q13,q6,q1
- vshl.u32 d28,d8,d2
- vrev64.i32 d22,d22
- vmul.i32 d1,d9,d1
- vrev64.i32 d24,d24
- vext.32 d29,d8,d13,#1
- vext.32 d0,d1,d9,#1
- vrev64.i32 d0,d0
- vext.32 d2,d9,d1,#1
- vext.32 d23,d15,d5,#1
- vmull.s32 q4,d20,d4
- vrev64.i32 d23,d23
- vmlal.s32 q4,d21,d1
- vrev64.i32 d2,d2
- vmlal.s32 q4,d26,d19
- vext.32 d3,d5,d15,#1
- vmlal.s32 q4,d27,d18
- vrev64.i32 d3,d3
- vmlal.s32 q4,d28,d15
- vext.32 d14,d12,d11,#1
- vmull.s32 q5,d16,d23
- vext.32 d15,d13,d12,#1
- vmlal.s32 q5,d17,d4
- vst1.8 d8,[r7,: 64]!
- vmlal.s32 q5,d14,d1
- vext.32 d12,d9,d8,#0
- vmlal.s32 q5,d15,d19
- vmov.i64 d13,#0
- vmlal.s32 q5,d29,d18
- vext.32 d25,d19,d7,#1
- vmlal.s32 q6,d20,d5
- vrev64.i32 d25,d25
- vmlal.s32 q6,d21,d4
- vst1.8 d11,[r7,: 64]!
- vmlal.s32 q6,d26,d1
- vext.32 d9,d10,d10,#0
- vmlal.s32 q6,d27,d19
- vmov.i64 d8,#0
- vmlal.s32 q6,d28,d18
- vmlal.s32 q4,d16,d24
- vmlal.s32 q4,d17,d5
- vmlal.s32 q4,d14,d4
- vst1.8 d12,[r7,: 64]!
- vmlal.s32 q4,d15,d1
- vext.32 d10,d13,d12,#0
- vmlal.s32 q4,d29,d19
- vmov.i64 d11,#0
- vmlal.s32 q5,d20,d6
- vmlal.s32 q5,d21,d5
- vmlal.s32 q5,d26,d4
- vext.32 d13,d8,d8,#0
- vmlal.s32 q5,d27,d1
- vmov.i64 d12,#0
- vmlal.s32 q5,d28,d19
- vst1.8 d9,[r7,: 64]!
- vmlal.s32 q6,d16,d25
- vmlal.s32 q6,d17,d6
- vst1.8 d10,[r7,: 64]
- vmlal.s32 q6,d14,d5
- vext.32 d8,d11,d10,#0
- vmlal.s32 q6,d15,d4
- vmov.i64 d9,#0
- vmlal.s32 q6,d29,d1
- vmlal.s32 q4,d20,d7
- vmlal.s32 q4,d21,d6
- vmlal.s32 q4,d26,d5
- vext.32 d11,d12,d12,#0
- vmlal.s32 q4,d27,d4
- vmov.i64 d10,#0
- vmlal.s32 q4,d28,d1
- vmlal.s32 q5,d16,d0
- sub r6,r7,#32
- vmlal.s32 q5,d17,d7
- vmlal.s32 q5,d14,d6
- vext.32 d30,d9,d8,#0
- vmlal.s32 q5,d15,d5
- vld1.8 {d31},[r6,: 64]!
- vmlal.s32 q5,d29,d4
- vmlal.s32 q15,d20,d0
- vext.32 d0,d6,d18,#1
- vmlal.s32 q15,d21,d25
- vrev64.i32 d0,d0
- vmlal.s32 q15,d26,d24
- vext.32 d1,d7,d19,#1
- vext.32 d7,d10,d10,#0
- vmlal.s32 q15,d27,d23
- vrev64.i32 d1,d1
- vld1.8 {d6},[r6,: 64]
- vmlal.s32 q15,d28,d22
- vmlal.s32 q3,d16,d4
- add r6,r6,#24
- vmlal.s32 q3,d17,d2
- vext.32 d4,d31,d30,#0
- vmov d17,d11
- vmlal.s32 q3,d14,d1
- vext.32 d11,d13,d13,#0
- vext.32 d13,d30,d30,#0
- vmlal.s32 q3,d15,d0
- vext.32 d1,d8,d8,#0
- vmlal.s32 q3,d29,d3
- vld1.8 {d5},[r6,: 64]
- sub r6,r6,#16
- vext.32 d10,d6,d6,#0
- vmov.i32 q1,#0xffffffff
- vshl.i64 q4,q1,#25
- add r7,sp,#512
- vld1.8 {d14-d15},[r7,: 128]
- vadd.i64 q9,q2,q7
- vshl.i64 q1,q1,#26
- vshr.s64 q10,q9,#26
- vld1.8 {d0},[r6,: 64]!
- vadd.i64 q5,q5,q10
- vand q9,q9,q1
- vld1.8 {d16},[r6,: 64]!
- add r6,sp,#528
- vld1.8 {d20-d21},[r6,: 128]
- vadd.i64 q11,q5,q10
- vsub.i64 q2,q2,q9
- vshr.s64 q9,q11,#25
- vext.32 d12,d5,d4,#0
- vand q11,q11,q4
- vadd.i64 q0,q0,q9
- vmov d19,d7
- vadd.i64 q3,q0,q7
- vsub.i64 q5,q5,q11
- vshr.s64 q11,q3,#26
- vext.32 d18,d11,d10,#0
- vand q3,q3,q1
- vadd.i64 q8,q8,q11
- vadd.i64 q11,q8,q10
- vsub.i64 q0,q0,q3
- vshr.s64 q3,q11,#25
- vand q11,q11,q4
- vadd.i64 q3,q6,q3
- vadd.i64 q6,q3,q7
- vsub.i64 q8,q8,q11
- vshr.s64 q11,q6,#26
- vand q6,q6,q1
- vadd.i64 q9,q9,q11
- vadd.i64 d25,d19,d21
- vsub.i64 q3,q3,q6
- vshr.s64 d23,d25,#25
- vand q4,q12,q4
- vadd.i64 d21,d23,d23
- vshl.i64 d25,d23,#4
- vadd.i64 d21,d21,d23
- vadd.i64 d25,d25,d21
- vadd.i64 d4,d4,d25
- vzip.i32 q0,q8
- vadd.i64 d12,d4,d14
- add r6,r8,#8
- vst1.8 d0,[r6,: 64]
- vsub.i64 d19,d19,d9
- add r6,r6,#16
- vst1.8 d16,[r6,: 64]
- vshr.s64 d22,d12,#26
- vand q0,q6,q1
- vadd.i64 d10,d10,d22
- vzip.i32 q3,q9
- vsub.i64 d4,d4,d0
- sub r6,r6,#8
- vst1.8 d6,[r6,: 64]
- add r6,r6,#16
- vst1.8 d18,[r6,: 64]
- vzip.i32 q2,q5
- sub r6,r6,#32
- vst1.8 d4,[r6,: 64]
- subs r5,r5,#1
+ add r6, r3, #288
+ add r7, r3, #288
+ add r8, r3, #288
+ vmov.i32 q0, #19
+ vmov.i32 q1, #0
+ vmov.i32 q2, #1
+ vzip.i32 q1, q2
+ vld1.8 {d4-d5}, [r7, : 128]!
+ vld1.8 {d6-d7}, [r7, : 128]!
+ vld1.8 {d9}, [r7, : 64]
+ vld1.8 {d10-d11}, [r6, : 128]!
+ add r7, sp, #416
+ vld1.8 {d12-d13}, [r6, : 128]!
+ vmul.i32 q7, q2, q0
+ vld1.8 {d8}, [r6, : 64]
+ vext.32 d17, d11, d10, #1
+ vmul.i32 q9, q3, q0
+ vext.32 d16, d10, d8, #1
+ vshl.u32 q10, q5, q1
+ vext.32 d22, d14, d4, #1
+ vext.32 d24, d18, d6, #1
+ vshl.u32 q13, q6, q1
+ vshl.u32 d28, d8, d2
+ vrev64.i32 d22, d22
+ vmul.i32 d1, d9, d1
+ vrev64.i32 d24, d24
+ vext.32 d29, d8, d13, #1
+ vext.32 d0, d1, d9, #1
+ vrev64.i32 d0, d0
+ vext.32 d2, d9, d1, #1
+ vext.32 d23, d15, d5, #1
+ vmull.s32 q4, d20, d4
+ vrev64.i32 d23, d23
+ vmlal.s32 q4, d21, d1
+ vrev64.i32 d2, d2
+ vmlal.s32 q4, d26, d19
+ vext.32 d3, d5, d15, #1
+ vmlal.s32 q4, d27, d18
+ vrev64.i32 d3, d3
+ vmlal.s32 q4, d28, d15
+ vext.32 d14, d12, d11, #1
+ vmull.s32 q5, d16, d23
+ vext.32 d15, d13, d12, #1
+ vmlal.s32 q5, d17, d4
+ vst1.8 d8, [r7, : 64]!
+ vmlal.s32 q5, d14, d1
+ vext.32 d12, d9, d8, #0
+ vmlal.s32 q5, d15, d19
+ vmov.i64 d13, #0
+ vmlal.s32 q5, d29, d18
+ vext.32 d25, d19, d7, #1
+ vmlal.s32 q6, d20, d5
+ vrev64.i32 d25, d25
+ vmlal.s32 q6, d21, d4
+ vst1.8 d11, [r7, : 64]!
+ vmlal.s32 q6, d26, d1
+ vext.32 d9, d10, d10, #0
+ vmlal.s32 q6, d27, d19
+ vmov.i64 d8, #0
+ vmlal.s32 q6, d28, d18
+ vmlal.s32 q4, d16, d24
+ vmlal.s32 q4, d17, d5
+ vmlal.s32 q4, d14, d4
+ vst1.8 d12, [r7, : 64]!
+ vmlal.s32 q4, d15, d1
+ vext.32 d10, d13, d12, #0
+ vmlal.s32 q4, d29, d19
+ vmov.i64 d11, #0
+ vmlal.s32 q5, d20, d6
+ vmlal.s32 q5, d21, d5
+ vmlal.s32 q5, d26, d4
+ vext.32 d13, d8, d8, #0
+ vmlal.s32 q5, d27, d1
+ vmov.i64 d12, #0
+ vmlal.s32 q5, d28, d19
+ vst1.8 d9, [r7, : 64]!
+ vmlal.s32 q6, d16, d25
+ vmlal.s32 q6, d17, d6
+ vst1.8 d10, [r7, : 64]
+ vmlal.s32 q6, d14, d5
+ vext.32 d8, d11, d10, #0
+ vmlal.s32 q6, d15, d4
+ vmov.i64 d9, #0
+ vmlal.s32 q6, d29, d1
+ vmlal.s32 q4, d20, d7
+ vmlal.s32 q4, d21, d6
+ vmlal.s32 q4, d26, d5
+ vext.32 d11, d12, d12, #0
+ vmlal.s32 q4, d27, d4
+ vmov.i64 d10, #0
+ vmlal.s32 q4, d28, d1
+ vmlal.s32 q5, d16, d0
+ sub r6, r7, #32
+ vmlal.s32 q5, d17, d7
+ vmlal.s32 q5, d14, d6
+ vext.32 d30, d9, d8, #0
+ vmlal.s32 q5, d15, d5
+ vld1.8 {d31}, [r6, : 64]!
+ vmlal.s32 q5, d29, d4
+ vmlal.s32 q15, d20, d0
+ vext.32 d0, d6, d18, #1
+ vmlal.s32 q15, d21, d25
+ vrev64.i32 d0, d0
+ vmlal.s32 q15, d26, d24
+ vext.32 d1, d7, d19, #1
+ vext.32 d7, d10, d10, #0
+ vmlal.s32 q15, d27, d23
+ vrev64.i32 d1, d1
+ vld1.8 {d6}, [r6, : 64]
+ vmlal.s32 q15, d28, d22
+ vmlal.s32 q3, d16, d4
+ add r6, r6, #24
+ vmlal.s32 q3, d17, d2
+ vext.32 d4, d31, d30, #0
+ vmov d17, d11
+ vmlal.s32 q3, d14, d1
+ vext.32 d11, d13, d13, #0
+ vext.32 d13, d30, d30, #0
+ vmlal.s32 q3, d15, d0
+ vext.32 d1, d8, d8, #0
+ vmlal.s32 q3, d29, d3
+ vld1.8 {d5}, [r6, : 64]
+ sub r6, r6, #16
+ vext.32 d10, d6, d6, #0
+ vmov.i32 q1, #0xffffffff
+ vshl.i64 q4, q1, #25
+ add r7, sp, #512
+ vld1.8 {d14-d15}, [r7, : 128]
+ vadd.i64 q9, q2, q7
+ vshl.i64 q1, q1, #26
+ vshr.s64 q10, q9, #26
+ vld1.8 {d0}, [r6, : 64]!
+ vadd.i64 q5, q5, q10
+ vand q9, q9, q1
+ vld1.8 {d16}, [r6, : 64]!
+ add r6, sp, #528
+ vld1.8 {d20-d21}, [r6, : 128]
+ vadd.i64 q11, q5, q10
+ vsub.i64 q2, q2, q9
+ vshr.s64 q9, q11, #25
+ vext.32 d12, d5, d4, #0
+ vand q11, q11, q4
+ vadd.i64 q0, q0, q9
+ vmov d19, d7
+ vadd.i64 q3, q0, q7
+ vsub.i64 q5, q5, q11
+ vshr.s64 q11, q3, #26
+ vext.32 d18, d11, d10, #0
+ vand q3, q3, q1
+ vadd.i64 q8, q8, q11
+ vadd.i64 q11, q8, q10
+ vsub.i64 q0, q0, q3
+ vshr.s64 q3, q11, #25
+ vand q11, q11, q4
+ vadd.i64 q3, q6, q3
+ vadd.i64 q6, q3, q7
+ vsub.i64 q8, q8, q11
+ vshr.s64 q11, q6, #26
+ vand q6, q6, q1
+ vadd.i64 q9, q9, q11
+ vadd.i64 d25, d19, d21
+ vsub.i64 q3, q3, q6
+ vshr.s64 d23, d25, #25
+ vand q4, q12, q4
+ vadd.i64 d21, d23, d23
+ vshl.i64 d25, d23, #4
+ vadd.i64 d21, d21, d23
+ vadd.i64 d25, d25, d21
+ vadd.i64 d4, d4, d25
+ vzip.i32 q0, q8
+ vadd.i64 d12, d4, d14
+ add r6, r8, #8
+ vst1.8 d0, [r6, : 64]
+ vsub.i64 d19, d19, d9
+ add r6, r6, #16
+ vst1.8 d16, [r6, : 64]
+ vshr.s64 d22, d12, #26
+ vand q0, q6, q1
+ vadd.i64 d10, d10, d22
+ vzip.i32 q3, q9
+ vsub.i64 d4, d4, d0
+ sub r6, r6, #8
+ vst1.8 d6, [r6, : 64]
+ add r6, r6, #16
+ vst1.8 d18, [r6, : 64]
+ vzip.i32 q2, q5
+ sub r6, r6, #32
+ vst1.8 d4, [r6, : 64]
+ subs r5, r5, #1
bhi .Lsquaringloop
.Lskipsquaringloop:
- mov r2,r2
- add r5,r3,#288
- add r6,r3,#144
- vmov.i32 q0,#19
- vmov.i32 q1,#0
- vmov.i32 q2,#1
- vzip.i32 q1,q2
- vld1.8 {d4-d5},[r5,: 128]!
- vld1.8 {d6-d7},[r5,: 128]!
- vld1.8 {d9},[r5,: 64]
- vld1.8 {d10-d11},[r2,: 128]!
- add r5,sp,#416
- vld1.8 {d12-d13},[r2,: 128]!
- vmul.i32 q7,q2,q0
- vld1.8 {d8},[r2,: 64]
- vext.32 d17,d11,d10,#1
- vmul.i32 q9,q3,q0
- vext.32 d16,d10,d8,#1
- vshl.u32 q10,q5,q1
- vext.32 d22,d14,d4,#1
- vext.32 d24,d18,d6,#1
- vshl.u32 q13,q6,q1
- vshl.u32 d28,d8,d2
- vrev64.i32 d22,d22
- vmul.i32 d1,d9,d1
- vrev64.i32 d24,d24
- vext.32 d29,d8,d13,#1
- vext.32 d0,d1,d9,#1
- vrev64.i32 d0,d0
- vext.32 d2,d9,d1,#1
- vext.32 d23,d15,d5,#1
- vmull.s32 q4,d20,d4
- vrev64.i32 d23,d23
- vmlal.s32 q4,d21,d1
- vrev64.i32 d2,d2
- vmlal.s32 q4,d26,d19
- vext.32 d3,d5,d15,#1
- vmlal.s32 q4,d27,d18
- vrev64.i32 d3,d3
- vmlal.s32 q4,d28,d15
- vext.32 d14,d12,d11,#1
- vmull.s32 q5,d16,d23
- vext.32 d15,d13,d12,#1
- vmlal.s32 q5,d17,d4
- vst1.8 d8,[r5,: 64]!
- vmlal.s32 q5,d14,d1
- vext.32 d12,d9,d8,#0
- vmlal.s32 q5,d15,d19
- vmov.i64 d13,#0
- vmlal.s32 q5,d29,d18
- vext.32 d25,d19,d7,#1
- vmlal.s32 q6,d20,d5
- vrev64.i32 d25,d25
- vmlal.s32 q6,d21,d4
- vst1.8 d11,[r5,: 64]!
- vmlal.s32 q6,d26,d1
- vext.32 d9,d10,d10,#0
- vmlal.s32 q6,d27,d19
- vmov.i64 d8,#0
- vmlal.s32 q6,d28,d18
- vmlal.s32 q4,d16,d24
- vmlal.s32 q4,d17,d5
- vmlal.s32 q4,d14,d4
- vst1.8 d12,[r5,: 64]!
- vmlal.s32 q4,d15,d1
- vext.32 d10,d13,d12,#0
- vmlal.s32 q4,d29,d19
- vmov.i64 d11,#0
- vmlal.s32 q5,d20,d6
- vmlal.s32 q5,d21,d5
- vmlal.s32 q5,d26,d4
- vext.32 d13,d8,d8,#0
- vmlal.s32 q5,d27,d1
- vmov.i64 d12,#0
- vmlal.s32 q5,d28,d19
- vst1.8 d9,[r5,: 64]!
- vmlal.s32 q6,d16,d25
- vmlal.s32 q6,d17,d6
- vst1.8 d10,[r5,: 64]
- vmlal.s32 q6,d14,d5
- vext.32 d8,d11,d10,#0
- vmlal.s32 q6,d15,d4
- vmov.i64 d9,#0
- vmlal.s32 q6,d29,d1
- vmlal.s32 q4,d20,d7
- vmlal.s32 q4,d21,d6
- vmlal.s32 q4,d26,d5
- vext.32 d11,d12,d12,#0
- vmlal.s32 q4,d27,d4
- vmov.i64 d10,#0
- vmlal.s32 q4,d28,d1
- vmlal.s32 q5,d16,d0
- sub r2,r5,#32
- vmlal.s32 q5,d17,d7
- vmlal.s32 q5,d14,d6
- vext.32 d30,d9,d8,#0
- vmlal.s32 q5,d15,d5
- vld1.8 {d31},[r2,: 64]!
- vmlal.s32 q5,d29,d4
- vmlal.s32 q15,d20,d0
- vext.32 d0,d6,d18,#1
- vmlal.s32 q15,d21,d25
- vrev64.i32 d0,d0
- vmlal.s32 q15,d26,d24
- vext.32 d1,d7,d19,#1
- vext.32 d7,d10,d10,#0
- vmlal.s32 q15,d27,d23
- vrev64.i32 d1,d1
- vld1.8 {d6},[r2,: 64]
- vmlal.s32 q15,d28,d22
- vmlal.s32 q3,d16,d4
- add r2,r2,#24
- vmlal.s32 q3,d17,d2
- vext.32 d4,d31,d30,#0
- vmov d17,d11
- vmlal.s32 q3,d14,d1
- vext.32 d11,d13,d13,#0
- vext.32 d13,d30,d30,#0
- vmlal.s32 q3,d15,d0
- vext.32 d1,d8,d8,#0
- vmlal.s32 q3,d29,d3
- vld1.8 {d5},[r2,: 64]
- sub r2,r2,#16
- vext.32 d10,d6,d6,#0
- vmov.i32 q1,#0xffffffff
- vshl.i64 q4,q1,#25
- add r5,sp,#512
- vld1.8 {d14-d15},[r5,: 128]
- vadd.i64 q9,q2,q7
- vshl.i64 q1,q1,#26
- vshr.s64 q10,q9,#26
- vld1.8 {d0},[r2,: 64]!
- vadd.i64 q5,q5,q10
- vand q9,q9,q1
- vld1.8 {d16},[r2,: 64]!
- add r2,sp,#528
- vld1.8 {d20-d21},[r2,: 128]
- vadd.i64 q11,q5,q10
- vsub.i64 q2,q2,q9
- vshr.s64 q9,q11,#25
- vext.32 d12,d5,d4,#0
- vand q11,q11,q4
- vadd.i64 q0,q0,q9
- vmov d19,d7
- vadd.i64 q3,q0,q7
- vsub.i64 q5,q5,q11
- vshr.s64 q11,q3,#26
- vext.32 d18,d11,d10,#0
- vand q3,q3,q1
- vadd.i64 q8,q8,q11
- vadd.i64 q11,q8,q10
- vsub.i64 q0,q0,q3
- vshr.s64 q3,q11,#25
- vand q11,q11,q4
- vadd.i64 q3,q6,q3
- vadd.i64 q6,q3,q7
- vsub.i64 q8,q8,q11
- vshr.s64 q11,q6,#26
- vand q6,q6,q1
- vadd.i64 q9,q9,q11
- vadd.i64 d25,d19,d21
- vsub.i64 q3,q3,q6
- vshr.s64 d23,d25,#25
- vand q4,q12,q4
- vadd.i64 d21,d23,d23
- vshl.i64 d25,d23,#4
- vadd.i64 d21,d21,d23
- vadd.i64 d25,d25,d21
- vadd.i64 d4,d4,d25
- vzip.i32 q0,q8
- vadd.i64 d12,d4,d14
- add r2,r6,#8
- vst1.8 d0,[r2,: 64]
- vsub.i64 d19,d19,d9
- add r2,r2,#16
- vst1.8 d16,[r2,: 64]
- vshr.s64 d22,d12,#26
- vand q0,q6,q1
- vadd.i64 d10,d10,d22
- vzip.i32 q3,q9
- vsub.i64 d4,d4,d0
- sub r2,r2,#8
- vst1.8 d6,[r2,: 64]
- add r2,r2,#16
- vst1.8 d18,[r2,: 64]
- vzip.i32 q2,q5
- sub r2,r2,#32
- vst1.8 d4,[r2,: 64]
- cmp r4,#0
+ mov r2, r2
+ add r5, r3, #288
+ add r6, r3, #144
+ vmov.i32 q0, #19
+ vmov.i32 q1, #0
+ vmov.i32 q2, #1
+ vzip.i32 q1, q2
+ vld1.8 {d4-d5}, [r5, : 128]!
+ vld1.8 {d6-d7}, [r5, : 128]!
+ vld1.8 {d9}, [r5, : 64]
+ vld1.8 {d10-d11}, [r2, : 128]!
+ add r5, sp, #416
+ vld1.8 {d12-d13}, [r2, : 128]!
+ vmul.i32 q7, q2, q0
+ vld1.8 {d8}, [r2, : 64]
+ vext.32 d17, d11, d10, #1
+ vmul.i32 q9, q3, q0
+ vext.32 d16, d10, d8, #1
+ vshl.u32 q10, q5, q1
+ vext.32 d22, d14, d4, #1
+ vext.32 d24, d18, d6, #1
+ vshl.u32 q13, q6, q1
+ vshl.u32 d28, d8, d2
+ vrev64.i32 d22, d22
+ vmul.i32 d1, d9, d1
+ vrev64.i32 d24, d24
+ vext.32 d29, d8, d13, #1
+ vext.32 d0, d1, d9, #1
+ vrev64.i32 d0, d0
+ vext.32 d2, d9, d1, #1
+ vext.32 d23, d15, d5, #1
+ vmull.s32 q4, d20, d4
+ vrev64.i32 d23, d23
+ vmlal.s32 q4, d21, d1
+ vrev64.i32 d2, d2
+ vmlal.s32 q4, d26, d19
+ vext.32 d3, d5, d15, #1
+ vmlal.s32 q4, d27, d18
+ vrev64.i32 d3, d3
+ vmlal.s32 q4, d28, d15
+ vext.32 d14, d12, d11, #1
+ vmull.s32 q5, d16, d23
+ vext.32 d15, d13, d12, #1
+ vmlal.s32 q5, d17, d4
+ vst1.8 d8, [r5, : 64]!
+ vmlal.s32 q5, d14, d1
+ vext.32 d12, d9, d8, #0
+ vmlal.s32 q5, d15, d19
+ vmov.i64 d13, #0
+ vmlal.s32 q5, d29, d18
+ vext.32 d25, d19, d7, #1
+ vmlal.s32 q6, d20, d5
+ vrev64.i32 d25, d25
+ vmlal.s32 q6, d21, d4
+ vst1.8 d11, [r5, : 64]!
+ vmlal.s32 q6, d26, d1
+ vext.32 d9, d10, d10, #0
+ vmlal.s32 q6, d27, d19
+ vmov.i64 d8, #0
+ vmlal.s32 q6, d28, d18
+ vmlal.s32 q4, d16, d24
+ vmlal.s32 q4, d17, d5
+ vmlal.s32 q4, d14, d4
+ vst1.8 d12, [r5, : 64]!
+ vmlal.s32 q4, d15, d1
+ vext.32 d10, d13, d12, #0
+ vmlal.s32 q4, d29, d19
+ vmov.i64 d11, #0
+ vmlal.s32 q5, d20, d6
+ vmlal.s32 q5, d21, d5
+ vmlal.s32 q5, d26, d4
+ vext.32 d13, d8, d8, #0
+ vmlal.s32 q5, d27, d1
+ vmov.i64 d12, #0
+ vmlal.s32 q5, d28, d19
+ vst1.8 d9, [r5, : 64]!
+ vmlal.s32 q6, d16, d25
+ vmlal.s32 q6, d17, d6
+ vst1.8 d10, [r5, : 64]
+ vmlal.s32 q6, d14, d5
+ vext.32 d8, d11, d10, #0
+ vmlal.s32 q6, d15, d4
+ vmov.i64 d9, #0
+ vmlal.s32 q6, d29, d1
+ vmlal.s32 q4, d20, d7
+ vmlal.s32 q4, d21, d6
+ vmlal.s32 q4, d26, d5
+ vext.32 d11, d12, d12, #0
+ vmlal.s32 q4, d27, d4
+ vmov.i64 d10, #0
+ vmlal.s32 q4, d28, d1
+ vmlal.s32 q5, d16, d0
+ sub r2, r5, #32
+ vmlal.s32 q5, d17, d7
+ vmlal.s32 q5, d14, d6
+ vext.32 d30, d9, d8, #0
+ vmlal.s32 q5, d15, d5
+ vld1.8 {d31}, [r2, : 64]!
+ vmlal.s32 q5, d29, d4
+ vmlal.s32 q15, d20, d0
+ vext.32 d0, d6, d18, #1
+ vmlal.s32 q15, d21, d25
+ vrev64.i32 d0, d0
+ vmlal.s32 q15, d26, d24
+ vext.32 d1, d7, d19, #1
+ vext.32 d7, d10, d10, #0
+ vmlal.s32 q15, d27, d23
+ vrev64.i32 d1, d1
+ vld1.8 {d6}, [r2, : 64]
+ vmlal.s32 q15, d28, d22
+ vmlal.s32 q3, d16, d4
+ add r2, r2, #24
+ vmlal.s32 q3, d17, d2
+ vext.32 d4, d31, d30, #0
+ vmov d17, d11
+ vmlal.s32 q3, d14, d1
+ vext.32 d11, d13, d13, #0
+ vext.32 d13, d30, d30, #0
+ vmlal.s32 q3, d15, d0
+ vext.32 d1, d8, d8, #0
+ vmlal.s32 q3, d29, d3
+ vld1.8 {d5}, [r2, : 64]
+ sub r2, r2, #16
+ vext.32 d10, d6, d6, #0
+ vmov.i32 q1, #0xffffffff
+ vshl.i64 q4, q1, #25
+ add r5, sp, #512
+ vld1.8 {d14-d15}, [r5, : 128]
+ vadd.i64 q9, q2, q7
+ vshl.i64 q1, q1, #26
+ vshr.s64 q10, q9, #26
+ vld1.8 {d0}, [r2, : 64]!
+ vadd.i64 q5, q5, q10
+ vand q9, q9, q1
+ vld1.8 {d16}, [r2, : 64]!
+ add r2, sp, #528
+ vld1.8 {d20-d21}, [r2, : 128]
+ vadd.i64 q11, q5, q10
+ vsub.i64 q2, q2, q9
+ vshr.s64 q9, q11, #25
+ vext.32 d12, d5, d4, #0
+ vand q11, q11, q4
+ vadd.i64 q0, q0, q9
+ vmov d19, d7
+ vadd.i64 q3, q0, q7
+ vsub.i64 q5, q5, q11
+ vshr.s64 q11, q3, #26
+ vext.32 d18, d11, d10, #0
+ vand q3, q3, q1
+ vadd.i64 q8, q8, q11
+ vadd.i64 q11, q8, q10
+ vsub.i64 q0, q0, q3
+ vshr.s64 q3, q11, #25
+ vand q11, q11, q4
+ vadd.i64 q3, q6, q3
+ vadd.i64 q6, q3, q7
+ vsub.i64 q8, q8, q11
+ vshr.s64 q11, q6, #26
+ vand q6, q6, q1
+ vadd.i64 q9, q9, q11
+ vadd.i64 d25, d19, d21
+ vsub.i64 q3, q3, q6
+ vshr.s64 d23, d25, #25
+ vand q4, q12, q4
+ vadd.i64 d21, d23, d23
+ vshl.i64 d25, d23, #4
+ vadd.i64 d21, d21, d23
+ vadd.i64 d25, d25, d21
+ vadd.i64 d4, d4, d25
+ vzip.i32 q0, q8
+ vadd.i64 d12, d4, d14
+ add r2, r6, #8
+ vst1.8 d0, [r2, : 64]
+ vsub.i64 d19, d19, d9
+ add r2, r2, #16
+ vst1.8 d16, [r2, : 64]
+ vshr.s64 d22, d12, #26
+ vand q0, q6, q1
+ vadd.i64 d10, d10, d22
+ vzip.i32 q3, q9
+ vsub.i64 d4, d4, d0
+ sub r2, r2, #8
+ vst1.8 d6, [r2, : 64]
+ add r2, r2, #16
+ vst1.8 d18, [r2, : 64]
+ vzip.i32 q2, q5
+ sub r2, r2, #32
+ vst1.8 d4, [r2, : 64]
+ cmp r4, #0
beq .Lskippostcopy
- add r2,r3,#144
- mov r4,r4
- vld1.8 {d0-d1},[r2,: 128]!
- vld1.8 {d2-d3},[r2,: 128]!
- vld1.8 {d4},[r2,: 64]
- vst1.8 {d0-d1},[r4,: 128]!
- vst1.8 {d2-d3},[r4,: 128]!
- vst1.8 d4,[r4,: 64]
+ add r2, r3, #144
+ mov r4, r4
+ vld1.8 {d0-d1}, [r2, : 128]!
+ vld1.8 {d2-d3}, [r2, : 128]!
+ vld1.8 {d4}, [r2, : 64]
+ vst1.8 {d0-d1}, [r4, : 128]!
+ vst1.8 {d2-d3}, [r4, : 128]!
+ vst1.8 d4, [r4, : 64]
.Lskippostcopy:
- cmp r1,#1
+ cmp r1, #1
bne .Lskipfinalcopy
- add r2,r3,#288
- add r4,r3,#144
- vld1.8 {d0-d1},[r2,: 128]!
- vld1.8 {d2-d3},[r2,: 128]!
- vld1.8 {d4},[r2,: 64]
- vst1.8 {d0-d1},[r4,: 128]!
- vst1.8 {d2-d3},[r4,: 128]!
- vst1.8 d4,[r4,: 64]
+ add r2, r3, #288
+ add r4, r3, #144
+ vld1.8 {d0-d1}, [r2, : 128]!
+ vld1.8 {d2-d3}, [r2, : 128]!
+ vld1.8 {d4}, [r2, : 64]
+ vst1.8 {d0-d1}, [r4, : 128]!
+ vst1.8 {d2-d3}, [r4, : 128]!
+ vst1.8 d4, [r4, : 64]
.Lskipfinalcopy:
- add r1,r1,#1
- cmp r1,#12
+ add r1, r1, #1
+ cmp r1, #12
blo .Linvertloop
- add r1,r3,#144
- ldr r2,[r1],#4
- ldr r3,[r1],#4
- ldr r4,[r1],#4
- ldr r5,[r1],#4
- ldr r6,[r1],#4
- ldr r7,[r1],#4
- ldr r8,[r1],#4
- ldr r9,[r1],#4
- ldr r10,[r1],#4
- ldr r1,[r1]
- add r11,r1,r1,LSL #4
- add r11,r11,r1,LSL #1
- add r11,r11,#16777216
- mov r11,r11,ASR #25
- add r11,r11,r2
- mov r11,r11,ASR #26
- add r11,r11,r3
- mov r11,r11,ASR #25
- add r11,r11,r4
- mov r11,r11,ASR #26
- add r11,r11,r5
- mov r11,r11,ASR #25
- add r11,r11,r6
- mov r11,r11,ASR #26
- add r11,r11,r7
- mov r11,r11,ASR #25
- add r11,r11,r8
- mov r11,r11,ASR #26
- add r11,r11,r9
- mov r11,r11,ASR #25
- add r11,r11,r10
- mov r11,r11,ASR #26
- add r11,r11,r1
- mov r11,r11,ASR #25
- add r2,r2,r11
- add r2,r2,r11,LSL #1
- add r2,r2,r11,LSL #4
- mov r11,r2,ASR #26
- add r3,r3,r11
- sub r2,r2,r11,LSL #26
- mov r11,r3,ASR #25
- add r4,r4,r11
- sub r3,r3,r11,LSL #25
- mov r11,r4,ASR #26
- add r5,r5,r11
- sub r4,r4,r11,LSL #26
- mov r11,r5,ASR #25
- add r6,r6,r11
- sub r5,r5,r11,LSL #25
- mov r11,r6,ASR #26
- add r7,r7,r11
- sub r6,r6,r11,LSL #26
- mov r11,r7,ASR #25
- add r8,r8,r11
- sub r7,r7,r11,LSL #25
- mov r11,r8,ASR #26
- add r9,r9,r11
- sub r8,r8,r11,LSL #26
- mov r11,r9,ASR #25
- add r10,r10,r11
- sub r9,r9,r11,LSL #25
- mov r11,r10,ASR #26
- add r1,r1,r11
- sub r10,r10,r11,LSL #26
- mov r11,r1,ASR #25
- sub r1,r1,r11,LSL #25
- add r2,r2,r3,LSL #26
- mov r3,r3,LSR #6
- add r3,r3,r4,LSL #19
- mov r4,r4,LSR #13
- add r4,r4,r5,LSL #13
- mov r5,r5,LSR #19
- add r5,r5,r6,LSL #6
- add r6,r7,r8,LSL #25
- mov r7,r8,LSR #7
- add r7,r7,r9,LSL #19
- mov r8,r9,LSR #13
- add r8,r8,r10,LSL #12
- mov r9,r10,LSR #20
- add r1,r9,r1,LSL #6
- str r2,[r0]
- str r3,[r0,#4]
- str r4,[r0,#8]
- str r5,[r0,#12]
- str r6,[r0,#16]
- str r7,[r0,#20]
- str r8,[r0,#24]
- str r1,[r0,#28]
- ldrd r4,[sp,#0]
- ldrd r6,[sp,#8]
- ldrd r8,[sp,#16]
- ldrd r10,[sp,#24]
- ldr r12,[sp,#480]
- ldr r14,[sp,#484]
- movw r0,0
- mov sp,r12
+ add r1, r3, #144
+ ldr r2, [r1], #4
+ ldr r3, [r1], #4
+ ldr r4, [r1], #4
+ ldr r5, [r1], #4
+ ldr r6, [r1], #4
+ ldr r7, [r1], #4
+ ldr r8, [r1], #4
+ ldr r9, [r1], #4
+ ldr r10, [r1], #4
+ ldr r1, [r1]
+ add r11, r1, r1, LSL #4
+ add r11, r11, r1, LSL #1
+ add r11, r11, #16777216
+ mov r11, r11, ASR #25
+ add r11, r11, r2
+ mov r11, r11, ASR #26
+ add r11, r11, r3
+ mov r11, r11, ASR #25
+ add r11, r11, r4
+ mov r11, r11, ASR #26
+ add r11, r11, r5
+ mov r11, r11, ASR #25
+ add r11, r11, r6
+ mov r11, r11, ASR #26
+ add r11, r11, r7
+ mov r11, r11, ASR #25
+ add r11, r11, r8
+ mov r11, r11, ASR #26
+ add r11, r11, r9
+ mov r11, r11, ASR #25
+ add r11, r11, r10
+ mov r11, r11, ASR #26
+ add r11, r11, r1
+ mov r11, r11, ASR #25
+ add r2, r2, r11
+ add r2, r2, r11, LSL #1
+ add r2, r2, r11, LSL #4
+ mov r11, r2, ASR #26
+ add r3, r3, r11
+ sub r2, r2, r11, LSL #26
+ mov r11, r3, ASR #25
+ add r4, r4, r11
+ sub r3, r3, r11, LSL #25
+ mov r11, r4, ASR #26
+ add r5, r5, r11
+ sub r4, r4, r11, LSL #26
+ mov r11, r5, ASR #25
+ add r6, r6, r11
+ sub r5, r5, r11, LSL #25
+ mov r11, r6, ASR #26
+ add r7, r7, r11
+ sub r6, r6, r11, LSL #26
+ mov r11, r7, ASR #25
+ add r8, r8, r11
+ sub r7, r7, r11, LSL #25
+ mov r11, r8, ASR #26
+ add r9, r9, r11
+ sub r8, r8, r11, LSL #26
+ mov r11, r9, ASR #25
+ add r10, r10, r11
+ sub r9, r9, r11, LSL #25
+ mov r11, r10, ASR #26
+ add r1, r1, r11
+ sub r10, r10, r11, LSL #26
+ mov r11, r1, ASR #25
+ sub r1, r1, r11, LSL #25
+ add r2, r2, r3, LSL #26
+ mov r3, r3, LSR #6
+ add r3, r3, r4, LSL #19
+ mov r4, r4, LSR #13
+ add r4, r4, r5, LSL #13
+ mov r5, r5, LSR #19
+ add r5, r5, r6, LSL #6
+ add r6, r7, r8, LSL #25
+ mov r7, r8, LSR #7
+ add r7, r7, r9, LSL #19
+ mov r8, r9, LSR #13
+ add r8, r8, r10, LSL #12
+ mov r9, r10, LSR #20
+ add r1, r9, r1, LSL #6
+ str r2, [r0]
+ str r3, [r0, #4]
+ str r4, [r0, #8]
+ str r5, [r0, #12]
+ str r6, [r0, #16]
+ str r7, [r0, #20]
+ str r8, [r0, #24]
+ str r1, [r0, #28]
+ ldrd r4, [sp, #0]
+ ldrd r6, [sp, #8]
+ ldrd r8, [sp, #16]
+ ldrd r10, [sp, #24]
+ ldr r12, [sp, #480]
+ ldr r14, [sp, #484]
+ movw r0, 0
+ mov sp, r12
bx lr
ENDPROC(curve25519_neon)
#endif