Home | History | Annotate | Download | only in asm
      1 /* Copyright (c) 2015, Google Inc.
      2  *
      3  * Permission to use, copy, modify, and/or distribute this software for any
      4  * purpose with or without fee is hereby granted, provided that the above
      5  * copyright notice and this permission notice appear in all copies.
      6  *
      7  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
      8  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
      9  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
     10  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     11  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
     12  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
     13  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
     14 
     15 /* This file is taken from crypto_scalarmult/curve25519/neon2/scalarmult.s in
     16  * SUPERCOP 20141124 (http://bench.cr.yp.to/supercop.html). That code is public
     17  * domain licensed but the standard ISC license is included above to keep
     18  * licensing simple. */
     19 
     20 #if !defined(OPENSSL_NO_ASM)
     21 #if defined(__arm__)
     22 
     23 .fpu neon
     24 .text
     25 .align 4
     26 
     27 .global x25519_NEON
     28 .hidden x25519_NEON
     29 .type x25519_NEON, %function
     30 x25519_NEON:
     31 vpush {q4,q5,q6,q7}
     32 mov r12,sp
     33 sub sp,sp,#736
     34 and sp,sp,#0xffffffe0
     35 strd r4,[sp,#0]
     36 strd r6,[sp,#8]
     37 strd r8,[sp,#16]
     38 strd r10,[sp,#24]
     39 str r12,[sp,#480]
     40 str r14,[sp,#484]
     41 mov r0,r0
     42 mov r1,r1
     43 mov r2,r2
     44 add r3,sp,#32
     45 ldr r4,=0
     46 ldr r5,=254
     47 vmov.i32 q0,#1
     48 vshr.u64 q1,q0,#7
     49 vshr.u64 q0,q0,#8
     50 vmov.i32 d4,#19
     51 vmov.i32 d5,#38
     52 add r6,sp,#512
     53 vst1.8 {d2-d3},[r6,: 128]
     54 add r6,sp,#528
     55 vst1.8 {d0-d1},[r6,: 128]
     56 add r6,sp,#544
     57 vst1.8 {d4-d5},[r6,: 128]
     58 add r6,r3,#0
     59 vmov.i32 q2,#0
     60 vst1.8 {d4-d5},[r6,: 128]!
     61 vst1.8 {d4-d5},[r6,: 128]!
     62 vst1.8 d4,[r6,: 64]
     63 add r6,r3,#0
     64 ldr r7,=960
     65 sub r7,r7,#2
     66 neg r7,r7
     67 sub r7,r7,r7,LSL #7
     68 str r7,[r6]
     69 add r6,sp,#704
     70 vld1.8 {d4-d5},[r1]!
     71 vld1.8 {d6-d7},[r1]
     72 vst1.8 {d4-d5},[r6,: 128]!
     73 vst1.8 {d6-d7},[r6,: 128]
     74 sub r1,r6,#16
     75 ldrb r6,[r1]
     76 and r6,r6,#248
     77 strb r6,[r1]
     78 ldrb r6,[r1,#31]
     79 and r6,r6,#127
     80 orr r6,r6,#64
     81 strb r6,[r1,#31]
     82 vmov.i64 q2,#0xffffffff
     83 vshr.u64 q3,q2,#7
     84 vshr.u64 q2,q2,#6
     85 vld1.8 {d8},[r2]
     86 vld1.8 {d10},[r2]
     87 add r2,r2,#6
     88 vld1.8 {d12},[r2]
     89 vld1.8 {d14},[r2]
     90 add r2,r2,#6
     91 vld1.8 {d16},[r2]
     92 add r2,r2,#4
     93 vld1.8 {d18},[r2]
     94 vld1.8 {d20},[r2]
     95 add r2,r2,#6
     96 vld1.8 {d22},[r2]
     97 add r2,r2,#2
     98 vld1.8 {d24},[r2]
     99 vld1.8 {d26},[r2]
    100 vshr.u64 q5,q5,#26
    101 vshr.u64 q6,q6,#3
    102 vshr.u64 q7,q7,#29
    103 vshr.u64 q8,q8,#6
    104 vshr.u64 q10,q10,#25
    105 vshr.u64 q11,q11,#3
    106 vshr.u64 q12,q12,#12
    107 vshr.u64 q13,q13,#38
    108 vand q4,q4,q2
    109 vand q6,q6,q2
    110 vand q8,q8,q2
    111 vand q10,q10,q2
    112 vand q2,q12,q2
    113 vand q5,q5,q3
    114 vand q7,q7,q3
    115 vand q9,q9,q3
    116 vand q11,q11,q3
    117 vand q3,q13,q3
    118 add r2,r3,#48
    119 vadd.i64 q12,q4,q1
    120 vadd.i64 q13,q10,q1
    121 vshr.s64 q12,q12,#26
    122 vshr.s64 q13,q13,#26
    123 vadd.i64 q5,q5,q12
    124 vshl.i64 q12,q12,#26
    125 vadd.i64 q14,q5,q0
    126 vadd.i64 q11,q11,q13
    127 vshl.i64 q13,q13,#26
    128 vadd.i64 q15,q11,q0
    129 vsub.i64 q4,q4,q12
    130 vshr.s64 q12,q14,#25
    131 vsub.i64 q10,q10,q13
    132 vshr.s64 q13,q15,#25
    133 vadd.i64 q6,q6,q12
    134 vshl.i64 q12,q12,#25
    135 vadd.i64 q14,q6,q1
    136 vadd.i64 q2,q2,q13
    137 vsub.i64 q5,q5,q12
    138 vshr.s64 q12,q14,#26
    139 vshl.i64 q13,q13,#25
    140 vadd.i64 q14,q2,q1
    141 vadd.i64 q7,q7,q12
    142 vshl.i64 q12,q12,#26
    143 vadd.i64 q15,q7,q0
    144 vsub.i64 q11,q11,q13
    145 vshr.s64 q13,q14,#26
    146 vsub.i64 q6,q6,q12
    147 vshr.s64 q12,q15,#25
    148 vadd.i64 q3,q3,q13
    149 vshl.i64 q13,q13,#26
    150 vadd.i64 q14,q3,q0
    151 vadd.i64 q8,q8,q12
    152 vshl.i64 q12,q12,#25
    153 vadd.i64 q15,q8,q1
    154 add r2,r2,#8
    155 vsub.i64 q2,q2,q13
    156 vshr.s64 q13,q14,#25
    157 vsub.i64 q7,q7,q12
    158 vshr.s64 q12,q15,#26
    159 vadd.i64 q14,q13,q13
    160 vadd.i64 q9,q9,q12
    161 vtrn.32 d12,d14
    162 vshl.i64 q12,q12,#26
    163 vtrn.32 d13,d15
    164 vadd.i64 q0,q9,q0
    165 vadd.i64 q4,q4,q14
    166 vst1.8 d12,[r2,: 64]!
    167 vshl.i64 q6,q13,#4
    168 vsub.i64 q7,q8,q12
    169 vshr.s64 q0,q0,#25
    170 vadd.i64 q4,q4,q6
    171 vadd.i64 q6,q10,q0
    172 vshl.i64 q0,q0,#25
    173 vadd.i64 q8,q6,q1
    174 vadd.i64 q4,q4,q13
    175 vshl.i64 q10,q13,#25
    176 vadd.i64 q1,q4,q1
    177 vsub.i64 q0,q9,q0
    178 vshr.s64 q8,q8,#26
    179 vsub.i64 q3,q3,q10
    180 vtrn.32 d14,d0
    181 vshr.s64 q1,q1,#26
    182 vtrn.32 d15,d1
    183 vadd.i64 q0,q11,q8
    184 vst1.8 d14,[r2,: 64]
    185 vshl.i64 q7,q8,#26
    186 vadd.i64 q5,q5,q1
    187 vtrn.32 d4,d6
    188 vshl.i64 q1,q1,#26
    189 vtrn.32 d5,d7
    190 vsub.i64 q3,q6,q7
    191 add r2,r2,#16
    192 vsub.i64 q1,q4,q1
    193 vst1.8 d4,[r2,: 64]
    194 vtrn.32 d6,d0
    195 vtrn.32 d7,d1
    196 sub r2,r2,#8
    197 vtrn.32 d2,d10
    198 vtrn.32 d3,d11
    199 vst1.8 d6,[r2,: 64]
    200 sub r2,r2,#24
    201 vst1.8 d2,[r2,: 64]
    202 add r2,r3,#96
    203 vmov.i32 q0,#0
    204 vmov.i64 d2,#0xff
    205 vmov.i64 d3,#0
    206 vshr.u32 q1,q1,#7
    207 vst1.8 {d2-d3},[r2,: 128]!
    208 vst1.8 {d0-d1},[r2,: 128]!
    209 vst1.8 d0,[r2,: 64]
    210 add r2,r3,#144
    211 vmov.i32 q0,#0
    212 vst1.8 {d0-d1},[r2,: 128]!
    213 vst1.8 {d0-d1},[r2,: 128]!
    214 vst1.8 d0,[r2,: 64]
    215 add r2,r3,#240
    216 vmov.i32 q0,#0
    217 vmov.i64 d2,#0xff
    218 vmov.i64 d3,#0
    219 vshr.u32 q1,q1,#7
    220 vst1.8 {d2-d3},[r2,: 128]!
    221 vst1.8 {d0-d1},[r2,: 128]!
    222 vst1.8 d0,[r2,: 64]
    223 add r2,r3,#48
    224 add r6,r3,#192
    225 vld1.8 {d0-d1},[r2,: 128]!
    226 vld1.8 {d2-d3},[r2,: 128]!
    227 vld1.8 {d4},[r2,: 64]
    228 vst1.8 {d0-d1},[r6,: 128]!
    229 vst1.8 {d2-d3},[r6,: 128]!
    230 vst1.8 d4,[r6,: 64]
    231 ._mainloop:
    232 mov r2,r5,LSR #3
    233 and r6,r5,#7
    234 ldrb r2,[r1,r2]
    235 mov r2,r2,LSR r6
    236 and r2,r2,#1
    237 str r5,[sp,#488]
    238 eor r4,r4,r2
    239 str r2,[sp,#492]
    240 neg r2,r4
    241 add r4,r3,#96
    242 add r5,r3,#192
    243 add r6,r3,#144
    244 vld1.8 {d8-d9},[r4,: 128]!
    245 add r7,r3,#240
    246 vld1.8 {d10-d11},[r5,: 128]!
    247 veor q6,q4,q5
    248 vld1.8 {d14-d15},[r6,: 128]!
    249 vdup.i32 q8,r2
    250 vld1.8 {d18-d19},[r7,: 128]!
    251 veor q10,q7,q9
    252 vld1.8 {d22-d23},[r4,: 128]!
    253 vand q6,q6,q8
    254 vld1.8 {d24-d25},[r5,: 128]!
    255 vand q10,q10,q8
    256 vld1.8 {d26-d27},[r6,: 128]!
    257 veor q4,q4,q6
    258 vld1.8 {d28-d29},[r7,: 128]!
    259 veor q5,q5,q6
    260 vld1.8 {d0},[r4,: 64]
    261 veor q6,q7,q10
    262 vld1.8 {d2},[r5,: 64]
    263 veor q7,q9,q10
    264 vld1.8 {d4},[r6,: 64]
    265 veor q9,q11,q12
    266 vld1.8 {d6},[r7,: 64]
    267 veor q10,q0,q1
    268 sub r2,r4,#32
    269 vand q9,q9,q8
    270 sub r4,r5,#32
    271 vand q10,q10,q8
    272 sub r5,r6,#32
    273 veor q11,q11,q9
    274 sub r6,r7,#32
    275 veor q0,q0,q10
    276 veor q9,q12,q9
    277 veor q1,q1,q10
    278 veor q10,q13,q14
    279 veor q12,q2,q3
    280 vand q10,q10,q8
    281 vand q8,q12,q8
    282 veor q12,q13,q10
    283 veor q2,q2,q8
    284 veor q10,q14,q10
    285 veor q3,q3,q8
    286 vadd.i32 q8,q4,q6
    287 vsub.i32 q4,q4,q6
    288 vst1.8 {d16-d17},[r2,: 128]!
    289 vadd.i32 q6,q11,q12
    290 vst1.8 {d8-d9},[r5,: 128]!
    291 vsub.i32 q4,q11,q12
    292 vst1.8 {d12-d13},[r2,: 128]!
    293 vadd.i32 q6,q0,q2
    294 vst1.8 {d8-d9},[r5,: 128]!
    295 vsub.i32 q0,q0,q2
    296 vst1.8 d12,[r2,: 64]
    297 vadd.i32 q2,q5,q7
    298 vst1.8 d0,[r5,: 64]
    299 vsub.i32 q0,q5,q7
    300 vst1.8 {d4-d5},[r4,: 128]!
    301 vadd.i32 q2,q9,q10
    302 vst1.8 {d0-d1},[r6,: 128]!
    303 vsub.i32 q0,q9,q10
    304 vst1.8 {d4-d5},[r4,: 128]!
    305 vadd.i32 q2,q1,q3
    306 vst1.8 {d0-d1},[r6,: 128]!
    307 vsub.i32 q0,q1,q3
    308 vst1.8 d4,[r4,: 64]
    309 vst1.8 d0,[r6,: 64]
    310 add r2,sp,#544
    311 add r4,r3,#96
    312 add r5,r3,#144
    313 vld1.8 {d0-d1},[r2,: 128]
    314 vld1.8 {d2-d3},[r4,: 128]!
    315 vld1.8 {d4-d5},[r5,: 128]!
    316 vzip.i32 q1,q2
    317 vld1.8 {d6-d7},[r4,: 128]!
    318 vld1.8 {d8-d9},[r5,: 128]!
    319 vshl.i32 q5,q1,#1
    320 vzip.i32 q3,q4
    321 vshl.i32 q6,q2,#1
    322 vld1.8 {d14},[r4,: 64]
    323 vshl.i32 q8,q3,#1
    324 vld1.8 {d15},[r5,: 64]
    325 vshl.i32 q9,q4,#1
    326 vmul.i32 d21,d7,d1
    327 vtrn.32 d14,d15
    328 vmul.i32 q11,q4,q0
    329 vmul.i32 q0,q7,q0
    330 vmull.s32 q12,d2,d2
    331 vmlal.s32 q12,d11,d1
    332 vmlal.s32 q12,d12,d0
    333 vmlal.s32 q12,d13,d23
    334 vmlal.s32 q12,d16,d22
    335 vmlal.s32 q12,d7,d21
    336 vmull.s32 q10,d2,d11
    337 vmlal.s32 q10,d4,d1
    338 vmlal.s32 q10,d13,d0
    339 vmlal.s32 q10,d6,d23
    340 vmlal.s32 q10,d17,d22
    341 vmull.s32 q13,d10,d4
    342 vmlal.s32 q13,d11,d3
    343 vmlal.s32 q13,d13,d1
    344 vmlal.s32 q13,d16,d0
    345 vmlal.s32 q13,d17,d23
    346 vmlal.s32 q13,d8,d22
    347 vmull.s32 q1,d10,d5
    348 vmlal.s32 q1,d11,d4
    349 vmlal.s32 q1,d6,d1
    350 vmlal.s32 q1,d17,d0
    351 vmlal.s32 q1,d8,d23
    352 vmull.s32 q14,d10,d6
    353 vmlal.s32 q14,d11,d13
    354 vmlal.s32 q14,d4,d4
    355 vmlal.s32 q14,d17,d1
    356 vmlal.s32 q14,d18,d0
    357 vmlal.s32 q14,d9,d23
    358 vmull.s32 q11,d10,d7
    359 vmlal.s32 q11,d11,d6
    360 vmlal.s32 q11,d12,d5
    361 vmlal.s32 q11,d8,d1
    362 vmlal.s32 q11,d19,d0
    363 vmull.s32 q15,d10,d8
    364 vmlal.s32 q15,d11,d17
    365 vmlal.s32 q15,d12,d6
    366 vmlal.s32 q15,d13,d5
    367 vmlal.s32 q15,d19,d1
    368 vmlal.s32 q15,d14,d0
    369 vmull.s32 q2,d10,d9
    370 vmlal.s32 q2,d11,d8
    371 vmlal.s32 q2,d12,d7
    372 vmlal.s32 q2,d13,d6
    373 vmlal.s32 q2,d14,d1
    374 vmull.s32 q0,d15,d1
    375 vmlal.s32 q0,d10,d14
    376 vmlal.s32 q0,d11,d19
    377 vmlal.s32 q0,d12,d8
    378 vmlal.s32 q0,d13,d17
    379 vmlal.s32 q0,d6,d6
    380 add r2,sp,#512
    381 vld1.8 {d18-d19},[r2,: 128]
    382 vmull.s32 q3,d16,d7
    383 vmlal.s32 q3,d10,d15
    384 vmlal.s32 q3,d11,d14
    385 vmlal.s32 q3,d12,d9
    386 vmlal.s32 q3,d13,d8
    387 add r2,sp,#528
    388 vld1.8 {d8-d9},[r2,: 128]
    389 vadd.i64 q5,q12,q9
    390 vadd.i64 q6,q15,q9
    391 vshr.s64 q5,q5,#26
    392 vshr.s64 q6,q6,#26
    393 vadd.i64 q7,q10,q5
    394 vshl.i64 q5,q5,#26
    395 vadd.i64 q8,q7,q4
    396 vadd.i64 q2,q2,q6
    397 vshl.i64 q6,q6,#26
    398 vadd.i64 q10,q2,q4
    399 vsub.i64 q5,q12,q5
    400 vshr.s64 q8,q8,#25
    401 vsub.i64 q6,q15,q6
    402 vshr.s64 q10,q10,#25
    403 vadd.i64 q12,q13,q8
    404 vshl.i64 q8,q8,#25
    405 vadd.i64 q13,q12,q9
    406 vadd.i64 q0,q0,q10
    407 vsub.i64 q7,q7,q8
    408 vshr.s64 q8,q13,#26
    409 vshl.i64 q10,q10,#25
    410 vadd.i64 q13,q0,q9
    411 vadd.i64 q1,q1,q8
    412 vshl.i64 q8,q8,#26
    413 vadd.i64 q15,q1,q4
    414 vsub.i64 q2,q2,q10
    415 vshr.s64 q10,q13,#26
    416 vsub.i64 q8,q12,q8
    417 vshr.s64 q12,q15,#25
    418 vadd.i64 q3,q3,q10
    419 vshl.i64 q10,q10,#26
    420 vadd.i64 q13,q3,q4
    421 vadd.i64 q14,q14,q12
    422 add r2,r3,#288
    423 vshl.i64 q12,q12,#25
    424 add r4,r3,#336
    425 vadd.i64 q15,q14,q9
    426 add r2,r2,#8
    427 vsub.i64 q0,q0,q10
    428 add r4,r4,#8
    429 vshr.s64 q10,q13,#25
    430 vsub.i64 q1,q1,q12
    431 vshr.s64 q12,q15,#26
    432 vadd.i64 q13,q10,q10
    433 vadd.i64 q11,q11,q12
    434 vtrn.32 d16,d2
    435 vshl.i64 q12,q12,#26
    436 vtrn.32 d17,d3
    437 vadd.i64 q1,q11,q4
    438 vadd.i64 q4,q5,q13
    439 vst1.8 d16,[r2,: 64]!
    440 vshl.i64 q5,q10,#4
    441 vst1.8 d17,[r4,: 64]!
    442 vsub.i64 q8,q14,q12
    443 vshr.s64 q1,q1,#25
    444 vadd.i64 q4,q4,q5
    445 vadd.i64 q5,q6,q1
    446 vshl.i64 q1,q1,#25
    447 vadd.i64 q6,q5,q9
    448 vadd.i64 q4,q4,q10
    449 vshl.i64 q10,q10,#25
    450 vadd.i64 q9,q4,q9
    451 vsub.i64 q1,q11,q1
    452 vshr.s64 q6,q6,#26
    453 vsub.i64 q3,q3,q10
    454 vtrn.32 d16,d2
    455 vshr.s64 q9,q9,#26
    456 vtrn.32 d17,d3
    457 vadd.i64 q1,q2,q6
    458 vst1.8 d16,[r2,: 64]
    459 vshl.i64 q2,q6,#26
    460 vst1.8 d17,[r4,: 64]
    461 vadd.i64 q6,q7,q9
    462 vtrn.32 d0,d6
    463 vshl.i64 q7,q9,#26
    464 vtrn.32 d1,d7
    465 vsub.i64 q2,q5,q2
    466 add r2,r2,#16
    467 vsub.i64 q3,q4,q7
    468 vst1.8 d0,[r2,: 64]
    469 add r4,r4,#16
    470 vst1.8 d1,[r4,: 64]
    471 vtrn.32 d4,d2
    472 vtrn.32 d5,d3
    473 sub r2,r2,#8
    474 sub r4,r4,#8
    475 vtrn.32 d6,d12
    476 vtrn.32 d7,d13
    477 vst1.8 d4,[r2,: 64]
    478 vst1.8 d5,[r4,: 64]
    479 sub r2,r2,#24
    480 sub r4,r4,#24
    481 vst1.8 d6,[r2,: 64]
    482 vst1.8 d7,[r4,: 64]
    483 add r2,r3,#240
    484 add r4,r3,#96
    485 vld1.8 {d0-d1},[r4,: 128]!
    486 vld1.8 {d2-d3},[r4,: 128]!
    487 vld1.8 {d4},[r4,: 64]
    488 add r4,r3,#144
    489 vld1.8 {d6-d7},[r4,: 128]!
    490 vtrn.32 q0,q3
    491 vld1.8 {d8-d9},[r4,: 128]!
    492 vshl.i32 q5,q0,#4
    493 vtrn.32 q1,q4
    494 vshl.i32 q6,q3,#4
    495 vadd.i32 q5,q5,q0
    496 vadd.i32 q6,q6,q3
    497 vshl.i32 q7,q1,#4
    498 vld1.8 {d5},[r4,: 64]
    499 vshl.i32 q8,q4,#4
    500 vtrn.32 d4,d5
    501 vadd.i32 q7,q7,q1
    502 vadd.i32 q8,q8,q4
    503 vld1.8 {d18-d19},[r2,: 128]!
    504 vshl.i32 q10,q2,#4
    505 vld1.8 {d22-d23},[r2,: 128]!
    506 vadd.i32 q10,q10,q2
    507 vld1.8 {d24},[r2,: 64]
    508 vadd.i32 q5,q5,q0
    509 add r2,r3,#192
    510 vld1.8 {d26-d27},[r2,: 128]!
    511 vadd.i32 q6,q6,q3
    512 vld1.8 {d28-d29},[r2,: 128]!
    513 vadd.i32 q8,q8,q4
    514 vld1.8 {d25},[r2,: 64]
    515 vadd.i32 q10,q10,q2
    516 vtrn.32 q9,q13
    517 vadd.i32 q7,q7,q1
    518 vadd.i32 q5,q5,q0
    519 vtrn.32 q11,q14
    520 vadd.i32 q6,q6,q3
    521 add r2,sp,#560
    522 vadd.i32 q10,q10,q2
    523 vtrn.32 d24,d25
    524 vst1.8 {d12-d13},[r2,: 128]
    525 vshl.i32 q6,q13,#1
    526 add r2,sp,#576
    527 vst1.8 {d20-d21},[r2,: 128]
    528 vshl.i32 q10,q14,#1
    529 add r2,sp,#592
    530 vst1.8 {d12-d13},[r2,: 128]
    531 vshl.i32 q15,q12,#1
    532 vadd.i32 q8,q8,q4
    533 vext.32 d10,d31,d30,#0
    534 vadd.i32 q7,q7,q1
    535 add r2,sp,#608
    536 vst1.8 {d16-d17},[r2,: 128]
    537 vmull.s32 q8,d18,d5
    538 vmlal.s32 q8,d26,d4
    539 vmlal.s32 q8,d19,d9
    540 vmlal.s32 q8,d27,d3
    541 vmlal.s32 q8,d22,d8
    542 vmlal.s32 q8,d28,d2
    543 vmlal.s32 q8,d23,d7
    544 vmlal.s32 q8,d29,d1
    545 vmlal.s32 q8,d24,d6
    546 vmlal.s32 q8,d25,d0
    547 add r2,sp,#624
    548 vst1.8 {d14-d15},[r2,: 128]
    549 vmull.s32 q2,d18,d4
    550 vmlal.s32 q2,d12,d9
    551 vmlal.s32 q2,d13,d8
    552 vmlal.s32 q2,d19,d3
    553 vmlal.s32 q2,d22,d2
    554 vmlal.s32 q2,d23,d1
    555 vmlal.s32 q2,d24,d0
    556 add r2,sp,#640
    557 vst1.8 {d20-d21},[r2,: 128]
    558 vmull.s32 q7,d18,d9
    559 vmlal.s32 q7,d26,d3
    560 vmlal.s32 q7,d19,d8
    561 vmlal.s32 q7,d27,d2
    562 vmlal.s32 q7,d22,d7
    563 vmlal.s32 q7,d28,d1
    564 vmlal.s32 q7,d23,d6
    565 vmlal.s32 q7,d29,d0
    566 add r2,sp,#656
    567 vst1.8 {d10-d11},[r2,: 128]
    568 vmull.s32 q5,d18,d3
    569 vmlal.s32 q5,d19,d2
    570 vmlal.s32 q5,d22,d1
    571 vmlal.s32 q5,d23,d0
    572 vmlal.s32 q5,d12,d8
    573 add r2,sp,#672
    574 vst1.8 {d16-d17},[r2,: 128]
    575 vmull.s32 q4,d18,d8
    576 vmlal.s32 q4,d26,d2
    577 vmlal.s32 q4,d19,d7
    578 vmlal.s32 q4,d27,d1
    579 vmlal.s32 q4,d22,d6
    580 vmlal.s32 q4,d28,d0
    581 vmull.s32 q8,d18,d7
    582 vmlal.s32 q8,d26,d1
    583 vmlal.s32 q8,d19,d6
    584 vmlal.s32 q8,d27,d0
    585 add r2,sp,#576
    586 vld1.8 {d20-d21},[r2,: 128]
    587 vmlal.s32 q7,d24,d21
    588 vmlal.s32 q7,d25,d20
    589 vmlal.s32 q4,d23,d21
    590 vmlal.s32 q4,d29,d20
    591 vmlal.s32 q8,d22,d21
    592 vmlal.s32 q8,d28,d20
    593 vmlal.s32 q5,d24,d20
    594 add r2,sp,#576
    595 vst1.8 {d14-d15},[r2,: 128]
    596 vmull.s32 q7,d18,d6
    597 vmlal.s32 q7,d26,d0
    598 add r2,sp,#656
    599 vld1.8 {d30-d31},[r2,: 128]
    600 vmlal.s32 q2,d30,d21
    601 vmlal.s32 q7,d19,d21
    602 vmlal.s32 q7,d27,d20
    603 add r2,sp,#624
    604 vld1.8 {d26-d27},[r2,: 128]
    605 vmlal.s32 q4,d25,d27
    606 vmlal.s32 q8,d29,d27
    607 vmlal.s32 q8,d25,d26
    608 vmlal.s32 q7,d28,d27
    609 vmlal.s32 q7,d29,d26
    610 add r2,sp,#608
    611 vld1.8 {d28-d29},[r2,: 128]
    612 vmlal.s32 q4,d24,d29
    613 vmlal.s32 q8,d23,d29
    614 vmlal.s32 q8,d24,d28
    615 vmlal.s32 q7,d22,d29
    616 vmlal.s32 q7,d23,d28
    617 add r2,sp,#608
    618 vst1.8 {d8-d9},[r2,: 128]
    619 add r2,sp,#560
    620 vld1.8 {d8-d9},[r2,: 128]
    621 vmlal.s32 q7,d24,d9
    622 vmlal.s32 q7,d25,d31
    623 vmull.s32 q1,d18,d2
    624 vmlal.s32 q1,d19,d1
    625 vmlal.s32 q1,d22,d0
    626 vmlal.s32 q1,d24,d27
    627 vmlal.s32 q1,d23,d20
    628 vmlal.s32 q1,d12,d7
    629 vmlal.s32 q1,d13,d6
    630 vmull.s32 q6,d18,d1
    631 vmlal.s32 q6,d19,d0
    632 vmlal.s32 q6,d23,d27
    633 vmlal.s32 q6,d22,d20
    634 vmlal.s32 q6,d24,d26
    635 vmull.s32 q0,d18,d0
    636 vmlal.s32 q0,d22,d27
    637 vmlal.s32 q0,d23,d26
    638 vmlal.s32 q0,d24,d31
    639 vmlal.s32 q0,d19,d20
    640 add r2,sp,#640
    641 vld1.8 {d18-d19},[r2,: 128]
    642 vmlal.s32 q2,d18,d7
    643 vmlal.s32 q2,d19,d6
    644 vmlal.s32 q5,d18,d6
    645 vmlal.s32 q5,d19,d21
    646 vmlal.s32 q1,d18,d21
    647 vmlal.s32 q1,d19,d29
    648 vmlal.s32 q0,d18,d28
    649 vmlal.s32 q0,d19,d9
    650 vmlal.s32 q6,d18,d29
    651 vmlal.s32 q6,d19,d28
    652 add r2,sp,#592
    653 vld1.8 {d18-d19},[r2,: 128]
    654 add r2,sp,#512
    655 vld1.8 {d22-d23},[r2,: 128]
    656 vmlal.s32 q5,d19,d7
    657 vmlal.s32 q0,d18,d21
    658 vmlal.s32 q0,d19,d29
    659 vmlal.s32 q6,d18,d6
    660 add r2,sp,#528
    661 vld1.8 {d6-d7},[r2,: 128]
    662 vmlal.s32 q6,d19,d21
    663 add r2,sp,#576
    664 vld1.8 {d18-d19},[r2,: 128]
    665 vmlal.s32 q0,d30,d8
    666 add r2,sp,#672
    667 vld1.8 {d20-d21},[r2,: 128]
    668 vmlal.s32 q5,d30,d29
    669 add r2,sp,#608
    670 vld1.8 {d24-d25},[r2,: 128]
    671 vmlal.s32 q1,d30,d28
    672 vadd.i64 q13,q0,q11
    673 vadd.i64 q14,q5,q11
    674 vmlal.s32 q6,d30,d9
    675 vshr.s64 q4,q13,#26
    676 vshr.s64 q13,q14,#26
    677 vadd.i64 q7,q7,q4
    678 vshl.i64 q4,q4,#26
    679 vadd.i64 q14,q7,q3
    680 vadd.i64 q9,q9,q13
    681 vshl.i64 q13,q13,#26
    682 vadd.i64 q15,q9,q3
    683 vsub.i64 q0,q0,q4
    684 vshr.s64 q4,q14,#25
    685 vsub.i64 q5,q5,q13
    686 vshr.s64 q13,q15,#25
    687 vadd.i64 q6,q6,q4
    688 vshl.i64 q4,q4,#25
    689 vadd.i64 q14,q6,q11
    690 vadd.i64 q2,q2,q13
    691 vsub.i64 q4,q7,q4
    692 vshr.s64 q7,q14,#26
    693 vshl.i64 q13,q13,#25
    694 vadd.i64 q14,q2,q11
    695 vadd.i64 q8,q8,q7
    696 vshl.i64 q7,q7,#26
    697 vadd.i64 q15,q8,q3
    698 vsub.i64 q9,q9,q13
    699 vshr.s64 q13,q14,#26
    700 vsub.i64 q6,q6,q7
    701 vshr.s64 q7,q15,#25
    702 vadd.i64 q10,q10,q13
    703 vshl.i64 q13,q13,#26
    704 vadd.i64 q14,q10,q3
    705 vadd.i64 q1,q1,q7
    706 add r2,r3,#144
    707 vshl.i64 q7,q7,#25
    708 add r4,r3,#96
    709 vadd.i64 q15,q1,q11
    710 add r2,r2,#8
    711 vsub.i64 q2,q2,q13
    712 add r4,r4,#8
    713 vshr.s64 q13,q14,#25
    714 vsub.i64 q7,q8,q7
    715 vshr.s64 q8,q15,#26
    716 vadd.i64 q14,q13,q13
    717 vadd.i64 q12,q12,q8
    718 vtrn.32 d12,d14
    719 vshl.i64 q8,q8,#26
    720 vtrn.32 d13,d15
    721 vadd.i64 q3,q12,q3
    722 vadd.i64 q0,q0,q14
    723 vst1.8 d12,[r2,: 64]!
    724 vshl.i64 q7,q13,#4
    725 vst1.8 d13,[r4,: 64]!
    726 vsub.i64 q1,q1,q8
    727 vshr.s64 q3,q3,#25
    728 vadd.i64 q0,q0,q7
    729 vadd.i64 q5,q5,q3
    730 vshl.i64 q3,q3,#25
    731 vadd.i64 q6,q5,q11
    732 vadd.i64 q0,q0,q13
    733 vshl.i64 q7,q13,#25
    734 vadd.i64 q8,q0,q11
    735 vsub.i64 q3,q12,q3
    736 vshr.s64 q6,q6,#26
    737 vsub.i64 q7,q10,q7
    738 vtrn.32 d2,d6
    739 vshr.s64 q8,q8,#26
    740 vtrn.32 d3,d7
    741 vadd.i64 q3,q9,q6
    742 vst1.8 d2,[r2,: 64]
    743 vshl.i64 q6,q6,#26
    744 vst1.8 d3,[r4,: 64]
    745 vadd.i64 q1,q4,q8
    746 vtrn.32 d4,d14
    747 vshl.i64 q4,q8,#26
    748 vtrn.32 d5,d15
    749 vsub.i64 q5,q5,q6
    750 add r2,r2,#16
    751 vsub.i64 q0,q0,q4
    752 vst1.8 d4,[r2,: 64]
    753 add r4,r4,#16
    754 vst1.8 d5,[r4,: 64]
    755 vtrn.32 d10,d6
    756 vtrn.32 d11,d7
    757 sub r2,r2,#8
    758 sub r4,r4,#8
    759 vtrn.32 d0,d2
    760 vtrn.32 d1,d3
    761 vst1.8 d10,[r2,: 64]
    762 vst1.8 d11,[r4,: 64]
    763 sub r2,r2,#24
    764 sub r4,r4,#24
    765 vst1.8 d0,[r2,: 64]
    766 vst1.8 d1,[r4,: 64]
    767 add r2,r3,#288
    768 add r4,r3,#336
    769 vld1.8 {d0-d1},[r2,: 128]!
    770 vld1.8 {d2-d3},[r4,: 128]!
    771 vsub.i32 q0,q0,q1
    772 vld1.8 {d2-d3},[r2,: 128]!
    773 vld1.8 {d4-d5},[r4,: 128]!
    774 vsub.i32 q1,q1,q2
    775 add r5,r3,#240
    776 vld1.8 {d4},[r2,: 64]
    777 vld1.8 {d6},[r4,: 64]
    778 vsub.i32 q2,q2,q3
    779 vst1.8 {d0-d1},[r5,: 128]!
    780 vst1.8 {d2-d3},[r5,: 128]!
    781 vst1.8 d4,[r5,: 64]
    782 add r2,r3,#144
    783 add r4,r3,#96
    784 add r5,r3,#144
    785 add r6,r3,#192
    786 vld1.8 {d0-d1},[r2,: 128]!
    787 vld1.8 {d2-d3},[r4,: 128]!
    788 vsub.i32 q2,q0,q1
    789 vadd.i32 q0,q0,q1
    790 vld1.8 {d2-d3},[r2,: 128]!
    791 vld1.8 {d6-d7},[r4,: 128]!
    792 vsub.i32 q4,q1,q3
    793 vadd.i32 q1,q1,q3
    794 vld1.8 {d6},[r2,: 64]
    795 vld1.8 {d10},[r4,: 64]
    796 vsub.i32 q6,q3,q5
    797 vadd.i32 q3,q3,q5
    798 vst1.8 {d4-d5},[r5,: 128]!
    799 vst1.8 {d0-d1},[r6,: 128]!
    800 vst1.8 {d8-d9},[r5,: 128]!
    801 vst1.8 {d2-d3},[r6,: 128]!
    802 vst1.8 d12,[r5,: 64]
    803 vst1.8 d6,[r6,: 64]
    804 add r2,r3,#0
    805 add r4,r3,#240
    806 vld1.8 {d0-d1},[r4,: 128]!
    807 vld1.8 {d2-d3},[r4,: 128]!
    808 vld1.8 {d4},[r4,: 64]
    809 add r4,r3,#336
    810 vld1.8 {d6-d7},[r4,: 128]!
    811 vtrn.32 q0,q3
    812 vld1.8 {d8-d9},[r4,: 128]!
    813 vshl.i32 q5,q0,#4
    814 vtrn.32 q1,q4
    815 vshl.i32 q6,q3,#4
    816 vadd.i32 q5,q5,q0
    817 vadd.i32 q6,q6,q3
    818 vshl.i32 q7,q1,#4
    819 vld1.8 {d5},[r4,: 64]
    820 vshl.i32 q8,q4,#4
    821 vtrn.32 d4,d5
    822 vadd.i32 q7,q7,q1
    823 vadd.i32 q8,q8,q4
    824 vld1.8 {d18-d19},[r2,: 128]!
    825 vshl.i32 q10,q2,#4
    826 vld1.8 {d22-d23},[r2,: 128]!
    827 vadd.i32 q10,q10,q2
    828 vld1.8 {d24},[r2,: 64]
    829 vadd.i32 q5,q5,q0
    830 add r2,r3,#288
    831 vld1.8 {d26-d27},[r2,: 128]!
    832 vadd.i32 q6,q6,q3
    833 vld1.8 {d28-d29},[r2,: 128]!
    834 vadd.i32 q8,q8,q4
    835 vld1.8 {d25},[r2,: 64]
    836 vadd.i32 q10,q10,q2
    837 vtrn.32 q9,q13
    838 vadd.i32 q7,q7,q1
    839 vadd.i32 q5,q5,q0
    840 vtrn.32 q11,q14
    841 vadd.i32 q6,q6,q3
    842 add r2,sp,#560
    843 vadd.i32 q10,q10,q2
    844 vtrn.32 d24,d25
    845 vst1.8 {d12-d13},[r2,: 128]
    846 vshl.i32 q6,q13,#1
    847 add r2,sp,#576
    848 vst1.8 {d20-d21},[r2,: 128]
    849 vshl.i32 q10,q14,#1
    850 add r2,sp,#592
    851 vst1.8 {d12-d13},[r2,: 128]
    852 vshl.i32 q15,q12,#1
    853 vadd.i32 q8,q8,q4
    854 vext.32 d10,d31,d30,#0
    855 vadd.i32 q7,q7,q1
    856 add r2,sp,#608
    857 vst1.8 {d16-d17},[r2,: 128]
    858 vmull.s32 q8,d18,d5
    859 vmlal.s32 q8,d26,d4
    860 vmlal.s32 q8,d19,d9
    861 vmlal.s32 q8,d27,d3
    862 vmlal.s32 q8,d22,d8
    863 vmlal.s32 q8,d28,d2
    864 vmlal.s32 q8,d23,d7
    865 vmlal.s32 q8,d29,d1
    866 vmlal.s32 q8,d24,d6
    867 vmlal.s32 q8,d25,d0
    868 add r2,sp,#624
    869 vst1.8 {d14-d15},[r2,: 128]
    870 vmull.s32 q2,d18,d4
    871 vmlal.s32 q2,d12,d9
    872 vmlal.s32 q2,d13,d8
    873 vmlal.s32 q2,d19,d3
    874 vmlal.s32 q2,d22,d2
    875 vmlal.s32 q2,d23,d1
    876 vmlal.s32 q2,d24,d0
    877 add r2,sp,#640
    878 vst1.8 {d20-d21},[r2,: 128]
    879 vmull.s32 q7,d18,d9
    880 vmlal.s32 q7,d26,d3
    881 vmlal.s32 q7,d19,d8
    882 vmlal.s32 q7,d27,d2
    883 vmlal.s32 q7,d22,d7
    884 vmlal.s32 q7,d28,d1
    885 vmlal.s32 q7,d23,d6
    886 vmlal.s32 q7,d29,d0
    887 add r2,sp,#656
    888 vst1.8 {d10-d11},[r2,: 128]
    889 vmull.s32 q5,d18,d3
    890 vmlal.s32 q5,d19,d2
    891 vmlal.s32 q5,d22,d1
    892 vmlal.s32 q5,d23,d0
    893 vmlal.s32 q5,d12,d8
    894 add r2,sp,#672
    895 vst1.8 {d16-d17},[r2,: 128]
    896 vmull.s32 q4,d18,d8
    897 vmlal.s32 q4,d26,d2
    898 vmlal.s32 q4,d19,d7
    899 vmlal.s32 q4,d27,d1
    900 vmlal.s32 q4,d22,d6
    901 vmlal.s32 q4,d28,d0
    902 vmull.s32 q8,d18,d7
    903 vmlal.s32 q8,d26,d1
    904 vmlal.s32 q8,d19,d6
    905 vmlal.s32 q8,d27,d0
    906 add r2,sp,#576
    907 vld1.8 {d20-d21},[r2,: 128]
    908 vmlal.s32 q7,d24,d21
    909 vmlal.s32 q7,d25,d20
    910 vmlal.s32 q4,d23,d21
    911 vmlal.s32 q4,d29,d20
    912 vmlal.s32 q8,d22,d21
    913 vmlal.s32 q8,d28,d20
    914 vmlal.s32 q5,d24,d20
    915 add r2,sp,#576
    916 vst1.8 {d14-d15},[r2,: 128]
    917 vmull.s32 q7,d18,d6
    918 vmlal.s32 q7,d26,d0
    919 add r2,sp,#656
    920 vld1.8 {d30-d31},[r2,: 128]
    921 vmlal.s32 q2,d30,d21
    922 vmlal.s32 q7,d19,d21
    923 vmlal.s32 q7,d27,d20
    924 add r2,sp,#624
    925 vld1.8 {d26-d27},[r2,: 128]
    926 vmlal.s32 q4,d25,d27
    927 vmlal.s32 q8,d29,d27
    928 vmlal.s32 q8,d25,d26
    929 vmlal.s32 q7,d28,d27
    930 vmlal.s32 q7,d29,d26
    931 add r2,sp,#608
    932 vld1.8 {d28-d29},[r2,: 128]
    933 vmlal.s32 q4,d24,d29
    934 vmlal.s32 q8,d23,d29
    935 vmlal.s32 q8,d24,d28
    936 vmlal.s32 q7,d22,d29
    937 vmlal.s32 q7,d23,d28
    938 add r2,sp,#608
    939 vst1.8 {d8-d9},[r2,: 128]
    940 add r2,sp,#560
    941 vld1.8 {d8-d9},[r2,: 128]
    942 vmlal.s32 q7,d24,d9
    943 vmlal.s32 q7,d25,d31
    944 vmull.s32 q1,d18,d2
    945 vmlal.s32 q1,d19,d1
    946 vmlal.s32 q1,d22,d0
    947 vmlal.s32 q1,d24,d27
    948 vmlal.s32 q1,d23,d20
    949 vmlal.s32 q1,d12,d7
    950 vmlal.s32 q1,d13,d6
    951 vmull.s32 q6,d18,d1
    952 vmlal.s32 q6,d19,d0
    953 vmlal.s32 q6,d23,d27
    954 vmlal.s32 q6,d22,d20
    955 vmlal.s32 q6,d24,d26
    956 vmull.s32 q0,d18,d0
    957 vmlal.s32 q0,d22,d27
    958 vmlal.s32 q0,d23,d26
    959 vmlal.s32 q0,d24,d31
    960 vmlal.s32 q0,d19,d20
    961 add r2,sp,#640
    962 vld1.8 {d18-d19},[r2,: 128]
    963 vmlal.s32 q2,d18,d7
    964 vmlal.s32 q2,d19,d6
    965 vmlal.s32 q5,d18,d6
    966 vmlal.s32 q5,d19,d21
    967 vmlal.s32 q1,d18,d21
    968 vmlal.s32 q1,d19,d29
    969 vmlal.s32 q0,d18,d28
    970 vmlal.s32 q0,d19,d9
    971 vmlal.s32 q6,d18,d29
    972 vmlal.s32 q6,d19,d28
    973 add r2,sp,#592
    974 vld1.8 {d18-d19},[r2,: 128]
    975 add r2,sp,#512
    976 vld1.8 {d22-d23},[r2,: 128]
    977 vmlal.s32 q5,d19,d7
    978 vmlal.s32 q0,d18,d21
    979 vmlal.s32 q0,d19,d29
    980 vmlal.s32 q6,d18,d6
    981 add r2,sp,#528
    982 vld1.8 {d6-d7},[r2,: 128]
    983 vmlal.s32 q6,d19,d21
    984 add r2,sp,#576
    985 vld1.8 {d18-d19},[r2,: 128]
    986 vmlal.s32 q0,d30,d8
    987 add r2,sp,#672
    988 vld1.8 {d20-d21},[r2,: 128]
    989 vmlal.s32 q5,d30,d29
    990 add r2,sp,#608
    991 vld1.8 {d24-d25},[r2,: 128]
    992 vmlal.s32 q1,d30,d28
    993 vadd.i64 q13,q0,q11
    994 vadd.i64 q14,q5,q11
    995 vmlal.s32 q6,d30,d9
    996 vshr.s64 q4,q13,#26
    997 vshr.s64 q13,q14,#26
    998 vadd.i64 q7,q7,q4
    999 vshl.i64 q4,q4,#26
   1000 vadd.i64 q14,q7,q3
   1001 vadd.i64 q9,q9,q13
   1002 vshl.i64 q13,q13,#26
   1003 vadd.i64 q15,q9,q3
   1004 vsub.i64 q0,q0,q4
   1005 vshr.s64 q4,q14,#25
   1006 vsub.i64 q5,q5,q13
   1007 vshr.s64 q13,q15,#25
   1008 vadd.i64 q6,q6,q4
   1009 vshl.i64 q4,q4,#25
   1010 vadd.i64 q14,q6,q11
   1011 vadd.i64 q2,q2,q13
   1012 vsub.i64 q4,q7,q4
   1013 vshr.s64 q7,q14,#26
   1014 vshl.i64 q13,q13,#25
   1015 vadd.i64 q14,q2,q11
   1016 vadd.i64 q8,q8,q7
   1017 vshl.i64 q7,q7,#26
   1018 vadd.i64 q15,q8,q3
   1019 vsub.i64 q9,q9,q13
   1020 vshr.s64 q13,q14,#26
   1021 vsub.i64 q6,q6,q7
   1022 vshr.s64 q7,q15,#25
   1023 vadd.i64 q10,q10,q13
   1024 vshl.i64 q13,q13,#26
   1025 vadd.i64 q14,q10,q3
   1026 vadd.i64 q1,q1,q7
   1027 add r2,r3,#288
   1028 vshl.i64 q7,q7,#25
   1029 add r4,r3,#96
   1030 vadd.i64 q15,q1,q11
   1031 add r2,r2,#8
   1032 vsub.i64 q2,q2,q13
   1033 add r4,r4,#8
   1034 vshr.s64 q13,q14,#25
   1035 vsub.i64 q7,q8,q7
   1036 vshr.s64 q8,q15,#26
   1037 vadd.i64 q14,q13,q13
   1038 vadd.i64 q12,q12,q8
   1039 vtrn.32 d12,d14
   1040 vshl.i64 q8,q8,#26
   1041 vtrn.32 d13,d15
   1042 vadd.i64 q3,q12,q3
   1043 vadd.i64 q0,q0,q14
   1044 vst1.8 d12,[r2,: 64]!
   1045 vshl.i64 q7,q13,#4
   1046 vst1.8 d13,[r4,: 64]!
   1047 vsub.i64 q1,q1,q8
   1048 vshr.s64 q3,q3,#25
   1049 vadd.i64 q0,q0,q7
   1050 vadd.i64 q5,q5,q3
   1051 vshl.i64 q3,q3,#25
   1052 vadd.i64 q6,q5,q11
   1053 vadd.i64 q0,q0,q13
   1054 vshl.i64 q7,q13,#25
   1055 vadd.i64 q8,q0,q11
   1056 vsub.i64 q3,q12,q3
   1057 vshr.s64 q6,q6,#26
   1058 vsub.i64 q7,q10,q7
   1059 vtrn.32 d2,d6
   1060 vshr.s64 q8,q8,#26
   1061 vtrn.32 d3,d7
   1062 vadd.i64 q3,q9,q6
   1063 vst1.8 d2,[r2,: 64]
   1064 vshl.i64 q6,q6,#26
   1065 vst1.8 d3,[r4,: 64]
   1066 vadd.i64 q1,q4,q8
   1067 vtrn.32 d4,d14
   1068 vshl.i64 q4,q8,#26
   1069 vtrn.32 d5,d15
   1070 vsub.i64 q5,q5,q6
   1071 add r2,r2,#16
   1072 vsub.i64 q0,q0,q4
   1073 vst1.8 d4,[r2,: 64]
   1074 add r4,r4,#16
   1075 vst1.8 d5,[r4,: 64]
   1076 vtrn.32 d10,d6
   1077 vtrn.32 d11,d7
   1078 sub r2,r2,#8
   1079 sub r4,r4,#8
   1080 vtrn.32 d0,d2
   1081 vtrn.32 d1,d3
   1082 vst1.8 d10,[r2,: 64]
   1083 vst1.8 d11,[r4,: 64]
   1084 sub r2,r2,#24
   1085 sub r4,r4,#24
   1086 vst1.8 d0,[r2,: 64]
   1087 vst1.8 d1,[r4,: 64]
   1088 add r2,sp,#544
   1089 add r4,r3,#144
   1090 add r5,r3,#192
   1091 vld1.8 {d0-d1},[r2,: 128]
   1092 vld1.8 {d2-d3},[r4,: 128]!
   1093 vld1.8 {d4-d5},[r5,: 128]!
   1094 vzip.i32 q1,q2
   1095 vld1.8 {d6-d7},[r4,: 128]!
   1096 vld1.8 {d8-d9},[r5,: 128]!
   1097 vshl.i32 q5,q1,#1
   1098 vzip.i32 q3,q4
   1099 vshl.i32 q6,q2,#1
   1100 vld1.8 {d14},[r4,: 64]
   1101 vshl.i32 q8,q3,#1
   1102 vld1.8 {d15},[r5,: 64]
   1103 vshl.i32 q9,q4,#1
   1104 vmul.i32 d21,d7,d1
   1105 vtrn.32 d14,d15
   1106 vmul.i32 q11,q4,q0
   1107 vmul.i32 q0,q7,q0
   1108 vmull.s32 q12,d2,d2
   1109 vmlal.s32 q12,d11,d1
   1110 vmlal.s32 q12,d12,d0
   1111 vmlal.s32 q12,d13,d23
   1112 vmlal.s32 q12,d16,d22
   1113 vmlal.s32 q12,d7,d21
   1114 vmull.s32 q10,d2,d11
   1115 vmlal.s32 q10,d4,d1
   1116 vmlal.s32 q10,d13,d0
   1117 vmlal.s32 q10,d6,d23
   1118 vmlal.s32 q10,d17,d22
   1119 vmull.s32 q13,d10,d4
   1120 vmlal.s32 q13,d11,d3
   1121 vmlal.s32 q13,d13,d1
   1122 vmlal.s32 q13,d16,d0
   1123 vmlal.s32 q13,d17,d23
   1124 vmlal.s32 q13,d8,d22
   1125 vmull.s32 q1,d10,d5
   1126 vmlal.s32 q1,d11,d4
   1127 vmlal.s32 q1,d6,d1
   1128 vmlal.s32 q1,d17,d0
   1129 vmlal.s32 q1,d8,d23
   1130 vmull.s32 q14,d10,d6
   1131 vmlal.s32 q14,d11,d13
   1132 vmlal.s32 q14,d4,d4
   1133 vmlal.s32 q14,d17,d1
   1134 vmlal.s32 q14,d18,d0
   1135 vmlal.s32 q14,d9,d23
   1136 vmull.s32 q11,d10,d7
   1137 vmlal.s32 q11,d11,d6
   1138 vmlal.s32 q11,d12,d5
   1139 vmlal.s32 q11,d8,d1
   1140 vmlal.s32 q11,d19,d0
   1141 vmull.s32 q15,d10,d8
   1142 vmlal.s32 q15,d11,d17
   1143 vmlal.s32 q15,d12,d6
   1144 vmlal.s32 q15,d13,d5
   1145 vmlal.s32 q15,d19,d1
   1146 vmlal.s32 q15,d14,d0
   1147 vmull.s32 q2,d10,d9
   1148 vmlal.s32 q2,d11,d8
   1149 vmlal.s32 q2,d12,d7
   1150 vmlal.s32 q2,d13,d6
   1151 vmlal.s32 q2,d14,d1
   1152 vmull.s32 q0,d15,d1
   1153 vmlal.s32 q0,d10,d14
   1154 vmlal.s32 q0,d11,d19
   1155 vmlal.s32 q0,d12,d8
   1156 vmlal.s32 q0,d13,d17
   1157 vmlal.s32 q0,d6,d6
   1158 add r2,sp,#512
   1159 vld1.8 {d18-d19},[r2,: 128]
   1160 vmull.s32 q3,d16,d7
   1161 vmlal.s32 q3,d10,d15
   1162 vmlal.s32 q3,d11,d14
   1163 vmlal.s32 q3,d12,d9
   1164 vmlal.s32 q3,d13,d8
   1165 add r2,sp,#528
   1166 vld1.8 {d8-d9},[r2,: 128]
   1167 vadd.i64 q5,q12,q9
   1168 vadd.i64 q6,q15,q9
   1169 vshr.s64 q5,q5,#26
   1170 vshr.s64 q6,q6,#26
   1171 vadd.i64 q7,q10,q5
   1172 vshl.i64 q5,q5,#26
   1173 vadd.i64 q8,q7,q4
   1174 vadd.i64 q2,q2,q6
   1175 vshl.i64 q6,q6,#26
   1176 vadd.i64 q10,q2,q4
   1177 vsub.i64 q5,q12,q5
   1178 vshr.s64 q8,q8,#25
   1179 vsub.i64 q6,q15,q6
   1180 vshr.s64 q10,q10,#25
   1181 vadd.i64 q12,q13,q8
   1182 vshl.i64 q8,q8,#25
   1183 vadd.i64 q13,q12,q9
   1184 vadd.i64 q0,q0,q10
   1185 vsub.i64 q7,q7,q8
   1186 vshr.s64 q8,q13,#26
   1187 vshl.i64 q10,q10,#25
   1188 vadd.i64 q13,q0,q9
   1189 vadd.i64 q1,q1,q8
   1190 vshl.i64 q8,q8,#26
   1191 vadd.i64 q15,q1,q4
   1192 vsub.i64 q2,q2,q10
   1193 vshr.s64 q10,q13,#26
   1194 vsub.i64 q8,q12,q8
   1195 vshr.s64 q12,q15,#25
   1196 vadd.i64 q3,q3,q10
   1197 vshl.i64 q10,q10,#26
   1198 vadd.i64 q13,q3,q4
   1199 vadd.i64 q14,q14,q12
   1200 add r2,r3,#144
   1201 vshl.i64 q12,q12,#25
   1202 add r4,r3,#192
   1203 vadd.i64 q15,q14,q9
   1204 add r2,r2,#8
   1205 vsub.i64 q0,q0,q10
   1206 add r4,r4,#8
   1207 vshr.s64 q10,q13,#25
   1208 vsub.i64 q1,q1,q12
   1209 vshr.s64 q12,q15,#26
   1210 vadd.i64 q13,q10,q10
   1211 vadd.i64 q11,q11,q12
   1212 vtrn.32 d16,d2
   1213 vshl.i64 q12,q12,#26
   1214 vtrn.32 d17,d3
   1215 vadd.i64 q1,q11,q4
   1216 vadd.i64 q4,q5,q13
   1217 vst1.8 d16,[r2,: 64]!
   1218 vshl.i64 q5,q10,#4
   1219 vst1.8 d17,[r4,: 64]!
   1220 vsub.i64 q8,q14,q12
   1221 vshr.s64 q1,q1,#25
   1222 vadd.i64 q4,q4,q5
   1223 vadd.i64 q5,q6,q1
   1224 vshl.i64 q1,q1,#25
   1225 vadd.i64 q6,q5,q9
   1226 vadd.i64 q4,q4,q10
   1227 vshl.i64 q10,q10,#25
   1228 vadd.i64 q9,q4,q9
   1229 vsub.i64 q1,q11,q1
   1230 vshr.s64 q6,q6,#26
   1231 vsub.i64 q3,q3,q10
   1232 vtrn.32 d16,d2
   1233 vshr.s64 q9,q9,#26
   1234 vtrn.32 d17,d3
   1235 vadd.i64 q1,q2,q6
   1236 vst1.8 d16,[r2,: 64]
   1237 vshl.i64 q2,q6,#26
   1238 vst1.8 d17,[r4,: 64]
   1239 vadd.i64 q6,q7,q9
   1240 vtrn.32 d0,d6
   1241 vshl.i64 q7,q9,#26
   1242 vtrn.32 d1,d7
   1243 vsub.i64 q2,q5,q2
   1244 add r2,r2,#16
   1245 vsub.i64 q3,q4,q7
   1246 vst1.8 d0,[r2,: 64]
   1247 add r4,r4,#16
   1248 vst1.8 d1,[r4,: 64]
   1249 vtrn.32 d4,d2
   1250 vtrn.32 d5,d3
   1251 sub r2,r2,#8
   1252 sub r4,r4,#8
   1253 vtrn.32 d6,d12
   1254 vtrn.32 d7,d13
   1255 vst1.8 d4,[r2,: 64]
   1256 vst1.8 d5,[r4,: 64]
   1257 sub r2,r2,#24
   1258 sub r4,r4,#24
   1259 vst1.8 d6,[r2,: 64]
   1260 vst1.8 d7,[r4,: 64]
   1261 add r2,r3,#336
   1262 add r4,r3,#288
   1263 vld1.8 {d0-d1},[r2,: 128]!
   1264 vld1.8 {d2-d3},[r4,: 128]!
   1265 vadd.i32 q0,q0,q1
   1266 vld1.8 {d2-d3},[r2,: 128]!
   1267 vld1.8 {d4-d5},[r4,: 128]!
   1268 vadd.i32 q1,q1,q2
   1269 add r5,r3,#288
   1270 vld1.8 {d4},[r2,: 64]
   1271 vld1.8 {d6},[r4,: 64]
   1272 vadd.i32 q2,q2,q3
   1273 vst1.8 {d0-d1},[r5,: 128]!
   1274 vst1.8 {d2-d3},[r5,: 128]!
   1275 vst1.8 d4,[r5,: 64]
   1276 add r2,r3,#48
   1277 add r4,r3,#144
   1278 vld1.8 {d0-d1},[r4,: 128]!
   1279 vld1.8 {d2-d3},[r4,: 128]!
   1280 vld1.8 {d4},[r4,: 64]
   1281 add r4,r3,#288
   1282 vld1.8 {d6-d7},[r4,: 128]!
   1283 vtrn.32 q0,q3
   1284 vld1.8 {d8-d9},[r4,: 128]!
   1285 vshl.i32 q5,q0,#4
   1286 vtrn.32 q1,q4
   1287 vshl.i32 q6,q3,#4
   1288 vadd.i32 q5,q5,q0
   1289 vadd.i32 q6,q6,q3
   1290 vshl.i32 q7,q1,#4
   1291 vld1.8 {d5},[r4,: 64]
   1292 vshl.i32 q8,q4,#4
   1293 vtrn.32 d4,d5
   1294 vadd.i32 q7,q7,q1
   1295 vadd.i32 q8,q8,q4
   1296 vld1.8 {d18-d19},[r2,: 128]!
   1297 vshl.i32 q10,q2,#4
   1298 vld1.8 {d22-d23},[r2,: 128]!
   1299 vadd.i32 q10,q10,q2
   1300 vld1.8 {d24},[r2,: 64]
   1301 vadd.i32 q5,q5,q0
   1302 add r2,r3,#240
   1303 vld1.8 {d26-d27},[r2,: 128]!
   1304 vadd.i32 q6,q6,q3
   1305 vld1.8 {d28-d29},[r2,: 128]!
   1306 vadd.i32 q8,q8,q4
   1307 vld1.8 {d25},[r2,: 64]
   1308 vadd.i32 q10,q10,q2
   1309 vtrn.32 q9,q13
   1310 vadd.i32 q7,q7,q1
   1311 vadd.i32 q5,q5,q0
   1312 vtrn.32 q11,q14
   1313 vadd.i32 q6,q6,q3
   1314 add r2,sp,#560
   1315 vadd.i32 q10,q10,q2
   1316 vtrn.32 d24,d25
   1317 vst1.8 {d12-d13},[r2,: 128]
   1318 vshl.i32 q6,q13,#1
   1319 add r2,sp,#576
   1320 vst1.8 {d20-d21},[r2,: 128]
   1321 vshl.i32 q10,q14,#1
   1322 add r2,sp,#592
   1323 vst1.8 {d12-d13},[r2,: 128]
   1324 vshl.i32 q15,q12,#1
   1325 vadd.i32 q8,q8,q4
   1326 vext.32 d10,d31,d30,#0
   1327 vadd.i32 q7,q7,q1
   1328 add r2,sp,#608
   1329 vst1.8 {d16-d17},[r2,: 128]
   1330 vmull.s32 q8,d18,d5
   1331 vmlal.s32 q8,d26,d4
   1332 vmlal.s32 q8,d19,d9
   1333 vmlal.s32 q8,d27,d3
   1334 vmlal.s32 q8,d22,d8
   1335 vmlal.s32 q8,d28,d2
   1336 vmlal.s32 q8,d23,d7
   1337 vmlal.s32 q8,d29,d1
   1338 vmlal.s32 q8,d24,d6
   1339 vmlal.s32 q8,d25,d0
   1340 add r2,sp,#624
   1341 vst1.8 {d14-d15},[r2,: 128]
   1342 vmull.s32 q2,d18,d4
   1343 vmlal.s32 q2,d12,d9
   1344 vmlal.s32 q2,d13,d8
   1345 vmlal.s32 q2,d19,d3
   1346 vmlal.s32 q2,d22,d2
   1347 vmlal.s32 q2,d23,d1
   1348 vmlal.s32 q2,d24,d0
   1349 add r2,sp,#640
   1350 vst1.8 {d20-d21},[r2,: 128]
   1351 vmull.s32 q7,d18,d9
   1352 vmlal.s32 q7,d26,d3
   1353 vmlal.s32 q7,d19,d8
   1354 vmlal.s32 q7,d27,d2
   1355 vmlal.s32 q7,d22,d7
   1356 vmlal.s32 q7,d28,d1
   1357 vmlal.s32 q7,d23,d6
   1358 vmlal.s32 q7,d29,d0
   1359 add r2,sp,#656
   1360 vst1.8 {d10-d11},[r2,: 128]
   1361 vmull.s32 q5,d18,d3
   1362 vmlal.s32 q5,d19,d2
   1363 vmlal.s32 q5,d22,d1
   1364 vmlal.s32 q5,d23,d0
   1365 vmlal.s32 q5,d12,d8
   1366 add r2,sp,#672
   1367 vst1.8 {d16-d17},[r2,: 128]
   1368 vmull.s32 q4,d18,d8
   1369 vmlal.s32 q4,d26,d2
   1370 vmlal.s32 q4,d19,d7
   1371 vmlal.s32 q4,d27,d1
   1372 vmlal.s32 q4,d22,d6
   1373 vmlal.s32 q4,d28,d0
   1374 vmull.s32 q8,d18,d7
   1375 vmlal.s32 q8,d26,d1
   1376 vmlal.s32 q8,d19,d6
   1377 vmlal.s32 q8,d27,d0
   1378 add r2,sp,#576
   1379 vld1.8 {d20-d21},[r2,: 128]
   1380 vmlal.s32 q7,d24,d21
   1381 vmlal.s32 q7,d25,d20
   1382 vmlal.s32 q4,d23,d21
   1383 vmlal.s32 q4,d29,d20
   1384 vmlal.s32 q8,d22,d21
   1385 vmlal.s32 q8,d28,d20
   1386 vmlal.s32 q5,d24,d20
   1387 add r2,sp,#576
   1388 vst1.8 {d14-d15},[r2,: 128]
   1389 vmull.s32 q7,d18,d6
   1390 vmlal.s32 q7,d26,d0
   1391 add r2,sp,#656
   1392 vld1.8 {d30-d31},[r2,: 128]
   1393 vmlal.s32 q2,d30,d21
   1394 vmlal.s32 q7,d19,d21
   1395 vmlal.s32 q7,d27,d20
   1396 add r2,sp,#624
   1397 vld1.8 {d26-d27},[r2,: 128]
   1398 vmlal.s32 q4,d25,d27
   1399 vmlal.s32 q8,d29,d27
   1400 vmlal.s32 q8,d25,d26
   1401 vmlal.s32 q7,d28,d27
   1402 vmlal.s32 q7,d29,d26
   1403 add r2,sp,#608
   1404 vld1.8 {d28-d29},[r2,: 128]
   1405 vmlal.s32 q4,d24,d29
   1406 vmlal.s32 q8,d23,d29
   1407 vmlal.s32 q8,d24,d28
   1408 vmlal.s32 q7,d22,d29
   1409 vmlal.s32 q7,d23,d28
   1410 add r2,sp,#608
   1411 vst1.8 {d8-d9},[r2,: 128]
   1412 add r2,sp,#560
   1413 vld1.8 {d8-d9},[r2,: 128]
   1414 vmlal.s32 q7,d24,d9
   1415 vmlal.s32 q7,d25,d31
   1416 vmull.s32 q1,d18,d2
   1417 vmlal.s32 q1,d19,d1
   1418 vmlal.s32 q1,d22,d0
   1419 vmlal.s32 q1,d24,d27
   1420 vmlal.s32 q1,d23,d20
   1421 vmlal.s32 q1,d12,d7
   1422 vmlal.s32 q1,d13,d6
   1423 vmull.s32 q6,d18,d1
   1424 vmlal.s32 q6,d19,d0
   1425 vmlal.s32 q6,d23,d27
   1426 vmlal.s32 q6,d22,d20
   1427 vmlal.s32 q6,d24,d26
   1428 vmull.s32 q0,d18,d0
   1429 vmlal.s32 q0,d22,d27
   1430 vmlal.s32 q0,d23,d26
   1431 vmlal.s32 q0,d24,d31
   1432 vmlal.s32 q0,d19,d20
   1433 add r2,sp,#640
   1434 vld1.8 {d18-d19},[r2,: 128]
   1435 vmlal.s32 q2,d18,d7
   1436 vmlal.s32 q2,d19,d6
   1437 vmlal.s32 q5,d18,d6
   1438 vmlal.s32 q5,d19,d21
   1439 vmlal.s32 q1,d18,d21
   1440 vmlal.s32 q1,d19,d29
   1441 vmlal.s32 q0,d18,d28
   1442 vmlal.s32 q0,d19,d9
   1443 vmlal.s32 q6,d18,d29
   1444 vmlal.s32 q6,d19,d28
   1445 add r2,sp,#592
   1446 vld1.8 {d18-d19},[r2,: 128]
   1447 add r2,sp,#512
   1448 vld1.8 {d22-d23},[r2,: 128]
   1449 vmlal.s32 q5,d19,d7
   1450 vmlal.s32 q0,d18,d21
   1451 vmlal.s32 q0,d19,d29
   1452 vmlal.s32 q6,d18,d6
   1453 add r2,sp,#528
   1454 vld1.8 {d6-d7},[r2,: 128]
   1455 vmlal.s32 q6,d19,d21
   1456 add r2,sp,#576
   1457 vld1.8 {d18-d19},[r2,: 128]
   1458 vmlal.s32 q0,d30,d8
   1459 add r2,sp,#672
   1460 vld1.8 {d20-d21},[r2,: 128]
   1461 vmlal.s32 q5,d30,d29
   1462 add r2,sp,#608
   1463 vld1.8 {d24-d25},[r2,: 128]
   1464 vmlal.s32 q1,d30,d28
   1465 vadd.i64 q13,q0,q11
   1466 vadd.i64 q14,q5,q11
   1467 vmlal.s32 q6,d30,d9
   1468 vshr.s64 q4,q13,#26
   1469 vshr.s64 q13,q14,#26
   1470 vadd.i64 q7,q7,q4
   1471 vshl.i64 q4,q4,#26
   1472 vadd.i64 q14,q7,q3
   1473 vadd.i64 q9,q9,q13
   1474 vshl.i64 q13,q13,#26
   1475 vadd.i64 q15,q9,q3
   1476 vsub.i64 q0,q0,q4
   1477 vshr.s64 q4,q14,#25
   1478 vsub.i64 q5,q5,q13
   1479 vshr.s64 q13,q15,#25
   1480 vadd.i64 q6,q6,q4
   1481 vshl.i64 q4,q4,#25
   1482 vadd.i64 q14,q6,q11
   1483 vadd.i64 q2,q2,q13
   1484 vsub.i64 q4,q7,q4
   1485 vshr.s64 q7,q14,#26
   1486 vshl.i64 q13,q13,#25
   1487 vadd.i64 q14,q2,q11
   1488 vadd.i64 q8,q8,q7
   1489 vshl.i64 q7,q7,#26
   1490 vadd.i64 q15,q8,q3
   1491 vsub.i64 q9,q9,q13
   1492 vshr.s64 q13,q14,#26
   1493 vsub.i64 q6,q6,q7
   1494 vshr.s64 q7,q15,#25
   1495 vadd.i64 q10,q10,q13
   1496 vshl.i64 q13,q13,#26
   1497 vadd.i64 q14,q10,q3
   1498 vadd.i64 q1,q1,q7
   1499 add r2,r3,#240
   1500 vshl.i64 q7,q7,#25
   1501 add r4,r3,#144
   1502 vadd.i64 q15,q1,q11
   1503 add r2,r2,#8
   1504 vsub.i64 q2,q2,q13
   1505 add r4,r4,#8
   1506 vshr.s64 q13,q14,#25
   1507 vsub.i64 q7,q8,q7
   1508 vshr.s64 q8,q15,#26
   1509 vadd.i64 q14,q13,q13
   1510 vadd.i64 q12,q12,q8
   1511 vtrn.32 d12,d14
   1512 vshl.i64 q8,q8,#26
   1513 vtrn.32 d13,d15
   1514 vadd.i64 q3,q12,q3
   1515 vadd.i64 q0,q0,q14
   1516 vst1.8 d12,[r2,: 64]!
   1517 vshl.i64 q7,q13,#4
   1518 vst1.8 d13,[r4,: 64]!
   1519 vsub.i64 q1,q1,q8
   1520 vshr.s64 q3,q3,#25
   1521 vadd.i64 q0,q0,q7
   1522 vadd.i64 q5,q5,q3
   1523 vshl.i64 q3,q3,#25
   1524 vadd.i64 q6,q5,q11
   1525 vadd.i64 q0,q0,q13
   1526 vshl.i64 q7,q13,#25
   1527 vadd.i64 q8,q0,q11
   1528 vsub.i64 q3,q12,q3
   1529 vshr.s64 q6,q6,#26
   1530 vsub.i64 q7,q10,q7
   1531 vtrn.32 d2,d6
   1532 vshr.s64 q8,q8,#26
   1533 vtrn.32 d3,d7
   1534 vadd.i64 q3,q9,q6
   1535 vst1.8 d2,[r2,: 64]
   1536 vshl.i64 q6,q6,#26
   1537 vst1.8 d3,[r4,: 64]
   1538 vadd.i64 q1,q4,q8
   1539 vtrn.32 d4,d14
   1540 vshl.i64 q4,q8,#26
   1541 vtrn.32 d5,d15
   1542 vsub.i64 q5,q5,q6
   1543 add r2,r2,#16
   1544 vsub.i64 q0,q0,q4
   1545 vst1.8 d4,[r2,: 64]
   1546 add r4,r4,#16
   1547 vst1.8 d5,[r4,: 64]
   1548 vtrn.32 d10,d6
   1549 vtrn.32 d11,d7
   1550 sub r2,r2,#8
   1551 sub r4,r4,#8
   1552 vtrn.32 d0,d2
   1553 vtrn.32 d1,d3
   1554 vst1.8 d10,[r2,: 64]
   1555 vst1.8 d11,[r4,: 64]
   1556 sub r2,r2,#24
   1557 sub r4,r4,#24
   1558 vst1.8 d0,[r2,: 64]
   1559 vst1.8 d1,[r4,: 64]
   1560 ldr r2,[sp,#488]
   1561 ldr r4,[sp,#492]
   1562 subs r5,r2,#1
   1563 bge ._mainloop
   1564 add r1,r3,#144
   1565 add r2,r3,#336
   1566 vld1.8 {d0-d1},[r1,: 128]!
   1567 vld1.8 {d2-d3},[r1,: 128]!
   1568 vld1.8 {d4},[r1,: 64]
   1569 vst1.8 {d0-d1},[r2,: 128]!
   1570 vst1.8 {d2-d3},[r2,: 128]!
   1571 vst1.8 d4,[r2,: 64]
   1572 ldr r1,=0
   1573 ._invertloop:
   1574 add r2,r3,#144
   1575 ldr r4,=0
   1576 ldr r5,=2
   1577 cmp r1,#1
   1578 ldreq r5,=1
   1579 addeq r2,r3,#336
   1580 addeq r4,r3,#48
   1581 cmp r1,#2
   1582 ldreq r5,=1
   1583 addeq r2,r3,#48
   1584 cmp r1,#3
   1585 ldreq r5,=5
   1586 addeq r4,r3,#336
   1587 cmp r1,#4
   1588 ldreq r5,=10
   1589 cmp r1,#5
   1590 ldreq r5,=20
   1591 cmp r1,#6
   1592 ldreq r5,=10
   1593 addeq r2,r3,#336
   1594 addeq r4,r3,#336
   1595 cmp r1,#7
   1596 ldreq r5,=50
   1597 cmp r1,#8
   1598 ldreq r5,=100
   1599 cmp r1,#9
   1600 ldreq r5,=50
   1601 addeq r2,r3,#336
   1602 cmp r1,#10
   1603 ldreq r5,=5
   1604 addeq r2,r3,#48
   1605 cmp r1,#11
   1606 ldreq r5,=0
   1607 addeq r2,r3,#96
   1608 add r6,r3,#144
   1609 add r7,r3,#288
   1610 vld1.8 {d0-d1},[r6,: 128]!
   1611 vld1.8 {d2-d3},[r6,: 128]!
   1612 vld1.8 {d4},[r6,: 64]
   1613 vst1.8 {d0-d1},[r7,: 128]!
   1614 vst1.8 {d2-d3},[r7,: 128]!
   1615 vst1.8 d4,[r7,: 64]
   1616 cmp r5,#0
   1617 beq ._skipsquaringloop
   1618 ._squaringloop:
   1619 add r6,r3,#288
   1620 add r7,r3,#288
   1621 add r8,r3,#288
   1622 vmov.i32 q0,#19
   1623 vmov.i32 q1,#0
   1624 vmov.i32 q2,#1
   1625 vzip.i32 q1,q2
   1626 vld1.8 {d4-d5},[r7,: 128]!
   1627 vld1.8 {d6-d7},[r7,: 128]!
   1628 vld1.8 {d9},[r7,: 64]
   1629 vld1.8 {d10-d11},[r6,: 128]!
   1630 add r7,sp,#416
   1631 vld1.8 {d12-d13},[r6,: 128]!
   1632 vmul.i32 q7,q2,q0
   1633 vld1.8 {d8},[r6,: 64]
   1634 vext.32 d17,d11,d10,#1
   1635 vmul.i32 q9,q3,q0
   1636 vext.32 d16,d10,d8,#1
   1637 vshl.u32 q10,q5,q1
   1638 vext.32 d22,d14,d4,#1
   1639 vext.32 d24,d18,d6,#1
   1640 vshl.u32 q13,q6,q1
   1641 vshl.u32 d28,d8,d2
   1642 vrev64.i32 d22,d22
   1643 vmul.i32 d1,d9,d1
   1644 vrev64.i32 d24,d24
   1645 vext.32 d29,d8,d13,#1
   1646 vext.32 d0,d1,d9,#1
   1647 vrev64.i32 d0,d0
   1648 vext.32 d2,d9,d1,#1
   1649 vext.32 d23,d15,d5,#1
   1650 vmull.s32 q4,d20,d4
   1651 vrev64.i32 d23,d23
   1652 vmlal.s32 q4,d21,d1
   1653 vrev64.i32 d2,d2
   1654 vmlal.s32 q4,d26,d19
   1655 vext.32 d3,d5,d15,#1
   1656 vmlal.s32 q4,d27,d18
   1657 vrev64.i32 d3,d3
   1658 vmlal.s32 q4,d28,d15
   1659 vext.32 d14,d12,d11,#1
   1660 vmull.s32 q5,d16,d23
   1661 vext.32 d15,d13,d12,#1
   1662 vmlal.s32 q5,d17,d4
   1663 vst1.8 d8,[r7,: 64]!
   1664 vmlal.s32 q5,d14,d1
   1665 vext.32 d12,d9,d8,#0
   1666 vmlal.s32 q5,d15,d19
   1667 vmov.i64 d13,#0
   1668 vmlal.s32 q5,d29,d18
   1669 vext.32 d25,d19,d7,#1
   1670 vmlal.s32 q6,d20,d5
   1671 vrev64.i32 d25,d25
   1672 vmlal.s32 q6,d21,d4
   1673 vst1.8 d11,[r7,: 64]!
   1674 vmlal.s32 q6,d26,d1
   1675 vext.32 d9,d10,d10,#0
   1676 vmlal.s32 q6,d27,d19
   1677 vmov.i64 d8,#0
   1678 vmlal.s32 q6,d28,d18
   1679 vmlal.s32 q4,d16,d24
   1680 vmlal.s32 q4,d17,d5
   1681 vmlal.s32 q4,d14,d4
   1682 vst1.8 d12,[r7,: 64]!
   1683 vmlal.s32 q4,d15,d1
   1684 vext.32 d10,d13,d12,#0
   1685 vmlal.s32 q4,d29,d19
   1686 vmov.i64 d11,#0
   1687 vmlal.s32 q5,d20,d6
   1688 vmlal.s32 q5,d21,d5
   1689 vmlal.s32 q5,d26,d4
   1690 vext.32 d13,d8,d8,#0
   1691 vmlal.s32 q5,d27,d1
   1692 vmov.i64 d12,#0
   1693 vmlal.s32 q5,d28,d19
   1694 vst1.8 d9,[r7,: 64]!
   1695 vmlal.s32 q6,d16,d25
   1696 vmlal.s32 q6,d17,d6
   1697 vst1.8 d10,[r7,: 64]
   1698 vmlal.s32 q6,d14,d5
   1699 vext.32 d8,d11,d10,#0
   1700 vmlal.s32 q6,d15,d4
   1701 vmov.i64 d9,#0
   1702 vmlal.s32 q6,d29,d1
   1703 vmlal.s32 q4,d20,d7
   1704 vmlal.s32 q4,d21,d6
   1705 vmlal.s32 q4,d26,d5
   1706 vext.32 d11,d12,d12,#0
   1707 vmlal.s32 q4,d27,d4
   1708 vmov.i64 d10,#0
   1709 vmlal.s32 q4,d28,d1
   1710 vmlal.s32 q5,d16,d0
   1711 sub r6,r7,#32
   1712 vmlal.s32 q5,d17,d7
   1713 vmlal.s32 q5,d14,d6
   1714 vext.32 d30,d9,d8,#0
   1715 vmlal.s32 q5,d15,d5
   1716 vld1.8 {d31},[r6,: 64]!
   1717 vmlal.s32 q5,d29,d4
   1718 vmlal.s32 q15,d20,d0
   1719 vext.32 d0,d6,d18,#1
   1720 vmlal.s32 q15,d21,d25
   1721 vrev64.i32 d0,d0
   1722 vmlal.s32 q15,d26,d24
   1723 vext.32 d1,d7,d19,#1
   1724 vext.32 d7,d10,d10,#0
   1725 vmlal.s32 q15,d27,d23
   1726 vrev64.i32 d1,d1
   1727 vld1.8 {d6},[r6,: 64]
   1728 vmlal.s32 q15,d28,d22
   1729 vmlal.s32 q3,d16,d4
   1730 add r6,r6,#24
   1731 vmlal.s32 q3,d17,d2
   1732 vext.32 d4,d31,d30,#0
   1733 vmov d17,d11
   1734 vmlal.s32 q3,d14,d1
   1735 vext.32 d11,d13,d13,#0
   1736 vext.32 d13,d30,d30,#0
   1737 vmlal.s32 q3,d15,d0
   1738 vext.32 d1,d8,d8,#0
   1739 vmlal.s32 q3,d29,d3
   1740 vld1.8 {d5},[r6,: 64]
   1741 sub r6,r6,#16
   1742 vext.32 d10,d6,d6,#0
   1743 vmov.i32 q1,#0xffffffff
   1744 vshl.i64 q4,q1,#25
   1745 add r7,sp,#512
   1746 vld1.8 {d14-d15},[r7,: 128]
   1747 vadd.i64 q9,q2,q7
   1748 vshl.i64 q1,q1,#26
   1749 vshr.s64 q10,q9,#26
   1750 vld1.8 {d0},[r6,: 64]!
   1751 vadd.i64 q5,q5,q10
   1752 vand q9,q9,q1
   1753 vld1.8 {d16},[r6,: 64]!
   1754 add r6,sp,#528
   1755 vld1.8 {d20-d21},[r6,: 128]
   1756 vadd.i64 q11,q5,q10
   1757 vsub.i64 q2,q2,q9
   1758 vshr.s64 q9,q11,#25
   1759 vext.32 d12,d5,d4,#0
   1760 vand q11,q11,q4
   1761 vadd.i64 q0,q0,q9
   1762 vmov d19,d7
   1763 vadd.i64 q3,q0,q7
   1764 vsub.i64 q5,q5,q11
   1765 vshr.s64 q11,q3,#26
   1766 vext.32 d18,d11,d10,#0
   1767 vand q3,q3,q1
   1768 vadd.i64 q8,q8,q11
   1769 vadd.i64 q11,q8,q10
   1770 vsub.i64 q0,q0,q3
   1771 vshr.s64 q3,q11,#25
   1772 vand q11,q11,q4
   1773 vadd.i64 q3,q6,q3
   1774 vadd.i64 q6,q3,q7
   1775 vsub.i64 q8,q8,q11
   1776 vshr.s64 q11,q6,#26
   1777 vand q6,q6,q1
   1778 vadd.i64 q9,q9,q11
   1779 vadd.i64 d25,d19,d21
   1780 vsub.i64 q3,q3,q6
   1781 vshr.s64 d23,d25,#25
   1782 vand q4,q12,q4
   1783 vadd.i64 d21,d23,d23
   1784 vshl.i64 d25,d23,#4
   1785 vadd.i64 d21,d21,d23
   1786 vadd.i64 d25,d25,d21
   1787 vadd.i64 d4,d4,d25
   1788 vzip.i32 q0,q8
   1789 vadd.i64 d12,d4,d14
   1790 add r6,r8,#8
   1791 vst1.8 d0,[r6,: 64]
   1792 vsub.i64 d19,d19,d9
   1793 add r6,r6,#16
   1794 vst1.8 d16,[r6,: 64]
   1795 vshr.s64 d22,d12,#26
   1796 vand q0,q6,q1
   1797 vadd.i64 d10,d10,d22
   1798 vzip.i32 q3,q9
   1799 vsub.i64 d4,d4,d0
   1800 sub r6,r6,#8
   1801 vst1.8 d6,[r6,: 64]
   1802 add r6,r6,#16
   1803 vst1.8 d18,[r6,: 64]
   1804 vzip.i32 q2,q5
   1805 sub r6,r6,#32
   1806 vst1.8 d4,[r6,: 64]
   1807 subs r5,r5,#1
   1808 bhi ._squaringloop
   1809 ._skipsquaringloop:
   1810 mov r2,r2
   1811 add r5,r3,#288
   1812 add r6,r3,#144
   1813 vmov.i32 q0,#19
   1814 vmov.i32 q1,#0
   1815 vmov.i32 q2,#1
   1816 vzip.i32 q1,q2
   1817 vld1.8 {d4-d5},[r5,: 128]!
   1818 vld1.8 {d6-d7},[r5,: 128]!
   1819 vld1.8 {d9},[r5,: 64]
   1820 vld1.8 {d10-d11},[r2,: 128]!
   1821 add r5,sp,#416
   1822 vld1.8 {d12-d13},[r2,: 128]!
   1823 vmul.i32 q7,q2,q0
   1824 vld1.8 {d8},[r2,: 64]
   1825 vext.32 d17,d11,d10,#1
   1826 vmul.i32 q9,q3,q0
   1827 vext.32 d16,d10,d8,#1
   1828 vshl.u32 q10,q5,q1
   1829 vext.32 d22,d14,d4,#1
   1830 vext.32 d24,d18,d6,#1
   1831 vshl.u32 q13,q6,q1
   1832 vshl.u32 d28,d8,d2
   1833 vrev64.i32 d22,d22
   1834 vmul.i32 d1,d9,d1
   1835 vrev64.i32 d24,d24
   1836 vext.32 d29,d8,d13,#1
   1837 vext.32 d0,d1,d9,#1
   1838 vrev64.i32 d0,d0
   1839 vext.32 d2,d9,d1,#1
   1840 vext.32 d23,d15,d5,#1
   1841 vmull.s32 q4,d20,d4
   1842 vrev64.i32 d23,d23
   1843 vmlal.s32 q4,d21,d1
   1844 vrev64.i32 d2,d2
   1845 vmlal.s32 q4,d26,d19
   1846 vext.32 d3,d5,d15,#1
   1847 vmlal.s32 q4,d27,d18
   1848 vrev64.i32 d3,d3
   1849 vmlal.s32 q4,d28,d15
   1850 vext.32 d14,d12,d11,#1
   1851 vmull.s32 q5,d16,d23
   1852 vext.32 d15,d13,d12,#1
   1853 vmlal.s32 q5,d17,d4
   1854 vst1.8 d8,[r5,: 64]!
   1855 vmlal.s32 q5,d14,d1
   1856 vext.32 d12,d9,d8,#0
   1857 vmlal.s32 q5,d15,d19
   1858 vmov.i64 d13,#0
   1859 vmlal.s32 q5,d29,d18
   1860 vext.32 d25,d19,d7,#1
   1861 vmlal.s32 q6,d20,d5
   1862 vrev64.i32 d25,d25
   1863 vmlal.s32 q6,d21,d4
   1864 vst1.8 d11,[r5,: 64]!
   1865 vmlal.s32 q6,d26,d1
   1866 vext.32 d9,d10,d10,#0
   1867 vmlal.s32 q6,d27,d19
   1868 vmov.i64 d8,#0
   1869 vmlal.s32 q6,d28,d18
   1870 vmlal.s32 q4,d16,d24
   1871 vmlal.s32 q4,d17,d5
   1872 vmlal.s32 q4,d14,d4
   1873 vst1.8 d12,[r5,: 64]!
   1874 vmlal.s32 q4,d15,d1
   1875 vext.32 d10,d13,d12,#0
   1876 vmlal.s32 q4,d29,d19
   1877 vmov.i64 d11,#0
   1878 vmlal.s32 q5,d20,d6
   1879 vmlal.s32 q5,d21,d5
   1880 vmlal.s32 q5,d26,d4
   1881 vext.32 d13,d8,d8,#0
   1882 vmlal.s32 q5,d27,d1
   1883 vmov.i64 d12,#0
   1884 vmlal.s32 q5,d28,d19
   1885 vst1.8 d9,[r5,: 64]!
   1886 vmlal.s32 q6,d16,d25
   1887 vmlal.s32 q6,d17,d6
   1888 vst1.8 d10,[r5,: 64]
   1889 vmlal.s32 q6,d14,d5
   1890 vext.32 d8,d11,d10,#0
   1891 vmlal.s32 q6,d15,d4
   1892 vmov.i64 d9,#0
   1893 vmlal.s32 q6,d29,d1
   1894 vmlal.s32 q4,d20,d7
   1895 vmlal.s32 q4,d21,d6
   1896 vmlal.s32 q4,d26,d5
   1897 vext.32 d11,d12,d12,#0
   1898 vmlal.s32 q4,d27,d4
   1899 vmov.i64 d10,#0
   1900 vmlal.s32 q4,d28,d1
   1901 vmlal.s32 q5,d16,d0
   1902 sub r2,r5,#32
   1903 vmlal.s32 q5,d17,d7
   1904 vmlal.s32 q5,d14,d6
   1905 vext.32 d30,d9,d8,#0
   1906 vmlal.s32 q5,d15,d5
   1907 vld1.8 {d31},[r2,: 64]!
   1908 vmlal.s32 q5,d29,d4
   1909 vmlal.s32 q15,d20,d0
   1910 vext.32 d0,d6,d18,#1
   1911 vmlal.s32 q15,d21,d25
   1912 vrev64.i32 d0,d0
   1913 vmlal.s32 q15,d26,d24
   1914 vext.32 d1,d7,d19,#1
   1915 vext.32 d7,d10,d10,#0
   1916 vmlal.s32 q15,d27,d23
   1917 vrev64.i32 d1,d1
   1918 vld1.8 {d6},[r2,: 64]
   1919 vmlal.s32 q15,d28,d22
   1920 vmlal.s32 q3,d16,d4
   1921 add r2,r2,#24
   1922 vmlal.s32 q3,d17,d2
   1923 vext.32 d4,d31,d30,#0
   1924 vmov d17,d11
   1925 vmlal.s32 q3,d14,d1
   1926 vext.32 d11,d13,d13,#0
   1927 vext.32 d13,d30,d30,#0
   1928 vmlal.s32 q3,d15,d0
   1929 vext.32 d1,d8,d8,#0
   1930 vmlal.s32 q3,d29,d3
   1931 vld1.8 {d5},[r2,: 64]
   1932 sub r2,r2,#16
   1933 vext.32 d10,d6,d6,#0
   1934 vmov.i32 q1,#0xffffffff
   1935 vshl.i64 q4,q1,#25
   1936 add r5,sp,#512
   1937 vld1.8 {d14-d15},[r5,: 128]
   1938 vadd.i64 q9,q2,q7
   1939 vshl.i64 q1,q1,#26
   1940 vshr.s64 q10,q9,#26
   1941 vld1.8 {d0},[r2,: 64]!
   1942 vadd.i64 q5,q5,q10
   1943 vand q9,q9,q1
   1944 vld1.8 {d16},[r2,: 64]!
   1945 add r2,sp,#528
   1946 vld1.8 {d20-d21},[r2,: 128]
   1947 vadd.i64 q11,q5,q10
   1948 vsub.i64 q2,q2,q9
   1949 vshr.s64 q9,q11,#25
   1950 vext.32 d12,d5,d4,#0
   1951 vand q11,q11,q4
   1952 vadd.i64 q0,q0,q9
   1953 vmov d19,d7
   1954 vadd.i64 q3,q0,q7
   1955 vsub.i64 q5,q5,q11
   1956 vshr.s64 q11,q3,#26
   1957 vext.32 d18,d11,d10,#0
   1958 vand q3,q3,q1
   1959 vadd.i64 q8,q8,q11
   1960 vadd.i64 q11,q8,q10
   1961 vsub.i64 q0,q0,q3
   1962 vshr.s64 q3,q11,#25
   1963 vand q11,q11,q4
   1964 vadd.i64 q3,q6,q3
   1965 vadd.i64 q6,q3,q7
   1966 vsub.i64 q8,q8,q11
   1967 vshr.s64 q11,q6,#26
   1968 vand q6,q6,q1
   1969 vadd.i64 q9,q9,q11
   1970 vadd.i64 d25,d19,d21
   1971 vsub.i64 q3,q3,q6
   1972 vshr.s64 d23,d25,#25
   1973 vand q4,q12,q4
   1974 vadd.i64 d21,d23,d23
   1975 vshl.i64 d25,d23,#4
   1976 vadd.i64 d21,d21,d23
   1977 vadd.i64 d25,d25,d21
   1978 vadd.i64 d4,d4,d25
   1979 vzip.i32 q0,q8
   1980 vadd.i64 d12,d4,d14
   1981 add r2,r6,#8
   1982 vst1.8 d0,[r2,: 64]
   1983 vsub.i64 d19,d19,d9
   1984 add r2,r2,#16
   1985 vst1.8 d16,[r2,: 64]
   1986 vshr.s64 d22,d12,#26
   1987 vand q0,q6,q1
   1988 vadd.i64 d10,d10,d22
   1989 vzip.i32 q3,q9
   1990 vsub.i64 d4,d4,d0
   1991 sub r2,r2,#8
   1992 vst1.8 d6,[r2,: 64]
   1993 add r2,r2,#16
   1994 vst1.8 d18,[r2,: 64]
   1995 vzip.i32 q2,q5
   1996 sub r2,r2,#32
   1997 vst1.8 d4,[r2,: 64]
   1998 cmp r4,#0
   1999 beq ._skippostcopy
   2000 add r2,r3,#144
   2001 mov r4,r4
   2002 vld1.8 {d0-d1},[r2,: 128]!
   2003 vld1.8 {d2-d3},[r2,: 128]!
   2004 vld1.8 {d4},[r2,: 64]
   2005 vst1.8 {d0-d1},[r4,: 128]!
   2006 vst1.8 {d2-d3},[r4,: 128]!
   2007 vst1.8 d4,[r4,: 64]
   2008 ._skippostcopy:
   2009 cmp r1,#1
   2010 bne ._skipfinalcopy
   2011 add r2,r3,#288
   2012 add r4,r3,#144
   2013 vld1.8 {d0-d1},[r2,: 128]!
   2014 vld1.8 {d2-d3},[r2,: 128]!
   2015 vld1.8 {d4},[r2,: 64]
   2016 vst1.8 {d0-d1},[r4,: 128]!
   2017 vst1.8 {d2-d3},[r4,: 128]!
   2018 vst1.8 d4,[r4,: 64]
   2019 ._skipfinalcopy:
   2020 add r1,r1,#1
   2021 cmp r1,#12
   2022 blo ._invertloop
   2023 add r1,r3,#144
   2024 ldr r2,[r1],#4
   2025 ldr r3,[r1],#4
   2026 ldr r4,[r1],#4
   2027 ldr r5,[r1],#4
   2028 ldr r6,[r1],#4
   2029 ldr r7,[r1],#4
   2030 ldr r8,[r1],#4
   2031 ldr r9,[r1],#4
   2032 ldr r10,[r1],#4
   2033 ldr r1,[r1]
   2034 add r11,r1,r1,LSL #4
   2035 add r11,r11,r1,LSL #1
   2036 add r11,r11,#16777216
   2037 mov r11,r11,ASR #25
   2038 add r11,r11,r2
   2039 mov r11,r11,ASR #26
   2040 add r11,r11,r3
   2041 mov r11,r11,ASR #25
   2042 add r11,r11,r4
   2043 mov r11,r11,ASR #26
   2044 add r11,r11,r5
   2045 mov r11,r11,ASR #25
   2046 add r11,r11,r6
   2047 mov r11,r11,ASR #26
   2048 add r11,r11,r7
   2049 mov r11,r11,ASR #25
   2050 add r11,r11,r8
   2051 mov r11,r11,ASR #26
   2052 add r11,r11,r9
   2053 mov r11,r11,ASR #25
   2054 add r11,r11,r10
   2055 mov r11,r11,ASR #26
   2056 add r11,r11,r1
   2057 mov r11,r11,ASR #25
   2058 add r2,r2,r11
   2059 add r2,r2,r11,LSL #1
   2060 add r2,r2,r11,LSL #4
   2061 mov r11,r2,ASR #26
   2062 add r3,r3,r11
   2063 sub r2,r2,r11,LSL #26
   2064 mov r11,r3,ASR #25
   2065 add r4,r4,r11
   2066 sub r3,r3,r11,LSL #25
   2067 mov r11,r4,ASR #26
   2068 add r5,r5,r11
   2069 sub r4,r4,r11,LSL #26
   2070 mov r11,r5,ASR #25
   2071 add r6,r6,r11
   2072 sub r5,r5,r11,LSL #25
   2073 mov r11,r6,ASR #26
   2074 add r7,r7,r11
   2075 sub r6,r6,r11,LSL #26
   2076 mov r11,r7,ASR #25
   2077 add r8,r8,r11
   2078 sub r7,r7,r11,LSL #25
   2079 mov r11,r8,ASR #26
   2080 add r9,r9,r11
   2081 sub r8,r8,r11,LSL #26
   2082 mov r11,r9,ASR #25
   2083 add r10,r10,r11
   2084 sub r9,r9,r11,LSL #25
   2085 mov r11,r10,ASR #26
   2086 add r1,r1,r11
   2087 sub r10,r10,r11,LSL #26
   2088 mov r11,r1,ASR #25
   2089 sub r1,r1,r11,LSL #25
   2090 add r2,r2,r3,LSL #26
   2091 mov r3,r3,LSR #6
   2092 add r3,r3,r4,LSL #19
   2093 mov r4,r4,LSR #13
   2094 add r4,r4,r5,LSL #13
   2095 mov r5,r5,LSR #19
   2096 add r5,r5,r6,LSL #6
   2097 add r6,r7,r8,LSL #25
   2098 mov r7,r8,LSR #7
   2099 add r7,r7,r9,LSL #19
   2100 mov r8,r9,LSR #13
   2101 add r8,r8,r10,LSL #12
   2102 mov r9,r10,LSR #20
   2103 add r1,r9,r1,LSL #6
   2104 str r2,[r0],#4
   2105 str r3,[r0],#4
   2106 str r4,[r0],#4
   2107 str r5,[r0],#4
   2108 str r6,[r0],#4
   2109 str r7,[r0],#4
   2110 str r8,[r0],#4
   2111 str r1,[r0]
   2112 ldrd r4,[sp,#0]
   2113 ldrd r6,[sp,#8]
   2114 ldrd r8,[sp,#16]
   2115 ldrd r10,[sp,#24]
   2116 ldr r12,[sp,#480]
   2117 ldr r14,[sp,#484]
   2118 ldr r0,=0
   2119 mov sp,r12
   2120 vpop {q4,q5,q6,q7}
   2121 bx lr
   2122 
   2123 #endif  /* __arm__ */
   2124 #endif  /* !OPENSSL_NO_ASM */
   2125