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