1#if defined(__arm__) 2#include <openssl/arm_arch.h> 3 4.text 5.code 32 6 7.globl sha1_block_data_order 8.type sha1_block_data_order,%function 9 10.align 5 11sha1_block_data_order: 12#if __ARM_MAX_ARCH__>=7 13 sub r3,pc,#8 @ sha1_block_data_order 14 ldr r12,.LOPENSSL_armcap 15 ldr r12,[r3,r12] @ OPENSSL_armcap_P 16#ifdef __APPLE__ 17 ldr r12,[r12] 18#endif 19 tst r12,#ARMV8_SHA1 20 bne .LARMv8 21 tst r12,#ARMV7_NEON 22 bne .LNEON 23#endif 24 stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} 25 add r2,r1,r2,lsl#6 @ r2 to point at the end of r1 26 ldmia r0,{r3,r4,r5,r6,r7} 27.Lloop: 28 ldr r8,.LK_00_19 29 mov r14,sp 30 sub sp,sp,#15*4 31 mov r5,r5,ror#30 32 mov r6,r6,ror#30 33 mov r7,r7,ror#30 @ [6] 34.L_00_15: 35#if __ARM_ARCH__<7 36 ldrb r10,[r1,#2] 37 ldrb r9,[r1,#3] 38 ldrb r11,[r1,#1] 39 add r7,r8,r7,ror#2 @ E+=K_00_19 40 ldrb r12,[r1],#4 41 orr r9,r9,r10,lsl#8 42 eor r10,r5,r6 @ F_xx_xx 43 orr r9,r9,r11,lsl#16 44 add r7,r7,r3,ror#27 @ E+=ROR(A,27) 45 orr r9,r9,r12,lsl#24 46#else 47 ldr r9,[r1],#4 @ handles unaligned 48 add r7,r8,r7,ror#2 @ E+=K_00_19 49 eor r10,r5,r6 @ F_xx_xx 50 add r7,r7,r3,ror#27 @ E+=ROR(A,27) 51#ifdef __ARMEL__ 52 rev r9,r9 @ byte swap 53#endif 54#endif 55 and r10,r4,r10,ror#2 56 add r7,r7,r9 @ E+=X[i] 57 eor r10,r10,r6,ror#2 @ F_00_19(B,C,D) 58 str r9,[r14,#-4]! 59 add r7,r7,r10 @ E+=F_00_19(B,C,D) 60#if __ARM_ARCH__<7 61 ldrb r10,[r1,#2] 62 ldrb r9,[r1,#3] 63 ldrb r11,[r1,#1] 64 add r6,r8,r6,ror#2 @ E+=K_00_19 65 ldrb r12,[r1],#4 66 orr r9,r9,r10,lsl#8 67 eor r10,r4,r5 @ F_xx_xx 68 orr r9,r9,r11,lsl#16 69 add r6,r6,r7,ror#27 @ E+=ROR(A,27) 70 orr r9,r9,r12,lsl#24 71#else 72 ldr r9,[r1],#4 @ handles unaligned 73 add r6,r8,r6,ror#2 @ E+=K_00_19 74 eor r10,r4,r5 @ F_xx_xx 75 add r6,r6,r7,ror#27 @ E+=ROR(A,27) 76#ifdef __ARMEL__ 77 rev r9,r9 @ byte swap 78#endif 79#endif 80 and r10,r3,r10,ror#2 81 add r6,r6,r9 @ E+=X[i] 82 eor r10,r10,r5,ror#2 @ F_00_19(B,C,D) 83 str r9,[r14,#-4]! 84 add r6,r6,r10 @ E+=F_00_19(B,C,D) 85#if __ARM_ARCH__<7 86 ldrb r10,[r1,#2] 87 ldrb r9,[r1,#3] 88 ldrb r11,[r1,#1] 89 add r5,r8,r5,ror#2 @ E+=K_00_19 90 ldrb r12,[r1],#4 91 orr r9,r9,r10,lsl#8 92 eor r10,r3,r4 @ F_xx_xx 93 orr r9,r9,r11,lsl#16 94 add r5,r5,r6,ror#27 @ E+=ROR(A,27) 95 orr r9,r9,r12,lsl#24 96#else 97 ldr r9,[r1],#4 @ handles unaligned 98 add r5,r8,r5,ror#2 @ E+=K_00_19 99 eor r10,r3,r4 @ F_xx_xx 100 add r5,r5,r6,ror#27 @ E+=ROR(A,27) 101#ifdef __ARMEL__ 102 rev r9,r9 @ byte swap 103#endif 104#endif 105 and r10,r7,r10,ror#2 106 add r5,r5,r9 @ E+=X[i] 107 eor r10,r10,r4,ror#2 @ F_00_19(B,C,D) 108 str r9,[r14,#-4]! 109 add r5,r5,r10 @ E+=F_00_19(B,C,D) 110#if __ARM_ARCH__<7 111 ldrb r10,[r1,#2] 112 ldrb r9,[r1,#3] 113 ldrb r11,[r1,#1] 114 add r4,r8,r4,ror#2 @ E+=K_00_19 115 ldrb r12,[r1],#4 116 orr r9,r9,r10,lsl#8 117 eor r10,r7,r3 @ F_xx_xx 118 orr r9,r9,r11,lsl#16 119 add r4,r4,r5,ror#27 @ E+=ROR(A,27) 120 orr r9,r9,r12,lsl#24 121#else 122 ldr r9,[r1],#4 @ handles unaligned 123 add r4,r8,r4,ror#2 @ E+=K_00_19 124 eor r10,r7,r3 @ F_xx_xx 125 add r4,r4,r5,ror#27 @ E+=ROR(A,27) 126#ifdef __ARMEL__ 127 rev r9,r9 @ byte swap 128#endif 129#endif 130 and r10,r6,r10,ror#2 131 add r4,r4,r9 @ E+=X[i] 132 eor r10,r10,r3,ror#2 @ F_00_19(B,C,D) 133 str r9,[r14,#-4]! 134 add r4,r4,r10 @ E+=F_00_19(B,C,D) 135#if __ARM_ARCH__<7 136 ldrb r10,[r1,#2] 137 ldrb r9,[r1,#3] 138 ldrb r11,[r1,#1] 139 add r3,r8,r3,ror#2 @ E+=K_00_19 140 ldrb r12,[r1],#4 141 orr r9,r9,r10,lsl#8 142 eor r10,r6,r7 @ F_xx_xx 143 orr r9,r9,r11,lsl#16 144 add r3,r3,r4,ror#27 @ E+=ROR(A,27) 145 orr r9,r9,r12,lsl#24 146#else 147 ldr r9,[r1],#4 @ handles unaligned 148 add r3,r8,r3,ror#2 @ E+=K_00_19 149 eor r10,r6,r7 @ F_xx_xx 150 add r3,r3,r4,ror#27 @ E+=ROR(A,27) 151#ifdef __ARMEL__ 152 rev r9,r9 @ byte swap 153#endif 154#endif 155 and r10,r5,r10,ror#2 156 add r3,r3,r9 @ E+=X[i] 157 eor r10,r10,r7,ror#2 @ F_00_19(B,C,D) 158 str r9,[r14,#-4]! 159 add r3,r3,r10 @ E+=F_00_19(B,C,D) 160 teq r14,sp 161 bne .L_00_15 @ [((11+4)*5+2)*3] 162 sub sp,sp,#25*4 163#if __ARM_ARCH__<7 164 ldrb r10,[r1,#2] 165 ldrb r9,[r1,#3] 166 ldrb r11,[r1,#1] 167 add r7,r8,r7,ror#2 @ E+=K_00_19 168 ldrb r12,[r1],#4 169 orr r9,r9,r10,lsl#8 170 eor r10,r5,r6 @ F_xx_xx 171 orr r9,r9,r11,lsl#16 172 add r7,r7,r3,ror#27 @ E+=ROR(A,27) 173 orr r9,r9,r12,lsl#24 174#else 175 ldr r9,[r1],#4 @ handles unaligned 176 add r7,r8,r7,ror#2 @ E+=K_00_19 177 eor r10,r5,r6 @ F_xx_xx 178 add r7,r7,r3,ror#27 @ E+=ROR(A,27) 179#ifdef __ARMEL__ 180 rev r9,r9 @ byte swap 181#endif 182#endif 183 and r10,r4,r10,ror#2 184 add r7,r7,r9 @ E+=X[i] 185 eor r10,r10,r6,ror#2 @ F_00_19(B,C,D) 186 str r9,[r14,#-4]! 187 add r7,r7,r10 @ E+=F_00_19(B,C,D) 188 ldr r9,[r14,#15*4] 189 ldr r10,[r14,#13*4] 190 ldr r11,[r14,#7*4] 191 add r6,r8,r6,ror#2 @ E+=K_xx_xx 192 ldr r12,[r14,#2*4] 193 eor r9,r9,r10 194 eor r11,r11,r12 @ 1 cycle stall 195 eor r10,r4,r5 @ F_xx_xx 196 mov r9,r9,ror#31 197 add r6,r6,r7,ror#27 @ E+=ROR(A,27) 198 eor r9,r9,r11,ror#31 199 str r9,[r14,#-4]! 200 and r10,r3,r10,ror#2 @ F_xx_xx 201 @ F_xx_xx 202 add r6,r6,r9 @ E+=X[i] 203 eor r10,r10,r5,ror#2 @ F_00_19(B,C,D) 204 add r6,r6,r10 @ E+=F_00_19(B,C,D) 205 ldr r9,[r14,#15*4] 206 ldr r10,[r14,#13*4] 207 ldr r11,[r14,#7*4] 208 add r5,r8,r5,ror#2 @ E+=K_xx_xx 209 ldr r12,[r14,#2*4] 210 eor r9,r9,r10 211 eor r11,r11,r12 @ 1 cycle stall 212 eor r10,r3,r4 @ F_xx_xx 213 mov r9,r9,ror#31 214 add r5,r5,r6,ror#27 @ E+=ROR(A,27) 215 eor r9,r9,r11,ror#31 216 str r9,[r14,#-4]! 217 and r10,r7,r10,ror#2 @ F_xx_xx 218 @ F_xx_xx 219 add r5,r5,r9 @ E+=X[i] 220 eor r10,r10,r4,ror#2 @ F_00_19(B,C,D) 221 add r5,r5,r10 @ E+=F_00_19(B,C,D) 222 ldr r9,[r14,#15*4] 223 ldr r10,[r14,#13*4] 224 ldr r11,[r14,#7*4] 225 add r4,r8,r4,ror#2 @ E+=K_xx_xx 226 ldr r12,[r14,#2*4] 227 eor r9,r9,r10 228 eor r11,r11,r12 @ 1 cycle stall 229 eor r10,r7,r3 @ F_xx_xx 230 mov r9,r9,ror#31 231 add r4,r4,r5,ror#27 @ E+=ROR(A,27) 232 eor r9,r9,r11,ror#31 233 str r9,[r14,#-4]! 234 and r10,r6,r10,ror#2 @ F_xx_xx 235 @ F_xx_xx 236 add r4,r4,r9 @ E+=X[i] 237 eor r10,r10,r3,ror#2 @ F_00_19(B,C,D) 238 add r4,r4,r10 @ E+=F_00_19(B,C,D) 239 ldr r9,[r14,#15*4] 240 ldr r10,[r14,#13*4] 241 ldr r11,[r14,#7*4] 242 add r3,r8,r3,ror#2 @ E+=K_xx_xx 243 ldr r12,[r14,#2*4] 244 eor r9,r9,r10 245 eor r11,r11,r12 @ 1 cycle stall 246 eor r10,r6,r7 @ F_xx_xx 247 mov r9,r9,ror#31 248 add r3,r3,r4,ror#27 @ E+=ROR(A,27) 249 eor r9,r9,r11,ror#31 250 str r9,[r14,#-4]! 251 and r10,r5,r10,ror#2 @ F_xx_xx 252 @ F_xx_xx 253 add r3,r3,r9 @ E+=X[i] 254 eor r10,r10,r7,ror#2 @ F_00_19(B,C,D) 255 add r3,r3,r10 @ E+=F_00_19(B,C,D) 256 257 ldr r8,.LK_20_39 @ [+15+16*4] 258 cmn sp,#0 @ [+3], clear carry to denote 20_39 259.L_20_39_or_60_79: 260 ldr r9,[r14,#15*4] 261 ldr r10,[r14,#13*4] 262 ldr r11,[r14,#7*4] 263 add r7,r8,r7,ror#2 @ E+=K_xx_xx 264 ldr r12,[r14,#2*4] 265 eor r9,r9,r10 266 eor r11,r11,r12 @ 1 cycle stall 267 eor r10,r5,r6 @ F_xx_xx 268 mov r9,r9,ror#31 269 add r7,r7,r3,ror#27 @ E+=ROR(A,27) 270 eor r9,r9,r11,ror#31 271 str r9,[r14,#-4]! 272 eor r10,r4,r10,ror#2 @ F_xx_xx 273 @ F_xx_xx 274 add r7,r7,r9 @ E+=X[i] 275 add r7,r7,r10 @ E+=F_20_39(B,C,D) 276 ldr r9,[r14,#15*4] 277 ldr r10,[r14,#13*4] 278 ldr r11,[r14,#7*4] 279 add r6,r8,r6,ror#2 @ E+=K_xx_xx 280 ldr r12,[r14,#2*4] 281 eor r9,r9,r10 282 eor r11,r11,r12 @ 1 cycle stall 283 eor r10,r4,r5 @ F_xx_xx 284 mov r9,r9,ror#31 285 add r6,r6,r7,ror#27 @ E+=ROR(A,27) 286 eor r9,r9,r11,ror#31 287 str r9,[r14,#-4]! 288 eor r10,r3,r10,ror#2 @ F_xx_xx 289 @ F_xx_xx 290 add r6,r6,r9 @ E+=X[i] 291 add r6,r6,r10 @ E+=F_20_39(B,C,D) 292 ldr r9,[r14,#15*4] 293 ldr r10,[r14,#13*4] 294 ldr r11,[r14,#7*4] 295 add r5,r8,r5,ror#2 @ E+=K_xx_xx 296 ldr r12,[r14,#2*4] 297 eor r9,r9,r10 298 eor r11,r11,r12 @ 1 cycle stall 299 eor r10,r3,r4 @ F_xx_xx 300 mov r9,r9,ror#31 301 add r5,r5,r6,ror#27 @ E+=ROR(A,27) 302 eor r9,r9,r11,ror#31 303 str r9,[r14,#-4]! 304 eor r10,r7,r10,ror#2 @ F_xx_xx 305 @ F_xx_xx 306 add r5,r5,r9 @ E+=X[i] 307 add r5,r5,r10 @ E+=F_20_39(B,C,D) 308 ldr r9,[r14,#15*4] 309 ldr r10,[r14,#13*4] 310 ldr r11,[r14,#7*4] 311 add r4,r8,r4,ror#2 @ E+=K_xx_xx 312 ldr r12,[r14,#2*4] 313 eor r9,r9,r10 314 eor r11,r11,r12 @ 1 cycle stall 315 eor r10,r7,r3 @ F_xx_xx 316 mov r9,r9,ror#31 317 add r4,r4,r5,ror#27 @ E+=ROR(A,27) 318 eor r9,r9,r11,ror#31 319 str r9,[r14,#-4]! 320 eor r10,r6,r10,ror#2 @ F_xx_xx 321 @ F_xx_xx 322 add r4,r4,r9 @ E+=X[i] 323 add r4,r4,r10 @ E+=F_20_39(B,C,D) 324 ldr r9,[r14,#15*4] 325 ldr r10,[r14,#13*4] 326 ldr r11,[r14,#7*4] 327 add r3,r8,r3,ror#2 @ E+=K_xx_xx 328 ldr r12,[r14,#2*4] 329 eor r9,r9,r10 330 eor r11,r11,r12 @ 1 cycle stall 331 eor r10,r6,r7 @ F_xx_xx 332 mov r9,r9,ror#31 333 add r3,r3,r4,ror#27 @ E+=ROR(A,27) 334 eor r9,r9,r11,ror#31 335 str r9,[r14,#-4]! 336 eor r10,r5,r10,ror#2 @ F_xx_xx 337 @ F_xx_xx 338 add r3,r3,r9 @ E+=X[i] 339 add r3,r3,r10 @ E+=F_20_39(B,C,D) 340 teq r14,sp @ preserve carry 341 bne .L_20_39_or_60_79 @ [+((12+3)*5+2)*4] 342 bcs .L_done @ [+((12+3)*5+2)*4], spare 300 bytes 343 344 ldr r8,.LK_40_59 345 sub sp,sp,#20*4 @ [+2] 346.L_40_59: 347 ldr r9,[r14,#15*4] 348 ldr r10,[r14,#13*4] 349 ldr r11,[r14,#7*4] 350 add r7,r8,r7,ror#2 @ E+=K_xx_xx 351 ldr r12,[r14,#2*4] 352 eor r9,r9,r10 353 eor r11,r11,r12 @ 1 cycle stall 354 eor r10,r5,r6 @ F_xx_xx 355 mov r9,r9,ror#31 356 add r7,r7,r3,ror#27 @ E+=ROR(A,27) 357 eor r9,r9,r11,ror#31 358 str r9,[r14,#-4]! 359 and r10,r4,r10,ror#2 @ F_xx_xx 360 and r11,r5,r6 @ F_xx_xx 361 add r7,r7,r9 @ E+=X[i] 362 add r7,r7,r10 @ E+=F_40_59(B,C,D) 363 add r7,r7,r11,ror#2 364 ldr r9,[r14,#15*4] 365 ldr r10,[r14,#13*4] 366 ldr r11,[r14,#7*4] 367 add r6,r8,r6,ror#2 @ E+=K_xx_xx 368 ldr r12,[r14,#2*4] 369 eor r9,r9,r10 370 eor r11,r11,r12 @ 1 cycle stall 371 eor r10,r4,r5 @ F_xx_xx 372 mov r9,r9,ror#31 373 add r6,r6,r7,ror#27 @ E+=ROR(A,27) 374 eor r9,r9,r11,ror#31 375 str r9,[r14,#-4]! 376 and r10,r3,r10,ror#2 @ F_xx_xx 377 and r11,r4,r5 @ F_xx_xx 378 add r6,r6,r9 @ E+=X[i] 379 add r6,r6,r10 @ E+=F_40_59(B,C,D) 380 add r6,r6,r11,ror#2 381 ldr r9,[r14,#15*4] 382 ldr r10,[r14,#13*4] 383 ldr r11,[r14,#7*4] 384 add r5,r8,r5,ror#2 @ E+=K_xx_xx 385 ldr r12,[r14,#2*4] 386 eor r9,r9,r10 387 eor r11,r11,r12 @ 1 cycle stall 388 eor r10,r3,r4 @ F_xx_xx 389 mov r9,r9,ror#31 390 add r5,r5,r6,ror#27 @ E+=ROR(A,27) 391 eor r9,r9,r11,ror#31 392 str r9,[r14,#-4]! 393 and r10,r7,r10,ror#2 @ F_xx_xx 394 and r11,r3,r4 @ F_xx_xx 395 add r5,r5,r9 @ E+=X[i] 396 add r5,r5,r10 @ E+=F_40_59(B,C,D) 397 add r5,r5,r11,ror#2 398 ldr r9,[r14,#15*4] 399 ldr r10,[r14,#13*4] 400 ldr r11,[r14,#7*4] 401 add r4,r8,r4,ror#2 @ E+=K_xx_xx 402 ldr r12,[r14,#2*4] 403 eor r9,r9,r10 404 eor r11,r11,r12 @ 1 cycle stall 405 eor r10,r7,r3 @ F_xx_xx 406 mov r9,r9,ror#31 407 add r4,r4,r5,ror#27 @ E+=ROR(A,27) 408 eor r9,r9,r11,ror#31 409 str r9,[r14,#-4]! 410 and r10,r6,r10,ror#2 @ F_xx_xx 411 and r11,r7,r3 @ F_xx_xx 412 add r4,r4,r9 @ E+=X[i] 413 add r4,r4,r10 @ E+=F_40_59(B,C,D) 414 add r4,r4,r11,ror#2 415 ldr r9,[r14,#15*4] 416 ldr r10,[r14,#13*4] 417 ldr r11,[r14,#7*4] 418 add r3,r8,r3,ror#2 @ E+=K_xx_xx 419 ldr r12,[r14,#2*4] 420 eor r9,r9,r10 421 eor r11,r11,r12 @ 1 cycle stall 422 eor r10,r6,r7 @ F_xx_xx 423 mov r9,r9,ror#31 424 add r3,r3,r4,ror#27 @ E+=ROR(A,27) 425 eor r9,r9,r11,ror#31 426 str r9,[r14,#-4]! 427 and r10,r5,r10,ror#2 @ F_xx_xx 428 and r11,r6,r7 @ F_xx_xx 429 add r3,r3,r9 @ E+=X[i] 430 add r3,r3,r10 @ E+=F_40_59(B,C,D) 431 add r3,r3,r11,ror#2 432 teq r14,sp 433 bne .L_40_59 @ [+((12+5)*5+2)*4] 434 435 ldr r8,.LK_60_79 436 sub sp,sp,#20*4 437 cmp sp,#0 @ set carry to denote 60_79 438 b .L_20_39_or_60_79 @ [+4], spare 300 bytes 439.L_done: 440 add sp,sp,#80*4 @ "deallocate" stack frame 441 ldmia r0,{r8,r9,r10,r11,r12} 442 add r3,r8,r3 443 add r4,r9,r4 444 add r5,r10,r5,ror#2 445 add r6,r11,r6,ror#2 446 add r7,r12,r7,ror#2 447 stmia r0,{r3,r4,r5,r6,r7} 448 teq r1,r2 449 bne .Lloop @ [+18], total 1307 450 451#if __ARM_ARCH__>=5 452 ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} 453#else 454 ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} 455 tst lr,#1 456 moveq pc,lr @ be binary compatible with V4, yet 457.word 0xe12fff1e @ interoperable with Thumb ISA:-) 458#endif 459.size sha1_block_data_order,.-sha1_block_data_order 460 461.align 5 462.LK_00_19:.word 0x5a827999 463.LK_20_39:.word 0x6ed9eba1 464.LK_40_59:.word 0x8f1bbcdc 465.LK_60_79:.word 0xca62c1d6 466#if __ARM_MAX_ARCH__>=7 467.LOPENSSL_armcap: 468.word OPENSSL_armcap_P-sha1_block_data_order 469#endif 470.byte 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,47,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 471.align 2 472.align 5 473#if __ARM_MAX_ARCH__>=7 474.arch armv7-a 475.fpu neon 476 477.type sha1_block_data_order_neon,%function 478.align 4 479sha1_block_data_order_neon: 480.LNEON: 481 stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} 482 add r2,r1,r2,lsl#6 @ r2 to point at the end of r1 483 @ dmb @ errata #451034 on early Cortex A8 484 @ vstmdb sp!,{d8-d15} @ ABI specification says so 485 mov r14,sp 486 sub sp,sp,#64 @ alloca 487 adr r8,.LK_00_19 488 bic sp,sp,#15 @ align for 128-bit stores 489 490 ldmia r0,{r3,r4,r5,r6,r7} @ load context 491 mov r12,sp 492 493 vld1.8 {q0,q1},[r1]! @ handles unaligned 494 veor q15,q15,q15 495 vld1.8 {q2,q3},[r1]! 496 vld1.32 {d28[],d29[]},[r8,:32]! @ load K_00_19 497 vrev32.8 q0,q0 @ yes, even on 498 vrev32.8 q1,q1 @ big-endian... 499 vrev32.8 q2,q2 500 vadd.i32 q8,q0,q14 501 vrev32.8 q3,q3 502 vadd.i32 q9,q1,q14 503 vst1.32 {q8},[r12,:128]! 504 vadd.i32 q10,q2,q14 505 vst1.32 {q9},[r12,:128]! 506 vst1.32 {q10},[r12,:128]! 507 ldr r9,[sp] @ big RAW stall 508 509.Loop_neon: 510 vext.8 q8,q0,q1,#8 511 bic r10,r6,r4 512 add r7,r7,r9 513 and r11,r5,r4 514 vadd.i32 q13,q3,q14 515 ldr r9,[sp,#4] 516 add r7,r7,r3,ror#27 517 vext.8 q12,q3,q15,#4 518 eor r11,r11,r10 519 mov r4,r4,ror#2 520 add r7,r7,r11 521 veor q8,q8,q0 522 bic r10,r5,r3 523 add r6,r6,r9 524 veor q12,q12,q2 525 and r11,r4,r3 526 ldr r9,[sp,#8] 527 veor q12,q12,q8 528 add r6,r6,r7,ror#27 529 eor r11,r11,r10 530 vst1.32 {q13},[r12,:128]! 531 sub r12,r12,#64 532 mov r3,r3,ror#2 533 add r6,r6,r11 534 vext.8 q13,q15,q12,#4 535 bic r10,r4,r7 536 add r5,r5,r9 537 vadd.i32 q8,q12,q12 538 and r11,r3,r7 539 ldr r9,[sp,#12] 540 vsri.32 q8,q12,#31 541 add r5,r5,r6,ror#27 542 eor r11,r11,r10 543 mov r7,r7,ror#2 544 vshr.u32 q12,q13,#30 545 add r5,r5,r11 546 bic r10,r3,r6 547 vshl.u32 q13,q13,#2 548 add r4,r4,r9 549 and r11,r7,r6 550 veor q8,q8,q12 551 ldr r9,[sp,#16] 552 add r4,r4,r5,ror#27 553 veor q8,q8,q13 554 eor r11,r11,r10 555 mov r6,r6,ror#2 556 add r4,r4,r11 557 vext.8 q9,q1,q2,#8 558 bic r10,r7,r5 559 add r3,r3,r9 560 and r11,r6,r5 561 vadd.i32 q13,q8,q14 562 ldr r9,[sp,#20] 563 vld1.32 {d28[],d29[]},[r8,:32]! 564 add r3,r3,r4,ror#27 565 vext.8 q12,q8,q15,#4 566 eor r11,r11,r10 567 mov r5,r5,ror#2 568 add r3,r3,r11 569 veor q9,q9,q1 570 bic r10,r6,r4 571 add r7,r7,r9 572 veor q12,q12,q3 573 and r11,r5,r4 574 ldr r9,[sp,#24] 575 veor q12,q12,q9 576 add r7,r7,r3,ror#27 577 eor r11,r11,r10 578 vst1.32 {q13},[r12,:128]! 579 mov r4,r4,ror#2 580 add r7,r7,r11 581 vext.8 q13,q15,q12,#4 582 bic r10,r5,r3 583 add r6,r6,r9 584 vadd.i32 q9,q12,q12 585 and r11,r4,r3 586 ldr r9,[sp,#28] 587 vsri.32 q9,q12,#31 588 add r6,r6,r7,ror#27 589 eor r11,r11,r10 590 mov r3,r3,ror#2 591 vshr.u32 q12,q13,#30 592 add r6,r6,r11 593 bic r10,r4,r7 594 vshl.u32 q13,q13,#2 595 add r5,r5,r9 596 and r11,r3,r7 597 veor q9,q9,q12 598 ldr r9,[sp,#32] 599 add r5,r5,r6,ror#27 600 veor q9,q9,q13 601 eor r11,r11,r10 602 mov r7,r7,ror#2 603 add r5,r5,r11 604 vext.8 q10,q2,q3,#8 605 bic r10,r3,r6 606 add r4,r4,r9 607 and r11,r7,r6 608 vadd.i32 q13,q9,q14 609 ldr r9,[sp,#36] 610 add r4,r4,r5,ror#27 611 vext.8 q12,q9,q15,#4 612 eor r11,r11,r10 613 mov r6,r6,ror#2 614 add r4,r4,r11 615 veor q10,q10,q2 616 bic r10,r7,r5 617 add r3,r3,r9 618 veor q12,q12,q8 619 and r11,r6,r5 620 ldr r9,[sp,#40] 621 veor q12,q12,q10 622 add r3,r3,r4,ror#27 623 eor r11,r11,r10 624 vst1.32 {q13},[r12,:128]! 625 mov r5,r5,ror#2 626 add r3,r3,r11 627 vext.8 q13,q15,q12,#4 628 bic r10,r6,r4 629 add r7,r7,r9 630 vadd.i32 q10,q12,q12 631 and r11,r5,r4 632 ldr r9,[sp,#44] 633 vsri.32 q10,q12,#31 634 add r7,r7,r3,ror#27 635 eor r11,r11,r10 636 mov r4,r4,ror#2 637 vshr.u32 q12,q13,#30 638 add r7,r7,r11 639 bic r10,r5,r3 640 vshl.u32 q13,q13,#2 641 add r6,r6,r9 642 and r11,r4,r3 643 veor q10,q10,q12 644 ldr r9,[sp,#48] 645 add r6,r6,r7,ror#27 646 veor q10,q10,q13 647 eor r11,r11,r10 648 mov r3,r3,ror#2 649 add r6,r6,r11 650 vext.8 q11,q3,q8,#8 651 bic r10,r4,r7 652 add r5,r5,r9 653 and r11,r3,r7 654 vadd.i32 q13,q10,q14 655 ldr r9,[sp,#52] 656 add r5,r5,r6,ror#27 657 vext.8 q12,q10,q15,#4 658 eor r11,r11,r10 659 mov r7,r7,ror#2 660 add r5,r5,r11 661 veor q11,q11,q3 662 bic r10,r3,r6 663 add r4,r4,r9 664 veor q12,q12,q9 665 and r11,r7,r6 666 ldr r9,[sp,#56] 667 veor q12,q12,q11 668 add r4,r4,r5,ror#27 669 eor r11,r11,r10 670 vst1.32 {q13},[r12,:128]! 671 mov r6,r6,ror#2 672 add r4,r4,r11 673 vext.8 q13,q15,q12,#4 674 bic r10,r7,r5 675 add r3,r3,r9 676 vadd.i32 q11,q12,q12 677 and r11,r6,r5 678 ldr r9,[sp,#60] 679 vsri.32 q11,q12,#31 680 add r3,r3,r4,ror#27 681 eor r11,r11,r10 682 mov r5,r5,ror#2 683 vshr.u32 q12,q13,#30 684 add r3,r3,r11 685 bic r10,r6,r4 686 vshl.u32 q13,q13,#2 687 add r7,r7,r9 688 and r11,r5,r4 689 veor q11,q11,q12 690 ldr r9,[sp,#0] 691 add r7,r7,r3,ror#27 692 veor q11,q11,q13 693 eor r11,r11,r10 694 mov r4,r4,ror#2 695 add r7,r7,r11 696 vext.8 q12,q10,q11,#8 697 bic r10,r5,r3 698 add r6,r6,r9 699 and r11,r4,r3 700 veor q0,q0,q8 701 ldr r9,[sp,#4] 702 add r6,r6,r7,ror#27 703 veor q0,q0,q1 704 eor r11,r11,r10 705 mov r3,r3,ror#2 706 vadd.i32 q13,q11,q14 707 add r6,r6,r11 708 bic r10,r4,r7 709 veor q12,q12,q0 710 add r5,r5,r9 711 and r11,r3,r7 712 vshr.u32 q0,q12,#30 713 ldr r9,[sp,#8] 714 add r5,r5,r6,ror#27 715 vst1.32 {q13},[r12,:128]! 716 sub r12,r12,#64 717 eor r11,r11,r10 718 mov r7,r7,ror#2 719 vsli.32 q0,q12,#2 720 add r5,r5,r11 721 bic r10,r3,r6 722 add r4,r4,r9 723 and r11,r7,r6 724 ldr r9,[sp,#12] 725 add r4,r4,r5,ror#27 726 eor r11,r11,r10 727 mov r6,r6,ror#2 728 add r4,r4,r11 729 bic r10,r7,r5 730 add r3,r3,r9 731 and r11,r6,r5 732 ldr r9,[sp,#16] 733 add r3,r3,r4,ror#27 734 eor r11,r11,r10 735 mov r5,r5,ror#2 736 add r3,r3,r11 737 vext.8 q12,q11,q0,#8 738 eor r10,r4,r6 739 add r7,r7,r9 740 ldr r9,[sp,#20] 741 veor q1,q1,q9 742 eor r11,r10,r5 743 add r7,r7,r3,ror#27 744 veor q1,q1,q2 745 mov r4,r4,ror#2 746 add r7,r7,r11 747 vadd.i32 q13,q0,q14 748 eor r10,r3,r5 749 add r6,r6,r9 750 veor q12,q12,q1 751 ldr r9,[sp,#24] 752 eor r11,r10,r4 753 vshr.u32 q1,q12,#30 754 add r6,r6,r7,ror#27 755 mov r3,r3,ror#2 756 vst1.32 {q13},[r12,:128]! 757 add r6,r6,r11 758 eor r10,r7,r4 759 vsli.32 q1,q12,#2 760 add r5,r5,r9 761 ldr r9,[sp,#28] 762 eor r11,r10,r3 763 add r5,r5,r6,ror#27 764 mov r7,r7,ror#2 765 add r5,r5,r11 766 eor r10,r6,r3 767 add r4,r4,r9 768 ldr r9,[sp,#32] 769 eor r11,r10,r7 770 add r4,r4,r5,ror#27 771 mov r6,r6,ror#2 772 add r4,r4,r11 773 vext.8 q12,q0,q1,#8 774 eor r10,r5,r7 775 add r3,r3,r9 776 ldr r9,[sp,#36] 777 veor q2,q2,q10 778 eor r11,r10,r6 779 add r3,r3,r4,ror#27 780 veor q2,q2,q3 781 mov r5,r5,ror#2 782 add r3,r3,r11 783 vadd.i32 q13,q1,q14 784 eor r10,r4,r6 785 vld1.32 {d28[],d29[]},[r8,:32]! 786 add r7,r7,r9 787 veor q12,q12,q2 788 ldr r9,[sp,#40] 789 eor r11,r10,r5 790 vshr.u32 q2,q12,#30 791 add r7,r7,r3,ror#27 792 mov r4,r4,ror#2 793 vst1.32 {q13},[r12,:128]! 794 add r7,r7,r11 795 eor r10,r3,r5 796 vsli.32 q2,q12,#2 797 add r6,r6,r9 798 ldr r9,[sp,#44] 799 eor r11,r10,r4 800 add r6,r6,r7,ror#27 801 mov r3,r3,ror#2 802 add r6,r6,r11 803 eor r10,r7,r4 804 add r5,r5,r9 805 ldr r9,[sp,#48] 806 eor r11,r10,r3 807 add r5,r5,r6,ror#27 808 mov r7,r7,ror#2 809 add r5,r5,r11 810 vext.8 q12,q1,q2,#8 811 eor r10,r6,r3 812 add r4,r4,r9 813 ldr r9,[sp,#52] 814 veor q3,q3,q11 815 eor r11,r10,r7 816 add r4,r4,r5,ror#27 817 veor q3,q3,q8 818 mov r6,r6,ror#2 819 add r4,r4,r11 820 vadd.i32 q13,q2,q14 821 eor r10,r5,r7 822 add r3,r3,r9 823 veor q12,q12,q3 824 ldr r9,[sp,#56] 825 eor r11,r10,r6 826 vshr.u32 q3,q12,#30 827 add r3,r3,r4,ror#27 828 mov r5,r5,ror#2 829 vst1.32 {q13},[r12,:128]! 830 add r3,r3,r11 831 eor r10,r4,r6 832 vsli.32 q3,q12,#2 833 add r7,r7,r9 834 ldr r9,[sp,#60] 835 eor r11,r10,r5 836 add r7,r7,r3,ror#27 837 mov r4,r4,ror#2 838 add r7,r7,r11 839 eor r10,r3,r5 840 add r6,r6,r9 841 ldr r9,[sp,#0] 842 eor r11,r10,r4 843 add r6,r6,r7,ror#27 844 mov r3,r3,ror#2 845 add r6,r6,r11 846 vext.8 q12,q2,q3,#8 847 eor r10,r7,r4 848 add r5,r5,r9 849 ldr r9,[sp,#4] 850 veor q8,q8,q0 851 eor r11,r10,r3 852 add r5,r5,r6,ror#27 853 veor q8,q8,q9 854 mov r7,r7,ror#2 855 add r5,r5,r11 856 vadd.i32 q13,q3,q14 857 eor r10,r6,r3 858 add r4,r4,r9 859 veor q12,q12,q8 860 ldr r9,[sp,#8] 861 eor r11,r10,r7 862 vshr.u32 q8,q12,#30 863 add r4,r4,r5,ror#27 864 mov r6,r6,ror#2 865 vst1.32 {q13},[r12,:128]! 866 sub r12,r12,#64 867 add r4,r4,r11 868 eor r10,r5,r7 869 vsli.32 q8,q12,#2 870 add r3,r3,r9 871 ldr r9,[sp,#12] 872 eor r11,r10,r6 873 add r3,r3,r4,ror#27 874 mov r5,r5,ror#2 875 add r3,r3,r11 876 eor r10,r4,r6 877 add r7,r7,r9 878 ldr r9,[sp,#16] 879 eor r11,r10,r5 880 add r7,r7,r3,ror#27 881 mov r4,r4,ror#2 882 add r7,r7,r11 883 vext.8 q12,q3,q8,#8 884 eor r10,r3,r5 885 add r6,r6,r9 886 ldr r9,[sp,#20] 887 veor q9,q9,q1 888 eor r11,r10,r4 889 add r6,r6,r7,ror#27 890 veor q9,q9,q10 891 mov r3,r3,ror#2 892 add r6,r6,r11 893 vadd.i32 q13,q8,q14 894 eor r10,r7,r4 895 add r5,r5,r9 896 veor q12,q12,q9 897 ldr r9,[sp,#24] 898 eor r11,r10,r3 899 vshr.u32 q9,q12,#30 900 add r5,r5,r6,ror#27 901 mov r7,r7,ror#2 902 vst1.32 {q13},[r12,:128]! 903 add r5,r5,r11 904 eor r10,r6,r3 905 vsli.32 q9,q12,#2 906 add r4,r4,r9 907 ldr r9,[sp,#28] 908 eor r11,r10,r7 909 add r4,r4,r5,ror#27 910 mov r6,r6,ror#2 911 add r4,r4,r11 912 eor r10,r5,r7 913 add r3,r3,r9 914 ldr r9,[sp,#32] 915 eor r11,r10,r6 916 add r3,r3,r4,ror#27 917 mov r5,r5,ror#2 918 add r3,r3,r11 919 vext.8 q12,q8,q9,#8 920 add r7,r7,r9 921 and r10,r5,r6 922 ldr r9,[sp,#36] 923 veor q10,q10,q2 924 add r7,r7,r3,ror#27 925 eor r11,r5,r6 926 veor q10,q10,q11 927 add r7,r7,r10 928 and r11,r11,r4 929 vadd.i32 q13,q9,q14 930 mov r4,r4,ror#2 931 add r7,r7,r11 932 veor q12,q12,q10 933 add r6,r6,r9 934 and r10,r4,r5 935 vshr.u32 q10,q12,#30 936 ldr r9,[sp,#40] 937 add r6,r6,r7,ror#27 938 vst1.32 {q13},[r12,:128]! 939 eor r11,r4,r5 940 add r6,r6,r10 941 vsli.32 q10,q12,#2 942 and r11,r11,r3 943 mov r3,r3,ror#2 944 add r6,r6,r11 945 add r5,r5,r9 946 and r10,r3,r4 947 ldr r9,[sp,#44] 948 add r5,r5,r6,ror#27 949 eor r11,r3,r4 950 add r5,r5,r10 951 and r11,r11,r7 952 mov r7,r7,ror#2 953 add r5,r5,r11 954 add r4,r4,r9 955 and r10,r7,r3 956 ldr r9,[sp,#48] 957 add r4,r4,r5,ror#27 958 eor r11,r7,r3 959 add r4,r4,r10 960 and r11,r11,r6 961 mov r6,r6,ror#2 962 add r4,r4,r11 963 vext.8 q12,q9,q10,#8 964 add r3,r3,r9 965 and r10,r6,r7 966 ldr r9,[sp,#52] 967 veor q11,q11,q3 968 add r3,r3,r4,ror#27 969 eor r11,r6,r7 970 veor q11,q11,q0 971 add r3,r3,r10 972 and r11,r11,r5 973 vadd.i32 q13,q10,q14 974 mov r5,r5,ror#2 975 vld1.32 {d28[],d29[]},[r8,:32]! 976 add r3,r3,r11 977 veor q12,q12,q11 978 add r7,r7,r9 979 and r10,r5,r6 980 vshr.u32 q11,q12,#30 981 ldr r9,[sp,#56] 982 add r7,r7,r3,ror#27 983 vst1.32 {q13},[r12,:128]! 984 eor r11,r5,r6 985 add r7,r7,r10 986 vsli.32 q11,q12,#2 987 and r11,r11,r4 988 mov r4,r4,ror#2 989 add r7,r7,r11 990 add r6,r6,r9 991 and r10,r4,r5 992 ldr r9,[sp,#60] 993 add r6,r6,r7,ror#27 994 eor r11,r4,r5 995 add r6,r6,r10 996 and r11,r11,r3 997 mov r3,r3,ror#2 998 add r6,r6,r11 999 add r5,r5,r9 1000 and r10,r3,r4 1001 ldr r9,[sp,#0] 1002 add r5,r5,r6,ror#27 1003 eor r11,r3,r4 1004 add r5,r5,r10 1005 and r11,r11,r7 1006 mov r7,r7,ror#2 1007 add r5,r5,r11 1008 vext.8 q12,q10,q11,#8 1009 add r4,r4,r9 1010 and r10,r7,r3 1011 ldr r9,[sp,#4] 1012 veor q0,q0,q8 1013 add r4,r4,r5,ror#27 1014 eor r11,r7,r3 1015 veor q0,q0,q1 1016 add r4,r4,r10 1017 and r11,r11,r6 1018 vadd.i32 q13,q11,q14 1019 mov r6,r6,ror#2 1020 add r4,r4,r11 1021 veor q12,q12,q0 1022 add r3,r3,r9 1023 and r10,r6,r7 1024 vshr.u32 q0,q12,#30 1025 ldr r9,[sp,#8] 1026 add r3,r3,r4,ror#27 1027 vst1.32 {q13},[r12,:128]! 1028 sub r12,r12,#64 1029 eor r11,r6,r7 1030 add r3,r3,r10 1031 vsli.32 q0,q12,#2 1032 and r11,r11,r5 1033 mov r5,r5,ror#2 1034 add r3,r3,r11 1035 add r7,r7,r9 1036 and r10,r5,r6 1037 ldr r9,[sp,#12] 1038 add r7,r7,r3,ror#27 1039 eor r11,r5,r6 1040 add r7,r7,r10 1041 and r11,r11,r4 1042 mov r4,r4,ror#2 1043 add r7,r7,r11 1044 add r6,r6,r9 1045 and r10,r4,r5 1046 ldr r9,[sp,#16] 1047 add r6,r6,r7,ror#27 1048 eor r11,r4,r5 1049 add r6,r6,r10 1050 and r11,r11,r3 1051 mov r3,r3,ror#2 1052 add r6,r6,r11 1053 vext.8 q12,q11,q0,#8 1054 add r5,r5,r9 1055 and r10,r3,r4 1056 ldr r9,[sp,#20] 1057 veor q1,q1,q9 1058 add r5,r5,r6,ror#27 1059 eor r11,r3,r4 1060 veor q1,q1,q2 1061 add r5,r5,r10 1062 and r11,r11,r7 1063 vadd.i32 q13,q0,q14 1064 mov r7,r7,ror#2 1065 add r5,r5,r11 1066 veor q12,q12,q1 1067 add r4,r4,r9 1068 and r10,r7,r3 1069 vshr.u32 q1,q12,#30 1070 ldr r9,[sp,#24] 1071 add r4,r4,r5,ror#27 1072 vst1.32 {q13},[r12,:128]! 1073 eor r11,r7,r3 1074 add r4,r4,r10 1075 vsli.32 q1,q12,#2 1076 and r11,r11,r6 1077 mov r6,r6,ror#2 1078 add r4,r4,r11 1079 add r3,r3,r9 1080 and r10,r6,r7 1081 ldr r9,[sp,#28] 1082 add r3,r3,r4,ror#27 1083 eor r11,r6,r7 1084 add r3,r3,r10 1085 and r11,r11,r5 1086 mov r5,r5,ror#2 1087 add r3,r3,r11 1088 add r7,r7,r9 1089 and r10,r5,r6 1090 ldr r9,[sp,#32] 1091 add r7,r7,r3,ror#27 1092 eor r11,r5,r6 1093 add r7,r7,r10 1094 and r11,r11,r4 1095 mov r4,r4,ror#2 1096 add r7,r7,r11 1097 vext.8 q12,q0,q1,#8 1098 add r6,r6,r9 1099 and r10,r4,r5 1100 ldr r9,[sp,#36] 1101 veor q2,q2,q10 1102 add r6,r6,r7,ror#27 1103 eor r11,r4,r5 1104 veor q2,q2,q3 1105 add r6,r6,r10 1106 and r11,r11,r3 1107 vadd.i32 q13,q1,q14 1108 mov r3,r3,ror#2 1109 add r6,r6,r11 1110 veor q12,q12,q2 1111 add r5,r5,r9 1112 and r10,r3,r4 1113 vshr.u32 q2,q12,#30 1114 ldr r9,[sp,#40] 1115 add r5,r5,r6,ror#27 1116 vst1.32 {q13},[r12,:128]! 1117 eor r11,r3,r4 1118 add r5,r5,r10 1119 vsli.32 q2,q12,#2 1120 and r11,r11,r7 1121 mov r7,r7,ror#2 1122 add r5,r5,r11 1123 add r4,r4,r9 1124 and r10,r7,r3 1125 ldr r9,[sp,#44] 1126 add r4,r4,r5,ror#27 1127 eor r11,r7,r3 1128 add r4,r4,r10 1129 and r11,r11,r6 1130 mov r6,r6,ror#2 1131 add r4,r4,r11 1132 add r3,r3,r9 1133 and r10,r6,r7 1134 ldr r9,[sp,#48] 1135 add r3,r3,r4,ror#27 1136 eor r11,r6,r7 1137 add r3,r3,r10 1138 and r11,r11,r5 1139 mov r5,r5,ror#2 1140 add r3,r3,r11 1141 vext.8 q12,q1,q2,#8 1142 eor r10,r4,r6 1143 add r7,r7,r9 1144 ldr r9,[sp,#52] 1145 veor q3,q3,q11 1146 eor r11,r10,r5 1147 add r7,r7,r3,ror#27 1148 veor q3,q3,q8 1149 mov r4,r4,ror#2 1150 add r7,r7,r11 1151 vadd.i32 q13,q2,q14 1152 eor r10,r3,r5 1153 add r6,r6,r9 1154 veor q12,q12,q3 1155 ldr r9,[sp,#56] 1156 eor r11,r10,r4 1157 vshr.u32 q3,q12,#30 1158 add r6,r6,r7,ror#27 1159 mov r3,r3,ror#2 1160 vst1.32 {q13},[r12,:128]! 1161 add r6,r6,r11 1162 eor r10,r7,r4 1163 vsli.32 q3,q12,#2 1164 add r5,r5,r9 1165 ldr r9,[sp,#60] 1166 eor r11,r10,r3 1167 add r5,r5,r6,ror#27 1168 mov r7,r7,ror#2 1169 add r5,r5,r11 1170 eor r10,r6,r3 1171 add r4,r4,r9 1172 ldr r9,[sp,#0] 1173 eor r11,r10,r7 1174 add r4,r4,r5,ror#27 1175 mov r6,r6,ror#2 1176 add r4,r4,r11 1177 vadd.i32 q13,q3,q14 1178 eor r10,r5,r7 1179 add r3,r3,r9 1180 vst1.32 {q13},[r12,:128]! 1181 sub r12,r12,#64 1182 teq r1,r2 1183 sub r8,r8,#16 1184 subeq r1,r1,#64 1185 vld1.8 {q0,q1},[r1]! 1186 ldr r9,[sp,#4] 1187 eor r11,r10,r6 1188 vld1.8 {q2,q3},[r1]! 1189 add r3,r3,r4,ror#27 1190 mov r5,r5,ror#2 1191 vld1.32 {d28[],d29[]},[r8,:32]! 1192 add r3,r3,r11 1193 eor r10,r4,r6 1194 vrev32.8 q0,q0 1195 add r7,r7,r9 1196 ldr r9,[sp,#8] 1197 eor r11,r10,r5 1198 add r7,r7,r3,ror#27 1199 mov r4,r4,ror#2 1200 add r7,r7,r11 1201 eor r10,r3,r5 1202 add r6,r6,r9 1203 ldr r9,[sp,#12] 1204 eor r11,r10,r4 1205 add r6,r6,r7,ror#27 1206 mov r3,r3,ror#2 1207 add r6,r6,r11 1208 eor r10,r7,r4 1209 add r5,r5,r9 1210 ldr r9,[sp,#16] 1211 eor r11,r10,r3 1212 add r5,r5,r6,ror#27 1213 mov r7,r7,ror#2 1214 add r5,r5,r11 1215 vrev32.8 q1,q1 1216 eor r10,r6,r3 1217 add r4,r4,r9 1218 vadd.i32 q8,q0,q14 1219 ldr r9,[sp,#20] 1220 eor r11,r10,r7 1221 vst1.32 {q8},[r12,:128]! 1222 add r4,r4,r5,ror#27 1223 mov r6,r6,ror#2 1224 add r4,r4,r11 1225 eor r10,r5,r7 1226 add r3,r3,r9 1227 ldr r9,[sp,#24] 1228 eor r11,r10,r6 1229 add r3,r3,r4,ror#27 1230 mov r5,r5,ror#2 1231 add r3,r3,r11 1232 eor r10,r4,r6 1233 add r7,r7,r9 1234 ldr r9,[sp,#28] 1235 eor r11,r10,r5 1236 add r7,r7,r3,ror#27 1237 mov r4,r4,ror#2 1238 add r7,r7,r11 1239 eor r10,r3,r5 1240 add r6,r6,r9 1241 ldr r9,[sp,#32] 1242 eor r11,r10,r4 1243 add r6,r6,r7,ror#27 1244 mov r3,r3,ror#2 1245 add r6,r6,r11 1246 vrev32.8 q2,q2 1247 eor r10,r7,r4 1248 add r5,r5,r9 1249 vadd.i32 q9,q1,q14 1250 ldr r9,[sp,#36] 1251 eor r11,r10,r3 1252 vst1.32 {q9},[r12,:128]! 1253 add r5,r5,r6,ror#27 1254 mov r7,r7,ror#2 1255 add r5,r5,r11 1256 eor r10,r6,r3 1257 add r4,r4,r9 1258 ldr r9,[sp,#40] 1259 eor r11,r10,r7 1260 add r4,r4,r5,ror#27 1261 mov r6,r6,ror#2 1262 add r4,r4,r11 1263 eor r10,r5,r7 1264 add r3,r3,r9 1265 ldr r9,[sp,#44] 1266 eor r11,r10,r6 1267 add r3,r3,r4,ror#27 1268 mov r5,r5,ror#2 1269 add r3,r3,r11 1270 eor r10,r4,r6 1271 add r7,r7,r9 1272 ldr r9,[sp,#48] 1273 eor r11,r10,r5 1274 add r7,r7,r3,ror#27 1275 mov r4,r4,ror#2 1276 add r7,r7,r11 1277 vrev32.8 q3,q3 1278 eor r10,r3,r5 1279 add r6,r6,r9 1280 vadd.i32 q10,q2,q14 1281 ldr r9,[sp,#52] 1282 eor r11,r10,r4 1283 vst1.32 {q10},[r12,:128]! 1284 add r6,r6,r7,ror#27 1285 mov r3,r3,ror#2 1286 add r6,r6,r11 1287 eor r10,r7,r4 1288 add r5,r5,r9 1289 ldr r9,[sp,#56] 1290 eor r11,r10,r3 1291 add r5,r5,r6,ror#27 1292 mov r7,r7,ror#2 1293 add r5,r5,r11 1294 eor r10,r6,r3 1295 add r4,r4,r9 1296 ldr r9,[sp,#60] 1297 eor r11,r10,r7 1298 add r4,r4,r5,ror#27 1299 mov r6,r6,ror#2 1300 add r4,r4,r11 1301 eor r10,r5,r7 1302 add r3,r3,r9 1303 eor r11,r10,r6 1304 add r3,r3,r4,ror#27 1305 mov r5,r5,ror#2 1306 add r3,r3,r11 1307 ldmia r0,{r9,r10,r11,r12} @ accumulate context 1308 add r3,r3,r9 1309 ldr r9,[r0,#16] 1310 add r4,r4,r10 1311 add r5,r5,r11 1312 add r6,r6,r12 1313 moveq sp,r14 1314 add r7,r7,r9 1315 ldrne r9,[sp] 1316 stmia r0,{r3,r4,r5,r6,r7} 1317 addne r12,sp,#3*16 1318 bne .Loop_neon 1319 1320 @ vldmia sp!,{d8-d15} 1321 ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} 1322.size sha1_block_data_order_neon,.-sha1_block_data_order_neon 1323#endif 1324#if __ARM_MAX_ARCH__>=7 1325.type sha1_block_data_order_armv8,%function 1326.align 5 1327sha1_block_data_order_armv8: 1328.LARMv8: 1329 vstmdb sp!,{d8,d9,d10,d11,d12,d13,d14,d15} @ ABI specification says so 1330 1331 veor q1,q1,q1 1332 adr r3,.LK_00_19 1333 vld1.32 {q0},[r0]! 1334 vld1.32 {d2[0]},[r0] 1335 sub r0,r0,#16 1336 vld1.32 {d16[],d17[]},[r3,:32]! 1337 vld1.32 {d18[],d19[]},[r3,:32]! 1338 vld1.32 {d20[],d21[]},[r3,:32]! 1339 vld1.32 {d22[],d23[]},[r3,:32] 1340 1341.Loop_v8: 1342 vld1.8 {q4,q5},[r1]! 1343 vld1.8 {q6,q7},[r1]! 1344 vrev32.8 q4,q4 1345 vrev32.8 q5,q5 1346 1347 vadd.i32 q12,q8,q4 1348 vrev32.8 q6,q6 1349 vmov q14,q0 @ offload 1350 subs r2,r2,#1 1351 1352 vadd.i32 q13,q8,q5 1353 vrev32.8 q7,q7 1354.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 0 1355.byte 0x68,0x0c,0x02,0xf2 @ sha1c q0,q1,q12 1356 vadd.i32 q12,q8,q6 1357.byte 0x4c,0x8c,0x3a,0xf2 @ sha1su0 q4,q5,q6 1358.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 1 1359.byte 0x6a,0x0c,0x06,0xf2 @ sha1c q0,q3,q13 1360 vadd.i32 q13,q8,q7 1361.byte 0x8e,0x83,0xba,0xf3 @ sha1su1 q4,q7 1362.byte 0x4e,0xac,0x3c,0xf2 @ sha1su0 q5,q6,q7 1363.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 2 1364.byte 0x68,0x0c,0x04,0xf2 @ sha1c q0,q2,q12 1365 vadd.i32 q12,q8,q4 1366.byte 0x88,0xa3,0xba,0xf3 @ sha1su1 q5,q4 1367.byte 0x48,0xcc,0x3e,0xf2 @ sha1su0 q6,q7,q4 1368.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 3 1369.byte 0x6a,0x0c,0x06,0xf2 @ sha1c q0,q3,q13 1370 vadd.i32 q13,q9,q5 1371.byte 0x8a,0xc3,0xba,0xf3 @ sha1su1 q6,q5 1372.byte 0x4a,0xec,0x38,0xf2 @ sha1su0 q7,q4,q5 1373.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 4 1374.byte 0x68,0x0c,0x04,0xf2 @ sha1c q0,q2,q12 1375 vadd.i32 q12,q9,q6 1376.byte 0x8c,0xe3,0xba,0xf3 @ sha1su1 q7,q6 1377.byte 0x4c,0x8c,0x3a,0xf2 @ sha1su0 q4,q5,q6 1378.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 5 1379.byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13 1380 vadd.i32 q13,q9,q7 1381.byte 0x8e,0x83,0xba,0xf3 @ sha1su1 q4,q7 1382.byte 0x4e,0xac,0x3c,0xf2 @ sha1su0 q5,q6,q7 1383.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 6 1384.byte 0x68,0x0c,0x14,0xf2 @ sha1p q0,q2,q12 1385 vadd.i32 q12,q9,q4 1386.byte 0x88,0xa3,0xba,0xf3 @ sha1su1 q5,q4 1387.byte 0x48,0xcc,0x3e,0xf2 @ sha1su0 q6,q7,q4 1388.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 7 1389.byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13 1390 vadd.i32 q13,q9,q5 1391.byte 0x8a,0xc3,0xba,0xf3 @ sha1su1 q6,q5 1392.byte 0x4a,0xec,0x38,0xf2 @ sha1su0 q7,q4,q5 1393.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 8 1394.byte 0x68,0x0c,0x14,0xf2 @ sha1p q0,q2,q12 1395 vadd.i32 q12,q10,q6 1396.byte 0x8c,0xe3,0xba,0xf3 @ sha1su1 q7,q6 1397.byte 0x4c,0x8c,0x3a,0xf2 @ sha1su0 q4,q5,q6 1398.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 9 1399.byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13 1400 vadd.i32 q13,q10,q7 1401.byte 0x8e,0x83,0xba,0xf3 @ sha1su1 q4,q7 1402.byte 0x4e,0xac,0x3c,0xf2 @ sha1su0 q5,q6,q7 1403.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 10 1404.byte 0x68,0x0c,0x24,0xf2 @ sha1m q0,q2,q12 1405 vadd.i32 q12,q10,q4 1406.byte 0x88,0xa3,0xba,0xf3 @ sha1su1 q5,q4 1407.byte 0x48,0xcc,0x3e,0xf2 @ sha1su0 q6,q7,q4 1408.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 11 1409.byte 0x6a,0x0c,0x26,0xf2 @ sha1m q0,q3,q13 1410 vadd.i32 q13,q10,q5 1411.byte 0x8a,0xc3,0xba,0xf3 @ sha1su1 q6,q5 1412.byte 0x4a,0xec,0x38,0xf2 @ sha1su0 q7,q4,q5 1413.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 12 1414.byte 0x68,0x0c,0x24,0xf2 @ sha1m q0,q2,q12 1415 vadd.i32 q12,q10,q6 1416.byte 0x8c,0xe3,0xba,0xf3 @ sha1su1 q7,q6 1417.byte 0x4c,0x8c,0x3a,0xf2 @ sha1su0 q4,q5,q6 1418.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 13 1419.byte 0x6a,0x0c,0x26,0xf2 @ sha1m q0,q3,q13 1420 vadd.i32 q13,q11,q7 1421.byte 0x8e,0x83,0xba,0xf3 @ sha1su1 q4,q7 1422.byte 0x4e,0xac,0x3c,0xf2 @ sha1su0 q5,q6,q7 1423.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 14 1424.byte 0x68,0x0c,0x24,0xf2 @ sha1m q0,q2,q12 1425 vadd.i32 q12,q11,q4 1426.byte 0x88,0xa3,0xba,0xf3 @ sha1su1 q5,q4 1427.byte 0x48,0xcc,0x3e,0xf2 @ sha1su0 q6,q7,q4 1428.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 15 1429.byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13 1430 vadd.i32 q13,q11,q5 1431.byte 0x8a,0xc3,0xba,0xf3 @ sha1su1 q6,q5 1432.byte 0x4a,0xec,0x38,0xf2 @ sha1su0 q7,q4,q5 1433.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 16 1434.byte 0x68,0x0c,0x14,0xf2 @ sha1p q0,q2,q12 1435 vadd.i32 q12,q11,q6 1436.byte 0x8c,0xe3,0xba,0xf3 @ sha1su1 q7,q6 1437.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 17 1438.byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13 1439 vadd.i32 q13,q11,q7 1440 1441.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 18 1442.byte 0x68,0x0c,0x14,0xf2 @ sha1p q0,q2,q12 1443 1444.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 19 1445.byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13 1446 1447 vadd.i32 q1,q1,q2 1448 vadd.i32 q0,q0,q14 1449 bne .Loop_v8 1450 1451 vst1.32 {q0},[r0]! 1452 vst1.32 {d2[0]},[r0] 1453 1454 vldmia sp!,{d8,d9,d10,d11,d12,d13,d14,d15} 1455 bx lr @ bx lr 1456.size sha1_block_data_order_armv8,.-sha1_block_data_order_armv8 1457#endif 1458#if __ARM_MAX_ARCH__>=7 1459.comm OPENSSL_armcap_P,4,4 1460.hidden OPENSSL_armcap_P 1461#endif 1462#endif