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