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