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