1 #include "arm_arch.h" 2 3 .text 4 5 .globl sha512_block_data_order 6 .type sha512_block_data_order,%function 7 .align 6 8 sha512_block_data_order: 9 stp x29,x30,[sp,#-128]! 10 add x29,sp,#0 11 12 stp x19,x20,[sp,#16] 13 stp x21,x22,[sp,#32] 14 stp x23,x24,[sp,#48] 15 stp x25,x26,[sp,#64] 16 stp x27,x28,[sp,#80] 17 sub sp,sp,#4*8 18 19 ldp x20,x21,[x0] // load context 20 ldp x22,x23,[x0,#2*8] 21 ldp x24,x25,[x0,#4*8] 22 add x2,x1,x2,lsl#7 // end of input 23 ldp x26,x27,[x0,#6*8] 24 adr x30,K512 25 stp x0,x2,[x29,#96] 26 27 .Loop: 28 ldp x3,x4,[x1],#2*8 29 ldr x19,[x30],#8 // *K++ 30 eor x28,x21,x22 // magic seed 31 str x1,[x29,#112] 32 #ifndef __ARMEB__ 33 rev x3,x3 // 0 34 #endif 35 ror x16,x24,#14 36 add x27,x27,x19 // h+=K[i] 37 eor x6,x24,x24,ror#23 38 and x17,x25,x24 39 bic x19,x26,x24 40 add x27,x27,x3 // h+=X[i] 41 orr x17,x17,x19 // Ch(e,f,g) 42 eor x19,x20,x21 // a^b, b^c in next round 43 eor x16,x16,x6,ror#18 // Sigma1(e) 44 ror x6,x20,#28 45 add x27,x27,x17 // h+=Ch(e,f,g) 46 eor x17,x20,x20,ror#5 47 add x27,x27,x16 // h+=Sigma1(e) 48 and x28,x28,x19 // (b^c)&=(a^b) 49 add x23,x23,x27 // d+=h 50 eor x28,x28,x21 // Maj(a,b,c) 51 eor x17,x6,x17,ror#34 // Sigma0(a) 52 add x27,x27,x28 // h+=Maj(a,b,c) 53 ldr x28,[x30],#8 // *K++, x19 in next round 54 //add x27,x27,x17 // h+=Sigma0(a) 55 #ifndef __ARMEB__ 56 rev x4,x4 // 1 57 #endif 58 ldp x5,x6,[x1],#2*8 59 add x27,x27,x17 // h+=Sigma0(a) 60 ror x16,x23,#14 61 add x26,x26,x28 // h+=K[i] 62 eor x7,x23,x23,ror#23 63 and x17,x24,x23 64 bic x28,x25,x23 65 add x26,x26,x4 // h+=X[i] 66 orr x17,x17,x28 // Ch(e,f,g) 67 eor x28,x27,x20 // a^b, b^c in next round 68 eor x16,x16,x7,ror#18 // Sigma1(e) 69 ror x7,x27,#28 70 add x26,x26,x17 // h+=Ch(e,f,g) 71 eor x17,x27,x27,ror#5 72 add x26,x26,x16 // h+=Sigma1(e) 73 and x19,x19,x28 // (b^c)&=(a^b) 74 add x22,x22,x26 // d+=h 75 eor x19,x19,x20 // Maj(a,b,c) 76 eor x17,x7,x17,ror#34 // Sigma0(a) 77 add x26,x26,x19 // h+=Maj(a,b,c) 78 ldr x19,[x30],#8 // *K++, x28 in next round 79 //add x26,x26,x17 // h+=Sigma0(a) 80 #ifndef __ARMEB__ 81 rev x5,x5 // 2 82 #endif 83 add x26,x26,x17 // h+=Sigma0(a) 84 ror x16,x22,#14 85 add x25,x25,x19 // h+=K[i] 86 eor x8,x22,x22,ror#23 87 and x17,x23,x22 88 bic x19,x24,x22 89 add x25,x25,x5 // h+=X[i] 90 orr x17,x17,x19 // Ch(e,f,g) 91 eor x19,x26,x27 // a^b, b^c in next round 92 eor x16,x16,x8,ror#18 // Sigma1(e) 93 ror x8,x26,#28 94 add x25,x25,x17 // h+=Ch(e,f,g) 95 eor x17,x26,x26,ror#5 96 add x25,x25,x16 // h+=Sigma1(e) 97 and x28,x28,x19 // (b^c)&=(a^b) 98 add x21,x21,x25 // d+=h 99 eor x28,x28,x27 // Maj(a,b,c) 100 eor x17,x8,x17,ror#34 // Sigma0(a) 101 add x25,x25,x28 // h+=Maj(a,b,c) 102 ldr x28,[x30],#8 // *K++, x19 in next round 103 //add x25,x25,x17 // h+=Sigma0(a) 104 #ifndef __ARMEB__ 105 rev x6,x6 // 3 106 #endif 107 ldp x7,x8,[x1],#2*8 108 add x25,x25,x17 // h+=Sigma0(a) 109 ror x16,x21,#14 110 add x24,x24,x28 // h+=K[i] 111 eor x9,x21,x21,ror#23 112 and x17,x22,x21 113 bic x28,x23,x21 114 add x24,x24,x6 // h+=X[i] 115 orr x17,x17,x28 // Ch(e,f,g) 116 eor x28,x25,x26 // a^b, b^c in next round 117 eor x16,x16,x9,ror#18 // Sigma1(e) 118 ror x9,x25,#28 119 add x24,x24,x17 // h+=Ch(e,f,g) 120 eor x17,x25,x25,ror#5 121 add x24,x24,x16 // h+=Sigma1(e) 122 and x19,x19,x28 // (b^c)&=(a^b) 123 add x20,x20,x24 // d+=h 124 eor x19,x19,x26 // Maj(a,b,c) 125 eor x17,x9,x17,ror#34 // Sigma0(a) 126 add x24,x24,x19 // h+=Maj(a,b,c) 127 ldr x19,[x30],#8 // *K++, x28 in next round 128 //add x24,x24,x17 // h+=Sigma0(a) 129 #ifndef __ARMEB__ 130 rev x7,x7 // 4 131 #endif 132 add x24,x24,x17 // h+=Sigma0(a) 133 ror x16,x20,#14 134 add x23,x23,x19 // h+=K[i] 135 eor x10,x20,x20,ror#23 136 and x17,x21,x20 137 bic x19,x22,x20 138 add x23,x23,x7 // h+=X[i] 139 orr x17,x17,x19 // Ch(e,f,g) 140 eor x19,x24,x25 // a^b, b^c in next round 141 eor x16,x16,x10,ror#18 // Sigma1(e) 142 ror x10,x24,#28 143 add x23,x23,x17 // h+=Ch(e,f,g) 144 eor x17,x24,x24,ror#5 145 add x23,x23,x16 // h+=Sigma1(e) 146 and x28,x28,x19 // (b^c)&=(a^b) 147 add x27,x27,x23 // d+=h 148 eor x28,x28,x25 // Maj(a,b,c) 149 eor x17,x10,x17,ror#34 // Sigma0(a) 150 add x23,x23,x28 // h+=Maj(a,b,c) 151 ldr x28,[x30],#8 // *K++, x19 in next round 152 //add x23,x23,x17 // h+=Sigma0(a) 153 #ifndef __ARMEB__ 154 rev x8,x8 // 5 155 #endif 156 ldp x9,x10,[x1],#2*8 157 add x23,x23,x17 // h+=Sigma0(a) 158 ror x16,x27,#14 159 add x22,x22,x28 // h+=K[i] 160 eor x11,x27,x27,ror#23 161 and x17,x20,x27 162 bic x28,x21,x27 163 add x22,x22,x8 // h+=X[i] 164 orr x17,x17,x28 // Ch(e,f,g) 165 eor x28,x23,x24 // a^b, b^c in next round 166 eor x16,x16,x11,ror#18 // Sigma1(e) 167 ror x11,x23,#28 168 add x22,x22,x17 // h+=Ch(e,f,g) 169 eor x17,x23,x23,ror#5 170 add x22,x22,x16 // h+=Sigma1(e) 171 and x19,x19,x28 // (b^c)&=(a^b) 172 add x26,x26,x22 // d+=h 173 eor x19,x19,x24 // Maj(a,b,c) 174 eor x17,x11,x17,ror#34 // Sigma0(a) 175 add x22,x22,x19 // h+=Maj(a,b,c) 176 ldr x19,[x30],#8 // *K++, x28 in next round 177 //add x22,x22,x17 // h+=Sigma0(a) 178 #ifndef __ARMEB__ 179 rev x9,x9 // 6 180 #endif 181 add x22,x22,x17 // h+=Sigma0(a) 182 ror x16,x26,#14 183 add x21,x21,x19 // h+=K[i] 184 eor x12,x26,x26,ror#23 185 and x17,x27,x26 186 bic x19,x20,x26 187 add x21,x21,x9 // h+=X[i] 188 orr x17,x17,x19 // Ch(e,f,g) 189 eor x19,x22,x23 // a^b, b^c in next round 190 eor x16,x16,x12,ror#18 // Sigma1(e) 191 ror x12,x22,#28 192 add x21,x21,x17 // h+=Ch(e,f,g) 193 eor x17,x22,x22,ror#5 194 add x21,x21,x16 // h+=Sigma1(e) 195 and x28,x28,x19 // (b^c)&=(a^b) 196 add x25,x25,x21 // d+=h 197 eor x28,x28,x23 // Maj(a,b,c) 198 eor x17,x12,x17,ror#34 // Sigma0(a) 199 add x21,x21,x28 // h+=Maj(a,b,c) 200 ldr x28,[x30],#8 // *K++, x19 in next round 201 //add x21,x21,x17 // h+=Sigma0(a) 202 #ifndef __ARMEB__ 203 rev x10,x10 // 7 204 #endif 205 ldp x11,x12,[x1],#2*8 206 add x21,x21,x17 // h+=Sigma0(a) 207 ror x16,x25,#14 208 add x20,x20,x28 // h+=K[i] 209 eor x13,x25,x25,ror#23 210 and x17,x26,x25 211 bic x28,x27,x25 212 add x20,x20,x10 // h+=X[i] 213 orr x17,x17,x28 // Ch(e,f,g) 214 eor x28,x21,x22 // a^b, b^c in next round 215 eor x16,x16,x13,ror#18 // Sigma1(e) 216 ror x13,x21,#28 217 add x20,x20,x17 // h+=Ch(e,f,g) 218 eor x17,x21,x21,ror#5 219 add x20,x20,x16 // h+=Sigma1(e) 220 and x19,x19,x28 // (b^c)&=(a^b) 221 add x24,x24,x20 // d+=h 222 eor x19,x19,x22 // Maj(a,b,c) 223 eor x17,x13,x17,ror#34 // Sigma0(a) 224 add x20,x20,x19 // h+=Maj(a,b,c) 225 ldr x19,[x30],#8 // *K++, x28 in next round 226 //add x20,x20,x17 // h+=Sigma0(a) 227 #ifndef __ARMEB__ 228 rev x11,x11 // 8 229 #endif 230 add x20,x20,x17 // h+=Sigma0(a) 231 ror x16,x24,#14 232 add x27,x27,x19 // h+=K[i] 233 eor x14,x24,x24,ror#23 234 and x17,x25,x24 235 bic x19,x26,x24 236 add x27,x27,x11 // h+=X[i] 237 orr x17,x17,x19 // Ch(e,f,g) 238 eor x19,x20,x21 // a^b, b^c in next round 239 eor x16,x16,x14,ror#18 // Sigma1(e) 240 ror x14,x20,#28 241 add x27,x27,x17 // h+=Ch(e,f,g) 242 eor x17,x20,x20,ror#5 243 add x27,x27,x16 // h+=Sigma1(e) 244 and x28,x28,x19 // (b^c)&=(a^b) 245 add x23,x23,x27 // d+=h 246 eor x28,x28,x21 // Maj(a,b,c) 247 eor x17,x14,x17,ror#34 // Sigma0(a) 248 add x27,x27,x28 // h+=Maj(a,b,c) 249 ldr x28,[x30],#8 // *K++, x19 in next round 250 //add x27,x27,x17 // h+=Sigma0(a) 251 #ifndef __ARMEB__ 252 rev x12,x12 // 9 253 #endif 254 ldp x13,x14,[x1],#2*8 255 add x27,x27,x17 // h+=Sigma0(a) 256 ror x16,x23,#14 257 add x26,x26,x28 // h+=K[i] 258 eor x15,x23,x23,ror#23 259 and x17,x24,x23 260 bic x28,x25,x23 261 add x26,x26,x12 // h+=X[i] 262 orr x17,x17,x28 // Ch(e,f,g) 263 eor x28,x27,x20 // a^b, b^c in next round 264 eor x16,x16,x15,ror#18 // Sigma1(e) 265 ror x15,x27,#28 266 add x26,x26,x17 // h+=Ch(e,f,g) 267 eor x17,x27,x27,ror#5 268 add x26,x26,x16 // h+=Sigma1(e) 269 and x19,x19,x28 // (b^c)&=(a^b) 270 add x22,x22,x26 // d+=h 271 eor x19,x19,x20 // Maj(a,b,c) 272 eor x17,x15,x17,ror#34 // Sigma0(a) 273 add x26,x26,x19 // h+=Maj(a,b,c) 274 ldr x19,[x30],#8 // *K++, x28 in next round 275 //add x26,x26,x17 // h+=Sigma0(a) 276 #ifndef __ARMEB__ 277 rev x13,x13 // 10 278 #endif 279 add x26,x26,x17 // h+=Sigma0(a) 280 ror x16,x22,#14 281 add x25,x25,x19 // h+=K[i] 282 eor x0,x22,x22,ror#23 283 and x17,x23,x22 284 bic x19,x24,x22 285 add x25,x25,x13 // h+=X[i] 286 orr x17,x17,x19 // Ch(e,f,g) 287 eor x19,x26,x27 // a^b, b^c in next round 288 eor x16,x16,x0,ror#18 // Sigma1(e) 289 ror x0,x26,#28 290 add x25,x25,x17 // h+=Ch(e,f,g) 291 eor x17,x26,x26,ror#5 292 add x25,x25,x16 // h+=Sigma1(e) 293 and x28,x28,x19 // (b^c)&=(a^b) 294 add x21,x21,x25 // d+=h 295 eor x28,x28,x27 // Maj(a,b,c) 296 eor x17,x0,x17,ror#34 // Sigma0(a) 297 add x25,x25,x28 // h+=Maj(a,b,c) 298 ldr x28,[x30],#8 // *K++, x19 in next round 299 //add x25,x25,x17 // h+=Sigma0(a) 300 #ifndef __ARMEB__ 301 rev x14,x14 // 11 302 #endif 303 ldp x15,x0,[x1],#2*8 304 add x25,x25,x17 // h+=Sigma0(a) 305 str x6,[sp,#24] 306 ror x16,x21,#14 307 add x24,x24,x28 // h+=K[i] 308 eor x6,x21,x21,ror#23 309 and x17,x22,x21 310 bic x28,x23,x21 311 add x24,x24,x14 // h+=X[i] 312 orr x17,x17,x28 // Ch(e,f,g) 313 eor x28,x25,x26 // a^b, b^c in next round 314 eor x16,x16,x6,ror#18 // Sigma1(e) 315 ror x6,x25,#28 316 add x24,x24,x17 // h+=Ch(e,f,g) 317 eor x17,x25,x25,ror#5 318 add x24,x24,x16 // h+=Sigma1(e) 319 and x19,x19,x28 // (b^c)&=(a^b) 320 add x20,x20,x24 // d+=h 321 eor x19,x19,x26 // Maj(a,b,c) 322 eor x17,x6,x17,ror#34 // Sigma0(a) 323 add x24,x24,x19 // h+=Maj(a,b,c) 324 ldr x19,[x30],#8 // *K++, x28 in next round 325 //add x24,x24,x17 // h+=Sigma0(a) 326 #ifndef __ARMEB__ 327 rev x15,x15 // 12 328 #endif 329 add x24,x24,x17 // h+=Sigma0(a) 330 str x7,[sp,#0] 331 ror x16,x20,#14 332 add x23,x23,x19 // h+=K[i] 333 eor x7,x20,x20,ror#23 334 and x17,x21,x20 335 bic x19,x22,x20 336 add x23,x23,x15 // h+=X[i] 337 orr x17,x17,x19 // Ch(e,f,g) 338 eor x19,x24,x25 // a^b, b^c in next round 339 eor x16,x16,x7,ror#18 // Sigma1(e) 340 ror x7,x24,#28 341 add x23,x23,x17 // h+=Ch(e,f,g) 342 eor x17,x24,x24,ror#5 343 add x23,x23,x16 // h+=Sigma1(e) 344 and x28,x28,x19 // (b^c)&=(a^b) 345 add x27,x27,x23 // d+=h 346 eor x28,x28,x25 // Maj(a,b,c) 347 eor x17,x7,x17,ror#34 // Sigma0(a) 348 add x23,x23,x28 // h+=Maj(a,b,c) 349 ldr x28,[x30],#8 // *K++, x19 in next round 350 //add x23,x23,x17 // h+=Sigma0(a) 351 #ifndef __ARMEB__ 352 rev x0,x0 // 13 353 #endif 354 ldp x1,x2,[x1] 355 add x23,x23,x17 // h+=Sigma0(a) 356 str x8,[sp,#8] 357 ror x16,x27,#14 358 add x22,x22,x28 // h+=K[i] 359 eor x8,x27,x27,ror#23 360 and x17,x20,x27 361 bic x28,x21,x27 362 add x22,x22,x0 // h+=X[i] 363 orr x17,x17,x28 // Ch(e,f,g) 364 eor x28,x23,x24 // a^b, b^c in next round 365 eor x16,x16,x8,ror#18 // Sigma1(e) 366 ror x8,x23,#28 367 add x22,x22,x17 // h+=Ch(e,f,g) 368 eor x17,x23,x23,ror#5 369 add x22,x22,x16 // h+=Sigma1(e) 370 and x19,x19,x28 // (b^c)&=(a^b) 371 add x26,x26,x22 // d+=h 372 eor x19,x19,x24 // Maj(a,b,c) 373 eor x17,x8,x17,ror#34 // Sigma0(a) 374 add x22,x22,x19 // h+=Maj(a,b,c) 375 ldr x19,[x30],#8 // *K++, x28 in next round 376 //add x22,x22,x17 // h+=Sigma0(a) 377 #ifndef __ARMEB__ 378 rev x1,x1 // 14 379 #endif 380 ldr x6,[sp,#24] 381 add x22,x22,x17 // h+=Sigma0(a) 382 str x9,[sp,#16] 383 ror x16,x26,#14 384 add x21,x21,x19 // h+=K[i] 385 eor x9,x26,x26,ror#23 386 and x17,x27,x26 387 bic x19,x20,x26 388 add x21,x21,x1 // h+=X[i] 389 orr x17,x17,x19 // Ch(e,f,g) 390 eor x19,x22,x23 // a^b, b^c in next round 391 eor x16,x16,x9,ror#18 // Sigma1(e) 392 ror x9,x22,#28 393 add x21,x21,x17 // h+=Ch(e,f,g) 394 eor x17,x22,x22,ror#5 395 add x21,x21,x16 // h+=Sigma1(e) 396 and x28,x28,x19 // (b^c)&=(a^b) 397 add x25,x25,x21 // d+=h 398 eor x28,x28,x23 // Maj(a,b,c) 399 eor x17,x9,x17,ror#34 // Sigma0(a) 400 add x21,x21,x28 // h+=Maj(a,b,c) 401 ldr x28,[x30],#8 // *K++, x19 in next round 402 //add x21,x21,x17 // h+=Sigma0(a) 403 #ifndef __ARMEB__ 404 rev x2,x2 // 15 405 #endif 406 ldr x7,[sp,#0] 407 add x21,x21,x17 // h+=Sigma0(a) 408 str x10,[sp,#24] 409 ror x16,x25,#14 410 add x20,x20,x28 // h+=K[i] 411 ror x9,x4,#1 412 and x17,x26,x25 413 ror x8,x1,#19 414 bic x28,x27,x25 415 ror x10,x21,#28 416 add x20,x20,x2 // h+=X[i] 417 eor x16,x16,x25,ror#18 418 eor x9,x9,x4,ror#8 419 orr x17,x17,x28 // Ch(e,f,g) 420 eor x28,x21,x22 // a^b, b^c in next round 421 eor x16,x16,x25,ror#41 // Sigma1(e) 422 eor x10,x10,x21,ror#34 423 add x20,x20,x17 // h+=Ch(e,f,g) 424 and x19,x19,x28 // (b^c)&=(a^b) 425 eor x8,x8,x1,ror#61 426 eor x9,x9,x4,lsr#7 // sigma0(X[i+1]) 427 add x20,x20,x16 // h+=Sigma1(e) 428 eor x19,x19,x22 // Maj(a,b,c) 429 eor x17,x10,x21,ror#39 // Sigma0(a) 430 eor x8,x8,x1,lsr#6 // sigma1(X[i+14]) 431 add x3,x3,x12 432 add x24,x24,x20 // d+=h 433 add x20,x20,x19 // h+=Maj(a,b,c) 434 ldr x19,[x30],#8 // *K++, x28 in next round 435 add x3,x3,x9 436 add x20,x20,x17 // h+=Sigma0(a) 437 add x3,x3,x8 438 .Loop_16_xx: 439 ldr x8,[sp,#8] 440 str x11,[sp,#0] 441 ror x16,x24,#14 442 add x27,x27,x19 // h+=K[i] 443 ror x10,x5,#1 444 and x17,x25,x24 445 ror x9,x2,#19 446 bic x19,x26,x24 447 ror x11,x20,#28 448 add x27,x27,x3 // h+=X[i] 449 eor x16,x16,x24,ror#18 450 eor x10,x10,x5,ror#8 451 orr x17,x17,x19 // Ch(e,f,g) 452 eor x19,x20,x21 // a^b, b^c in next round 453 eor x16,x16,x24,ror#41 // Sigma1(e) 454 eor x11,x11,x20,ror#34 455 add x27,x27,x17 // h+=Ch(e,f,g) 456 and x28,x28,x19 // (b^c)&=(a^b) 457 eor x9,x9,x2,ror#61 458 eor x10,x10,x5,lsr#7 // sigma0(X[i+1]) 459 add x27,x27,x16 // h+=Sigma1(e) 460 eor x28,x28,x21 // Maj(a,b,c) 461 eor x17,x11,x20,ror#39 // Sigma0(a) 462 eor x9,x9,x2,lsr#6 // sigma1(X[i+14]) 463 add x4,x4,x13 464 add x23,x23,x27 // d+=h 465 add x27,x27,x28 // h+=Maj(a,b,c) 466 ldr x28,[x30],#8 // *K++, x19 in next round 467 add x4,x4,x10 468 add x27,x27,x17 // h+=Sigma0(a) 469 add x4,x4,x9 470 ldr x9,[sp,#16] 471 str x12,[sp,#8] 472 ror x16,x23,#14 473 add x26,x26,x28 // h+=K[i] 474 ror x11,x6,#1 475 and x17,x24,x23 476 ror x10,x3,#19 477 bic x28,x25,x23 478 ror x12,x27,#28 479 add x26,x26,x4 // h+=X[i] 480 eor x16,x16,x23,ror#18 481 eor x11,x11,x6,ror#8 482 orr x17,x17,x28 // Ch(e,f,g) 483 eor x28,x27,x20 // a^b, b^c in next round 484 eor x16,x16,x23,ror#41 // Sigma1(e) 485 eor x12,x12,x27,ror#34 486 add x26,x26,x17 // h+=Ch(e,f,g) 487 and x19,x19,x28 // (b^c)&=(a^b) 488 eor x10,x10,x3,ror#61 489 eor x11,x11,x6,lsr#7 // sigma0(X[i+1]) 490 add x26,x26,x16 // h+=Sigma1(e) 491 eor x19,x19,x20 // Maj(a,b,c) 492 eor x17,x12,x27,ror#39 // Sigma0(a) 493 eor x10,x10,x3,lsr#6 // sigma1(X[i+14]) 494 add x5,x5,x14 495 add x22,x22,x26 // d+=h 496 add x26,x26,x19 // h+=Maj(a,b,c) 497 ldr x19,[x30],#8 // *K++, x28 in next round 498 add x5,x5,x11 499 add x26,x26,x17 // h+=Sigma0(a) 500 add x5,x5,x10 501 ldr x10,[sp,#24] 502 str x13,[sp,#16] 503 ror x16,x22,#14 504 add x25,x25,x19 // h+=K[i] 505 ror x12,x7,#1 506 and x17,x23,x22 507 ror x11,x4,#19 508 bic x19,x24,x22 509 ror x13,x26,#28 510 add x25,x25,x5 // h+=X[i] 511 eor x16,x16,x22,ror#18 512 eor x12,x12,x7,ror#8 513 orr x17,x17,x19 // Ch(e,f,g) 514 eor x19,x26,x27 // a^b, b^c in next round 515 eor x16,x16,x22,ror#41 // Sigma1(e) 516 eor x13,x13,x26,ror#34 517 add x25,x25,x17 // h+=Ch(e,f,g) 518 and x28,x28,x19 // (b^c)&=(a^b) 519 eor x11,x11,x4,ror#61 520 eor x12,x12,x7,lsr#7 // sigma0(X[i+1]) 521 add x25,x25,x16 // h+=Sigma1(e) 522 eor x28,x28,x27 // Maj(a,b,c) 523 eor x17,x13,x26,ror#39 // Sigma0(a) 524 eor x11,x11,x4,lsr#6 // sigma1(X[i+14]) 525 add x6,x6,x15 526 add x21,x21,x25 // d+=h 527 add x25,x25,x28 // h+=Maj(a,b,c) 528 ldr x28,[x30],#8 // *K++, x19 in next round 529 add x6,x6,x12 530 add x25,x25,x17 // h+=Sigma0(a) 531 add x6,x6,x11 532 ldr x11,[sp,#0] 533 str x14,[sp,#24] 534 ror x16,x21,#14 535 add x24,x24,x28 // h+=K[i] 536 ror x13,x8,#1 537 and x17,x22,x21 538 ror x12,x5,#19 539 bic x28,x23,x21 540 ror x14,x25,#28 541 add x24,x24,x6 // h+=X[i] 542 eor x16,x16,x21,ror#18 543 eor x13,x13,x8,ror#8 544 orr x17,x17,x28 // Ch(e,f,g) 545 eor x28,x25,x26 // a^b, b^c in next round 546 eor x16,x16,x21,ror#41 // Sigma1(e) 547 eor x14,x14,x25,ror#34 548 add x24,x24,x17 // h+=Ch(e,f,g) 549 and x19,x19,x28 // (b^c)&=(a^b) 550 eor x12,x12,x5,ror#61 551 eor x13,x13,x8,lsr#7 // sigma0(X[i+1]) 552 add x24,x24,x16 // h+=Sigma1(e) 553 eor x19,x19,x26 // Maj(a,b,c) 554 eor x17,x14,x25,ror#39 // Sigma0(a) 555 eor x12,x12,x5,lsr#6 // sigma1(X[i+14]) 556 add x7,x7,x0 557 add x20,x20,x24 // d+=h 558 add x24,x24,x19 // h+=Maj(a,b,c) 559 ldr x19,[x30],#8 // *K++, x28 in next round 560 add x7,x7,x13 561 add x24,x24,x17 // h+=Sigma0(a) 562 add x7,x7,x12 563 ldr x12,[sp,#8] 564 str x15,[sp,#0] 565 ror x16,x20,#14 566 add x23,x23,x19 // h+=K[i] 567 ror x14,x9,#1 568 and x17,x21,x20 569 ror x13,x6,#19 570 bic x19,x22,x20 571 ror x15,x24,#28 572 add x23,x23,x7 // h+=X[i] 573 eor x16,x16,x20,ror#18 574 eor x14,x14,x9,ror#8 575 orr x17,x17,x19 // Ch(e,f,g) 576 eor x19,x24,x25 // a^b, b^c in next round 577 eor x16,x16,x20,ror#41 // Sigma1(e) 578 eor x15,x15,x24,ror#34 579 add x23,x23,x17 // h+=Ch(e,f,g) 580 and x28,x28,x19 // (b^c)&=(a^b) 581 eor x13,x13,x6,ror#61 582 eor x14,x14,x9,lsr#7 // sigma0(X[i+1]) 583 add x23,x23,x16 // h+=Sigma1(e) 584 eor x28,x28,x25 // Maj(a,b,c) 585 eor x17,x15,x24,ror#39 // Sigma0(a) 586 eor x13,x13,x6,lsr#6 // sigma1(X[i+14]) 587 add x8,x8,x1 588 add x27,x27,x23 // d+=h 589 add x23,x23,x28 // h+=Maj(a,b,c) 590 ldr x28,[x30],#8 // *K++, x19 in next round 591 add x8,x8,x14 592 add x23,x23,x17 // h+=Sigma0(a) 593 add x8,x8,x13 594 ldr x13,[sp,#16] 595 str x0,[sp,#8] 596 ror x16,x27,#14 597 add x22,x22,x28 // h+=K[i] 598 ror x15,x10,#1 599 and x17,x20,x27 600 ror x14,x7,#19 601 bic x28,x21,x27 602 ror x0,x23,#28 603 add x22,x22,x8 // h+=X[i] 604 eor x16,x16,x27,ror#18 605 eor x15,x15,x10,ror#8 606 orr x17,x17,x28 // Ch(e,f,g) 607 eor x28,x23,x24 // a^b, b^c in next round 608 eor x16,x16,x27,ror#41 // Sigma1(e) 609 eor x0,x0,x23,ror#34 610 add x22,x22,x17 // h+=Ch(e,f,g) 611 and x19,x19,x28 // (b^c)&=(a^b) 612 eor x14,x14,x7,ror#61 613 eor x15,x15,x10,lsr#7 // sigma0(X[i+1]) 614 add x22,x22,x16 // h+=Sigma1(e) 615 eor x19,x19,x24 // Maj(a,b,c) 616 eor x17,x0,x23,ror#39 // Sigma0(a) 617 eor x14,x14,x7,lsr#6 // sigma1(X[i+14]) 618 add x9,x9,x2 619 add x26,x26,x22 // d+=h 620 add x22,x22,x19 // h+=Maj(a,b,c) 621 ldr x19,[x30],#8 // *K++, x28 in next round 622 add x9,x9,x15 623 add x22,x22,x17 // h+=Sigma0(a) 624 add x9,x9,x14 625 ldr x14,[sp,#24] 626 str x1,[sp,#16] 627 ror x16,x26,#14 628 add x21,x21,x19 // h+=K[i] 629 ror x0,x11,#1 630 and x17,x27,x26 631 ror x15,x8,#19 632 bic x19,x20,x26 633 ror x1,x22,#28 634 add x21,x21,x9 // h+=X[i] 635 eor x16,x16,x26,ror#18 636 eor x0,x0,x11,ror#8 637 orr x17,x17,x19 // Ch(e,f,g) 638 eor x19,x22,x23 // a^b, b^c in next round 639 eor x16,x16,x26,ror#41 // Sigma1(e) 640 eor x1,x1,x22,ror#34 641 add x21,x21,x17 // h+=Ch(e,f,g) 642 and x28,x28,x19 // (b^c)&=(a^b) 643 eor x15,x15,x8,ror#61 644 eor x0,x0,x11,lsr#7 // sigma0(X[i+1]) 645 add x21,x21,x16 // h+=Sigma1(e) 646 eor x28,x28,x23 // Maj(a,b,c) 647 eor x17,x1,x22,ror#39 // Sigma0(a) 648 eor x15,x15,x8,lsr#6 // sigma1(X[i+14]) 649 add x10,x10,x3 650 add x25,x25,x21 // d+=h 651 add x21,x21,x28 // h+=Maj(a,b,c) 652 ldr x28,[x30],#8 // *K++, x19 in next round 653 add x10,x10,x0 654 add x21,x21,x17 // h+=Sigma0(a) 655 add x10,x10,x15 656 ldr x15,[sp,#0] 657 str x2,[sp,#24] 658 ror x16,x25,#14 659 add x20,x20,x28 // h+=K[i] 660 ror x1,x12,#1 661 and x17,x26,x25 662 ror x0,x9,#19 663 bic x28,x27,x25 664 ror x2,x21,#28 665 add x20,x20,x10 // h+=X[i] 666 eor x16,x16,x25,ror#18 667 eor x1,x1,x12,ror#8 668 orr x17,x17,x28 // Ch(e,f,g) 669 eor x28,x21,x22 // a^b, b^c in next round 670 eor x16,x16,x25,ror#41 // Sigma1(e) 671 eor x2,x2,x21,ror#34 672 add x20,x20,x17 // h+=Ch(e,f,g) 673 and x19,x19,x28 // (b^c)&=(a^b) 674 eor x0,x0,x9,ror#61 675 eor x1,x1,x12,lsr#7 // sigma0(X[i+1]) 676 add x20,x20,x16 // h+=Sigma1(e) 677 eor x19,x19,x22 // Maj(a,b,c) 678 eor x17,x2,x21,ror#39 // Sigma0(a) 679 eor x0,x0,x9,lsr#6 // sigma1(X[i+14]) 680 add x11,x11,x4 681 add x24,x24,x20 // d+=h 682 add x20,x20,x19 // h+=Maj(a,b,c) 683 ldr x19,[x30],#8 // *K++, x28 in next round 684 add x11,x11,x1 685 add x20,x20,x17 // h+=Sigma0(a) 686 add x11,x11,x0 687 ldr x0,[sp,#8] 688 str x3,[sp,#0] 689 ror x16,x24,#14 690 add x27,x27,x19 // h+=K[i] 691 ror x2,x13,#1 692 and x17,x25,x24 693 ror x1,x10,#19 694 bic x19,x26,x24 695 ror x3,x20,#28 696 add x27,x27,x11 // h+=X[i] 697 eor x16,x16,x24,ror#18 698 eor x2,x2,x13,ror#8 699 orr x17,x17,x19 // Ch(e,f,g) 700 eor x19,x20,x21 // a^b, b^c in next round 701 eor x16,x16,x24,ror#41 // Sigma1(e) 702 eor x3,x3,x20,ror#34 703 add x27,x27,x17 // h+=Ch(e,f,g) 704 and x28,x28,x19 // (b^c)&=(a^b) 705 eor x1,x1,x10,ror#61 706 eor x2,x2,x13,lsr#7 // sigma0(X[i+1]) 707 add x27,x27,x16 // h+=Sigma1(e) 708 eor x28,x28,x21 // Maj(a,b,c) 709 eor x17,x3,x20,ror#39 // Sigma0(a) 710 eor x1,x1,x10,lsr#6 // sigma1(X[i+14]) 711 add x12,x12,x5 712 add x23,x23,x27 // d+=h 713 add x27,x27,x28 // h+=Maj(a,b,c) 714 ldr x28,[x30],#8 // *K++, x19 in next round 715 add x12,x12,x2 716 add x27,x27,x17 // h+=Sigma0(a) 717 add x12,x12,x1 718 ldr x1,[sp,#16] 719 str x4,[sp,#8] 720 ror x16,x23,#14 721 add x26,x26,x28 // h+=K[i] 722 ror x3,x14,#1 723 and x17,x24,x23 724 ror x2,x11,#19 725 bic x28,x25,x23 726 ror x4,x27,#28 727 add x26,x26,x12 // h+=X[i] 728 eor x16,x16,x23,ror#18 729 eor x3,x3,x14,ror#8 730 orr x17,x17,x28 // Ch(e,f,g) 731 eor x28,x27,x20 // a^b, b^c in next round 732 eor x16,x16,x23,ror#41 // Sigma1(e) 733 eor x4,x4,x27,ror#34 734 add x26,x26,x17 // h+=Ch(e,f,g) 735 and x19,x19,x28 // (b^c)&=(a^b) 736 eor x2,x2,x11,ror#61 737 eor x3,x3,x14,lsr#7 // sigma0(X[i+1]) 738 add x26,x26,x16 // h+=Sigma1(e) 739 eor x19,x19,x20 // Maj(a,b,c) 740 eor x17,x4,x27,ror#39 // Sigma0(a) 741 eor x2,x2,x11,lsr#6 // sigma1(X[i+14]) 742 add x13,x13,x6 743 add x22,x22,x26 // d+=h 744 add x26,x26,x19 // h+=Maj(a,b,c) 745 ldr x19,[x30],#8 // *K++, x28 in next round 746 add x13,x13,x3 747 add x26,x26,x17 // h+=Sigma0(a) 748 add x13,x13,x2 749 ldr x2,[sp,#24] 750 str x5,[sp,#16] 751 ror x16,x22,#14 752 add x25,x25,x19 // h+=K[i] 753 ror x4,x15,#1 754 and x17,x23,x22 755 ror x3,x12,#19 756 bic x19,x24,x22 757 ror x5,x26,#28 758 add x25,x25,x13 // h+=X[i] 759 eor x16,x16,x22,ror#18 760 eor x4,x4,x15,ror#8 761 orr x17,x17,x19 // Ch(e,f,g) 762 eor x19,x26,x27 // a^b, b^c in next round 763 eor x16,x16,x22,ror#41 // Sigma1(e) 764 eor x5,x5,x26,ror#34 765 add x25,x25,x17 // h+=Ch(e,f,g) 766 and x28,x28,x19 // (b^c)&=(a^b) 767 eor x3,x3,x12,ror#61 768 eor x4,x4,x15,lsr#7 // sigma0(X[i+1]) 769 add x25,x25,x16 // h+=Sigma1(e) 770 eor x28,x28,x27 // Maj(a,b,c) 771 eor x17,x5,x26,ror#39 // Sigma0(a) 772 eor x3,x3,x12,lsr#6 // sigma1(X[i+14]) 773 add x14,x14,x7 774 add x21,x21,x25 // d+=h 775 add x25,x25,x28 // h+=Maj(a,b,c) 776 ldr x28,[x30],#8 // *K++, x19 in next round 777 add x14,x14,x4 778 add x25,x25,x17 // h+=Sigma0(a) 779 add x14,x14,x3 780 ldr x3,[sp,#0] 781 str x6,[sp,#24] 782 ror x16,x21,#14 783 add x24,x24,x28 // h+=K[i] 784 ror x5,x0,#1 785 and x17,x22,x21 786 ror x4,x13,#19 787 bic x28,x23,x21 788 ror x6,x25,#28 789 add x24,x24,x14 // h+=X[i] 790 eor x16,x16,x21,ror#18 791 eor x5,x5,x0,ror#8 792 orr x17,x17,x28 // Ch(e,f,g) 793 eor x28,x25,x26 // a^b, b^c in next round 794 eor x16,x16,x21,ror#41 // Sigma1(e) 795 eor x6,x6,x25,ror#34 796 add x24,x24,x17 // h+=Ch(e,f,g) 797 and x19,x19,x28 // (b^c)&=(a^b) 798 eor x4,x4,x13,ror#61 799 eor x5,x5,x0,lsr#7 // sigma0(X[i+1]) 800 add x24,x24,x16 // h+=Sigma1(e) 801 eor x19,x19,x26 // Maj(a,b,c) 802 eor x17,x6,x25,ror#39 // Sigma0(a) 803 eor x4,x4,x13,lsr#6 // sigma1(X[i+14]) 804 add x15,x15,x8 805 add x20,x20,x24 // d+=h 806 add x24,x24,x19 // h+=Maj(a,b,c) 807 ldr x19,[x30],#8 // *K++, x28 in next round 808 add x15,x15,x5 809 add x24,x24,x17 // h+=Sigma0(a) 810 add x15,x15,x4 811 ldr x4,[sp,#8] 812 str x7,[sp,#0] 813 ror x16,x20,#14 814 add x23,x23,x19 // h+=K[i] 815 ror x6,x1,#1 816 and x17,x21,x20 817 ror x5,x14,#19 818 bic x19,x22,x20 819 ror x7,x24,#28 820 add x23,x23,x15 // h+=X[i] 821 eor x16,x16,x20,ror#18 822 eor x6,x6,x1,ror#8 823 orr x17,x17,x19 // Ch(e,f,g) 824 eor x19,x24,x25 // a^b, b^c in next round 825 eor x16,x16,x20,ror#41 // Sigma1(e) 826 eor x7,x7,x24,ror#34 827 add x23,x23,x17 // h+=Ch(e,f,g) 828 and x28,x28,x19 // (b^c)&=(a^b) 829 eor x5,x5,x14,ror#61 830 eor x6,x6,x1,lsr#7 // sigma0(X[i+1]) 831 add x23,x23,x16 // h+=Sigma1(e) 832 eor x28,x28,x25 // Maj(a,b,c) 833 eor x17,x7,x24,ror#39 // Sigma0(a) 834 eor x5,x5,x14,lsr#6 // sigma1(X[i+14]) 835 add x0,x0,x9 836 add x27,x27,x23 // d+=h 837 add x23,x23,x28 // h+=Maj(a,b,c) 838 ldr x28,[x30],#8 // *K++, x19 in next round 839 add x0,x0,x6 840 add x23,x23,x17 // h+=Sigma0(a) 841 add x0,x0,x5 842 ldr x5,[sp,#16] 843 str x8,[sp,#8] 844 ror x16,x27,#14 845 add x22,x22,x28 // h+=K[i] 846 ror x7,x2,#1 847 and x17,x20,x27 848 ror x6,x15,#19 849 bic x28,x21,x27 850 ror x8,x23,#28 851 add x22,x22,x0 // h+=X[i] 852 eor x16,x16,x27,ror#18 853 eor x7,x7,x2,ror#8 854 orr x17,x17,x28 // Ch(e,f,g) 855 eor x28,x23,x24 // a^b, b^c in next round 856 eor x16,x16,x27,ror#41 // Sigma1(e) 857 eor x8,x8,x23,ror#34 858 add x22,x22,x17 // h+=Ch(e,f,g) 859 and x19,x19,x28 // (b^c)&=(a^b) 860 eor x6,x6,x15,ror#61 861 eor x7,x7,x2,lsr#7 // sigma0(X[i+1]) 862 add x22,x22,x16 // h+=Sigma1(e) 863 eor x19,x19,x24 // Maj(a,b,c) 864 eor x17,x8,x23,ror#39 // Sigma0(a) 865 eor x6,x6,x15,lsr#6 // sigma1(X[i+14]) 866 add x1,x1,x10 867 add x26,x26,x22 // d+=h 868 add x22,x22,x19 // h+=Maj(a,b,c) 869 ldr x19,[x30],#8 // *K++, x28 in next round 870 add x1,x1,x7 871 add x22,x22,x17 // h+=Sigma0(a) 872 add x1,x1,x6 873 ldr x6,[sp,#24] 874 str x9,[sp,#16] 875 ror x16,x26,#14 876 add x21,x21,x19 // h+=K[i] 877 ror x8,x3,#1 878 and x17,x27,x26 879 ror x7,x0,#19 880 bic x19,x20,x26 881 ror x9,x22,#28 882 add x21,x21,x1 // h+=X[i] 883 eor x16,x16,x26,ror#18 884 eor x8,x8,x3,ror#8 885 orr x17,x17,x19 // Ch(e,f,g) 886 eor x19,x22,x23 // a^b, b^c in next round 887 eor x16,x16,x26,ror#41 // Sigma1(e) 888 eor x9,x9,x22,ror#34 889 add x21,x21,x17 // h+=Ch(e,f,g) 890 and x28,x28,x19 // (b^c)&=(a^b) 891 eor x7,x7,x0,ror#61 892 eor x8,x8,x3,lsr#7 // sigma0(X[i+1]) 893 add x21,x21,x16 // h+=Sigma1(e) 894 eor x28,x28,x23 // Maj(a,b,c) 895 eor x17,x9,x22,ror#39 // Sigma0(a) 896 eor x7,x7,x0,lsr#6 // sigma1(X[i+14]) 897 add x2,x2,x11 898 add x25,x25,x21 // d+=h 899 add x21,x21,x28 // h+=Maj(a,b,c) 900 ldr x28,[x30],#8 // *K++, x19 in next round 901 add x2,x2,x8 902 add x21,x21,x17 // h+=Sigma0(a) 903 add x2,x2,x7 904 ldr x7,[sp,#0] 905 str x10,[sp,#24] 906 ror x16,x25,#14 907 add x20,x20,x28 // h+=K[i] 908 ror x9,x4,#1 909 and x17,x26,x25 910 ror x8,x1,#19 911 bic x28,x27,x25 912 ror x10,x21,#28 913 add x20,x20,x2 // h+=X[i] 914 eor x16,x16,x25,ror#18 915 eor x9,x9,x4,ror#8 916 orr x17,x17,x28 // Ch(e,f,g) 917 eor x28,x21,x22 // a^b, b^c in next round 918 eor x16,x16,x25,ror#41 // Sigma1(e) 919 eor x10,x10,x21,ror#34 920 add x20,x20,x17 // h+=Ch(e,f,g) 921 and x19,x19,x28 // (b^c)&=(a^b) 922 eor x8,x8,x1,ror#61 923 eor x9,x9,x4,lsr#7 // sigma0(X[i+1]) 924 add x20,x20,x16 // h+=Sigma1(e) 925 eor x19,x19,x22 // Maj(a,b,c) 926 eor x17,x10,x21,ror#39 // Sigma0(a) 927 eor x8,x8,x1,lsr#6 // sigma1(X[i+14]) 928 add x3,x3,x12 929 add x24,x24,x20 // d+=h 930 add x20,x20,x19 // h+=Maj(a,b,c) 931 ldr x19,[x30],#8 // *K++, x28 in next round 932 add x3,x3,x9 933 add x20,x20,x17 // h+=Sigma0(a) 934 add x3,x3,x8 935 cbnz x19,.Loop_16_xx 936 937 ldp x0,x2,[x29,#96] 938 ldr x1,[x29,#112] 939 sub x30,x30,#648 // rewind 940 941 ldp x3,x4,[x0] 942 ldp x5,x6,[x0,#2*8] 943 add x1,x1,#14*8 // advance input pointer 944 ldp x7,x8,[x0,#4*8] 945 add x20,x20,x3 946 ldp x9,x10,[x0,#6*8] 947 add x21,x21,x4 948 add x22,x22,x5 949 add x23,x23,x6 950 stp x20,x21,[x0] 951 add x24,x24,x7 952 add x25,x25,x8 953 stp x22,x23,[x0,#2*8] 954 add x26,x26,x9 955 add x27,x27,x10 956 cmp x1,x2 957 stp x24,x25,[x0,#4*8] 958 stp x26,x27,[x0,#6*8] 959 b.ne .Loop 960 961 ldp x19,x20,[x29,#16] 962 add sp,sp,#4*8 963 ldp x21,x22,[x29,#32] 964 ldp x23,x24,[x29,#48] 965 ldp x25,x26,[x29,#64] 966 ldp x27,x28,[x29,#80] 967 ldp x29,x30,[sp],#128 968 ret 969 .size sha512_block_data_order,.-sha512_block_data_order 970 971 .align 6 972 .type K512,%object 973 K512: 974 .quad 0x428a2f98d728ae22,0x7137449123ef65cd 975 .quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc 976 .quad 0x3956c25bf348b538,0x59f111f1b605d019 977 .quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 978 .quad 0xd807aa98a3030242,0x12835b0145706fbe 979 .quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 980 .quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 981 .quad 0x9bdc06a725c71235,0xc19bf174cf692694 982 .quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 983 .quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65 984 .quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 985 .quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 986 .quad 0x983e5152ee66dfab,0xa831c66d2db43210 987 .quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 988 .quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 989 .quad 0x06ca6351e003826f,0x142929670a0e6e70 990 .quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 991 .quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df 992 .quad 0x650a73548baf63de,0x766a0abb3c77b2a8 993 .quad 0x81c2c92e47edaee6,0x92722c851482353b 994 .quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 995 .quad 0xc24b8b70d0f89791,0xc76c51a30654be30 996 .quad 0xd192e819d6ef5218,0xd69906245565a910 997 .quad 0xf40e35855771202a,0x106aa07032bbd1b8 998 .quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 999 .quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 1000 .quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb 1001 .quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 1002 .quad 0x748f82ee5defb2fc,0x78a5636f43172f60 1003 .quad 0x84c87814a1f0ab72,0x8cc702081a6439ec 1004 .quad 0x90befffa23631e28,0xa4506cebde82bde9 1005 .quad 0xbef9a3f7b2c67915,0xc67178f2e372532b 1006 .quad 0xca273eceea26619c,0xd186b8c721c0c207 1007 .quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 1008 .quad 0x06f067aa72176fba,0x0a637dc5a2c898a6 1009 .quad 0x113f9804bef90dae,0x1b710b35131c471b 1010 .quad 0x28db77f523047d84,0x32caab7b40c72493 1011 .quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c 1012 .quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a 1013 .quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 1014 .quad 0 // terminator 1015 .size K512,.-K512 1016 .align 3 1017 .LOPENSSL_armcap_P: 1018 .quad OPENSSL_armcap_P-. 1019 .asciz "SHA512 block transform for ARMv8, CRYPTOGAMS by <appro (at) openssl.org>" 1020 .align 2 1021 .comm OPENSSL_armcap_P,4,4 1022