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