13f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#include "arm_arch.h" 23f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 33f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.text 43f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 53f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.globl sha1_block_data_order 63f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.type sha1_block_data_order,%function 73f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.align 6 83f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Rootsha1_block_data_order: 93f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x16,.LOPENSSL_armcap_P 103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root adr x17,.LOPENSSL_armcap_P 113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x16,x16,x17 123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr w16,[x16] 133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root tst w16,#ARMV8_SHA1 143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root b.ne .Lv8_entry 153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp x29,x30,[sp,#-96]! 173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x29,sp,#0 183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp x19,x20,[sp,#16] 193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp x21,x22,[sp,#32] 203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp x23,x24,[sp,#48] 213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp x25,x26,[sp,#64] 223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp x27,x28,[sp,#80] 233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp w20,w21,[x0] 253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp w22,w23,[x0,#8] 263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr w24,[x0,#16] 273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.Loop: 293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x3,[x1],#64 303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root movz w28,#0x7999 313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root sub x2,x2,#1 323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root movk w28,#0x5a82,lsl#16 333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifdef __ARMEB__ 343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x3,x3,#32 353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else 363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev32 x3,x3 373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w28 // warm it up 393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w3 403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root lsr x4,x3,#32 413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x5,[x1,#-56] 423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w23,w21 433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w22,w21 443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w20,#27 453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w28 // future e+=K 463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w27 // e+=rot(a,5) 483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w21,w21,#2 493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w4 // future e+=X[i] 503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w25 // e+=F(b,c,d) 513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifdef __ARMEB__ 523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x5,x5,#32 533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else 543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev32 x5,x5 553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w22,w20 573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w21,w20 583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w24,#27 593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w28 // future e+=K 603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w27 // e+=rot(a,5) 623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w20,w20,#2 633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w5 // future e+=X[i] 643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w25 // e+=F(b,c,d) 653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root lsr x6,x5,#32 663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x7,[x1,#-48] 673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w21,w24 683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w20,w24 693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w23,#27 703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w28 // future e+=K 713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w27 // e+=rot(a,5) 733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w24,w24,#2 743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w6 // future e+=X[i] 753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w25 // e+=F(b,c,d) 763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifdef __ARMEB__ 773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x7,x7,#32 783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else 793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev32 x7,x7 803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w20,w23 823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w24,w23 833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w22,#27 843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w28 // future e+=K 853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w27 // e+=rot(a,5) 873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w23,w23,#2 883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w7 // future e+=X[i] 893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w25 // e+=F(b,c,d) 903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root lsr x8,x7,#32 913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x9,[x1,#-40] 923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w24,w22 933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w23,w22 943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w21,#27 953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w28 // future e+=K 963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w27 // e+=rot(a,5) 983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w22,w22,#2 993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w8 // future e+=X[i] 1003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w25 // e+=F(b,c,d) 1013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifdef __ARMEB__ 1023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x9,x9,#32 1033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else 1043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev32 x9,x9 1053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 1063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w23,w21 1073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w22,w21 1083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w20,#27 1093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w28 // future e+=K 1103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 1113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w27 // e+=rot(a,5) 1123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w21,w21,#2 1133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w9 // future e+=X[i] 1143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w25 // e+=F(b,c,d) 1153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root lsr x10,x9,#32 1163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x11,[x1,#-32] 1173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w22,w20 1183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w21,w20 1193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w24,#27 1203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w28 // future e+=K 1213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 1223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w27 // e+=rot(a,5) 1233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w20,w20,#2 1243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w10 // future e+=X[i] 1253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w25 // e+=F(b,c,d) 1263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifdef __ARMEB__ 1273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x11,x11,#32 1283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else 1293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev32 x11,x11 1303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 1313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w21,w24 1323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w20,w24 1333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w23,#27 1343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w28 // future e+=K 1353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 1363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w27 // e+=rot(a,5) 1373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w24,w24,#2 1383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w11 // future e+=X[i] 1393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w25 // e+=F(b,c,d) 1403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root lsr x12,x11,#32 1413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x13,[x1,#-24] 1423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w20,w23 1433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w24,w23 1443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w22,#27 1453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w28 // future e+=K 1463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 1473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w27 // e+=rot(a,5) 1483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w23,w23,#2 1493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w12 // future e+=X[i] 1503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w25 // e+=F(b,c,d) 1513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifdef __ARMEB__ 1523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x13,x13,#32 1533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else 1543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev32 x13,x13 1553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 1563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w24,w22 1573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w23,w22 1583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w21,#27 1593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w28 // future e+=K 1603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 1613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w27 // e+=rot(a,5) 1623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w22,w22,#2 1633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w13 // future e+=X[i] 1643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w25 // e+=F(b,c,d) 1653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root lsr x14,x13,#32 1663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x15,[x1,#-16] 1673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w23,w21 1683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w22,w21 1693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w20,#27 1703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w28 // future e+=K 1713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 1723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w27 // e+=rot(a,5) 1733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w21,w21,#2 1743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w14 // future e+=X[i] 1753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w25 // e+=F(b,c,d) 1763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifdef __ARMEB__ 1773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x15,x15,#32 1783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else 1793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev32 x15,x15 1803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 1813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w22,w20 1823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w21,w20 1833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w24,#27 1843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w28 // future e+=K 1853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 1863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w27 // e+=rot(a,5) 1873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w20,w20,#2 1883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w15 // future e+=X[i] 1893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w25 // e+=F(b,c,d) 1903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root lsr x16,x15,#32 1913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x17,[x1,#-8] 1923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w21,w24 1933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w20,w24 1943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w23,#27 1953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w28 // future e+=K 1963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 1973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w27 // e+=rot(a,5) 1983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w24,w24,#2 1993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w16 // future e+=X[i] 2003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w25 // e+=F(b,c,d) 2013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifdef __ARMEB__ 2023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror x17,x17,#32 2033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else 2043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev32 x17,x17 2053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 2063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w20,w23 2073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w24,w23 2083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w22,#27 2093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w28 // future e+=K 2103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 2113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w27 // e+=rot(a,5) 2123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w23,w23,#2 2133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w17 // future e+=X[i] 2143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w25 // e+=F(b,c,d) 2153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root lsr x19,x17,#32 2163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w3,w3,w5 2173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w24,w22 2183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w23,w22 2193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w21,#27 2203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w3,w3,w11 2213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w28 // future e+=K 2223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 2233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w27 // e+=rot(a,5) 2243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w3,w3,w16 2253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w22,w22,#2 2263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w19 // future e+=X[i] 2273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w25 // e+=F(b,c,d) 2283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w3,w3,#31 2293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w4,w4,w6 2303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w23,w21 2313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w22,w21 2323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w20,#27 2333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w4,w4,w12 2343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w28 // future e+=K 2353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 2363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w27 // e+=rot(a,5) 2373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w4,w4,w17 2383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w21,w21,#2 2393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w3 // future e+=X[i] 2403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w25 // e+=F(b,c,d) 2413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w4,w4,#31 2423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w5,w5,w7 2433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w22,w20 2443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w21,w20 2453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w24,#27 2463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w5,w5,w13 2473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w28 // future e+=K 2483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 2493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w27 // e+=rot(a,5) 2503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w5,w5,w19 2513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w20,w20,#2 2523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w4 // future e+=X[i] 2533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w25 // e+=F(b,c,d) 2543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w5,w5,#31 2553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w6,w6,w8 2563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w21,w24 2573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w20,w24 2583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w23,#27 2593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w6,w6,w14 2603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w28 // future e+=K 2613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 2623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w27 // e+=rot(a,5) 2633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w6,w6,w3 2643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w24,w24,#2 2653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w5 // future e+=X[i] 2663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w25 // e+=F(b,c,d) 2673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w6,w6,#31 2683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w7,w7,w9 2693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w20,w23 2703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w24,w23 2713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w22,#27 2723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w7,w7,w15 2733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w28 // future e+=K 2743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 2753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w27 // e+=rot(a,5) 2763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w7,w7,w4 2773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w23,w23,#2 2783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w6 // future e+=X[i] 2793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w25 // e+=F(b,c,d) 2803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w7,w7,#31 2813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root movz w28,#0xeba1 2823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root movk w28,#0x6ed9,lsl#16 2833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w8,w8,w10 2843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bic w25,w24,w22 2853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w23,w22 2863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w21,#27 2873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w8,w8,w16 2883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w28 // future e+=K 2893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 2903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w27 // e+=rot(a,5) 2913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w8,w8,w5 2923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w22,w22,#2 2933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w7 // future e+=X[i] 2943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w25 // e+=F(b,c,d) 2953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w8,w8,#31 2963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w9,w9,w11 2973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w23,w21 2983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w20,#27 2993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w28 // future e+=K 3003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w9,w9,w17 3013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w22 3023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w27 // e+=rot(a,5) 3033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w21,w21,#2 3043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w9,w9,w6 3053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w8 // future e+=X[i] 3063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w25 // e+=F(b,c,d) 3073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w9,w9,#31 3083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w10,w10,w12 3093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w22,w20 3103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w24,#27 3113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w28 // future e+=K 3123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w10,w10,w19 3133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w21 3143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w27 // e+=rot(a,5) 3153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w20,w20,#2 3163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w10,w10,w7 3173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w9 // future e+=X[i] 3183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w25 // e+=F(b,c,d) 3193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w10,w10,#31 3203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w11,w11,w13 3213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w21,w24 3223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w23,#27 3233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w28 // future e+=K 3243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w11,w11,w3 3253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w20 3263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w27 // e+=rot(a,5) 3273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w24,w24,#2 3283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w11,w11,w8 3293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w10 // future e+=X[i] 3303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w25 // e+=F(b,c,d) 3313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w11,w11,#31 3323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w12,w12,w14 3333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w20,w23 3343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w22,#27 3353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w28 // future e+=K 3363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w12,w12,w4 3373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w24 3383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w27 // e+=rot(a,5) 3393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w23,w23,#2 3403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w12,w12,w9 3413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w11 // future e+=X[i] 3423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w25 // e+=F(b,c,d) 3433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w12,w12,#31 3443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w13,w13,w15 3453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w24,w22 3463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w21,#27 3473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w28 // future e+=K 3483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w13,w13,w5 3493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w23 3503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w27 // e+=rot(a,5) 3513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w22,w22,#2 3523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w13,w13,w10 3533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w12 // future e+=X[i] 3543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w25 // e+=F(b,c,d) 3553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w13,w13,#31 3563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w14,w14,w16 3573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w23,w21 3583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w20,#27 3593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w28 // future e+=K 3603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w14,w14,w6 3613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w22 3623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w27 // e+=rot(a,5) 3633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w21,w21,#2 3643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w14,w14,w11 3653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w13 // future e+=X[i] 3663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w25 // e+=F(b,c,d) 3673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w14,w14,#31 3683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w15,w15,w17 3693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w22,w20 3703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w24,#27 3713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w28 // future e+=K 3723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w15,w15,w7 3733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w21 3743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w27 // e+=rot(a,5) 3753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w20,w20,#2 3763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w15,w15,w12 3773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w14 // future e+=X[i] 3783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w25 // e+=F(b,c,d) 3793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w15,w15,#31 3803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w16,w16,w19 3813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w21,w24 3823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w23,#27 3833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w28 // future e+=K 3843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w16,w16,w8 3853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w20 3863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w27 // e+=rot(a,5) 3873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w24,w24,#2 3883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w16,w16,w13 3893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w15 // future e+=X[i] 3903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w25 // e+=F(b,c,d) 3913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w16,w16,#31 3923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w17,w17,w3 3933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w20,w23 3943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w22,#27 3953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w28 // future e+=K 3963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w17,w17,w9 3973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w24 3983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w27 // e+=rot(a,5) 3993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w23,w23,#2 4003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w17,w17,w14 4013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w16 // future e+=X[i] 4023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w25 // e+=F(b,c,d) 4033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w17,w17,#31 4043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w19,w19,w4 4053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w24,w22 4063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w21,#27 4073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w28 // future e+=K 4083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w19,w19,w10 4093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w23 4103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w27 // e+=rot(a,5) 4113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w22,w22,#2 4123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w19,w19,w15 4133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w17 // future e+=X[i] 4143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w25 // e+=F(b,c,d) 4153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w19,w19,#31 4163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w3,w3,w5 4173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w23,w21 4183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w20,#27 4193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w28 // future e+=K 4203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w3,w3,w11 4213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w22 4223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w27 // e+=rot(a,5) 4233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w21,w21,#2 4243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w3,w3,w16 4253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w19 // future e+=X[i] 4263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w25 // e+=F(b,c,d) 4273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w3,w3,#31 4283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w4,w4,w6 4293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w22,w20 4303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w24,#27 4313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w28 // future e+=K 4323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w4,w4,w12 4333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w21 4343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w27 // e+=rot(a,5) 4353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w20,w20,#2 4363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w4,w4,w17 4373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w3 // future e+=X[i] 4383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w25 // e+=F(b,c,d) 4393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w4,w4,#31 4403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w5,w5,w7 4413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w21,w24 4423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w23,#27 4433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w28 // future e+=K 4443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w5,w5,w13 4453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w20 4463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w27 // e+=rot(a,5) 4473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w24,w24,#2 4483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w5,w5,w19 4493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w4 // future e+=X[i] 4503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w25 // e+=F(b,c,d) 4513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w5,w5,#31 4523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w6,w6,w8 4533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w20,w23 4543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w22,#27 4553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w28 // future e+=K 4563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w6,w6,w14 4573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w24 4583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w27 // e+=rot(a,5) 4593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w23,w23,#2 4603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w6,w6,w3 4613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w5 // future e+=X[i] 4623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w25 // e+=F(b,c,d) 4633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w6,w6,#31 4643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w7,w7,w9 4653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w24,w22 4663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w21,#27 4673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w28 // future e+=K 4683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w7,w7,w15 4693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w23 4703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w27 // e+=rot(a,5) 4713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w22,w22,#2 4723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w7,w7,w4 4733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w6 // future e+=X[i] 4743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w25 // e+=F(b,c,d) 4753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w7,w7,#31 4763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w8,w8,w10 4773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w23,w21 4783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w20,#27 4793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w28 // future e+=K 4803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w8,w8,w16 4813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w22 4823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w27 // e+=rot(a,5) 4833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w21,w21,#2 4843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w8,w8,w5 4853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w7 // future e+=X[i] 4863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w25 // e+=F(b,c,d) 4873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w8,w8,#31 4883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w9,w9,w11 4893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w22,w20 4903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w24,#27 4913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w28 // future e+=K 4923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w9,w9,w17 4933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w21 4943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w27 // e+=rot(a,5) 4953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w20,w20,#2 4963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w9,w9,w6 4973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w8 // future e+=X[i] 4983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w25 // e+=F(b,c,d) 4993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w9,w9,#31 5003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w10,w10,w12 5013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w21,w24 5023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w23,#27 5033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w28 // future e+=K 5043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w10,w10,w19 5053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w20 5063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w27 // e+=rot(a,5) 5073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w24,w24,#2 5083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w10,w10,w7 5093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w9 // future e+=X[i] 5103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w25 // e+=F(b,c,d) 5113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w10,w10,#31 5123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w11,w11,w13 5133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w20,w23 5143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w22,#27 5153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w28 // future e+=K 5163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w11,w11,w3 5173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w24 5183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w27 // e+=rot(a,5) 5193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w23,w23,#2 5203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w11,w11,w8 5213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w10 // future e+=X[i] 5223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w25 // e+=F(b,c,d) 5233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w11,w11,#31 5243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root movz w28,#0xbcdc 5253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root movk w28,#0x8f1b,lsl#16 5263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w12,w12,w14 5273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w24,w22 5283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w21,#27 5293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w28 // future e+=K 5303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w12,w12,w4 5313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w23 5323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w27 // e+=rot(a,5) 5333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w22,w22,#2 5343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w12,w12,w9 5353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w11 // future e+=X[i] 5363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w25 // e+=F(b,c,d) 5373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w12,w12,#31 5383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w21,w22 5393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w21,w22 5403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w13,w13,w15 5413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w20,#27 5423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w23 5433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w28 // future e+=K 5443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w13,w13,w5 5453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w27 // e+=rot(a,5) 5463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 5473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w21,w21,#2 5483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w13,w13,w10 5493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w12 // future e+=X[i] 5503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w25 // e+=F(b,c,d) 5513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w13,w13,#31 5523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w20,w21 5533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w20,w21 5543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w14,w14,w16 5553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w24,#27 5563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w22 5573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w28 // future e+=K 5583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w14,w14,w6 5593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w27 // e+=rot(a,5) 5603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 5613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w20,w20,#2 5623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w14,w14,w11 5633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w13 // future e+=X[i] 5643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w25 // e+=F(b,c,d) 5653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w14,w14,#31 5663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w24,w20 5673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w24,w20 5683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w15,w15,w17 5693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w23,#27 5703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w21 5713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w28 // future e+=K 5723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w15,w15,w7 5733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w27 // e+=rot(a,5) 5743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 5753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w24,w24,#2 5763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w15,w15,w12 5773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w14 // future e+=X[i] 5783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w25 // e+=F(b,c,d) 5793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w15,w15,#31 5803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w23,w24 5813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w23,w24 5823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w16,w16,w19 5833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w22,#27 5843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w20 5853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w28 // future e+=K 5863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w16,w16,w8 5873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w27 // e+=rot(a,5) 5883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 5893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w23,w23,#2 5903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w16,w16,w13 5913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w15 // future e+=X[i] 5923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w25 // e+=F(b,c,d) 5933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w16,w16,#31 5943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w22,w23 5953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w22,w23 5963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w17,w17,w3 5973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w21,#27 5983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w24 5993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w28 // future e+=K 6003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w17,w17,w9 6013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w27 // e+=rot(a,5) 6023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 6033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w22,w22,#2 6043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w17,w17,w14 6053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w16 // future e+=X[i] 6063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w25 // e+=F(b,c,d) 6073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w17,w17,#31 6083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w21,w22 6093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w21,w22 6103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w19,w19,w4 6113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w20,#27 6123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w23 6133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w28 // future e+=K 6143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w19,w19,w10 6153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w27 // e+=rot(a,5) 6163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 6173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w21,w21,#2 6183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w19,w19,w15 6193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w17 // future e+=X[i] 6203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w25 // e+=F(b,c,d) 6213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w19,w19,#31 6223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w20,w21 6233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w20,w21 6243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w3,w3,w5 6253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w24,#27 6263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w22 6273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w28 // future e+=K 6283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w3,w3,w11 6293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w27 // e+=rot(a,5) 6303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 6313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w20,w20,#2 6323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w3,w3,w16 6333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w19 // future e+=X[i] 6343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w25 // e+=F(b,c,d) 6353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w3,w3,#31 6363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w24,w20 6373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w24,w20 6383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w4,w4,w6 6393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w23,#27 6403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w21 6413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w28 // future e+=K 6423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w4,w4,w12 6433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w27 // e+=rot(a,5) 6443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 6453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w24,w24,#2 6463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w4,w4,w17 6473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w3 // future e+=X[i] 6483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w25 // e+=F(b,c,d) 6493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w4,w4,#31 6503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w23,w24 6513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w23,w24 6523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w5,w5,w7 6533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w22,#27 6543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w20 6553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w28 // future e+=K 6563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w5,w5,w13 6573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w27 // e+=rot(a,5) 6583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 6593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w23,w23,#2 6603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w5,w5,w19 6613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w4 // future e+=X[i] 6623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w25 // e+=F(b,c,d) 6633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w5,w5,#31 6643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w22,w23 6653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w22,w23 6663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w6,w6,w8 6673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w21,#27 6683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w24 6693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w28 // future e+=K 6703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w6,w6,w14 6713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w27 // e+=rot(a,5) 6723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 6733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w22,w22,#2 6743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w6,w6,w3 6753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w5 // future e+=X[i] 6763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w25 // e+=F(b,c,d) 6773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w6,w6,#31 6783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w21,w22 6793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w21,w22 6803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w7,w7,w9 6813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w20,#27 6823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w23 6833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w28 // future e+=K 6843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w7,w7,w15 6853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w27 // e+=rot(a,5) 6863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 6873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w21,w21,#2 6883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w7,w7,w4 6893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w6 // future e+=X[i] 6903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w25 // e+=F(b,c,d) 6913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w7,w7,#31 6923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w20,w21 6933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w20,w21 6943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w8,w8,w10 6953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w24,#27 6963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w22 6973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w28 // future e+=K 6983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w8,w8,w16 6993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w27 // e+=rot(a,5) 7003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 7013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w20,w20,#2 7023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w8,w8,w5 7033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w7 // future e+=X[i] 7043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w25 // e+=F(b,c,d) 7053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w8,w8,#31 7063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w24,w20 7073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w24,w20 7083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w9,w9,w11 7093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w23,#27 7103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w21 7113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w28 // future e+=K 7123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w9,w9,w17 7133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w27 // e+=rot(a,5) 7143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 7153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w24,w24,#2 7163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w9,w9,w6 7173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w8 // future e+=X[i] 7183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w25 // e+=F(b,c,d) 7193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w9,w9,#31 7203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w23,w24 7213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w23,w24 7223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w10,w10,w12 7233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w22,#27 7243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w20 7253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w28 // future e+=K 7263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w10,w10,w19 7273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w27 // e+=rot(a,5) 7283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 7293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w23,w23,#2 7303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w10,w10,w7 7313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w9 // future e+=X[i] 7323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w25 // e+=F(b,c,d) 7333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w10,w10,#31 7343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w22,w23 7353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w22,w23 7363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w11,w11,w13 7373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w21,#27 7383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w24 7393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w28 // future e+=K 7403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w11,w11,w3 7413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w27 // e+=rot(a,5) 7423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 7433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w22,w22,#2 7443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w11,w11,w8 7453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w10 // future e+=X[i] 7463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w25 // e+=F(b,c,d) 7473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w11,w11,#31 7483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w21,w22 7493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w21,w22 7503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w12,w12,w14 7513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w20,#27 7523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w23 7533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w28 // future e+=K 7543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w12,w12,w4 7553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w27 // e+=rot(a,5) 7563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 7573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w21,w21,#2 7583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w12,w12,w9 7593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w11 // future e+=X[i] 7603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w25 // e+=F(b,c,d) 7613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w12,w12,#31 7623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w20,w21 7633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w20,w21 7643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w13,w13,w15 7653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w24,#27 7663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w22 7673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w28 // future e+=K 7683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w13,w13,w5 7693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w27 // e+=rot(a,5) 7703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 7713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w20,w20,#2 7723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w13,w13,w10 7733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w12 // future e+=X[i] 7743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w25 // e+=F(b,c,d) 7753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w13,w13,#31 7763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w24,w20 7773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w24,w20 7783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w14,w14,w16 7793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w23,#27 7803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w21 7813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w28 // future e+=K 7823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w14,w14,w6 7833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w27 // e+=rot(a,5) 7843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 7853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w24,w24,#2 7863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w14,w14,w11 7873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w13 // future e+=X[i] 7883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w25 // e+=F(b,c,d) 7893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w14,w14,#31 7903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w23,w24 7913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w23,w24 7923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w15,w15,w17 7933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w22,#27 7943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w20 7953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w28 // future e+=K 7963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w15,w15,w7 7973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w27 // e+=rot(a,5) 7983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 7993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w23,w23,#2 8003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w15,w15,w12 8013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w14 // future e+=X[i] 8023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w25 // e+=F(b,c,d) 8033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w15,w15,#31 8043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root movz w28,#0xc1d6 8053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root movk w28,#0xca62,lsl#16 8063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w22,w23 8073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w26,w22,w23 8083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w16,w16,w19 8093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w21,#27 8103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root and w25,w25,w24 8113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w28 // future e+=K 8123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w16,w16,w8 8133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w27 // e+=rot(a,5) 8143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr w25,w25,w26 8153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w22,w22,#2 8163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w16,w16,w13 8173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w15 // future e+=X[i] 8183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w25 // e+=F(b,c,d) 8193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w16,w16,#31 8203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w17,w17,w3 8213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w23,w21 8223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w20,#27 8233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w28 // future e+=K 8243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w17,w17,w9 8253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w22 8263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w27 // e+=rot(a,5) 8273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w21,w21,#2 8283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w17,w17,w14 8293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w16 // future e+=X[i] 8303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w25 // e+=F(b,c,d) 8313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w17,w17,#31 8323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w19,w19,w4 8333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w22,w20 8343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w24,#27 8353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w28 // future e+=K 8363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w19,w19,w10 8373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w21 8383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w27 // e+=rot(a,5) 8393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w20,w20,#2 8403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w19,w19,w15 8413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w17 // future e+=X[i] 8423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w25 // e+=F(b,c,d) 8433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w19,w19,#31 8443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w3,w3,w5 8453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w21,w24 8463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w23,#27 8473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w28 // future e+=K 8483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w3,w3,w11 8493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w20 8503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w27 // e+=rot(a,5) 8513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w24,w24,#2 8523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w3,w3,w16 8533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w19 // future e+=X[i] 8543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w25 // e+=F(b,c,d) 8553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w3,w3,#31 8563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w4,w4,w6 8573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w20,w23 8583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w22,#27 8593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w28 // future e+=K 8603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w4,w4,w12 8613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w24 8623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w27 // e+=rot(a,5) 8633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w23,w23,#2 8643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w4,w4,w17 8653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w3 // future e+=X[i] 8663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w25 // e+=F(b,c,d) 8673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w4,w4,#31 8683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w5,w5,w7 8693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w24,w22 8703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w21,#27 8713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w28 // future e+=K 8723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w5,w5,w13 8733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w23 8743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w27 // e+=rot(a,5) 8753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w22,w22,#2 8763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w5,w5,w19 8773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w4 // future e+=X[i] 8783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w25 // e+=F(b,c,d) 8793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w5,w5,#31 8803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w6,w6,w8 8813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w23,w21 8823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w20,#27 8833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w28 // future e+=K 8843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w6,w6,w14 8853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w22 8863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w27 // e+=rot(a,5) 8873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w21,w21,#2 8883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w6,w6,w3 8893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w5 // future e+=X[i] 8903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w25 // e+=F(b,c,d) 8913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w6,w6,#31 8923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w7,w7,w9 8933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w22,w20 8943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w24,#27 8953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w28 // future e+=K 8963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w7,w7,w15 8973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w21 8983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w27 // e+=rot(a,5) 8993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w20,w20,#2 9003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w7,w7,w4 9013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w6 // future e+=X[i] 9023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w25 // e+=F(b,c,d) 9033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w7,w7,#31 9043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w8,w8,w10 9053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w21,w24 9063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w23,#27 9073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w28 // future e+=K 9083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w8,w8,w16 9093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w20 9103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w27 // e+=rot(a,5) 9113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w24,w24,#2 9123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w8,w8,w5 9133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w7 // future e+=X[i] 9143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w25 // e+=F(b,c,d) 9153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w8,w8,#31 9163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w9,w9,w11 9173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w20,w23 9183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w22,#27 9193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w28 // future e+=K 9203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w9,w9,w17 9213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w24 9223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w27 // e+=rot(a,5) 9233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w23,w23,#2 9243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w9,w9,w6 9253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w8 // future e+=X[i] 9263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w25 // e+=F(b,c,d) 9273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w9,w9,#31 9283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w10,w10,w12 9293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w24,w22 9303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w21,#27 9313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w28 // future e+=K 9323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w10,w10,w19 9333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w23 9343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w27 // e+=rot(a,5) 9353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w22,w22,#2 9363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w10,w10,w7 9373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w9 // future e+=X[i] 9383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w25 // e+=F(b,c,d) 9393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w10,w10,#31 9403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w11,w11,w13 9413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w23,w21 9423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w20,#27 9433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w28 // future e+=K 9443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w11,w11,w3 9453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w22 9463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w27 // e+=rot(a,5) 9473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w21,w21,#2 9483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w11,w11,w8 9493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w10 // future e+=X[i] 9503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w25 // e+=F(b,c,d) 9513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w11,w11,#31 9523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w12,w12,w14 9533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w22,w20 9543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w24,#27 9553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w28 // future e+=K 9563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w12,w12,w4 9573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w21 9583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w27 // e+=rot(a,5) 9593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w20,w20,#2 9603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w12,w12,w9 9613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w11 // future e+=X[i] 9623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w25 // e+=F(b,c,d) 9633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w12,w12,#31 9643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w13,w13,w15 9653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w21,w24 9663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w23,#27 9673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w28 // future e+=K 9683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w13,w13,w5 9693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w20 9703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w27 // e+=rot(a,5) 9713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w24,w24,#2 9723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w13,w13,w10 9733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w12 // future e+=X[i] 9743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w25 // e+=F(b,c,d) 9753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w13,w13,#31 9763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w14,w14,w16 9773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w20,w23 9783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w22,#27 9793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w28 // future e+=K 9803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w14,w14,w6 9813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w24 9823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w27 // e+=rot(a,5) 9833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w23,w23,#2 9843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w14,w14,w11 9853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w13 // future e+=X[i] 9863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w25 // e+=F(b,c,d) 9873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w14,w14,#31 9883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w15,w15,w17 9893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w24,w22 9903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w21,#27 9913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w28 // future e+=K 9923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w15,w15,w7 9933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w23 9943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w27 // e+=rot(a,5) 9953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w22,w22,#2 9963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w15,w15,w12 9973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w14 // future e+=X[i] 9983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w25 // e+=F(b,c,d) 9993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w15,w15,#31 10003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w16,w16,w19 10013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w23,w21 10023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w20,#27 10033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w28 // future e+=K 10043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w16,w16,w8 10053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w22 10063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w27 // e+=rot(a,5) 10073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w21,w21,#2 10083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w16,w16,w13 10093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w15 // future e+=X[i] 10103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w25 // e+=F(b,c,d) 10113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w16,w16,#31 10123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w17,w17,w3 10133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w22,w20 10143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w24,#27 10153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w28 // future e+=K 10163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w17,w17,w9 10173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w21 10183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w27 // e+=rot(a,5) 10193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w20,w20,#2 10203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w17,w17,w14 10213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w16 // future e+=X[i] 10223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w25 // e+=F(b,c,d) 10233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w17,w17,#31 10243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w19,w19,w4 10253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w21,w24 10263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w23,#27 10273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w28 // future e+=K 10283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w19,w19,w10 10293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w20 10303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w27 // e+=rot(a,5) 10313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w24,w24,#2 10323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w19,w19,w15 10333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w17 // future e+=X[i] 10343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w25 // e+=F(b,c,d) 10353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w19,w19,#31 10363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp w4,w5,[x0] 10373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w20,w23 10383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w22,#27 10393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w28 // future e+=K 10403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w24 10413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w27 // e+=rot(a,5) 10423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w23,w23,#2 10433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w19 // future e+=X[i] 10443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w25 // e+=F(b,c,d) 10453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp w6,w7,[x0,#8] 10463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w24,w22 10473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w27,w21,#27 10483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor w25,w25,w23 10493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w27 // e+=rot(a,5) 10503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ror w22,w22,#2 10513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr w8,[x0,#16] 10523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w25 // e+=F(b,c,d) 10533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w21,w21,w5 10543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w22,w22,w6 10553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w20,w20,w4 10563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w23,w23,w7 10573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add w24,w24,w8 10583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp w20,w21,[x0] 10593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp w22,w23,[x0,#8] 10603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str w24,[x0,#16] 10613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root cbnz x2,.Loop 10623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 10633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x19,x20,[sp,#16] 10643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x21,x22,[sp,#32] 10653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x23,x24,[sp,#48] 10663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x25,x26,[sp,#64] 10673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldp x27,x28,[sp,#80] 10683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x29,[sp],#96 10693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ret 10703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.size sha1_block_data_order,.-sha1_block_data_order 10713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.type sha1_block_armv8,%function 10723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.align 6 10733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Rootsha1_block_armv8: 10743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.Lv8_entry: 10753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stp x29,x30,[sp,#-16]! 10763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add x29,sp,#0 10773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 10783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root adr x4,.Lconst 10793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root eor v1.16b,v1.16b,v1.16b 10803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ld1 {v0.4s},[x0],#16 10813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ld1 {v1.s}[0],[x0] 10823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root sub x0,x0,#16 10833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ld1 {v16.4s-v19.4s},[x4] 10843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 10853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.Loop_hw: 10863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ld1 {v4.16b-v7.16b},[x1],#64 10873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root sub x2,x2,#1 10883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev32 v4.16b,v4.16b 10893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev32 v5.16b,v5.16b 10903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 10913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v20.4s,v16.4s,v4.4s 10923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev32 v6.16b,v6.16b 10933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root orr v22.16b,v0.16b,v0.16b // offload 10943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 10953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v21.4s,v16.4s,v5.4s 10963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root rev32 v7.16b,v7.16b 10973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280803 //sha1h v3.16b,v0.16b 10983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e140020 //sha1c v0.16b,v1.16b,v20.4s // 0 10993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v20.4s,v16.4s,v6.4s 11003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b 11013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280802 //sha1h v2.16b,v0.16b // 1 11023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e150060 //sha1c v0.16b,v3.16b,v21.4s 11033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v21.4s,v16.4s,v7.4s 11043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b 11053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b 11063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280803 //sha1h v3.16b,v0.16b // 2 11073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e140040 //sha1c v0.16b,v2.16b,v20.4s 11083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v20.4s,v16.4s,v4.4s 11093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e281885 //sha1su1 v5.16b,v4.16b 11103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b 11113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280802 //sha1h v2.16b,v0.16b // 3 11123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e150060 //sha1c v0.16b,v3.16b,v21.4s 11133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v21.4s,v17.4s,v5.4s 11143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b 11153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b 11163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280803 //sha1h v3.16b,v0.16b // 4 11173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e140040 //sha1c v0.16b,v2.16b,v20.4s 11183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v20.4s,v17.4s,v6.4s 11193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b 11203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b 11213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280802 //sha1h v2.16b,v0.16b // 5 11223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s 11233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v21.4s,v17.4s,v7.4s 11243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b 11253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b 11263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280803 //sha1h v3.16b,v0.16b // 6 11273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s 11283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v20.4s,v17.4s,v4.4s 11293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e281885 //sha1su1 v5.16b,v4.16b 11303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b 11313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280802 //sha1h v2.16b,v0.16b // 7 11323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s 11333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v21.4s,v17.4s,v5.4s 11343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b 11353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b 11363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280803 //sha1h v3.16b,v0.16b // 8 11373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s 11383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v20.4s,v18.4s,v6.4s 11393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b 11403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b 11413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280802 //sha1h v2.16b,v0.16b // 9 11423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s 11433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v21.4s,v18.4s,v7.4s 11443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b 11453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b 11463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280803 //sha1h v3.16b,v0.16b // 10 11473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s 11483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v20.4s,v18.4s,v4.4s 11493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e281885 //sha1su1 v5.16b,v4.16b 11503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b 11513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280802 //sha1h v2.16b,v0.16b // 11 11523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e152060 //sha1m v0.16b,v3.16b,v21.4s 11533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v21.4s,v18.4s,v5.4s 11543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b 11553f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b 11563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280803 //sha1h v3.16b,v0.16b // 12 11573f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s 11583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v20.4s,v18.4s,v6.4s 11593f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b 11603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b 11613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280802 //sha1h v2.16b,v0.16b // 13 11623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e152060 //sha1m v0.16b,v3.16b,v21.4s 11633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v21.4s,v19.4s,v7.4s 11643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b 11653f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b 11663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280803 //sha1h v3.16b,v0.16b // 14 11673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s 11683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v20.4s,v19.4s,v4.4s 11693f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e281885 //sha1su1 v5.16b,v4.16b 11703f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b 11713f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280802 //sha1h v2.16b,v0.16b // 15 11723f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s 11733f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v21.4s,v19.4s,v5.4s 11743f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b 11753f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b 11763f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280803 //sha1h v3.16b,v0.16b // 16 11773f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s 11783f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v20.4s,v19.4s,v6.4s 11793f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b 11803f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280802 //sha1h v2.16b,v0.16b // 17 11813f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s 11823f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v21.4s,v19.4s,v7.4s 11833f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 11843f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280803 //sha1h v3.16b,v0.16b // 18 11853f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s 11863f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 11873f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e280802 //sha1h v2.16b,v0.16b // 19 11883f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s 11893f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 11903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v1.4s,v1.4s,v2.4s 11913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add v0.4s,v0.4s,v22.4s 11923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 11933f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root cbnz x2,.Loop_hw 11943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 11953f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root st1 {v0.4s},[x0],#16 11963f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root st1 {v1.s}[0],[x0] 11973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 11983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr x29,[sp],#16 11993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ret 12003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.size sha1_block_armv8,.-sha1_block_armv8 12013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.align 6 12023f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.Lconst: 12033f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 //K_00_19 12043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 //K_20_39 12053f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc //K_40_59 12063f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 //K_60_79 12073f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.LOPENSSL_armcap_P: 12083f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.quad OPENSSL_armcap_P-. 12093f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.asciz "SHA1 block transform for ARMv8, CRYPTOGAMS by <appro@openssl.org>" 12103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.align 2 12113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.comm OPENSSL_armcap_P,4,4 1212