OLD | NEW |
(Empty) | |
| 1 #include "arm_arch.h" |
| 2 |
| 3 .text |
| 4 |
| 5 .globl sha1_block_data_order |
| 6 .type sha1_block_data_order,%function |
| 7 .align 6 |
| 8 sha1_block_data_order: |
| 9 ldr x16,.LOPENSSL_armcap_P |
| 10 adr x17,.LOPENSSL_armcap_P |
| 11 add x16,x16,x17 |
| 12 ldr w16,[x16] |
| 13 tst w16,#ARMV8_SHA1 |
| 14 b.ne .Lv8_entry |
| 15 |
| 16 stp x29,x30,[sp,#-96]! |
| 17 add x29,sp,#0 |
| 18 stp x19,x20,[sp,#16] |
| 19 stp x21,x22,[sp,#32] |
| 20 stp x23,x24,[sp,#48] |
| 21 stp x25,x26,[sp,#64] |
| 22 stp x27,x28,[sp,#80] |
| 23 |
| 24 ldp w20,w21,[x0] |
| 25 ldp w22,w23,[x0,#8] |
| 26 ldr w24,[x0,#16] |
| 27 |
| 28 .Loop: |
| 29 ldr x3,[x1],#64 |
| 30 movz w28,#0x7999 |
| 31 sub x2,x2,#1 |
| 32 movk w28,#0x5a82,lsl#16 |
| 33 #ifdef __ARMEB__ |
| 34 ror x3,x3,#32 |
| 35 #else |
| 36 rev32 x3,x3 |
| 37 #endif |
| 38 add w24,w24,w28 // warm it up |
| 39 add w24,w24,w3 |
| 40 lsr x4,x3,#32 |
| 41 ldr x5,[x1,#-56] |
| 42 bic w25,w23,w21 |
| 43 and w26,w22,w21 |
| 44 ror w27,w20,#27 |
| 45 add w23,w23,w28 // future e+=K |
| 46 orr w25,w25,w26 |
| 47 add w24,w24,w27 // e+=rot(a,5) |
| 48 ror w21,w21,#2 |
| 49 add w23,w23,w4 // future e+=X[i] |
| 50 add w24,w24,w25 // e+=F(b,c,d) |
| 51 #ifdef __ARMEB__ |
| 52 ror x5,x5,#32 |
| 53 #else |
| 54 rev32 x5,x5 |
| 55 #endif |
| 56 bic w25,w22,w20 |
| 57 and w26,w21,w20 |
| 58 ror w27,w24,#27 |
| 59 add w22,w22,w28 // future e+=K |
| 60 orr w25,w25,w26 |
| 61 add w23,w23,w27 // e+=rot(a,5) |
| 62 ror w20,w20,#2 |
| 63 add w22,w22,w5 // future e+=X[i] |
| 64 add w23,w23,w25 // e+=F(b,c,d) |
| 65 lsr x6,x5,#32 |
| 66 ldr x7,[x1,#-48] |
| 67 bic w25,w21,w24 |
| 68 and w26,w20,w24 |
| 69 ror w27,w23,#27 |
| 70 add w21,w21,w28 // future e+=K |
| 71 orr w25,w25,w26 |
| 72 add w22,w22,w27 // e+=rot(a,5) |
| 73 ror w24,w24,#2 |
| 74 add w21,w21,w6 // future e+=X[i] |
| 75 add w22,w22,w25 // e+=F(b,c,d) |
| 76 #ifdef __ARMEB__ |
| 77 ror x7,x7,#32 |
| 78 #else |
| 79 rev32 x7,x7 |
| 80 #endif |
| 81 bic w25,w20,w23 |
| 82 and w26,w24,w23 |
| 83 ror w27,w22,#27 |
| 84 add w20,w20,w28 // future e+=K |
| 85 orr w25,w25,w26 |
| 86 add w21,w21,w27 // e+=rot(a,5) |
| 87 ror w23,w23,#2 |
| 88 add w20,w20,w7 // future e+=X[i] |
| 89 add w21,w21,w25 // e+=F(b,c,d) |
| 90 lsr x8,x7,#32 |
| 91 ldr x9,[x1,#-40] |
| 92 bic w25,w24,w22 |
| 93 and w26,w23,w22 |
| 94 ror w27,w21,#27 |
| 95 add w24,w24,w28 // future e+=K |
| 96 orr w25,w25,w26 |
| 97 add w20,w20,w27 // e+=rot(a,5) |
| 98 ror w22,w22,#2 |
| 99 add w24,w24,w8 // future e+=X[i] |
| 100 add w20,w20,w25 // e+=F(b,c,d) |
| 101 #ifdef __ARMEB__ |
| 102 ror x9,x9,#32 |
| 103 #else |
| 104 rev32 x9,x9 |
| 105 #endif |
| 106 bic w25,w23,w21 |
| 107 and w26,w22,w21 |
| 108 ror w27,w20,#27 |
| 109 add w23,w23,w28 // future e+=K |
| 110 orr w25,w25,w26 |
| 111 add w24,w24,w27 // e+=rot(a,5) |
| 112 ror w21,w21,#2 |
| 113 add w23,w23,w9 // future e+=X[i] |
| 114 add w24,w24,w25 // e+=F(b,c,d) |
| 115 lsr x10,x9,#32 |
| 116 ldr x11,[x1,#-32] |
| 117 bic w25,w22,w20 |
| 118 and w26,w21,w20 |
| 119 ror w27,w24,#27 |
| 120 add w22,w22,w28 // future e+=K |
| 121 orr w25,w25,w26 |
| 122 add w23,w23,w27 // e+=rot(a,5) |
| 123 ror w20,w20,#2 |
| 124 add w22,w22,w10 // future e+=X[i] |
| 125 add w23,w23,w25 // e+=F(b,c,d) |
| 126 #ifdef __ARMEB__ |
| 127 ror x11,x11,#32 |
| 128 #else |
| 129 rev32 x11,x11 |
| 130 #endif |
| 131 bic w25,w21,w24 |
| 132 and w26,w20,w24 |
| 133 ror w27,w23,#27 |
| 134 add w21,w21,w28 // future e+=K |
| 135 orr w25,w25,w26 |
| 136 add w22,w22,w27 // e+=rot(a,5) |
| 137 ror w24,w24,#2 |
| 138 add w21,w21,w11 // future e+=X[i] |
| 139 add w22,w22,w25 // e+=F(b,c,d) |
| 140 lsr x12,x11,#32 |
| 141 ldr x13,[x1,#-24] |
| 142 bic w25,w20,w23 |
| 143 and w26,w24,w23 |
| 144 ror w27,w22,#27 |
| 145 add w20,w20,w28 // future e+=K |
| 146 orr w25,w25,w26 |
| 147 add w21,w21,w27 // e+=rot(a,5) |
| 148 ror w23,w23,#2 |
| 149 add w20,w20,w12 // future e+=X[i] |
| 150 add w21,w21,w25 // e+=F(b,c,d) |
| 151 #ifdef __ARMEB__ |
| 152 ror x13,x13,#32 |
| 153 #else |
| 154 rev32 x13,x13 |
| 155 #endif |
| 156 bic w25,w24,w22 |
| 157 and w26,w23,w22 |
| 158 ror w27,w21,#27 |
| 159 add w24,w24,w28 // future e+=K |
| 160 orr w25,w25,w26 |
| 161 add w20,w20,w27 // e+=rot(a,5) |
| 162 ror w22,w22,#2 |
| 163 add w24,w24,w13 // future e+=X[i] |
| 164 add w20,w20,w25 // e+=F(b,c,d) |
| 165 lsr x14,x13,#32 |
| 166 ldr x15,[x1,#-16] |
| 167 bic w25,w23,w21 |
| 168 and w26,w22,w21 |
| 169 ror w27,w20,#27 |
| 170 add w23,w23,w28 // future e+=K |
| 171 orr w25,w25,w26 |
| 172 add w24,w24,w27 // e+=rot(a,5) |
| 173 ror w21,w21,#2 |
| 174 add w23,w23,w14 // future e+=X[i] |
| 175 add w24,w24,w25 // e+=F(b,c,d) |
| 176 #ifdef __ARMEB__ |
| 177 ror x15,x15,#32 |
| 178 #else |
| 179 rev32 x15,x15 |
| 180 #endif |
| 181 bic w25,w22,w20 |
| 182 and w26,w21,w20 |
| 183 ror w27,w24,#27 |
| 184 add w22,w22,w28 // future e+=K |
| 185 orr w25,w25,w26 |
| 186 add w23,w23,w27 // e+=rot(a,5) |
| 187 ror w20,w20,#2 |
| 188 add w22,w22,w15 // future e+=X[i] |
| 189 add w23,w23,w25 // e+=F(b,c,d) |
| 190 lsr x16,x15,#32 |
| 191 ldr x17,[x1,#-8] |
| 192 bic w25,w21,w24 |
| 193 and w26,w20,w24 |
| 194 ror w27,w23,#27 |
| 195 add w21,w21,w28 // future e+=K |
| 196 orr w25,w25,w26 |
| 197 add w22,w22,w27 // e+=rot(a,5) |
| 198 ror w24,w24,#2 |
| 199 add w21,w21,w16 // future e+=X[i] |
| 200 add w22,w22,w25 // e+=F(b,c,d) |
| 201 #ifdef __ARMEB__ |
| 202 ror x17,x17,#32 |
| 203 #else |
| 204 rev32 x17,x17 |
| 205 #endif |
| 206 bic w25,w20,w23 |
| 207 and w26,w24,w23 |
| 208 ror w27,w22,#27 |
| 209 add w20,w20,w28 // future e+=K |
| 210 orr w25,w25,w26 |
| 211 add w21,w21,w27 // e+=rot(a,5) |
| 212 ror w23,w23,#2 |
| 213 add w20,w20,w17 // future e+=X[i] |
| 214 add w21,w21,w25 // e+=F(b,c,d) |
| 215 lsr x19,x17,#32 |
| 216 eor w3,w3,w5 |
| 217 bic w25,w24,w22 |
| 218 and w26,w23,w22 |
| 219 ror w27,w21,#27 |
| 220 eor w3,w3,w11 |
| 221 add w24,w24,w28 // future e+=K |
| 222 orr w25,w25,w26 |
| 223 add w20,w20,w27 // e+=rot(a,5) |
| 224 eor w3,w3,w16 |
| 225 ror w22,w22,#2 |
| 226 add w24,w24,w19 // future e+=X[i] |
| 227 add w20,w20,w25 // e+=F(b,c,d) |
| 228 ror w3,w3,#31 |
| 229 eor w4,w4,w6 |
| 230 bic w25,w23,w21 |
| 231 and w26,w22,w21 |
| 232 ror w27,w20,#27 |
| 233 eor w4,w4,w12 |
| 234 add w23,w23,w28 // future e+=K |
| 235 orr w25,w25,w26 |
| 236 add w24,w24,w27 // e+=rot(a,5) |
| 237 eor w4,w4,w17 |
| 238 ror w21,w21,#2 |
| 239 add w23,w23,w3 // future e+=X[i] |
| 240 add w24,w24,w25 // e+=F(b,c,d) |
| 241 ror w4,w4,#31 |
| 242 eor w5,w5,w7 |
| 243 bic w25,w22,w20 |
| 244 and w26,w21,w20 |
| 245 ror w27,w24,#27 |
| 246 eor w5,w5,w13 |
| 247 add w22,w22,w28 // future e+=K |
| 248 orr w25,w25,w26 |
| 249 add w23,w23,w27 // e+=rot(a,5) |
| 250 eor w5,w5,w19 |
| 251 ror w20,w20,#2 |
| 252 add w22,w22,w4 // future e+=X[i] |
| 253 add w23,w23,w25 // e+=F(b,c,d) |
| 254 ror w5,w5,#31 |
| 255 eor w6,w6,w8 |
| 256 bic w25,w21,w24 |
| 257 and w26,w20,w24 |
| 258 ror w27,w23,#27 |
| 259 eor w6,w6,w14 |
| 260 add w21,w21,w28 // future e+=K |
| 261 orr w25,w25,w26 |
| 262 add w22,w22,w27 // e+=rot(a,5) |
| 263 eor w6,w6,w3 |
| 264 ror w24,w24,#2 |
| 265 add w21,w21,w5 // future e+=X[i] |
| 266 add w22,w22,w25 // e+=F(b,c,d) |
| 267 ror w6,w6,#31 |
| 268 eor w7,w7,w9 |
| 269 bic w25,w20,w23 |
| 270 and w26,w24,w23 |
| 271 ror w27,w22,#27 |
| 272 eor w7,w7,w15 |
| 273 add w20,w20,w28 // future e+=K |
| 274 orr w25,w25,w26 |
| 275 add w21,w21,w27 // e+=rot(a,5) |
| 276 eor w7,w7,w4 |
| 277 ror w23,w23,#2 |
| 278 add w20,w20,w6 // future e+=X[i] |
| 279 add w21,w21,w25 // e+=F(b,c,d) |
| 280 ror w7,w7,#31 |
| 281 movz w28,#0xeba1 |
| 282 movk w28,#0x6ed9,lsl#16 |
| 283 eor w8,w8,w10 |
| 284 bic w25,w24,w22 |
| 285 and w26,w23,w22 |
| 286 ror w27,w21,#27 |
| 287 eor w8,w8,w16 |
| 288 add w24,w24,w28 // future e+=K |
| 289 orr w25,w25,w26 |
| 290 add w20,w20,w27 // e+=rot(a,5) |
| 291 eor w8,w8,w5 |
| 292 ror w22,w22,#2 |
| 293 add w24,w24,w7 // future e+=X[i] |
| 294 add w20,w20,w25 // e+=F(b,c,d) |
| 295 ror w8,w8,#31 |
| 296 eor w9,w9,w11 |
| 297 eor w25,w23,w21 |
| 298 ror w27,w20,#27 |
| 299 add w23,w23,w28 // future e+=K |
| 300 eor w9,w9,w17 |
| 301 eor w25,w25,w22 |
| 302 add w24,w24,w27 // e+=rot(a,5) |
| 303 ror w21,w21,#2 |
| 304 eor w9,w9,w6 |
| 305 add w23,w23,w8 // future e+=X[i] |
| 306 add w24,w24,w25 // e+=F(b,c,d) |
| 307 ror w9,w9,#31 |
| 308 eor w10,w10,w12 |
| 309 eor w25,w22,w20 |
| 310 ror w27,w24,#27 |
| 311 add w22,w22,w28 // future e+=K |
| 312 eor w10,w10,w19 |
| 313 eor w25,w25,w21 |
| 314 add w23,w23,w27 // e+=rot(a,5) |
| 315 ror w20,w20,#2 |
| 316 eor w10,w10,w7 |
| 317 add w22,w22,w9 // future e+=X[i] |
| 318 add w23,w23,w25 // e+=F(b,c,d) |
| 319 ror w10,w10,#31 |
| 320 eor w11,w11,w13 |
| 321 eor w25,w21,w24 |
| 322 ror w27,w23,#27 |
| 323 add w21,w21,w28 // future e+=K |
| 324 eor w11,w11,w3 |
| 325 eor w25,w25,w20 |
| 326 add w22,w22,w27 // e+=rot(a,5) |
| 327 ror w24,w24,#2 |
| 328 eor w11,w11,w8 |
| 329 add w21,w21,w10 // future e+=X[i] |
| 330 add w22,w22,w25 // e+=F(b,c,d) |
| 331 ror w11,w11,#31 |
| 332 eor w12,w12,w14 |
| 333 eor w25,w20,w23 |
| 334 ror w27,w22,#27 |
| 335 add w20,w20,w28 // future e+=K |
| 336 eor w12,w12,w4 |
| 337 eor w25,w25,w24 |
| 338 add w21,w21,w27 // e+=rot(a,5) |
| 339 ror w23,w23,#2 |
| 340 eor w12,w12,w9 |
| 341 add w20,w20,w11 // future e+=X[i] |
| 342 add w21,w21,w25 // e+=F(b,c,d) |
| 343 ror w12,w12,#31 |
| 344 eor w13,w13,w15 |
| 345 eor w25,w24,w22 |
| 346 ror w27,w21,#27 |
| 347 add w24,w24,w28 // future e+=K |
| 348 eor w13,w13,w5 |
| 349 eor w25,w25,w23 |
| 350 add w20,w20,w27 // e+=rot(a,5) |
| 351 ror w22,w22,#2 |
| 352 eor w13,w13,w10 |
| 353 add w24,w24,w12 // future e+=X[i] |
| 354 add w20,w20,w25 // e+=F(b,c,d) |
| 355 ror w13,w13,#31 |
| 356 eor w14,w14,w16 |
| 357 eor w25,w23,w21 |
| 358 ror w27,w20,#27 |
| 359 add w23,w23,w28 // future e+=K |
| 360 eor w14,w14,w6 |
| 361 eor w25,w25,w22 |
| 362 add w24,w24,w27 // e+=rot(a,5) |
| 363 ror w21,w21,#2 |
| 364 eor w14,w14,w11 |
| 365 add w23,w23,w13 // future e+=X[i] |
| 366 add w24,w24,w25 // e+=F(b,c,d) |
| 367 ror w14,w14,#31 |
| 368 eor w15,w15,w17 |
| 369 eor w25,w22,w20 |
| 370 ror w27,w24,#27 |
| 371 add w22,w22,w28 // future e+=K |
| 372 eor w15,w15,w7 |
| 373 eor w25,w25,w21 |
| 374 add w23,w23,w27 // e+=rot(a,5) |
| 375 ror w20,w20,#2 |
| 376 eor w15,w15,w12 |
| 377 add w22,w22,w14 // future e+=X[i] |
| 378 add w23,w23,w25 // e+=F(b,c,d) |
| 379 ror w15,w15,#31 |
| 380 eor w16,w16,w19 |
| 381 eor w25,w21,w24 |
| 382 ror w27,w23,#27 |
| 383 add w21,w21,w28 // future e+=K |
| 384 eor w16,w16,w8 |
| 385 eor w25,w25,w20 |
| 386 add w22,w22,w27 // e+=rot(a,5) |
| 387 ror w24,w24,#2 |
| 388 eor w16,w16,w13 |
| 389 add w21,w21,w15 // future e+=X[i] |
| 390 add w22,w22,w25 // e+=F(b,c,d) |
| 391 ror w16,w16,#31 |
| 392 eor w17,w17,w3 |
| 393 eor w25,w20,w23 |
| 394 ror w27,w22,#27 |
| 395 add w20,w20,w28 // future e+=K |
| 396 eor w17,w17,w9 |
| 397 eor w25,w25,w24 |
| 398 add w21,w21,w27 // e+=rot(a,5) |
| 399 ror w23,w23,#2 |
| 400 eor w17,w17,w14 |
| 401 add w20,w20,w16 // future e+=X[i] |
| 402 add w21,w21,w25 // e+=F(b,c,d) |
| 403 ror w17,w17,#31 |
| 404 eor w19,w19,w4 |
| 405 eor w25,w24,w22 |
| 406 ror w27,w21,#27 |
| 407 add w24,w24,w28 // future e+=K |
| 408 eor w19,w19,w10 |
| 409 eor w25,w25,w23 |
| 410 add w20,w20,w27 // e+=rot(a,5) |
| 411 ror w22,w22,#2 |
| 412 eor w19,w19,w15 |
| 413 add w24,w24,w17 // future e+=X[i] |
| 414 add w20,w20,w25 // e+=F(b,c,d) |
| 415 ror w19,w19,#31 |
| 416 eor w3,w3,w5 |
| 417 eor w25,w23,w21 |
| 418 ror w27,w20,#27 |
| 419 add w23,w23,w28 // future e+=K |
| 420 eor w3,w3,w11 |
| 421 eor w25,w25,w22 |
| 422 add w24,w24,w27 // e+=rot(a,5) |
| 423 ror w21,w21,#2 |
| 424 eor w3,w3,w16 |
| 425 add w23,w23,w19 // future e+=X[i] |
| 426 add w24,w24,w25 // e+=F(b,c,d) |
| 427 ror w3,w3,#31 |
| 428 eor w4,w4,w6 |
| 429 eor w25,w22,w20 |
| 430 ror w27,w24,#27 |
| 431 add w22,w22,w28 // future e+=K |
| 432 eor w4,w4,w12 |
| 433 eor w25,w25,w21 |
| 434 add w23,w23,w27 // e+=rot(a,5) |
| 435 ror w20,w20,#2 |
| 436 eor w4,w4,w17 |
| 437 add w22,w22,w3 // future e+=X[i] |
| 438 add w23,w23,w25 // e+=F(b,c,d) |
| 439 ror w4,w4,#31 |
| 440 eor w5,w5,w7 |
| 441 eor w25,w21,w24 |
| 442 ror w27,w23,#27 |
| 443 add w21,w21,w28 // future e+=K |
| 444 eor w5,w5,w13 |
| 445 eor w25,w25,w20 |
| 446 add w22,w22,w27 // e+=rot(a,5) |
| 447 ror w24,w24,#2 |
| 448 eor w5,w5,w19 |
| 449 add w21,w21,w4 // future e+=X[i] |
| 450 add w22,w22,w25 // e+=F(b,c,d) |
| 451 ror w5,w5,#31 |
| 452 eor w6,w6,w8 |
| 453 eor w25,w20,w23 |
| 454 ror w27,w22,#27 |
| 455 add w20,w20,w28 // future e+=K |
| 456 eor w6,w6,w14 |
| 457 eor w25,w25,w24 |
| 458 add w21,w21,w27 // e+=rot(a,5) |
| 459 ror w23,w23,#2 |
| 460 eor w6,w6,w3 |
| 461 add w20,w20,w5 // future e+=X[i] |
| 462 add w21,w21,w25 // e+=F(b,c,d) |
| 463 ror w6,w6,#31 |
| 464 eor w7,w7,w9 |
| 465 eor w25,w24,w22 |
| 466 ror w27,w21,#27 |
| 467 add w24,w24,w28 // future e+=K |
| 468 eor w7,w7,w15 |
| 469 eor w25,w25,w23 |
| 470 add w20,w20,w27 // e+=rot(a,5) |
| 471 ror w22,w22,#2 |
| 472 eor w7,w7,w4 |
| 473 add w24,w24,w6 // future e+=X[i] |
| 474 add w20,w20,w25 // e+=F(b,c,d) |
| 475 ror w7,w7,#31 |
| 476 eor w8,w8,w10 |
| 477 eor w25,w23,w21 |
| 478 ror w27,w20,#27 |
| 479 add w23,w23,w28 // future e+=K |
| 480 eor w8,w8,w16 |
| 481 eor w25,w25,w22 |
| 482 add w24,w24,w27 // e+=rot(a,5) |
| 483 ror w21,w21,#2 |
| 484 eor w8,w8,w5 |
| 485 add w23,w23,w7 // future e+=X[i] |
| 486 add w24,w24,w25 // e+=F(b,c,d) |
| 487 ror w8,w8,#31 |
| 488 eor w9,w9,w11 |
| 489 eor w25,w22,w20 |
| 490 ror w27,w24,#27 |
| 491 add w22,w22,w28 // future e+=K |
| 492 eor w9,w9,w17 |
| 493 eor w25,w25,w21 |
| 494 add w23,w23,w27 // e+=rot(a,5) |
| 495 ror w20,w20,#2 |
| 496 eor w9,w9,w6 |
| 497 add w22,w22,w8 // future e+=X[i] |
| 498 add w23,w23,w25 // e+=F(b,c,d) |
| 499 ror w9,w9,#31 |
| 500 eor w10,w10,w12 |
| 501 eor w25,w21,w24 |
| 502 ror w27,w23,#27 |
| 503 add w21,w21,w28 // future e+=K |
| 504 eor w10,w10,w19 |
| 505 eor w25,w25,w20 |
| 506 add w22,w22,w27 // e+=rot(a,5) |
| 507 ror w24,w24,#2 |
| 508 eor w10,w10,w7 |
| 509 add w21,w21,w9 // future e+=X[i] |
| 510 add w22,w22,w25 // e+=F(b,c,d) |
| 511 ror w10,w10,#31 |
| 512 eor w11,w11,w13 |
| 513 eor w25,w20,w23 |
| 514 ror w27,w22,#27 |
| 515 add w20,w20,w28 // future e+=K |
| 516 eor w11,w11,w3 |
| 517 eor w25,w25,w24 |
| 518 add w21,w21,w27 // e+=rot(a,5) |
| 519 ror w23,w23,#2 |
| 520 eor w11,w11,w8 |
| 521 add w20,w20,w10 // future e+=X[i] |
| 522 add w21,w21,w25 // e+=F(b,c,d) |
| 523 ror w11,w11,#31 |
| 524 movz w28,#0xbcdc |
| 525 movk w28,#0x8f1b,lsl#16 |
| 526 eor w12,w12,w14 |
| 527 eor w25,w24,w22 |
| 528 ror w27,w21,#27 |
| 529 add w24,w24,w28 // future e+=K |
| 530 eor w12,w12,w4 |
| 531 eor w25,w25,w23 |
| 532 add w20,w20,w27 // e+=rot(a,5) |
| 533 ror w22,w22,#2 |
| 534 eor w12,w12,w9 |
| 535 add w24,w24,w11 // future e+=X[i] |
| 536 add w20,w20,w25 // e+=F(b,c,d) |
| 537 ror w12,w12,#31 |
| 538 orr w25,w21,w22 |
| 539 and w26,w21,w22 |
| 540 eor w13,w13,w15 |
| 541 ror w27,w20,#27 |
| 542 and w25,w25,w23 |
| 543 add w23,w23,w28 // future e+=K |
| 544 eor w13,w13,w5 |
| 545 add w24,w24,w27 // e+=rot(a,5) |
| 546 orr w25,w25,w26 |
| 547 ror w21,w21,#2 |
| 548 eor w13,w13,w10 |
| 549 add w23,w23,w12 // future e+=X[i] |
| 550 add w24,w24,w25 // e+=F(b,c,d) |
| 551 ror w13,w13,#31 |
| 552 orr w25,w20,w21 |
| 553 and w26,w20,w21 |
| 554 eor w14,w14,w16 |
| 555 ror w27,w24,#27 |
| 556 and w25,w25,w22 |
| 557 add w22,w22,w28 // future e+=K |
| 558 eor w14,w14,w6 |
| 559 add w23,w23,w27 // e+=rot(a,5) |
| 560 orr w25,w25,w26 |
| 561 ror w20,w20,#2 |
| 562 eor w14,w14,w11 |
| 563 add w22,w22,w13 // future e+=X[i] |
| 564 add w23,w23,w25 // e+=F(b,c,d) |
| 565 ror w14,w14,#31 |
| 566 orr w25,w24,w20 |
| 567 and w26,w24,w20 |
| 568 eor w15,w15,w17 |
| 569 ror w27,w23,#27 |
| 570 and w25,w25,w21 |
| 571 add w21,w21,w28 // future e+=K |
| 572 eor w15,w15,w7 |
| 573 add w22,w22,w27 // e+=rot(a,5) |
| 574 orr w25,w25,w26 |
| 575 ror w24,w24,#2 |
| 576 eor w15,w15,w12 |
| 577 add w21,w21,w14 // future e+=X[i] |
| 578 add w22,w22,w25 // e+=F(b,c,d) |
| 579 ror w15,w15,#31 |
| 580 orr w25,w23,w24 |
| 581 and w26,w23,w24 |
| 582 eor w16,w16,w19 |
| 583 ror w27,w22,#27 |
| 584 and w25,w25,w20 |
| 585 add w20,w20,w28 // future e+=K |
| 586 eor w16,w16,w8 |
| 587 add w21,w21,w27 // e+=rot(a,5) |
| 588 orr w25,w25,w26 |
| 589 ror w23,w23,#2 |
| 590 eor w16,w16,w13 |
| 591 add w20,w20,w15 // future e+=X[i] |
| 592 add w21,w21,w25 // e+=F(b,c,d) |
| 593 ror w16,w16,#31 |
| 594 orr w25,w22,w23 |
| 595 and w26,w22,w23 |
| 596 eor w17,w17,w3 |
| 597 ror w27,w21,#27 |
| 598 and w25,w25,w24 |
| 599 add w24,w24,w28 // future e+=K |
| 600 eor w17,w17,w9 |
| 601 add w20,w20,w27 // e+=rot(a,5) |
| 602 orr w25,w25,w26 |
| 603 ror w22,w22,#2 |
| 604 eor w17,w17,w14 |
| 605 add w24,w24,w16 // future e+=X[i] |
| 606 add w20,w20,w25 // e+=F(b,c,d) |
| 607 ror w17,w17,#31 |
| 608 orr w25,w21,w22 |
| 609 and w26,w21,w22 |
| 610 eor w19,w19,w4 |
| 611 ror w27,w20,#27 |
| 612 and w25,w25,w23 |
| 613 add w23,w23,w28 // future e+=K |
| 614 eor w19,w19,w10 |
| 615 add w24,w24,w27 // e+=rot(a,5) |
| 616 orr w25,w25,w26 |
| 617 ror w21,w21,#2 |
| 618 eor w19,w19,w15 |
| 619 add w23,w23,w17 // future e+=X[i] |
| 620 add w24,w24,w25 // e+=F(b,c,d) |
| 621 ror w19,w19,#31 |
| 622 orr w25,w20,w21 |
| 623 and w26,w20,w21 |
| 624 eor w3,w3,w5 |
| 625 ror w27,w24,#27 |
| 626 and w25,w25,w22 |
| 627 add w22,w22,w28 // future e+=K |
| 628 eor w3,w3,w11 |
| 629 add w23,w23,w27 // e+=rot(a,5) |
| 630 orr w25,w25,w26 |
| 631 ror w20,w20,#2 |
| 632 eor w3,w3,w16 |
| 633 add w22,w22,w19 // future e+=X[i] |
| 634 add w23,w23,w25 // e+=F(b,c,d) |
| 635 ror w3,w3,#31 |
| 636 orr w25,w24,w20 |
| 637 and w26,w24,w20 |
| 638 eor w4,w4,w6 |
| 639 ror w27,w23,#27 |
| 640 and w25,w25,w21 |
| 641 add w21,w21,w28 // future e+=K |
| 642 eor w4,w4,w12 |
| 643 add w22,w22,w27 // e+=rot(a,5) |
| 644 orr w25,w25,w26 |
| 645 ror w24,w24,#2 |
| 646 eor w4,w4,w17 |
| 647 add w21,w21,w3 // future e+=X[i] |
| 648 add w22,w22,w25 // e+=F(b,c,d) |
| 649 ror w4,w4,#31 |
| 650 orr w25,w23,w24 |
| 651 and w26,w23,w24 |
| 652 eor w5,w5,w7 |
| 653 ror w27,w22,#27 |
| 654 and w25,w25,w20 |
| 655 add w20,w20,w28 // future e+=K |
| 656 eor w5,w5,w13 |
| 657 add w21,w21,w27 // e+=rot(a,5) |
| 658 orr w25,w25,w26 |
| 659 ror w23,w23,#2 |
| 660 eor w5,w5,w19 |
| 661 add w20,w20,w4 // future e+=X[i] |
| 662 add w21,w21,w25 // e+=F(b,c,d) |
| 663 ror w5,w5,#31 |
| 664 orr w25,w22,w23 |
| 665 and w26,w22,w23 |
| 666 eor w6,w6,w8 |
| 667 ror w27,w21,#27 |
| 668 and w25,w25,w24 |
| 669 add w24,w24,w28 // future e+=K |
| 670 eor w6,w6,w14 |
| 671 add w20,w20,w27 // e+=rot(a,5) |
| 672 orr w25,w25,w26 |
| 673 ror w22,w22,#2 |
| 674 eor w6,w6,w3 |
| 675 add w24,w24,w5 // future e+=X[i] |
| 676 add w20,w20,w25 // e+=F(b,c,d) |
| 677 ror w6,w6,#31 |
| 678 orr w25,w21,w22 |
| 679 and w26,w21,w22 |
| 680 eor w7,w7,w9 |
| 681 ror w27,w20,#27 |
| 682 and w25,w25,w23 |
| 683 add w23,w23,w28 // future e+=K |
| 684 eor w7,w7,w15 |
| 685 add w24,w24,w27 // e+=rot(a,5) |
| 686 orr w25,w25,w26 |
| 687 ror w21,w21,#2 |
| 688 eor w7,w7,w4 |
| 689 add w23,w23,w6 // future e+=X[i] |
| 690 add w24,w24,w25 // e+=F(b,c,d) |
| 691 ror w7,w7,#31 |
| 692 orr w25,w20,w21 |
| 693 and w26,w20,w21 |
| 694 eor w8,w8,w10 |
| 695 ror w27,w24,#27 |
| 696 and w25,w25,w22 |
| 697 add w22,w22,w28 // future e+=K |
| 698 eor w8,w8,w16 |
| 699 add w23,w23,w27 // e+=rot(a,5) |
| 700 orr w25,w25,w26 |
| 701 ror w20,w20,#2 |
| 702 eor w8,w8,w5 |
| 703 add w22,w22,w7 // future e+=X[i] |
| 704 add w23,w23,w25 // e+=F(b,c,d) |
| 705 ror w8,w8,#31 |
| 706 orr w25,w24,w20 |
| 707 and w26,w24,w20 |
| 708 eor w9,w9,w11 |
| 709 ror w27,w23,#27 |
| 710 and w25,w25,w21 |
| 711 add w21,w21,w28 // future e+=K |
| 712 eor w9,w9,w17 |
| 713 add w22,w22,w27 // e+=rot(a,5) |
| 714 orr w25,w25,w26 |
| 715 ror w24,w24,#2 |
| 716 eor w9,w9,w6 |
| 717 add w21,w21,w8 // future e+=X[i] |
| 718 add w22,w22,w25 // e+=F(b,c,d) |
| 719 ror w9,w9,#31 |
| 720 orr w25,w23,w24 |
| 721 and w26,w23,w24 |
| 722 eor w10,w10,w12 |
| 723 ror w27,w22,#27 |
| 724 and w25,w25,w20 |
| 725 add w20,w20,w28 // future e+=K |
| 726 eor w10,w10,w19 |
| 727 add w21,w21,w27 // e+=rot(a,5) |
| 728 orr w25,w25,w26 |
| 729 ror w23,w23,#2 |
| 730 eor w10,w10,w7 |
| 731 add w20,w20,w9 // future e+=X[i] |
| 732 add w21,w21,w25 // e+=F(b,c,d) |
| 733 ror w10,w10,#31 |
| 734 orr w25,w22,w23 |
| 735 and w26,w22,w23 |
| 736 eor w11,w11,w13 |
| 737 ror w27,w21,#27 |
| 738 and w25,w25,w24 |
| 739 add w24,w24,w28 // future e+=K |
| 740 eor w11,w11,w3 |
| 741 add w20,w20,w27 // e+=rot(a,5) |
| 742 orr w25,w25,w26 |
| 743 ror w22,w22,#2 |
| 744 eor w11,w11,w8 |
| 745 add w24,w24,w10 // future e+=X[i] |
| 746 add w20,w20,w25 // e+=F(b,c,d) |
| 747 ror w11,w11,#31 |
| 748 orr w25,w21,w22 |
| 749 and w26,w21,w22 |
| 750 eor w12,w12,w14 |
| 751 ror w27,w20,#27 |
| 752 and w25,w25,w23 |
| 753 add w23,w23,w28 // future e+=K |
| 754 eor w12,w12,w4 |
| 755 add w24,w24,w27 // e+=rot(a,5) |
| 756 orr w25,w25,w26 |
| 757 ror w21,w21,#2 |
| 758 eor w12,w12,w9 |
| 759 add w23,w23,w11 // future e+=X[i] |
| 760 add w24,w24,w25 // e+=F(b,c,d) |
| 761 ror w12,w12,#31 |
| 762 orr w25,w20,w21 |
| 763 and w26,w20,w21 |
| 764 eor w13,w13,w15 |
| 765 ror w27,w24,#27 |
| 766 and w25,w25,w22 |
| 767 add w22,w22,w28 // future e+=K |
| 768 eor w13,w13,w5 |
| 769 add w23,w23,w27 // e+=rot(a,5) |
| 770 orr w25,w25,w26 |
| 771 ror w20,w20,#2 |
| 772 eor w13,w13,w10 |
| 773 add w22,w22,w12 // future e+=X[i] |
| 774 add w23,w23,w25 // e+=F(b,c,d) |
| 775 ror w13,w13,#31 |
| 776 orr w25,w24,w20 |
| 777 and w26,w24,w20 |
| 778 eor w14,w14,w16 |
| 779 ror w27,w23,#27 |
| 780 and w25,w25,w21 |
| 781 add w21,w21,w28 // future e+=K |
| 782 eor w14,w14,w6 |
| 783 add w22,w22,w27 // e+=rot(a,5) |
| 784 orr w25,w25,w26 |
| 785 ror w24,w24,#2 |
| 786 eor w14,w14,w11 |
| 787 add w21,w21,w13 // future e+=X[i] |
| 788 add w22,w22,w25 // e+=F(b,c,d) |
| 789 ror w14,w14,#31 |
| 790 orr w25,w23,w24 |
| 791 and w26,w23,w24 |
| 792 eor w15,w15,w17 |
| 793 ror w27,w22,#27 |
| 794 and w25,w25,w20 |
| 795 add w20,w20,w28 // future e+=K |
| 796 eor w15,w15,w7 |
| 797 add w21,w21,w27 // e+=rot(a,5) |
| 798 orr w25,w25,w26 |
| 799 ror w23,w23,#2 |
| 800 eor w15,w15,w12 |
| 801 add w20,w20,w14 // future e+=X[i] |
| 802 add w21,w21,w25 // e+=F(b,c,d) |
| 803 ror w15,w15,#31 |
| 804 movz w28,#0xc1d6 |
| 805 movk w28,#0xca62,lsl#16 |
| 806 orr w25,w22,w23 |
| 807 and w26,w22,w23 |
| 808 eor w16,w16,w19 |
| 809 ror w27,w21,#27 |
| 810 and w25,w25,w24 |
| 811 add w24,w24,w28 // future e+=K |
| 812 eor w16,w16,w8 |
| 813 add w20,w20,w27 // e+=rot(a,5) |
| 814 orr w25,w25,w26 |
| 815 ror w22,w22,#2 |
| 816 eor w16,w16,w13 |
| 817 add w24,w24,w15 // future e+=X[i] |
| 818 add w20,w20,w25 // e+=F(b,c,d) |
| 819 ror w16,w16,#31 |
| 820 eor w17,w17,w3 |
| 821 eor w25,w23,w21 |
| 822 ror w27,w20,#27 |
| 823 add w23,w23,w28 // future e+=K |
| 824 eor w17,w17,w9 |
| 825 eor w25,w25,w22 |
| 826 add w24,w24,w27 // e+=rot(a,5) |
| 827 ror w21,w21,#2 |
| 828 eor w17,w17,w14 |
| 829 add w23,w23,w16 // future e+=X[i] |
| 830 add w24,w24,w25 // e+=F(b,c,d) |
| 831 ror w17,w17,#31 |
| 832 eor w19,w19,w4 |
| 833 eor w25,w22,w20 |
| 834 ror w27,w24,#27 |
| 835 add w22,w22,w28 // future e+=K |
| 836 eor w19,w19,w10 |
| 837 eor w25,w25,w21 |
| 838 add w23,w23,w27 // e+=rot(a,5) |
| 839 ror w20,w20,#2 |
| 840 eor w19,w19,w15 |
| 841 add w22,w22,w17 // future e+=X[i] |
| 842 add w23,w23,w25 // e+=F(b,c,d) |
| 843 ror w19,w19,#31 |
| 844 eor w3,w3,w5 |
| 845 eor w25,w21,w24 |
| 846 ror w27,w23,#27 |
| 847 add w21,w21,w28 // future e+=K |
| 848 eor w3,w3,w11 |
| 849 eor w25,w25,w20 |
| 850 add w22,w22,w27 // e+=rot(a,5) |
| 851 ror w24,w24,#2 |
| 852 eor w3,w3,w16 |
| 853 add w21,w21,w19 // future e+=X[i] |
| 854 add w22,w22,w25 // e+=F(b,c,d) |
| 855 ror w3,w3,#31 |
| 856 eor w4,w4,w6 |
| 857 eor w25,w20,w23 |
| 858 ror w27,w22,#27 |
| 859 add w20,w20,w28 // future e+=K |
| 860 eor w4,w4,w12 |
| 861 eor w25,w25,w24 |
| 862 add w21,w21,w27 // e+=rot(a,5) |
| 863 ror w23,w23,#2 |
| 864 eor w4,w4,w17 |
| 865 add w20,w20,w3 // future e+=X[i] |
| 866 add w21,w21,w25 // e+=F(b,c,d) |
| 867 ror w4,w4,#31 |
| 868 eor w5,w5,w7 |
| 869 eor w25,w24,w22 |
| 870 ror w27,w21,#27 |
| 871 add w24,w24,w28 // future e+=K |
| 872 eor w5,w5,w13 |
| 873 eor w25,w25,w23 |
| 874 add w20,w20,w27 // e+=rot(a,5) |
| 875 ror w22,w22,#2 |
| 876 eor w5,w5,w19 |
| 877 add w24,w24,w4 // future e+=X[i] |
| 878 add w20,w20,w25 // e+=F(b,c,d) |
| 879 ror w5,w5,#31 |
| 880 eor w6,w6,w8 |
| 881 eor w25,w23,w21 |
| 882 ror w27,w20,#27 |
| 883 add w23,w23,w28 // future e+=K |
| 884 eor w6,w6,w14 |
| 885 eor w25,w25,w22 |
| 886 add w24,w24,w27 // e+=rot(a,5) |
| 887 ror w21,w21,#2 |
| 888 eor w6,w6,w3 |
| 889 add w23,w23,w5 // future e+=X[i] |
| 890 add w24,w24,w25 // e+=F(b,c,d) |
| 891 ror w6,w6,#31 |
| 892 eor w7,w7,w9 |
| 893 eor w25,w22,w20 |
| 894 ror w27,w24,#27 |
| 895 add w22,w22,w28 // future e+=K |
| 896 eor w7,w7,w15 |
| 897 eor w25,w25,w21 |
| 898 add w23,w23,w27 // e+=rot(a,5) |
| 899 ror w20,w20,#2 |
| 900 eor w7,w7,w4 |
| 901 add w22,w22,w6 // future e+=X[i] |
| 902 add w23,w23,w25 // e+=F(b,c,d) |
| 903 ror w7,w7,#31 |
| 904 eor w8,w8,w10 |
| 905 eor w25,w21,w24 |
| 906 ror w27,w23,#27 |
| 907 add w21,w21,w28 // future e+=K |
| 908 eor w8,w8,w16 |
| 909 eor w25,w25,w20 |
| 910 add w22,w22,w27 // e+=rot(a,5) |
| 911 ror w24,w24,#2 |
| 912 eor w8,w8,w5 |
| 913 add w21,w21,w7 // future e+=X[i] |
| 914 add w22,w22,w25 // e+=F(b,c,d) |
| 915 ror w8,w8,#31 |
| 916 eor w9,w9,w11 |
| 917 eor w25,w20,w23 |
| 918 ror w27,w22,#27 |
| 919 add w20,w20,w28 // future e+=K |
| 920 eor w9,w9,w17 |
| 921 eor w25,w25,w24 |
| 922 add w21,w21,w27 // e+=rot(a,5) |
| 923 ror w23,w23,#2 |
| 924 eor w9,w9,w6 |
| 925 add w20,w20,w8 // future e+=X[i] |
| 926 add w21,w21,w25 // e+=F(b,c,d) |
| 927 ror w9,w9,#31 |
| 928 eor w10,w10,w12 |
| 929 eor w25,w24,w22 |
| 930 ror w27,w21,#27 |
| 931 add w24,w24,w28 // future e+=K |
| 932 eor w10,w10,w19 |
| 933 eor w25,w25,w23 |
| 934 add w20,w20,w27 // e+=rot(a,5) |
| 935 ror w22,w22,#2 |
| 936 eor w10,w10,w7 |
| 937 add w24,w24,w9 // future e+=X[i] |
| 938 add w20,w20,w25 // e+=F(b,c,d) |
| 939 ror w10,w10,#31 |
| 940 eor w11,w11,w13 |
| 941 eor w25,w23,w21 |
| 942 ror w27,w20,#27 |
| 943 add w23,w23,w28 // future e+=K |
| 944 eor w11,w11,w3 |
| 945 eor w25,w25,w22 |
| 946 add w24,w24,w27 // e+=rot(a,5) |
| 947 ror w21,w21,#2 |
| 948 eor w11,w11,w8 |
| 949 add w23,w23,w10 // future e+=X[i] |
| 950 add w24,w24,w25 // e+=F(b,c,d) |
| 951 ror w11,w11,#31 |
| 952 eor w12,w12,w14 |
| 953 eor w25,w22,w20 |
| 954 ror w27,w24,#27 |
| 955 add w22,w22,w28 // future e+=K |
| 956 eor w12,w12,w4 |
| 957 eor w25,w25,w21 |
| 958 add w23,w23,w27 // e+=rot(a,5) |
| 959 ror w20,w20,#2 |
| 960 eor w12,w12,w9 |
| 961 add w22,w22,w11 // future e+=X[i] |
| 962 add w23,w23,w25 // e+=F(b,c,d) |
| 963 ror w12,w12,#31 |
| 964 eor w13,w13,w15 |
| 965 eor w25,w21,w24 |
| 966 ror w27,w23,#27 |
| 967 add w21,w21,w28 // future e+=K |
| 968 eor w13,w13,w5 |
| 969 eor w25,w25,w20 |
| 970 add w22,w22,w27 // e+=rot(a,5) |
| 971 ror w24,w24,#2 |
| 972 eor w13,w13,w10 |
| 973 add w21,w21,w12 // future e+=X[i] |
| 974 add w22,w22,w25 // e+=F(b,c,d) |
| 975 ror w13,w13,#31 |
| 976 eor w14,w14,w16 |
| 977 eor w25,w20,w23 |
| 978 ror w27,w22,#27 |
| 979 add w20,w20,w28 // future e+=K |
| 980 eor w14,w14,w6 |
| 981 eor w25,w25,w24 |
| 982 add w21,w21,w27 // e+=rot(a,5) |
| 983 ror w23,w23,#2 |
| 984 eor w14,w14,w11 |
| 985 add w20,w20,w13 // future e+=X[i] |
| 986 add w21,w21,w25 // e+=F(b,c,d) |
| 987 ror w14,w14,#31 |
| 988 eor w15,w15,w17 |
| 989 eor w25,w24,w22 |
| 990 ror w27,w21,#27 |
| 991 add w24,w24,w28 // future e+=K |
| 992 eor w15,w15,w7 |
| 993 eor w25,w25,w23 |
| 994 add w20,w20,w27 // e+=rot(a,5) |
| 995 ror w22,w22,#2 |
| 996 eor w15,w15,w12 |
| 997 add w24,w24,w14 // future e+=X[i] |
| 998 add w20,w20,w25 // e+=F(b,c,d) |
| 999 ror w15,w15,#31 |
| 1000 eor w16,w16,w19 |
| 1001 eor w25,w23,w21 |
| 1002 ror w27,w20,#27 |
| 1003 add w23,w23,w28 // future e+=K |
| 1004 eor w16,w16,w8 |
| 1005 eor w25,w25,w22 |
| 1006 add w24,w24,w27 // e+=rot(a,5) |
| 1007 ror w21,w21,#2 |
| 1008 eor w16,w16,w13 |
| 1009 add w23,w23,w15 // future e+=X[i] |
| 1010 add w24,w24,w25 // e+=F(b,c,d) |
| 1011 ror w16,w16,#31 |
| 1012 eor w17,w17,w3 |
| 1013 eor w25,w22,w20 |
| 1014 ror w27,w24,#27 |
| 1015 add w22,w22,w28 // future e+=K |
| 1016 eor w17,w17,w9 |
| 1017 eor w25,w25,w21 |
| 1018 add w23,w23,w27 // e+=rot(a,5) |
| 1019 ror w20,w20,#2 |
| 1020 eor w17,w17,w14 |
| 1021 add w22,w22,w16 // future e+=X[i] |
| 1022 add w23,w23,w25 // e+=F(b,c,d) |
| 1023 ror w17,w17,#31 |
| 1024 eor w19,w19,w4 |
| 1025 eor w25,w21,w24 |
| 1026 ror w27,w23,#27 |
| 1027 add w21,w21,w28 // future e+=K |
| 1028 eor w19,w19,w10 |
| 1029 eor w25,w25,w20 |
| 1030 add w22,w22,w27 // e+=rot(a,5) |
| 1031 ror w24,w24,#2 |
| 1032 eor w19,w19,w15 |
| 1033 add w21,w21,w17 // future e+=X[i] |
| 1034 add w22,w22,w25 // e+=F(b,c,d) |
| 1035 ror w19,w19,#31 |
| 1036 ldp w4,w5,[x0] |
| 1037 eor w25,w20,w23 |
| 1038 ror w27,w22,#27 |
| 1039 add w20,w20,w28 // future e+=K |
| 1040 eor w25,w25,w24 |
| 1041 add w21,w21,w27 // e+=rot(a,5) |
| 1042 ror w23,w23,#2 |
| 1043 add w20,w20,w19 // future e+=X[i] |
| 1044 add w21,w21,w25 // e+=F(b,c,d) |
| 1045 ldp w6,w7,[x0,#8] |
| 1046 eor w25,w24,w22 |
| 1047 ror w27,w21,#27 |
| 1048 eor w25,w25,w23 |
| 1049 add w20,w20,w27 // e+=rot(a,5) |
| 1050 ror w22,w22,#2 |
| 1051 ldr w8,[x0,#16] |
| 1052 add w20,w20,w25 // e+=F(b,c,d) |
| 1053 add w21,w21,w5 |
| 1054 add w22,w22,w6 |
| 1055 add w20,w20,w4 |
| 1056 add w23,w23,w7 |
| 1057 add w24,w24,w8 |
| 1058 stp w20,w21,[x0] |
| 1059 stp w22,w23,[x0,#8] |
| 1060 str w24,[x0,#16] |
| 1061 cbnz x2,.Loop |
| 1062 |
| 1063 ldp x19,x20,[sp,#16] |
| 1064 ldp x21,x22,[sp,#32] |
| 1065 ldp x23,x24,[sp,#48] |
| 1066 ldp x25,x26,[sp,#64] |
| 1067 ldp x27,x28,[sp,#80] |
| 1068 ldr x29,[sp],#96 |
| 1069 ret |
| 1070 .size sha1_block_data_order,.-sha1_block_data_order |
| 1071 .type sha1_block_armv8,%function |
| 1072 .align 6 |
| 1073 sha1_block_armv8: |
| 1074 .Lv8_entry: |
| 1075 stp x29,x30,[sp,#-16]! |
| 1076 add x29,sp,#0 |
| 1077 |
| 1078 adr x4,.Lconst |
| 1079 eor v1.16b,v1.16b,v1.16b |
| 1080 ld1 {v0.4s},[x0],#16 |
| 1081 ld1 {v1.s}[0],[x0] |
| 1082 sub x0,x0,#16 |
| 1083 ld1 {v16.4s-v19.4s},[x4] |
| 1084 |
| 1085 .Loop_hw: |
| 1086 ld1 {v4.16b-v7.16b},[x1],#64 |
| 1087 sub x2,x2,#1 |
| 1088 rev32 v4.16b,v4.16b |
| 1089 rev32 v5.16b,v5.16b |
| 1090 |
| 1091 add v20.4s,v16.4s,v4.4s |
| 1092 rev32 v6.16b,v6.16b |
| 1093 orr v22.16b,v0.16b,v0.16b // offload |
| 1094 |
| 1095 add v21.4s,v16.4s,v5.4s |
| 1096 rev32 v7.16b,v7.16b |
| 1097 .inst 0x5e280803 //sha1h v3.16b,v0.16b |
| 1098 .inst 0x5e140020 //sha1c v0.16b,v1.16b,v20.4s // 0 |
| 1099 add v20.4s,v16.4s,v6.4s |
| 1100 .inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b |
| 1101 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 1 |
| 1102 .inst 0x5e150060 //sha1c v0.16b,v3.16b,v21.4s |
| 1103 add v21.4s,v16.4s,v7.4s |
| 1104 .inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b |
| 1105 .inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b |
| 1106 .inst 0x5e280803 //sha1h v3.16b,v0.16b // 2 |
| 1107 .inst 0x5e140040 //sha1c v0.16b,v2.16b,v20.4s |
| 1108 add v20.4s,v16.4s,v4.4s |
| 1109 .inst 0x5e281885 //sha1su1 v5.16b,v4.16b |
| 1110 .inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b |
| 1111 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 3 |
| 1112 .inst 0x5e150060 //sha1c v0.16b,v3.16b,v21.4s |
| 1113 add v21.4s,v17.4s,v5.4s |
| 1114 .inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b |
| 1115 .inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b |
| 1116 .inst 0x5e280803 //sha1h v3.16b,v0.16b // 4 |
| 1117 .inst 0x5e140040 //sha1c v0.16b,v2.16b,v20.4s |
| 1118 add v20.4s,v17.4s,v6.4s |
| 1119 .inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b |
| 1120 .inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b |
| 1121 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 5 |
| 1122 .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s |
| 1123 add v21.4s,v17.4s,v7.4s |
| 1124 .inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b |
| 1125 .inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b |
| 1126 .inst 0x5e280803 //sha1h v3.16b,v0.16b // 6 |
| 1127 .inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s |
| 1128 add v20.4s,v17.4s,v4.4s |
| 1129 .inst 0x5e281885 //sha1su1 v5.16b,v4.16b |
| 1130 .inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b |
| 1131 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 7 |
| 1132 .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s |
| 1133 add v21.4s,v17.4s,v5.4s |
| 1134 .inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b |
| 1135 .inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b |
| 1136 .inst 0x5e280803 //sha1h v3.16b,v0.16b // 8 |
| 1137 .inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s |
| 1138 add v20.4s,v18.4s,v6.4s |
| 1139 .inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b |
| 1140 .inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b |
| 1141 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 9 |
| 1142 .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s |
| 1143 add v21.4s,v18.4s,v7.4s |
| 1144 .inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b |
| 1145 .inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b |
| 1146 .inst 0x5e280803 //sha1h v3.16b,v0.16b // 10 |
| 1147 .inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s |
| 1148 add v20.4s,v18.4s,v4.4s |
| 1149 .inst 0x5e281885 //sha1su1 v5.16b,v4.16b |
| 1150 .inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b |
| 1151 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 11 |
| 1152 .inst 0x5e152060 //sha1m v0.16b,v3.16b,v21.4s |
| 1153 add v21.4s,v18.4s,v5.4s |
| 1154 .inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b |
| 1155 .inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b |
| 1156 .inst 0x5e280803 //sha1h v3.16b,v0.16b // 12 |
| 1157 .inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s |
| 1158 add v20.4s,v18.4s,v6.4s |
| 1159 .inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b |
| 1160 .inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b |
| 1161 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 13 |
| 1162 .inst 0x5e152060 //sha1m v0.16b,v3.16b,v21.4s |
| 1163 add v21.4s,v19.4s,v7.4s |
| 1164 .inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b |
| 1165 .inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b |
| 1166 .inst 0x5e280803 //sha1h v3.16b,v0.16b // 14 |
| 1167 .inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s |
| 1168 add v20.4s,v19.4s,v4.4s |
| 1169 .inst 0x5e281885 //sha1su1 v5.16b,v4.16b |
| 1170 .inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b |
| 1171 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 15 |
| 1172 .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s |
| 1173 add v21.4s,v19.4s,v5.4s |
| 1174 .inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b |
| 1175 .inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b |
| 1176 .inst 0x5e280803 //sha1h v3.16b,v0.16b // 16 |
| 1177 .inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s |
| 1178 add v20.4s,v19.4s,v6.4s |
| 1179 .inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b |
| 1180 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 17 |
| 1181 .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s |
| 1182 add v21.4s,v19.4s,v7.4s |
| 1183 |
| 1184 .inst 0x5e280803 //sha1h v3.16b,v0.16b // 18 |
| 1185 .inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s |
| 1186 |
| 1187 .inst 0x5e280802 //sha1h v2.16b,v0.16b // 19 |
| 1188 .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s |
| 1189 |
| 1190 add v1.4s,v1.4s,v2.4s |
| 1191 add v0.4s,v0.4s,v22.4s |
| 1192 |
| 1193 cbnz x2,.Loop_hw |
| 1194 |
| 1195 st1 {v0.4s},[x0],#16 |
| 1196 st1 {v1.s}[0],[x0] |
| 1197 |
| 1198 ldr x29,[sp],#16 |
| 1199 ret |
| 1200 .size sha1_block_armv8,.-sha1_block_armv8 |
| 1201 .align 6 |
| 1202 .Lconst: |
| 1203 .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 //K_00_19 |
| 1204 .long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 //K_20_39 |
| 1205 .long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc //K_40_59 |
| 1206 .long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 //K_60_79 |
| 1207 .LOPENSSL_armcap_P: |
| 1208 .quad OPENSSL_armcap_P-. |
| 1209 .asciz "SHA1 block transform for ARMv8, CRYPTOGAMS by <appro@openssl.org>" |
| 1210 .align 2 |
| 1211 .comm OPENSSL_armcap_P,4,4 |
OLD | NEW |