13f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#include "arm_arch.h" 23f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 33f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.text 43f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 53f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.globl sha512_block_data_order 63f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.type sha512_block_data_order,%function 73f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.align 6 83f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Rootsha512_block_data_order: 93f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp x29,x30,[sp,#-128]! 103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x29,sp,#0 113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp x19,x20,[sp,#16] 133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp x21,x22,[sp,#32] 143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp x23,x24,[sp,#48] 153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp x25,x26,[sp,#64] 163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp x27,x28,[sp,#80] 173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root sub sp,sp,#4*8 183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x20,x21,[x0] // load context 203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x22,x23,[x0,#2*8] 213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x24,x25,[x0,#4*8] 223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x2,x1,x2,lsl#7 // end of input 233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x26,x27,[x0,#6*8] 243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root adr x30,K512 253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp x0,x2,[x29,#96] 263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.Loop: 283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x3,x4,[x1],#2*8 293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x19,[x30],#8 // *K++ 303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x21,x22 // magic seed 313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x1,[x29,#112] 323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifndef __ARMEB__ 333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev x3,x3 // 0 343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x24,#14 363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x19 // h+=K[i] 373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x6,x24,x24,ror#23 383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x25,x24 393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x19,x26,x24 403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x3 // h+=X[i] 413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x19 // Ch(e,f,g) 423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x20,x21 // a^b, b^c in next round 433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x6,ror#18 // Sigma1(e) 443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x6,x20,#28 453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x17 // h+=Ch(e,f,g) 463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x20,x20,ror#5 473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x16 // h+=Sigma1(e) 483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x28,x28,x19 // (b^c)&=(a^b) 493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x27 // d+=h 503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x28,x21 // Maj(a,b,c) 513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x6,x17,ror#34 // Sigma0(a) 523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x28 // h+=Maj(a,b,c) 533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x28,[x30],#8 // *K++, x19 in next round 543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root //add x27,x27,x17 // h+=Sigma0(a) 553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifndef __ARMEB__ 563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev x4,x4 // 1 573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x5,x6,[x1],#2*8 593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x17 // h+=Sigma0(a) 603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x23,#14 613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x28 // h+=K[i] 623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x7,x23,x23,ror#23 633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x24,x23 643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x28,x25,x23 653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x4 // h+=X[i] 663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x28 // Ch(e,f,g) 673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x27,x20 // a^b, b^c in next round 683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x7,ror#18 // Sigma1(e) 693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x7,x27,#28 703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x17 // h+=Ch(e,f,g) 713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x27,x27,ror#5 723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x16 // h+=Sigma1(e) 733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x19,x19,x28 // (b^c)&=(a^b) 743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x26 // d+=h 753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x19,x20 // Maj(a,b,c) 763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x7,x17,ror#34 // Sigma0(a) 773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x19 // h+=Maj(a,b,c) 783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x19,[x30],#8 // *K++, x28 in next round 793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root //add x26,x26,x17 // h+=Sigma0(a) 803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifndef __ARMEB__ 813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev x5,x5 // 2 823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x17 // h+=Sigma0(a) 843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x22,#14 853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x19 // h+=K[i] 863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x8,x22,x22,ror#23 873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x23,x22 883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x19,x24,x22 893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x5 // h+=X[i] 903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x19 // Ch(e,f,g) 913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x26,x27 // a^b, b^c in next round 923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x8,ror#18 // Sigma1(e) 933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x8,x26,#28 943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x17 // h+=Ch(e,f,g) 953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x26,x26,ror#5 963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x16 // h+=Sigma1(e) 973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x28,x28,x19 // (b^c)&=(a^b) 983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x25 // d+=h 993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x28,x27 // Maj(a,b,c) 1003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x8,x17,ror#34 // Sigma0(a) 1013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x28 // h+=Maj(a,b,c) 1023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x28,[x30],#8 // *K++, x19 in next round 1033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root //add x25,x25,x17 // h+=Sigma0(a) 1043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifndef __ARMEB__ 1053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev x6,x6 // 3 1063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 1073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x7,x8,[x1],#2*8 1083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x17 // h+=Sigma0(a) 1093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x21,#14 1103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x28 // h+=K[i] 1113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x9,x21,x21,ror#23 1123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x22,x21 1133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x28,x23,x21 1143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x6 // h+=X[i] 1153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x28 // Ch(e,f,g) 1163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x25,x26 // a^b, b^c in next round 1173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x9,ror#18 // Sigma1(e) 1183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x9,x25,#28 1193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x17 // h+=Ch(e,f,g) 1203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x25,x25,ror#5 1213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x16 // h+=Sigma1(e) 1223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x19,x19,x28 // (b^c)&=(a^b) 1233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x24 // d+=h 1243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x19,x26 // Maj(a,b,c) 1253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x9,x17,ror#34 // Sigma0(a) 1263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x19 // h+=Maj(a,b,c) 1273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x19,[x30],#8 // *K++, x28 in next round 1283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root //add x24,x24,x17 // h+=Sigma0(a) 1293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifndef __ARMEB__ 1303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev x7,x7 // 4 1313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 1323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x17 // h+=Sigma0(a) 1333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x20,#14 1343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x19 // h+=K[i] 1353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x10,x20,x20,ror#23 1363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x21,x20 1373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x19,x22,x20 1383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x7 // h+=X[i] 1393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x19 // Ch(e,f,g) 1403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x24,x25 // a^b, b^c in next round 1413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x10,ror#18 // Sigma1(e) 1423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x10,x24,#28 1433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x17 // h+=Ch(e,f,g) 1443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x24,x24,ror#5 1453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x16 // h+=Sigma1(e) 1463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x28,x28,x19 // (b^c)&=(a^b) 1473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x23 // d+=h 1483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x28,x25 // Maj(a,b,c) 1493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x10,x17,ror#34 // Sigma0(a) 1503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x28 // h+=Maj(a,b,c) 1513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x28,[x30],#8 // *K++, x19 in next round 1523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root //add x23,x23,x17 // h+=Sigma0(a) 1533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifndef __ARMEB__ 1543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev x8,x8 // 5 1553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 1563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x9,x10,[x1],#2*8 1573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x17 // h+=Sigma0(a) 1583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x27,#14 1593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x28 // h+=K[i] 1603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x11,x27,x27,ror#23 1613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x20,x27 1623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x28,x21,x27 1633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x8 // h+=X[i] 1643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x28 // Ch(e,f,g) 1653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x23,x24 // a^b, b^c in next round 1663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x11,ror#18 // Sigma1(e) 1673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x11,x23,#28 1683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x17 // h+=Ch(e,f,g) 1693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x23,x23,ror#5 1703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x16 // h+=Sigma1(e) 1713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x19,x19,x28 // (b^c)&=(a^b) 1723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x22 // d+=h 1733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x19,x24 // Maj(a,b,c) 1743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x11,x17,ror#34 // Sigma0(a) 1753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x19 // h+=Maj(a,b,c) 1763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x19,[x30],#8 // *K++, x28 in next round 1773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root //add x22,x22,x17 // h+=Sigma0(a) 1783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifndef __ARMEB__ 1793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev x9,x9 // 6 1803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 1813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x17 // h+=Sigma0(a) 1823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x26,#14 1833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x19 // h+=K[i] 1843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x12,x26,x26,ror#23 1853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x27,x26 1863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x19,x20,x26 1873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x9 // h+=X[i] 1883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x19 // Ch(e,f,g) 1893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x22,x23 // a^b, b^c in next round 1903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x12,ror#18 // Sigma1(e) 1913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x12,x22,#28 1923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x17 // h+=Ch(e,f,g) 1933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x22,x22,ror#5 1943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x16 // h+=Sigma1(e) 1953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x28,x28,x19 // (b^c)&=(a^b) 1963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x21 // d+=h 1973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x28,x23 // Maj(a,b,c) 1983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x12,x17,ror#34 // Sigma0(a) 1993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x28 // h+=Maj(a,b,c) 2003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x28,[x30],#8 // *K++, x19 in next round 2013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root //add x21,x21,x17 // h+=Sigma0(a) 2023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifndef __ARMEB__ 2033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev x10,x10 // 7 2043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 2053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x11,x12,[x1],#2*8 2063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x17 // h+=Sigma0(a) 2073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x25,#14 2083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x28 // h+=K[i] 2093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x13,x25,x25,ror#23 2103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x26,x25 2113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x28,x27,x25 2123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x10 // h+=X[i] 2133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x28 // Ch(e,f,g) 2143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x21,x22 // a^b, b^c in next round 2153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x13,ror#18 // Sigma1(e) 2163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x13,x21,#28 2173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x17 // h+=Ch(e,f,g) 2183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x21,x21,ror#5 2193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x16 // h+=Sigma1(e) 2203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x19,x19,x28 // (b^c)&=(a^b) 2213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x20 // d+=h 2223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x19,x22 // Maj(a,b,c) 2233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x13,x17,ror#34 // Sigma0(a) 2243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x19 // h+=Maj(a,b,c) 2253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x19,[x30],#8 // *K++, x28 in next round 2263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root //add x20,x20,x17 // h+=Sigma0(a) 2273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifndef __ARMEB__ 2283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev x11,x11 // 8 2293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 2303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x17 // h+=Sigma0(a) 2313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x24,#14 2323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x19 // h+=K[i] 2333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x14,x24,x24,ror#23 2343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x25,x24 2353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x19,x26,x24 2363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x11 // h+=X[i] 2373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x19 // Ch(e,f,g) 2383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x20,x21 // a^b, b^c in next round 2393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x14,ror#18 // Sigma1(e) 2403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x14,x20,#28 2413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x17 // h+=Ch(e,f,g) 2423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x20,x20,ror#5 2433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x16 // h+=Sigma1(e) 2443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x28,x28,x19 // (b^c)&=(a^b) 2453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x27 // d+=h 2463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x28,x21 // Maj(a,b,c) 2473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x14,x17,ror#34 // Sigma0(a) 2483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x28 // h+=Maj(a,b,c) 2493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x28,[x30],#8 // *K++, x19 in next round 2503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root //add x27,x27,x17 // h+=Sigma0(a) 2513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifndef __ARMEB__ 2523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev x12,x12 // 9 2533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 2543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x13,x14,[x1],#2*8 2553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x17 // h+=Sigma0(a) 2563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x23,#14 2573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x28 // h+=K[i] 2583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x15,x23,x23,ror#23 2593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x24,x23 2603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x28,x25,x23 2613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x12 // h+=X[i] 2623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x28 // Ch(e,f,g) 2633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x27,x20 // a^b, b^c in next round 2643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x15,ror#18 // Sigma1(e) 2653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x15,x27,#28 2663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x17 // h+=Ch(e,f,g) 2673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x27,x27,ror#5 2683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x16 // h+=Sigma1(e) 2693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x19,x19,x28 // (b^c)&=(a^b) 2703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x26 // d+=h 2713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x19,x20 // Maj(a,b,c) 2723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x15,x17,ror#34 // Sigma0(a) 2733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x19 // h+=Maj(a,b,c) 2743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x19,[x30],#8 // *K++, x28 in next round 2753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root //add x26,x26,x17 // h+=Sigma0(a) 2763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifndef __ARMEB__ 2773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev x13,x13 // 10 2783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 2793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x17 // h+=Sigma0(a) 2803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x22,#14 2813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x19 // h+=K[i] 2823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x0,x22,x22,ror#23 2833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x23,x22 2843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x19,x24,x22 2853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x13 // h+=X[i] 2863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x19 // Ch(e,f,g) 2873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x26,x27 // a^b, b^c in next round 2883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x0,ror#18 // Sigma1(e) 2893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x0,x26,#28 2903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x17 // h+=Ch(e,f,g) 2913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x26,x26,ror#5 2923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x16 // h+=Sigma1(e) 2933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x28,x28,x19 // (b^c)&=(a^b) 2943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x25 // d+=h 2953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x28,x27 // Maj(a,b,c) 2963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x0,x17,ror#34 // Sigma0(a) 2973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x28 // h+=Maj(a,b,c) 2983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x28,[x30],#8 // *K++, x19 in next round 2993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root //add x25,x25,x17 // h+=Sigma0(a) 3003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifndef __ARMEB__ 3013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev x14,x14 // 11 3023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 3033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x15,x0,[x1],#2*8 3043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x17 // h+=Sigma0(a) 3053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x6,[sp,#24] 3063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x21,#14 3073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x28 // h+=K[i] 3083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x6,x21,x21,ror#23 3093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x22,x21 3103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x28,x23,x21 3113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x14 // h+=X[i] 3123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x28 // Ch(e,f,g) 3133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x25,x26 // a^b, b^c in next round 3143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x6,ror#18 // Sigma1(e) 3153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x6,x25,#28 3163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x17 // h+=Ch(e,f,g) 3173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x25,x25,ror#5 3183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x16 // h+=Sigma1(e) 3193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x19,x19,x28 // (b^c)&=(a^b) 3203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x24 // d+=h 3213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x19,x26 // Maj(a,b,c) 3223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x6,x17,ror#34 // Sigma0(a) 3233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x19 // h+=Maj(a,b,c) 3243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x19,[x30],#8 // *K++, x28 in next round 3253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root //add x24,x24,x17 // h+=Sigma0(a) 3263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifndef __ARMEB__ 3273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev x15,x15 // 12 3283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 3293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x17 // h+=Sigma0(a) 3303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x7,[sp,#0] 3313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x20,#14 3323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x19 // h+=K[i] 3333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x7,x20,x20,ror#23 3343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x21,x20 3353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x19,x22,x20 3363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x15 // h+=X[i] 3373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x19 // Ch(e,f,g) 3383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x24,x25 // a^b, b^c in next round 3393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x7,ror#18 // Sigma1(e) 3403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x7,x24,#28 3413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x17 // h+=Ch(e,f,g) 3423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x24,x24,ror#5 3433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x16 // h+=Sigma1(e) 3443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x28,x28,x19 // (b^c)&=(a^b) 3453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x23 // d+=h 3463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x28,x25 // Maj(a,b,c) 3473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x7,x17,ror#34 // Sigma0(a) 3483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x28 // h+=Maj(a,b,c) 3493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x28,[x30],#8 // *K++, x19 in next round 3503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root //add x23,x23,x17 // h+=Sigma0(a) 3513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifndef __ARMEB__ 3523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev x0,x0 // 13 3533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 3543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x1,x2,[x1] 3553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x17 // h+=Sigma0(a) 3563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x8,[sp,#8] 3573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x27,#14 3583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x28 // h+=K[i] 3593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x8,x27,x27,ror#23 3603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x20,x27 3613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x28,x21,x27 3623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x0 // h+=X[i] 3633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x28 // Ch(e,f,g) 3643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x23,x24 // a^b, b^c in next round 3653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x8,ror#18 // Sigma1(e) 3663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x8,x23,#28 3673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x17 // h+=Ch(e,f,g) 3683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x23,x23,ror#5 3693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x16 // h+=Sigma1(e) 3703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x19,x19,x28 // (b^c)&=(a^b) 3713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x22 // d+=h 3723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x19,x24 // Maj(a,b,c) 3733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x8,x17,ror#34 // Sigma0(a) 3743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x19 // h+=Maj(a,b,c) 3753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x19,[x30],#8 // *K++, x28 in next round 3763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root //add x22,x22,x17 // h+=Sigma0(a) 3773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifndef __ARMEB__ 3783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev x1,x1 // 14 3793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 3803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x6,[sp,#24] 3813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x17 // h+=Sigma0(a) 3823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x9,[sp,#16] 3833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x26,#14 3843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x19 // h+=K[i] 3853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x9,x26,x26,ror#23 3863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x27,x26 3873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x19,x20,x26 3883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x1 // h+=X[i] 3893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x19 // Ch(e,f,g) 3903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x22,x23 // a^b, b^c in next round 3913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x9,ror#18 // Sigma1(e) 3923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x9,x22,#28 3933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x17 // h+=Ch(e,f,g) 3943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x22,x22,ror#5 3953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x16 // h+=Sigma1(e) 3963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x28,x28,x19 // (b^c)&=(a^b) 3973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x21 // d+=h 3983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x28,x23 // Maj(a,b,c) 3993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x9,x17,ror#34 // Sigma0(a) 4003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x28 // h+=Maj(a,b,c) 4013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x28,[x30],#8 // *K++, x19 in next round 4023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root //add x21,x21,x17 // h+=Sigma0(a) 4033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifndef __ARMEB__ 4043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev x2,x2 // 15 4053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 4063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x7,[sp,#0] 4073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x17 // h+=Sigma0(a) 4083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x10,[sp,#24] 4093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x25,#14 4103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x28 // h+=K[i] 4113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x9,x4,#1 4123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x26,x25 4133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x8,x1,#19 4143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x28,x27,x25 4153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x10,x21,#28 4163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x2 // h+=X[i] 4173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x25,ror#18 4183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x9,x9,x4,ror#8 4193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x28 // Ch(e,f,g) 4203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x21,x22 // a^b, b^c in next round 4213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x25,ror#41 // Sigma1(e) 4223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x10,x10,x21,ror#34 4233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x17 // h+=Ch(e,f,g) 4243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x19,x19,x28 // (b^c)&=(a^b) 4253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x8,x8,x1,ror#61 4263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x9,x9,x4,lsr#7 // sigma0(X[i+1]) 4273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x16 // h+=Sigma1(e) 4283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x19,x22 // Maj(a,b,c) 4293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x10,x21,ror#39 // Sigma0(a) 4303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x8,x8,x1,lsr#6 // sigma1(X[i+14]) 4313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x3,x3,x12 4323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x20 // d+=h 4333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x19 // h+=Maj(a,b,c) 4343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x19,[x30],#8 // *K++, x28 in next round 4353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x3,x3,x9 4363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x17 // h+=Sigma0(a) 4373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x3,x3,x8 4383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.Loop_16_xx: 4393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x8,[sp,#8] 4403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x11,[sp,#0] 4413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x24,#14 4423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x19 // h+=K[i] 4433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x10,x5,#1 4443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x25,x24 4453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x9,x2,#19 4463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x19,x26,x24 4473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x11,x20,#28 4483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x3 // h+=X[i] 4493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x24,ror#18 4503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x10,x10,x5,ror#8 4513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x19 // Ch(e,f,g) 4523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x20,x21 // a^b, b^c in next round 4533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x24,ror#41 // Sigma1(e) 4543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x11,x11,x20,ror#34 4553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x17 // h+=Ch(e,f,g) 4563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x28,x28,x19 // (b^c)&=(a^b) 4573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x9,x9,x2,ror#61 4583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x10,x10,x5,lsr#7 // sigma0(X[i+1]) 4593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x16 // h+=Sigma1(e) 4603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x28,x21 // Maj(a,b,c) 4613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x11,x20,ror#39 // Sigma0(a) 4623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x9,x9,x2,lsr#6 // sigma1(X[i+14]) 4633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x4,x4,x13 4643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x27 // d+=h 4653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x28 // h+=Maj(a,b,c) 4663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x28,[x30],#8 // *K++, x19 in next round 4673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x4,x4,x10 4683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x17 // h+=Sigma0(a) 4693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x4,x4,x9 4703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x9,[sp,#16] 4713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x12,[sp,#8] 4723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x23,#14 4733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x28 // h+=K[i] 4743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x11,x6,#1 4753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x24,x23 4763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x10,x3,#19 4773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x28,x25,x23 4783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x12,x27,#28 4793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x4 // h+=X[i] 4803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x23,ror#18 4813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x11,x11,x6,ror#8 4823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x28 // Ch(e,f,g) 4833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x27,x20 // a^b, b^c in next round 4843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x23,ror#41 // Sigma1(e) 4853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x12,x12,x27,ror#34 4863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x17 // h+=Ch(e,f,g) 4873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x19,x19,x28 // (b^c)&=(a^b) 4883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x10,x10,x3,ror#61 4893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x11,x11,x6,lsr#7 // sigma0(X[i+1]) 4903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x16 // h+=Sigma1(e) 4913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x19,x20 // Maj(a,b,c) 4923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x12,x27,ror#39 // Sigma0(a) 4933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x10,x10,x3,lsr#6 // sigma1(X[i+14]) 4943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x5,x5,x14 4953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x26 // d+=h 4963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x19 // h+=Maj(a,b,c) 4973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x19,[x30],#8 // *K++, x28 in next round 4983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x5,x5,x11 4993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x17 // h+=Sigma0(a) 5003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x5,x5,x10 5013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x10,[sp,#24] 5023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x13,[sp,#16] 5033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x22,#14 5043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x19 // h+=K[i] 5053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x12,x7,#1 5063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x23,x22 5073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x11,x4,#19 5083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x19,x24,x22 5093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x13,x26,#28 5103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x5 // h+=X[i] 5113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x22,ror#18 5123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x12,x12,x7,ror#8 5133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x19 // Ch(e,f,g) 5143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x26,x27 // a^b, b^c in next round 5153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x22,ror#41 // Sigma1(e) 5163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x13,x13,x26,ror#34 5173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x17 // h+=Ch(e,f,g) 5183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x28,x28,x19 // (b^c)&=(a^b) 5193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x11,x11,x4,ror#61 5203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x12,x12,x7,lsr#7 // sigma0(X[i+1]) 5213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x16 // h+=Sigma1(e) 5223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x28,x27 // Maj(a,b,c) 5233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x13,x26,ror#39 // Sigma0(a) 5243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x11,x11,x4,lsr#6 // sigma1(X[i+14]) 5253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x6,x6,x15 5263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x25 // d+=h 5273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x28 // h+=Maj(a,b,c) 5283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x28,[x30],#8 // *K++, x19 in next round 5293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x6,x6,x12 5303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x17 // h+=Sigma0(a) 5313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x6,x6,x11 5323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x11,[sp,#0] 5333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x14,[sp,#24] 5343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x21,#14 5353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x28 // h+=K[i] 5363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x13,x8,#1 5373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x22,x21 5383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x12,x5,#19 5393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x28,x23,x21 5403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x14,x25,#28 5413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x6 // h+=X[i] 5423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x21,ror#18 5433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x13,x13,x8,ror#8 5443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x28 // Ch(e,f,g) 5453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x25,x26 // a^b, b^c in next round 5463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x21,ror#41 // Sigma1(e) 5473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x14,x14,x25,ror#34 5483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x17 // h+=Ch(e,f,g) 5493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x19,x19,x28 // (b^c)&=(a^b) 5503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x12,x12,x5,ror#61 5513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x13,x13,x8,lsr#7 // sigma0(X[i+1]) 5523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x16 // h+=Sigma1(e) 5533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x19,x26 // Maj(a,b,c) 5543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x14,x25,ror#39 // Sigma0(a) 5553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x12,x12,x5,lsr#6 // sigma1(X[i+14]) 5563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x7,x7,x0 5573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x24 // d+=h 5583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x19 // h+=Maj(a,b,c) 5593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x19,[x30],#8 // *K++, x28 in next round 5603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x7,x7,x13 5613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x17 // h+=Sigma0(a) 5623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x7,x7,x12 5633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x12,[sp,#8] 5643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x15,[sp,#0] 5653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x20,#14 5663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x19 // h+=K[i] 5673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x14,x9,#1 5683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x21,x20 5693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x13,x6,#19 5703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x19,x22,x20 5713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x15,x24,#28 5723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x7 // h+=X[i] 5733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x20,ror#18 5743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x14,x14,x9,ror#8 5753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x19 // Ch(e,f,g) 5763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x24,x25 // a^b, b^c in next round 5773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x20,ror#41 // Sigma1(e) 5783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x15,x15,x24,ror#34 5793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x17 // h+=Ch(e,f,g) 5803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x28,x28,x19 // (b^c)&=(a^b) 5813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x13,x13,x6,ror#61 5823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x14,x14,x9,lsr#7 // sigma0(X[i+1]) 5833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x16 // h+=Sigma1(e) 5843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x28,x25 // Maj(a,b,c) 5853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x15,x24,ror#39 // Sigma0(a) 5863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x13,x13,x6,lsr#6 // sigma1(X[i+14]) 5873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x8,x8,x1 5883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x23 // d+=h 5893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x28 // h+=Maj(a,b,c) 5903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x28,[x30],#8 // *K++, x19 in next round 5913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x8,x8,x14 5923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x17 // h+=Sigma0(a) 5933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x8,x8,x13 5943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x13,[sp,#16] 5953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x0,[sp,#8] 5963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x27,#14 5973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x28 // h+=K[i] 5983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x15,x10,#1 5993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x20,x27 6003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x14,x7,#19 6013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x28,x21,x27 6023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x0,x23,#28 6033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x8 // h+=X[i] 6043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x27,ror#18 6053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x15,x15,x10,ror#8 6063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x28 // Ch(e,f,g) 6073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x23,x24 // a^b, b^c in next round 6083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x27,ror#41 // Sigma1(e) 6093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x0,x0,x23,ror#34 6103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x17 // h+=Ch(e,f,g) 6113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x19,x19,x28 // (b^c)&=(a^b) 6123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x14,x14,x7,ror#61 6133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x15,x15,x10,lsr#7 // sigma0(X[i+1]) 6143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x16 // h+=Sigma1(e) 6153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x19,x24 // Maj(a,b,c) 6163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x0,x23,ror#39 // Sigma0(a) 6173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x14,x14,x7,lsr#6 // sigma1(X[i+14]) 6183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x9,x9,x2 6193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x22 // d+=h 6203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x19 // h+=Maj(a,b,c) 6213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x19,[x30],#8 // *K++, x28 in next round 6223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x9,x9,x15 6233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x17 // h+=Sigma0(a) 6243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x9,x9,x14 6253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x14,[sp,#24] 6263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x1,[sp,#16] 6273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x26,#14 6283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x19 // h+=K[i] 6293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x0,x11,#1 6303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x27,x26 6313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x15,x8,#19 6323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x19,x20,x26 6333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x1,x22,#28 6343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x9 // h+=X[i] 6353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x26,ror#18 6363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x0,x0,x11,ror#8 6373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x19 // Ch(e,f,g) 6383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x22,x23 // a^b, b^c in next round 6393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x26,ror#41 // Sigma1(e) 6403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x1,x1,x22,ror#34 6413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x17 // h+=Ch(e,f,g) 6423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x28,x28,x19 // (b^c)&=(a^b) 6433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x15,x15,x8,ror#61 6443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x0,x0,x11,lsr#7 // sigma0(X[i+1]) 6453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x16 // h+=Sigma1(e) 6463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x28,x23 // Maj(a,b,c) 6473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x1,x22,ror#39 // Sigma0(a) 6483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x15,x15,x8,lsr#6 // sigma1(X[i+14]) 6493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x10,x10,x3 6503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x21 // d+=h 6513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x28 // h+=Maj(a,b,c) 6523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x28,[x30],#8 // *K++, x19 in next round 6533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x10,x10,x0 6543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x17 // h+=Sigma0(a) 6553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x10,x10,x15 6563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x15,[sp,#0] 6573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x2,[sp,#24] 6583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x25,#14 6593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x28 // h+=K[i] 6603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x1,x12,#1 6613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x26,x25 6623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x0,x9,#19 6633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x28,x27,x25 6643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x2,x21,#28 6653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x10 // h+=X[i] 6663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x25,ror#18 6673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x1,x1,x12,ror#8 6683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x28 // Ch(e,f,g) 6693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x21,x22 // a^b, b^c in next round 6703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x25,ror#41 // Sigma1(e) 6713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x2,x2,x21,ror#34 6723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x17 // h+=Ch(e,f,g) 6733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x19,x19,x28 // (b^c)&=(a^b) 6743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x0,x0,x9,ror#61 6753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x1,x1,x12,lsr#7 // sigma0(X[i+1]) 6763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x16 // h+=Sigma1(e) 6773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x19,x22 // Maj(a,b,c) 6783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x2,x21,ror#39 // Sigma0(a) 6793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x0,x0,x9,lsr#6 // sigma1(X[i+14]) 6803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x11,x11,x4 6813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x20 // d+=h 6823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x19 // h+=Maj(a,b,c) 6833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x19,[x30],#8 // *K++, x28 in next round 6843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x11,x11,x1 6853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x17 // h+=Sigma0(a) 6863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x11,x11,x0 6873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x0,[sp,#8] 6883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x3,[sp,#0] 6893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x24,#14 6903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x19 // h+=K[i] 6913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x2,x13,#1 6923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x25,x24 6933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x1,x10,#19 6943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x19,x26,x24 6953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x3,x20,#28 6963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x11 // h+=X[i] 6973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x24,ror#18 6983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x2,x2,x13,ror#8 6993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x19 // Ch(e,f,g) 7003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x20,x21 // a^b, b^c in next round 7013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x24,ror#41 // Sigma1(e) 7023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x3,x3,x20,ror#34 7033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x17 // h+=Ch(e,f,g) 7043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x28,x28,x19 // (b^c)&=(a^b) 7053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x1,x1,x10,ror#61 7063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x2,x2,x13,lsr#7 // sigma0(X[i+1]) 7073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x16 // h+=Sigma1(e) 7083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x28,x21 // Maj(a,b,c) 7093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x3,x20,ror#39 // Sigma0(a) 7103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x1,x1,x10,lsr#6 // sigma1(X[i+14]) 7113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x12,x12,x5 7123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x27 // d+=h 7133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x28 // h+=Maj(a,b,c) 7143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x28,[x30],#8 // *K++, x19 in next round 7153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x12,x12,x2 7163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x17 // h+=Sigma0(a) 7173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x12,x12,x1 7183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x1,[sp,#16] 7193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x4,[sp,#8] 7203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x23,#14 7213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x28 // h+=K[i] 7223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x3,x14,#1 7233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x24,x23 7243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x2,x11,#19 7253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x28,x25,x23 7263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x4,x27,#28 7273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x12 // h+=X[i] 7283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x23,ror#18 7293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x3,x3,x14,ror#8 7303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x28 // Ch(e,f,g) 7313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x27,x20 // a^b, b^c in next round 7323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x23,ror#41 // Sigma1(e) 7333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x4,x4,x27,ror#34 7343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x17 // h+=Ch(e,f,g) 7353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x19,x19,x28 // (b^c)&=(a^b) 7363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x2,x2,x11,ror#61 7373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x3,x3,x14,lsr#7 // sigma0(X[i+1]) 7383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x16 // h+=Sigma1(e) 7393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x19,x20 // Maj(a,b,c) 7403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x4,x27,ror#39 // Sigma0(a) 7413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x2,x2,x11,lsr#6 // sigma1(X[i+14]) 7423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x13,x13,x6 7433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x26 // d+=h 7443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x19 // h+=Maj(a,b,c) 7453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x19,[x30],#8 // *K++, x28 in next round 7463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x13,x13,x3 7473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x17 // h+=Sigma0(a) 7483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x13,x13,x2 7493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x2,[sp,#24] 7503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x5,[sp,#16] 7513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x22,#14 7523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x19 // h+=K[i] 7533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x4,x15,#1 7543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x23,x22 7553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x3,x12,#19 7563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x19,x24,x22 7573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x5,x26,#28 7583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x13 // h+=X[i] 7593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x22,ror#18 7603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x4,x4,x15,ror#8 7613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x19 // Ch(e,f,g) 7623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x26,x27 // a^b, b^c in next round 7633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x22,ror#41 // Sigma1(e) 7643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x5,x5,x26,ror#34 7653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x17 // h+=Ch(e,f,g) 7663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x28,x28,x19 // (b^c)&=(a^b) 7673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x3,x3,x12,ror#61 7683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x4,x4,x15,lsr#7 // sigma0(X[i+1]) 7693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x16 // h+=Sigma1(e) 7703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x28,x27 // Maj(a,b,c) 7713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x5,x26,ror#39 // Sigma0(a) 7723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x3,x3,x12,lsr#6 // sigma1(X[i+14]) 7733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x14,x14,x7 7743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x25 // d+=h 7753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x28 // h+=Maj(a,b,c) 7763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x28,[x30],#8 // *K++, x19 in next round 7773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x14,x14,x4 7783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x17 // h+=Sigma0(a) 7793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x14,x14,x3 7803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x3,[sp,#0] 7813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x6,[sp,#24] 7823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x21,#14 7833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x28 // h+=K[i] 7843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x5,x0,#1 7853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x22,x21 7863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x4,x13,#19 7873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x28,x23,x21 7883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x6,x25,#28 7893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x14 // h+=X[i] 7903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x21,ror#18 7913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x5,x5,x0,ror#8 7923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x28 // Ch(e,f,g) 7933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x25,x26 // a^b, b^c in next round 7943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x21,ror#41 // Sigma1(e) 7953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x6,x6,x25,ror#34 7963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x17 // h+=Ch(e,f,g) 7973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x19,x19,x28 // (b^c)&=(a^b) 7983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x4,x4,x13,ror#61 7993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x5,x5,x0,lsr#7 // sigma0(X[i+1]) 8003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x16 // h+=Sigma1(e) 8013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x19,x26 // Maj(a,b,c) 8023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x6,x25,ror#39 // Sigma0(a) 8033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x4,x4,x13,lsr#6 // sigma1(X[i+14]) 8043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x15,x15,x8 8053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x24 // d+=h 8063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x19 // h+=Maj(a,b,c) 8073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x19,[x30],#8 // *K++, x28 in next round 8083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x15,x15,x5 8093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x17 // h+=Sigma0(a) 8103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x15,x15,x4 8113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x4,[sp,#8] 8123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x7,[sp,#0] 8133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x20,#14 8143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x19 // h+=K[i] 8153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x6,x1,#1 8163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x21,x20 8173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x5,x14,#19 8183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x19,x22,x20 8193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x7,x24,#28 8203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x15 // h+=X[i] 8213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x20,ror#18 8223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x6,x6,x1,ror#8 8233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x19 // Ch(e,f,g) 8243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x24,x25 // a^b, b^c in next round 8253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x20,ror#41 // Sigma1(e) 8263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x7,x7,x24,ror#34 8273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x17 // h+=Ch(e,f,g) 8283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x28,x28,x19 // (b^c)&=(a^b) 8293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x5,x5,x14,ror#61 8303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x6,x6,x1,lsr#7 // sigma0(X[i+1]) 8313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x16 // h+=Sigma1(e) 8323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x28,x25 // Maj(a,b,c) 8333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x7,x24,ror#39 // Sigma0(a) 8343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x5,x5,x14,lsr#6 // sigma1(X[i+14]) 8353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x0,x0,x9 8363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x23 // d+=h 8373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x28 // h+=Maj(a,b,c) 8383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x28,[x30],#8 // *K++, x19 in next round 8393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x0,x0,x6 8403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x17 // h+=Sigma0(a) 8413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x0,x0,x5 8423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x5,[sp,#16] 8433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x8,[sp,#8] 8443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x27,#14 8453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x28 // h+=K[i] 8463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x7,x2,#1 8473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x20,x27 8483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x6,x15,#19 8493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x28,x21,x27 8503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x8,x23,#28 8513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x0 // h+=X[i] 8523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x27,ror#18 8533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x7,x7,x2,ror#8 8543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x28 // Ch(e,f,g) 8553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x23,x24 // a^b, b^c in next round 8563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x27,ror#41 // Sigma1(e) 8573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x8,x8,x23,ror#34 8583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x17 // h+=Ch(e,f,g) 8593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x19,x19,x28 // (b^c)&=(a^b) 8603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x6,x6,x15,ror#61 8613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x7,x7,x2,lsr#7 // sigma0(X[i+1]) 8623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x16 // h+=Sigma1(e) 8633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x19,x24 // Maj(a,b,c) 8643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x8,x23,ror#39 // Sigma0(a) 8653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x6,x6,x15,lsr#6 // sigma1(X[i+14]) 8663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x1,x1,x10 8673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x22 // d+=h 8683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x19 // h+=Maj(a,b,c) 8693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x19,[x30],#8 // *K++, x28 in next round 8703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x1,x1,x7 8713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x17 // h+=Sigma0(a) 8723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x1,x1,x6 8733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x6,[sp,#24] 8743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x9,[sp,#16] 8753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x26,#14 8763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x19 // h+=K[i] 8773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x8,x3,#1 8783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x27,x26 8793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x7,x0,#19 8803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x19,x20,x26 8813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x9,x22,#28 8823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x1 // h+=X[i] 8833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x26,ror#18 8843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x8,x8,x3,ror#8 8853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x19 // Ch(e,f,g) 8863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x22,x23 // a^b, b^c in next round 8873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x26,ror#41 // Sigma1(e) 8883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x9,x9,x22,ror#34 8893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x17 // h+=Ch(e,f,g) 8903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x28,x28,x19 // (b^c)&=(a^b) 8913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x7,x7,x0,ror#61 8923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x8,x8,x3,lsr#7 // sigma0(X[i+1]) 8933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x16 // h+=Sigma1(e) 8943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x28,x23 // Maj(a,b,c) 8953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x9,x22,ror#39 // Sigma0(a) 8963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x7,x7,x0,lsr#6 // sigma1(X[i+14]) 8973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x2,x2,x11 8983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x21 // d+=h 8993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x28 // h+=Maj(a,b,c) 9003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x28,[x30],#8 // *K++, x19 in next round 9013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x2,x2,x8 9023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x17 // h+=Sigma0(a) 9033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x2,x2,x7 9043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x7,[sp,#0] 9053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str x10,[sp,#24] 9063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x16,x25,#14 9073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x28 // h+=K[i] 9083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x9,x4,#1 9093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x17,x26,x25 9103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x8,x1,#19 9113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic x28,x27,x25 9123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x10,x21,#28 9133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x2 // h+=X[i] 9143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x25,ror#18 9153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x9,x9,x4,ror#8 9163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr x17,x17,x28 // Ch(e,f,g) 9173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x28,x21,x22 // a^b, b^c in next round 9183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x16,x16,x25,ror#41 // Sigma1(e) 9193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x10,x10,x21,ror#34 9203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x17 // h+=Ch(e,f,g) 9213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and x19,x19,x28 // (b^c)&=(a^b) 9223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x8,x8,x1,ror#61 9233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x9,x9,x4,lsr#7 // sigma0(X[i+1]) 9243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x16 // h+=Sigma1(e) 9253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x19,x19,x22 // Maj(a,b,c) 9263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x17,x10,x21,ror#39 // Sigma0(a) 9273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor x8,x8,x1,lsr#6 // sigma1(X[i+14]) 9283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x3,x3,x12 9293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x20 // d+=h 9303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x19 // h+=Maj(a,b,c) 9313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x19,[x30],#8 // *K++, x28 in next round 9323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x3,x3,x9 9333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x17 // h+=Sigma0(a) 9343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x3,x3,x8 9353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root cbnz x19,.Loop_16_xx 9363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 9373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x0,x2,[x29,#96] 9383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x1,[x29,#112] 9393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root sub x30,x30,#648 // rewind 9403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 9413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x3,x4,[x0] 9423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x5,x6,[x0,#2*8] 9433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x1,x1,#14*8 // advance input pointer 9443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x7,x8,[x0,#4*8] 9453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x20,x20,x3 9463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x9,x10,[x0,#6*8] 9473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x21,x21,x4 9483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x22,x22,x5 9493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x23,x23,x6 9503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp x20,x21,[x0] 9513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x24,x24,x7 9523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x25,x25,x8 9533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp x22,x23,[x0,#2*8] 9543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x26,x26,x9 9553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x27,x27,x10 9563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root cmp x1,x2 9573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp x24,x25,[x0,#4*8] 9583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp x26,x27,[x0,#6*8] 9593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root b.ne .Loop 9603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 9613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x19,x20,[x29,#16] 9623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add sp,sp,#4*8 9633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x21,x22,[x29,#32] 9643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x23,x24,[x29,#48] 9653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x25,x26,[x29,#64] 9663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x27,x28,[x29,#80] 9673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x29,x30,[sp],#128 9683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ret 9693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.size sha512_block_data_order,.-sha512_block_data_order 9703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 9713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.align 6 9723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.type K512,%object 9733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny RootK512: 9743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x428a2f98d728ae22,0x7137449123ef65cd 9753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc 9763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x3956c25bf348b538,0x59f111f1b605d019 9773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 9783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0xd807aa98a3030242,0x12835b0145706fbe 9793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 9803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 9813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x9bdc06a725c71235,0xc19bf174cf692694 9823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 9833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65 9843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 9853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 9863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x983e5152ee66dfab,0xa831c66d2db43210 9873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 9883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 9893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x06ca6351e003826f,0x142929670a0e6e70 9903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 9913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df 9923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x650a73548baf63de,0x766a0abb3c77b2a8 9933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x81c2c92e47edaee6,0x92722c851482353b 9943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 9953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0xc24b8b70d0f89791,0xc76c51a30654be30 9963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0xd192e819d6ef5218,0xd69906245565a910 9973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0xf40e35855771202a,0x106aa07032bbd1b8 9983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 9993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 10003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb 10013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 10023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x748f82ee5defb2fc,0x78a5636f43172f60 10033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x84c87814a1f0ab72,0x8cc702081a6439ec 10043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x90befffa23631e28,0xa4506cebde82bde9 10053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0xbef9a3f7b2c67915,0xc67178f2e372532b 10063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0xca273eceea26619c,0xd186b8c721c0c207 10073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 10083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x06f067aa72176fba,0x0a637dc5a2c898a6 10093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x113f9804bef90dae,0x1b710b35131c471b 10103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x28db77f523047d84,0x32caab7b40c72493 10113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c 10123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a 10133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 10143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad 0 // terminator 10153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.size K512,.-K512 10163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.align 3 10173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.LOPENSSL_armcap_P: 10183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .quad OPENSSL_armcap_P-. 10193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.asciz "SHA512 block transform for ARMv8, CRYPTOGAMS by <appro@openssl.org>" 10203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.align 2 10213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.comm OPENSSL_armcap_P,4,4 1022