sha256-armv4.S revision 3f9e6ada2c9f7183a41081263585e6a70bbd9f59
1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "arm_arch.h" 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.text 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.code 32 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.type K256,%object 7e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang.align 5 8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectK256: 9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.word 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.word 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.word 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.word 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.word 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc 14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.word 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da 15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.word 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.word 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.word 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.word 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.word 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.word 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.word 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.word 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.word 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.word 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.size K256,.-K256 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.word 0 @ terminator 27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.LOPENSSL_armcap: 28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.word OPENSSL_armcap_P-sha256_block_data_order 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.align 5 30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.global sha256_block_data_order 32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.type sha256_block_data_order,%function 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projectsha256_block_data_order: 34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project sub r3,pc,#8 @ sha256_block_data_order 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r2,r1,r2,lsl#6 @ len to point at the end of inp 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if __ARM_ARCH__>=7 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r12,.LOPENSSL_armcap 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r12,[r3,r12] @ OPENSSL_armcap_P 39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project tst r12,#ARMV8_SHA256 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project bne .LARMv8 41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project tst r12,#ARMV7_NEON 42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project bne .LNEON 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project stmdb sp!,{r0,r1,r2,r4-r11,lr} 45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldmia r0,{r4,r5,r6,r7,r8,r9,r10,r11} 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project sub r14,r3,#256+32 @ K256 47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project sub sp,sp,#16*4 @ alloca(X[16]) 48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.Loop: 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r5,r6 @ magic 55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r12,r12 56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if __ARM_ARCH__>=7 57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[r1],#4 @ 0 58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 0==15 59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r8,r8,ror#5 62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r4,r4,r12 @ h+=Maj(a,b,c) from the past 63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r8,ror#19 @ Sigma1(e) 64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project rev r2,r2 65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldrb r2,[r1,#3] @ 0 67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r4,r4,r12 @ h+=Maj(a,b,c) from the past 68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r12,[r1,#2] 69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r0,[r1,#1] 70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r12,lsl#8 71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r12,[r1],#4 72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r0,lsl#16 73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 0==15 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r8,r8,ror#5 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r12,lsl#24 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r8,ror#19 @ Sigma1(e) 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r12,[r14],#4 @ *K256++ 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r2 @ h+=X[i] 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#0*4] 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r9,r10 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r0,ror#6 @ h+=Sigma1(e) 85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r8 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r12 @ h+=K256[i] 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r10 @ Ch(e,f,g) 88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r4,r4,ror#11 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r2 @ h+=Ch(e,f,g) 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 0==31 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,#0xff 92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r12,#0xf2 @ done? 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 0<15 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r4,r5 @ a^b, b^c in next round 101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#2*4] @ from future BODY_16_xx 103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r4,r5 @ a^b, b^c in next round 104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#15*4] @ from future BODY_16_xx 105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r4,ror#20 @ Sigma0(a) 107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,r12 @ (b^c)&=(a^b) 108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r7,r7,r11 @ d+=h 109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r3,r5 @ Maj(a,b,c) 110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r0,ror#2 @ h+=Sigma0(a) 111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r11,r11,r3 @ h+=Maj(a,b,c) 112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if __ARM_ARCH__>=7 113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[r1],#4 @ 1 114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 1==15 115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r7,r7,ror#5 118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r3 @ h+=Maj(a,b,c) from the past 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r7,ror#19 @ Sigma1(e) 120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project rev r2,r2 121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldrb r2,[r1,#3] @ 1 123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r3 @ h+=Maj(a,b,c) from the past 124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r3,[r1,#2] 125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r0,[r1,#1] 126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r3,lsl#8 127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r3,[r1],#4 128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r0,lsl#16 129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 1==15 130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r7,r7,ror#5 133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r3,lsl#24 134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r7,ror#19 @ Sigma1(e) 135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r3,[r14],#4 @ *K256++ 137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r2 @ h+=X[i] 138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#1*4] 139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r8,r9 140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r0,ror#6 @ h+=Sigma1(e) 141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r7 142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r3 @ h+=K256[i] 143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r9 @ Ch(e,f,g) 144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r11,r11,ror#11 145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r2 @ h+=Ch(e,f,g) 146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 1==31 147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,#0xff 148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r3,#0xf2 @ done? 149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 1<15 151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r11,r4 @ a^b, b^c in next round 157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#3*4] @ from future BODY_16_xx 159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r11,r4 @ a^b, b^c in next round 160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#0*4] @ from future BODY_16_xx 161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r11,ror#20 @ Sigma0(a) 163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,r3 @ (b^c)&=(a^b) 164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r6,r6,r10 @ d+=h 165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r12,r4 @ Maj(a,b,c) 166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r0,ror#2 @ h+=Sigma0(a) 167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r10,r10,r12 @ h+=Maj(a,b,c) 168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if __ARM_ARCH__>=7 169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[r1],#4 @ 2 170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 2==15 171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r6,r6,ror#5 174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r12 @ h+=Maj(a,b,c) from the past 175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r6,ror#19 @ Sigma1(e) 176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project rev r2,r2 177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldrb r2,[r1,#3] @ 2 179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r12 @ h+=Maj(a,b,c) from the past 180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r12,[r1,#2] 181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r0,[r1,#1] 182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r12,lsl#8 183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r12,[r1],#4 184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r0,lsl#16 185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 2==15 186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r6,r6,ror#5 189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r12,lsl#24 190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r6,ror#19 @ Sigma1(e) 191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r12,[r14],#4 @ *K256++ 193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r2 @ h+=X[i] 194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#2*4] 195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r7,r8 196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r0,ror#6 @ h+=Sigma1(e) 197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r6 198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r12 @ h+=K256[i] 199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r8 @ Ch(e,f,g) 200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r10,r10,ror#11 201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r2 @ h+=Ch(e,f,g) 202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 2==31 203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,#0xff 204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r12,#0xf2 @ done? 205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 2<15 207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r10,r11 @ a^b, b^c in next round 213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#4*4] @ from future BODY_16_xx 215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r10,r11 @ a^b, b^c in next round 216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#1*4] @ from future BODY_16_xx 217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r10,ror#20 @ Sigma0(a) 219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,r12 @ (b^c)&=(a^b) 220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r5,r5,r9 @ d+=h 221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r3,r11 @ Maj(a,b,c) 222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r0,ror#2 @ h+=Sigma0(a) 223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r9,r9,r3 @ h+=Maj(a,b,c) 224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if __ARM_ARCH__>=7 225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[r1],#4 @ 3 226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 3==15 227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r5,r5,ror#5 230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r3 @ h+=Maj(a,b,c) from the past 231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r5,ror#19 @ Sigma1(e) 232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project rev r2,r2 233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldrb r2,[r1,#3] @ 3 235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r3 @ h+=Maj(a,b,c) from the past 236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r3,[r1,#2] 237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r0,[r1,#1] 238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r3,lsl#8 239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r3,[r1],#4 240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r0,lsl#16 241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 3==15 242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r5,r5,ror#5 245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r3,lsl#24 246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r5,ror#19 @ Sigma1(e) 247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r3,[r14],#4 @ *K256++ 249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r2 @ h+=X[i] 250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#3*4] 251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r6,r7 252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r0,ror#6 @ h+=Sigma1(e) 253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r5 254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r3 @ h+=K256[i] 255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r7 @ Ch(e,f,g) 256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r9,r9,ror#11 257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r2 @ h+=Ch(e,f,g) 258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 3==31 259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,#0xff 260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r3,#0xf2 @ done? 261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 3<15 263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r9,r10 @ a^b, b^c in next round 269049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#5*4] @ from future BODY_16_xx 271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r9,r10 @ a^b, b^c in next round 272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#2*4] @ from future BODY_16_xx 273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r9,ror#20 @ Sigma0(a) 275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,r3 @ (b^c)&=(a^b) 276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r4,r4,r8 @ d+=h 277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r12,r10 @ Maj(a,b,c) 278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r0,ror#2 @ h+=Sigma0(a) 279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r8,r8,r12 @ h+=Maj(a,b,c) 280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if __ARM_ARCH__>=7 281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[r1],#4 @ 4 282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 4==15 283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r4,r4,ror#5 286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r12 @ h+=Maj(a,b,c) from the past 287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r4,ror#19 @ Sigma1(e) 288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project rev r2,r2 289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldrb r2,[r1,#3] @ 4 291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r12 @ h+=Maj(a,b,c) from the past 292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r12,[r1,#2] 293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r0,[r1,#1] 294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r12,lsl#8 295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r12,[r1],#4 296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r0,lsl#16 297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 4==15 298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r4,r4,ror#5 301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r12,lsl#24 302049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r4,ror#19 @ Sigma1(e) 303049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r12,[r14],#4 @ *K256++ 305049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r7,r7,r2 @ h+=X[i] 306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#4*4] 307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r5,r6 308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r7,r7,r0,ror#6 @ h+=Sigma1(e) 309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r4 310049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r7,r7,r12 @ h+=K256[i] 311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r6 @ Ch(e,f,g) 312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r8,r8,ror#11 313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r7,r7,r2 @ h+=Ch(e,f,g) 314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 4==31 315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,#0xff 316049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r12,#0xf2 @ done? 317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 4<15 319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r8,r9 @ a^b, b^c in next round 325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#6*4] @ from future BODY_16_xx 327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r8,r9 @ a^b, b^c in next round 328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#3*4] @ from future BODY_16_xx 329049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 330049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r8,ror#20 @ Sigma0(a) 331049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,r12 @ (b^c)&=(a^b) 332049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r7 @ d+=h 333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r3,r9 @ Maj(a,b,c) 334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r7,r7,r0,ror#2 @ h+=Sigma0(a) 335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r7,r7,r3 @ h+=Maj(a,b,c) 336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if __ARM_ARCH__>=7 337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[r1],#4 @ 5 338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 5==15 339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r11,r11,ror#5 342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r7,r7,r3 @ h+=Maj(a,b,c) from the past 343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r11,ror#19 @ Sigma1(e) 344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project rev r2,r2 345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldrb r2,[r1,#3] @ 5 347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r7,r7,r3 @ h+=Maj(a,b,c) from the past 348049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r3,[r1,#2] 349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r0,[r1,#1] 350049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r3,lsl#8 351049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r3,[r1],#4 352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r0,lsl#16 353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 5==15 354049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 355049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r11,r11,ror#5 357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r3,lsl#24 358049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r11,ror#19 @ Sigma1(e) 359049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 360049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r3,[r14],#4 @ *K256++ 361049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r6,r6,r2 @ h+=X[i] 362049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#5*4] 363049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r4,r5 364049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r6,r6,r0,ror#6 @ h+=Sigma1(e) 365049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r11 366049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r6,r6,r3 @ h+=K256[i] 367049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r5 @ Ch(e,f,g) 368049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r7,r7,ror#11 369049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r6,r6,r2 @ h+=Ch(e,f,g) 370049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 5==31 371049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,#0xff 372049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r3,#0xf2 @ done? 373049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 374049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 5<15 375049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 376049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 377049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 378049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 379049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 380049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r7,r8 @ a^b, b^c in next round 381049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 382049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#7*4] @ from future BODY_16_xx 383049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r7,r8 @ a^b, b^c in next round 384049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#4*4] @ from future BODY_16_xx 385049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 386049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r7,ror#20 @ Sigma0(a) 387049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,r3 @ (b^c)&=(a^b) 388049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r6 @ d+=h 389049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r12,r8 @ Maj(a,b,c) 390049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r6,r6,r0,ror#2 @ h+=Sigma0(a) 391049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r6,r6,r12 @ h+=Maj(a,b,c) 392049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if __ARM_ARCH__>=7 393049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[r1],#4 @ 6 394049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 6==15 395049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 396049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 397049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r10,r10,ror#5 398049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r6,r6,r12 @ h+=Maj(a,b,c) from the past 399049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r10,ror#19 @ Sigma1(e) 400049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project rev r2,r2 401049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 402049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldrb r2,[r1,#3] @ 6 403049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r6,r6,r12 @ h+=Maj(a,b,c) from the past 404049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r12,[r1,#2] 405049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r0,[r1,#1] 406049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r12,lsl#8 407049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r12,[r1],#4 408049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r0,lsl#16 409049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 6==15 410049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 411049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 412049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r10,r10,ror#5 413049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r12,lsl#24 414049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r10,ror#19 @ Sigma1(e) 415049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 416049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r12,[r14],#4 @ *K256++ 417049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r5,r5,r2 @ h+=X[i] 418049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#6*4] 419049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r11,r4 420049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r5,r5,r0,ror#6 @ h+=Sigma1(e) 421049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r10 422049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r5,r5,r12 @ h+=K256[i] 423049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r4 @ Ch(e,f,g) 424049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r6,r6,ror#11 425049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r5,r5,r2 @ h+=Ch(e,f,g) 426049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 6==31 427049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,#0xff 428049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r12,#0xf2 @ done? 429049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 430049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 6<15 431049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 432049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 433049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 434049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 435049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 436049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r6,r7 @ a^b, b^c in next round 437049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 438049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#8*4] @ from future BODY_16_xx 439049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r6,r7 @ a^b, b^c in next round 440049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#5*4] @ from future BODY_16_xx 441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r6,ror#20 @ Sigma0(a) 443049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,r12 @ (b^c)&=(a^b) 444049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r5 @ d+=h 445049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r3,r7 @ Maj(a,b,c) 446049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r5,r5,r0,ror#2 @ h+=Sigma0(a) 447049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r5,r5,r3 @ h+=Maj(a,b,c) 448049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if __ARM_ARCH__>=7 449049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[r1],#4 @ 7 450049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 7==15 451049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 452049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 453049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r9,r9,ror#5 454049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r5,r5,r3 @ h+=Maj(a,b,c) from the past 455049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r9,ror#19 @ Sigma1(e) 456049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project rev r2,r2 457049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 458049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldrb r2,[r1,#3] @ 7 459049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r5,r5,r3 @ h+=Maj(a,b,c) from the past 460049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r3,[r1,#2] 461049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r0,[r1,#1] 462049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r3,lsl#8 463049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r3,[r1],#4 464049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r0,lsl#16 465049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 7==15 466049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 467049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 468049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r9,r9,ror#5 469049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r3,lsl#24 470049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r9,ror#19 @ Sigma1(e) 471049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 472049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r3,[r14],#4 @ *K256++ 473049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r4,r4,r2 @ h+=X[i] 474049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#7*4] 475049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r10,r11 476049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r4,r4,r0,ror#6 @ h+=Sigma1(e) 477049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r9 478049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r4,r4,r3 @ h+=K256[i] 479049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r11 @ Ch(e,f,g) 480049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r5,r5,ror#11 481049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r4,r4,r2 @ h+=Ch(e,f,g) 482049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 7==31 483049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,#0xff 484049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r3,#0xf2 @ done? 485049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 486049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 7<15 487049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 488049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 489049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 490049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 491049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 492049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r5,r6 @ a^b, b^c in next round 493049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 494049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#9*4] @ from future BODY_16_xx 495049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r5,r6 @ a^b, b^c in next round 496049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#6*4] @ from future BODY_16_xx 497049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 498049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r5,ror#20 @ Sigma0(a) 499049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,r3 @ (b^c)&=(a^b) 500049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r4 @ d+=h 501049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r12,r6 @ Maj(a,b,c) 502049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r4,r4,r0,ror#2 @ h+=Sigma0(a) 503049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r4,r4,r12 @ h+=Maj(a,b,c) 504049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if __ARM_ARCH__>=7 505049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[r1],#4 @ 8 506049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 8==15 507049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 508049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 509049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r8,r8,ror#5 510049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r4,r4,r12 @ h+=Maj(a,b,c) from the past 511049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r8,ror#19 @ Sigma1(e) 512049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project rev r2,r2 513049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 514049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldrb r2,[r1,#3] @ 8 515049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r4,r4,r12 @ h+=Maj(a,b,c) from the past 516049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r12,[r1,#2] 517049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r0,[r1,#1] 518049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r12,lsl#8 519049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r12,[r1],#4 520049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r0,lsl#16 521049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 8==15 522049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 523049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 524049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r8,r8,ror#5 525049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r12,lsl#24 526049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r8,ror#19 @ Sigma1(e) 527049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 528049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r12,[r14],#4 @ *K256++ 529049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r2 @ h+=X[i] 530049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#8*4] 531049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r9,r10 532049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r0,ror#6 @ h+=Sigma1(e) 533049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r8 534049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r12 @ h+=K256[i] 535049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r10 @ Ch(e,f,g) 536049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r4,r4,ror#11 537049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r2 @ h+=Ch(e,f,g) 538049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 8==31 539049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,#0xff 540049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r12,#0xf2 @ done? 541049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 542049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 8<15 543049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 544049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 545049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 546049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 547049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 548049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r4,r5 @ a^b, b^c in next round 549049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 550049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#10*4] @ from future BODY_16_xx 551049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r4,r5 @ a^b, b^c in next round 552049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#7*4] @ from future BODY_16_xx 553049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 554049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r4,ror#20 @ Sigma0(a) 555049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,r12 @ (b^c)&=(a^b) 556049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r7,r7,r11 @ d+=h 557049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r3,r5 @ Maj(a,b,c) 558049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r0,ror#2 @ h+=Sigma0(a) 559049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r11,r11,r3 @ h+=Maj(a,b,c) 560049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if __ARM_ARCH__>=7 561049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[r1],#4 @ 9 562049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 9==15 563049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 5640a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project# endif 5650a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project eor r0,r7,r7,ror#5 5660a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project add r11,r11,r3 @ h+=Maj(a,b,c) from the past 567e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r7,ror#19 @ Sigma1(e) 568049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project rev r2,r2 569049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 570049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldrb r2,[r1,#3] @ 9 571049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r3 @ h+=Maj(a,b,c) from the past 572e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldrb r3,[r1,#2] 573e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldrb r0,[r1,#1] 574e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang orr r2,r2,r3,lsl#8 575e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldrb r3,[r1],#4 576049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r0,lsl#16 577049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 9==15 578049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 579049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 580049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r7,r7,ror#5 581049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r3,lsl#24 582049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r7,ror#19 @ Sigma1(e) 583049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 584049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r3,[r14],#4 @ *K256++ 585049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r2 @ h+=X[i] 586049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#9*4] 587049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r8,r9 588049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r0,ror#6 @ h+=Sigma1(e) 589049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r7 590049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r3 @ h+=K256[i] 591049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r9 @ Ch(e,f,g) 592049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r11,r11,ror#11 593049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r2 @ h+=Ch(e,f,g) 594049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 9==31 595049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,#0xff 596049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r3,#0xf2 @ done? 597049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 598049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 9<15 599049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 600049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 601049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 602049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 603049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 604049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r11,r4 @ a^b, b^c in next round 605049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 606049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#11*4] @ from future BODY_16_xx 607049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r11,r4 @ a^b, b^c in next round 608049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#8*4] @ from future BODY_16_xx 609049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 610049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r11,ror#20 @ Sigma0(a) 611049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,r3 @ (b^c)&=(a^b) 612049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r6,r6,r10 @ d+=h 613049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r12,r4 @ Maj(a,b,c) 614049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r0,ror#2 @ h+=Sigma0(a) 615049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r10,r10,r12 @ h+=Maj(a,b,c) 616049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if __ARM_ARCH__>=7 617049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[r1],#4 @ 10 618049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 10==15 619049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 620049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 621049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r6,r6,ror#5 622049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r12 @ h+=Maj(a,b,c) from the past 623049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r6,ror#19 @ Sigma1(e) 624049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project rev r2,r2 625049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 626049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldrb r2,[r1,#3] @ 10 627049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r12 @ h+=Maj(a,b,c) from the past 628049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r12,[r1,#2] 629049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r0,[r1,#1] 630049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r12,lsl#8 631049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r12,[r1],#4 632049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r0,lsl#16 633049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 10==15 634049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 635049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 636049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r6,r6,ror#5 637049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r12,lsl#24 638049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r6,ror#19 @ Sigma1(e) 639049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 640049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r12,[r14],#4 @ *K256++ 641049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r2 @ h+=X[i] 642049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#10*4] 643049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r7,r8 644049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r0,ror#6 @ h+=Sigma1(e) 645049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r6 646049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r12 @ h+=K256[i] 647049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r8 @ Ch(e,f,g) 648049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r10,r10,ror#11 649049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r2 @ h+=Ch(e,f,g) 650049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 10==31 651049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,#0xff 652049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r12,#0xf2 @ done? 653049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 654049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 10<15 655049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 656049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 657049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 658049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 659049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 660049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r10,r11 @ a^b, b^c in next round 661049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 662049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#12*4] @ from future BODY_16_xx 663049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r10,r11 @ a^b, b^c in next round 664049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#9*4] @ from future BODY_16_xx 665049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 666049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r10,ror#20 @ Sigma0(a) 667049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,r12 @ (b^c)&=(a^b) 668049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r5,r5,r9 @ d+=h 669049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r3,r11 @ Maj(a,b,c) 670049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r0,ror#2 @ h+=Sigma0(a) 671049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r9,r9,r3 @ h+=Maj(a,b,c) 672049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if __ARM_ARCH__>=7 673049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[r1],#4 @ 11 674049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 11==15 675049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 676049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 677049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r5,r5,ror#5 678049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r3 @ h+=Maj(a,b,c) from the past 679049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r5,ror#19 @ Sigma1(e) 680049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project rev r2,r2 681049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 682049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldrb r2,[r1,#3] @ 11 683049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r3 @ h+=Maj(a,b,c) from the past 684049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r3,[r1,#2] 685049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r0,[r1,#1] 686049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r3,lsl#8 687049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r3,[r1],#4 688049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r0,lsl#16 689049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 11==15 690049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 691049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 692049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r5,r5,ror#5 693049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r3,lsl#24 694049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r5,ror#19 @ Sigma1(e) 695049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 696049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r3,[r14],#4 @ *K256++ 697049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r2 @ h+=X[i] 698049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#11*4] 699049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r6,r7 700049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r0,ror#6 @ h+=Sigma1(e) 701049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r5 702049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r3 @ h+=K256[i] 703049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r7 @ Ch(e,f,g) 704049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r9,r9,ror#11 705049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r2 @ h+=Ch(e,f,g) 706049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 11==31 707049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,#0xff 708049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r3,#0xf2 @ done? 709049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 710049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 11<15 711049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 712049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 713049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 714049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 715049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 716049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r9,r10 @ a^b, b^c in next round 717049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 718049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#13*4] @ from future BODY_16_xx 719049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r9,r10 @ a^b, b^c in next round 720049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#10*4] @ from future BODY_16_xx 721049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 722049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r9,ror#20 @ Sigma0(a) 723049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,r3 @ (b^c)&=(a^b) 724049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r4,r4,r8 @ d+=h 725049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r12,r10 @ Maj(a,b,c) 726049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r0,ror#2 @ h+=Sigma0(a) 727049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r8,r8,r12 @ h+=Maj(a,b,c) 728049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if __ARM_ARCH__>=7 729049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[r1],#4 @ 12 730049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 12==15 731049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 732049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 733049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r4,r4,ror#5 734049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r12 @ h+=Maj(a,b,c) from the past 735049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r4,ror#19 @ Sigma1(e) 736049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project rev r2,r2 737049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 738049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldrb r2,[r1,#3] @ 12 739049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r12 @ h+=Maj(a,b,c) from the past 740049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r12,[r1,#2] 741049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r0,[r1,#1] 742049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r12,lsl#8 743049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r12,[r1],#4 744049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r0,lsl#16 745049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 12==15 746049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 747049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 748049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r4,r4,ror#5 749049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r12,lsl#24 750049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r4,ror#19 @ Sigma1(e) 751049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 752049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r12,[r14],#4 @ *K256++ 753049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r7,r7,r2 @ h+=X[i] 754049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#12*4] 755049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r5,r6 756049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r7,r7,r0,ror#6 @ h+=Sigma1(e) 757049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r4 758049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r7,r7,r12 @ h+=K256[i] 759049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r6 @ Ch(e,f,g) 760049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r8,r8,ror#11 761049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r7,r7,r2 @ h+=Ch(e,f,g) 762049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 12==31 763049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,#0xff 764049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r12,#0xf2 @ done? 765049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 766049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 12<15 767049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 768049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 769049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 770049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 771049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 772049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r8,r9 @ a^b, b^c in next round 773049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 774049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#14*4] @ from future BODY_16_xx 775049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r8,r9 @ a^b, b^c in next round 776049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#11*4] @ from future BODY_16_xx 777049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 778049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r8,ror#20 @ Sigma0(a) 779049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,r12 @ (b^c)&=(a^b) 780049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r7 @ d+=h 781049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r3,r9 @ Maj(a,b,c) 782049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r7,r7,r0,ror#2 @ h+=Sigma0(a) 783049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r7,r7,r3 @ h+=Maj(a,b,c) 784049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if __ARM_ARCH__>=7 785049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[r1],#4 @ 13 786049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 13==15 787049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 788049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 789049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r11,r11,ror#5 790049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r7,r7,r3 @ h+=Maj(a,b,c) from the past 791049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r11,ror#19 @ Sigma1(e) 792049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project rev r2,r2 793049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 794049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldrb r2,[r1,#3] @ 13 795049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r7,r7,r3 @ h+=Maj(a,b,c) from the past 796049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r3,[r1,#2] 797049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r0,[r1,#1] 798049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r3,lsl#8 799049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r3,[r1],#4 800049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r0,lsl#16 801049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 13==15 802049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 803049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 804049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r11,r11,ror#5 805049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r3,lsl#24 806049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r11,ror#19 @ Sigma1(e) 807049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 808049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r3,[r14],#4 @ *K256++ 809049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r6,r6,r2 @ h+=X[i] 810049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#13*4] 811049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r4,r5 812049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r6,r6,r0,ror#6 @ h+=Sigma1(e) 813049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r11 814049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r6,r6,r3 @ h+=K256[i] 815049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r5 @ Ch(e,f,g) 816049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r7,r7,ror#11 817049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r6,r6,r2 @ h+=Ch(e,f,g) 818049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 13==31 819049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,#0xff 820049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r3,#0xf2 @ done? 821049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 822049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 13<15 823049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 824049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 825049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 826049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 827049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 828049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r7,r8 @ a^b, b^c in next round 829049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 830049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#15*4] @ from future BODY_16_xx 831049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r7,r8 @ a^b, b^c in next round 832049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#12*4] @ from future BODY_16_xx 833049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 834049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r7,ror#20 @ Sigma0(a) 835049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,r3 @ (b^c)&=(a^b) 836049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r6 @ d+=h 837049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r12,r8 @ Maj(a,b,c) 838049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r6,r6,r0,ror#2 @ h+=Sigma0(a) 839049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r6,r6,r12 @ h+=Maj(a,b,c) 840049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if __ARM_ARCH__>=7 841049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[r1],#4 @ 14 842049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 14==15 843049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 844049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 845049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r10,r10,ror#5 846049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r6,r6,r12 @ h+=Maj(a,b,c) from the past 847049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r10,ror#19 @ Sigma1(e) 848049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project rev r2,r2 849049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 850049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldrb r2,[r1,#3] @ 14 851049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r6,r6,r12 @ h+=Maj(a,b,c) from the past 852049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r12,[r1,#2] 853049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r0,[r1,#1] 854049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r12,lsl#8 855049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r12,[r1],#4 856049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r0,lsl#16 857049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 14==15 858049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 859049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 860049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r10,r10,ror#5 861049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r12,lsl#24 862049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r10,ror#19 @ Sigma1(e) 863049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 864049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r12,[r14],#4 @ *K256++ 865049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r5,r5,r2 @ h+=X[i] 866049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#14*4] 867049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r11,r4 868049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r5,r5,r0,ror#6 @ h+=Sigma1(e) 869049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r10 870049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r5,r5,r12 @ h+=K256[i] 871049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r4 @ Ch(e,f,g) 872049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r6,r6,ror#11 873049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r5,r5,r2 @ h+=Ch(e,f,g) 874049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 14==31 875049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,#0xff 876049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r12,#0xf2 @ done? 877049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 878049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 14<15 879049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 880049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 881049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 882049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 883049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 884049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r6,r7 @ a^b, b^c in next round 885049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 886049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#0*4] @ from future BODY_16_xx 887049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r6,r7 @ a^b, b^c in next round 888049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#13*4] @ from future BODY_16_xx 889049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 890049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r6,ror#20 @ Sigma0(a) 891049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,r12 @ (b^c)&=(a^b) 892049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r5 @ d+=h 893049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r3,r7 @ Maj(a,b,c) 894049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r5,r5,r0,ror#2 @ h+=Sigma0(a) 895049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r5,r5,r3 @ h+=Maj(a,b,c) 896049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if __ARM_ARCH__>=7 897049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[r1],#4 @ 15 898049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 15==15 899049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 900049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 901049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r9,r9,ror#5 902049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r5,r5,r3 @ h+=Maj(a,b,c) from the past 903049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r9,ror#19 @ Sigma1(e) 904049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project rev r2,r2 905049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 906049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldrb r2,[r1,#3] @ 15 907049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r5,r5,r3 @ h+=Maj(a,b,c) from the past 908049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r3,[r1,#2] 909049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r0,[r1,#1] 910049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r3,lsl#8 911049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r3,[r1],#4 912049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r0,lsl#16 913049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if 15==15 914049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r1,[sp,#17*4] @ make room for r1 915049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 916049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r9,r9,ror#5 917049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project orr r2,r2,r3,lsl#24 918049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r9,ror#19 @ Sigma1(e) 919049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 920049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r3,[r14],#4 @ *K256++ 921049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r4,r4,r2 @ h+=X[i] 922049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#15*4] 923049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r10,r11 924049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r4,r4,r0,ror#6 @ h+=Sigma1(e) 925049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r9 926049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r4,r4,r3 @ h+=K256[i] 927049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r11 @ Ch(e,f,g) 928049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r5,r5,ror#11 929049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r4,r4,r2 @ h+=Ch(e,f,g) 930049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 15==31 931049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,#0xff 932049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r3,#0xf2 @ done? 933049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 934049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 15<15 935049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 936049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 937049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 938049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 939049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 940049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r5,r6 @ a^b, b^c in next round 941049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 942049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#1*4] @ from future BODY_16_xx 943049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r5,r6 @ a^b, b^c in next round 944049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#14*4] @ from future BODY_16_xx 945049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 946049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r5,ror#20 @ Sigma0(a) 947049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,r3 @ (b^c)&=(a^b) 948049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r4 @ d+=h 949049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r12,r6 @ Maj(a,b,c) 950049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r4,r4,r0,ror#2 @ h+=Sigma0(a) 951049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r4,r4,r12 @ h+=Maj(a,b,c) 952049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project.Lrounds_16_xx: 953049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[sp,#1*4] @ 16 954049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r1,[sp,#14*4] 955049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project mov r0,r2,ror#7 956049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r4,r4,r12 @ h+=Maj(a,b,c) from the past 957049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project mov r12,r1,ror#17 958049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r2,ror#18 959049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r12,r1,ror#19 960049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 961049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#0*4] 962049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) 963049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#9*4] 964049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 965049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r12,r12,r0 966049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r8,r8,ror#5 @ from BODY_00_15 967049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r2,r2,r12 968049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r8,ror#19 @ Sigma1(e) 969049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r2,r2,r1 @ X[i] 970049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r12,[r14],#4 @ *K256++ 971049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r2 @ h+=X[i] 972049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#0*4] 973049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r9,r10 974049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r0,ror#6 @ h+=Sigma1(e) 975049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r8 976049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r12 @ h+=K256[i] 977049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r10 @ Ch(e,f,g) 978049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r4,r4,ror#11 979049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r2 @ h+=Ch(e,f,g) 980049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 16==31 981049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,#0xff 982049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r12,#0xf2 @ done? 983049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 984049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 16<15 985049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 986049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 987049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 988049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 989049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 990049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r4,r5 @ a^b, b^c in next round 991049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 992049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#2*4] @ from future BODY_16_xx 993049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r4,r5 @ a^b, b^c in next round 994049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#15*4] @ from future BODY_16_xx 995049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 996049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r4,ror#20 @ Sigma0(a) 997049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,r12 @ (b^c)&=(a^b) 998049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r7,r7,r11 @ d+=h 999049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r3,r5 @ Maj(a,b,c) 1000049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r0,ror#2 @ h+=Sigma0(a) 1001049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r11,r11,r3 @ h+=Maj(a,b,c) 1002049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[sp,#2*4] @ 17 1003049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r1,[sp,#15*4] 1004049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project mov r0,r2,ror#7 1005049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r11,r11,r3 @ h+=Maj(a,b,c) from the past 1006049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project mov r3,r1,ror#17 1007049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r2,ror#18 1008049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r3,r1,ror#19 1009049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1010049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#1*4] 1011049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) 1012049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#10*4] 1013049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1014049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r3,r3,r0 1015049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r7,r7,ror#5 @ from BODY_00_15 1016049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r2,r2,r3 1017049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r7,ror#19 @ Sigma1(e) 1018049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r2,r2,r1 @ X[i] 1019049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r3,[r14],#4 @ *K256++ 1020049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r2 @ h+=X[i] 1021049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#1*4] 1022049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r8,r9 1023049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r0,ror#6 @ h+=Sigma1(e) 1024049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r7 1025049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r3 @ h+=K256[i] 1026049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r9 @ Ch(e,f,g) 1027049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r11,r11,ror#11 1028049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r2 @ h+=Ch(e,f,g) 1029049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 17==31 1030049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,#0xff 1031049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r3,#0xf2 @ done? 1032049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 1033049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 17<15 1034049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 1035049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 1036049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 1037049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 1038049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 1039049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r11,r4 @ a^b, b^c in next round 1040049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 1041049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#3*4] @ from future BODY_16_xx 1042049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r11,r4 @ a^b, b^c in next round 1043049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#0*4] @ from future BODY_16_xx 1044049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 1045049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r11,ror#20 @ Sigma0(a) 1046049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,r3 @ (b^c)&=(a^b) 1047049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r6,r6,r10 @ d+=h 1048049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r12,r4 @ Maj(a,b,c) 1049049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r0,ror#2 @ h+=Sigma0(a) 1050049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r10,r10,r12 @ h+=Maj(a,b,c) 1051049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[sp,#3*4] @ 18 1052049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r1,[sp,#0*4] 1053049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project mov r0,r2,ror#7 1054049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r10,r10,r12 @ h+=Maj(a,b,c) from the past 1055049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project mov r12,r1,ror#17 1056049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r2,ror#18 1057049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r12,r1,ror#19 1058049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1059049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#2*4] 1060049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) 1061049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#11*4] 1062049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1063049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r12,r12,r0 1064049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r6,r6,ror#5 @ from BODY_00_15 1065049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r2,r2,r12 1066049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r6,ror#19 @ Sigma1(e) 1067049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r2,r2,r1 @ X[i] 1068049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r12,[r14],#4 @ *K256++ 1069049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r2 @ h+=X[i] 1070049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#2*4] 1071049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r7,r8 1072049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r0,ror#6 @ h+=Sigma1(e) 1073049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r6 1074049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r12 @ h+=K256[i] 1075049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r8 @ Ch(e,f,g) 1076049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r10,r10,ror#11 1077049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r2 @ h+=Ch(e,f,g) 1078049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 18==31 1079049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r12,r12,#0xff 1080049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r12,#0xf2 @ done? 1081049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 1082049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 18<15 1083049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 1084049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 1085049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 1086049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 1087049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 1088049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r10,r11 @ a^b, b^c in next round 1089049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 1090049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#4*4] @ from future BODY_16_xx 1091049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r12,r10,r11 @ a^b, b^c in next round 1092049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#1*4] @ from future BODY_16_xx 1093049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 1094049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r10,ror#20 @ Sigma0(a) 1095049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,r12 @ (b^c)&=(a^b) 1096049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r5,r5,r9 @ d+=h 1097049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r3,r11 @ Maj(a,b,c) 1098049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r0,ror#2 @ h+=Sigma0(a) 1099049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ add r9,r9,r3 @ h+=Maj(a,b,c) 1100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r2,[sp,#4*4] @ 19 1101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project @ ldr r1,[sp,#1*4] 1102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project mov r0,r2,ror#7 1103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r9,r9,r3 @ h+=Maj(a,b,c) from the past 1104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project mov r3,r1,ror#17 1105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r2,ror#18 1106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r3,r1,ror#19 1107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#3*4] 1109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) 1110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#12*4] 1111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r3,r3,r0 1113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r5,r5,ror#5 @ from BODY_00_15 1114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r2,r2,r3 1115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r0,r5,ror#19 @ Sigma1(e) 1116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r2,r2,r1 @ X[i] 1117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r3,[r14],#4 @ *K256++ 1118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r2 @ h+=X[i] 1119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project str r2,[sp,#3*4] 1120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r6,r7 1121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r0,ror#6 @ h+=Sigma1(e) 1122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r2,r2,r5 1123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r3 @ h+=K256[i] 1124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r2,r2,r7 @ Ch(e,f,g) 1125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r0,r9,r9,ror#11 1126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project add r8,r8,r2 @ h+=Ch(e,f,g) 1127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 19==31 1128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project and r3,r3,#0xff 1129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project cmp r3,#0xf2 @ done? 1130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 1131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 19<15 1132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# if __ARM_ARCH__>=7 1133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[r1],#4 @ prefetch 1134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# else 1135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldrb r2,[r1,#3] 1136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project# endif 1137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r9,r10 @ a^b, b^c in next round 1138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 1139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r2,[sp,#5*4] @ from future BODY_16_xx 1140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r9,r10 @ a^b, b^c in next round 1141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ldr r1,[sp,#2*4] @ from future BODY_16_xx 1142e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1143e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r9,ror#20 @ Sigma0(a) 1144e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 @ (b^c)&=(a^b) 1145e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r8 @ d+=h 1146e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r10 @ Maj(a,b,c) 1147e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r0,ror#2 @ h+=Sigma0(a) 1148e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ add r8,r8,r12 @ h+=Maj(a,b,c) 1149e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r2,[sp,#5*4] @ 20 1150e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r1,[sp,#2*4] 1151e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r0,r2,ror#7 1152e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r12 @ h+=Maj(a,b,c) from the past 1153e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r12,r1,ror#17 1154e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,ror#18 1155e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r1,ror#19 1156e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1157e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#4*4] 1158e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) 1159e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#13*4] 1160e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1161e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r12,r12,r0 1162e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r4,r4,ror#5 @ from BODY_00_15 1163e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r12 1164e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r4,ror#19 @ Sigma1(e) 1165e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r1 @ X[i] 1166e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r12,[r14],#4 @ *K256++ 1167e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r2 @ h+=X[i] 1168e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r2,[sp,#4*4] 1169e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r5,r6 1170e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r0,ror#6 @ h+=Sigma1(e) 1171e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r4 1172e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r12 @ h+=K256[i] 1173e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r6 @ Ch(e,f,g) 1174e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r8,r8,ror#11 1175e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r2 @ h+=Ch(e,f,g) 1176e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 20==31 1177e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,#0xff 1178e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang cmp r12,#0xf2 @ done? 1179e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1180e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 20<15 1181e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# if __ARM_ARCH__>=7 1182e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[r1],#4 @ prefetch 1183e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# else 1184e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldrb r2,[r1,#3] 1185e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# endif 1186e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r8,r9 @ a^b, b^c in next round 1187e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#else 1188e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#6*4] @ from future BODY_16_xx 1189e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r8,r9 @ a^b, b^c in next round 1190e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#3*4] @ from future BODY_16_xx 1191e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1192e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r8,ror#20 @ Sigma0(a) 1193e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 @ (b^c)&=(a^b) 1194e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r7 @ d+=h 1195e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r9 @ Maj(a,b,c) 1196e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r0,ror#2 @ h+=Sigma0(a) 1197e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ add r7,r7,r3 @ h+=Maj(a,b,c) 1198e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r2,[sp,#6*4] @ 21 1199e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r1,[sp,#3*4] 1200e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r0,r2,ror#7 1201e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r3 @ h+=Maj(a,b,c) from the past 1202e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r3,r1,ror#17 1203e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,ror#18 1204e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r1,ror#19 1205e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1206e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#5*4] 1207e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) 1208e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#14*4] 1209e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1210e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r3,r3,r0 1211e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r11,r11,ror#5 @ from BODY_00_15 1212e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r3 1213e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r11,ror#19 @ Sigma1(e) 1214e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r1 @ X[i] 1215e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r3,[r14],#4 @ *K256++ 1216e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r2 @ h+=X[i] 1217e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r2,[sp,#5*4] 1218e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r4,r5 1219e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r0,ror#6 @ h+=Sigma1(e) 1220e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r11 1221e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r3 @ h+=K256[i] 1222e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r5 @ Ch(e,f,g) 1223e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r7,r7,ror#11 1224e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r2 @ h+=Ch(e,f,g) 1225e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 21==31 1226e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,#0xff 1227e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang cmp r3,#0xf2 @ done? 1228e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1229e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 21<15 1230e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# if __ARM_ARCH__>=7 1231e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[r1],#4 @ prefetch 1232e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# else 1233e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldrb r2,[r1,#3] 1234e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# endif 1235e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r7,r8 @ a^b, b^c in next round 1236e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#else 1237e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#7*4] @ from future BODY_16_xx 1238e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r7,r8 @ a^b, b^c in next round 1239e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#4*4] @ from future BODY_16_xx 1240e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1241e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r7,ror#20 @ Sigma0(a) 1242e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 @ (b^c)&=(a^b) 1243e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r6 @ d+=h 1244e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r8 @ Maj(a,b,c) 1245e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r0,ror#2 @ h+=Sigma0(a) 1246e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ add r6,r6,r12 @ h+=Maj(a,b,c) 1247e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r2,[sp,#7*4] @ 22 1248e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r1,[sp,#4*4] 1249e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r0,r2,ror#7 1250e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r12 @ h+=Maj(a,b,c) from the past 1251e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r12,r1,ror#17 1252e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,ror#18 1253e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r1,ror#19 1254e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1255e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#6*4] 1256e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) 1257e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#15*4] 1258e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1259e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r12,r12,r0 1260e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r10,r10,ror#5 @ from BODY_00_15 1261e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r12 1262e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r10,ror#19 @ Sigma1(e) 1263e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r1 @ X[i] 1264e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r12,[r14],#4 @ *K256++ 1265e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r2 @ h+=X[i] 1266e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r2,[sp,#6*4] 1267e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r11,r4 1268e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r0,ror#6 @ h+=Sigma1(e) 1269e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r10 1270e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r12 @ h+=K256[i] 1271e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r4 @ Ch(e,f,g) 1272e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r6,r6,ror#11 1273e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r2 @ h+=Ch(e,f,g) 1274e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 22==31 1275e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,#0xff 1276e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang cmp r12,#0xf2 @ done? 1277e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1278e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 22<15 1279e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# if __ARM_ARCH__>=7 1280e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[r1],#4 @ prefetch 1281e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# else 1282e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldrb r2,[r1,#3] 1283e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# endif 1284e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r6,r7 @ a^b, b^c in next round 1285e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#else 1286e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#8*4] @ from future BODY_16_xx 1287e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r6,r7 @ a^b, b^c in next round 1288e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#5*4] @ from future BODY_16_xx 1289e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1290e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r6,ror#20 @ Sigma0(a) 1291e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 @ (b^c)&=(a^b) 1292e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r5 @ d+=h 1293e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r7 @ Maj(a,b,c) 1294e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r0,ror#2 @ h+=Sigma0(a) 1295e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ add r5,r5,r3 @ h+=Maj(a,b,c) 1296e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r2,[sp,#8*4] @ 23 1297e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r1,[sp,#5*4] 1298e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r0,r2,ror#7 1299e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r3 @ h+=Maj(a,b,c) from the past 1300e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r3,r1,ror#17 1301e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,ror#18 1302e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r1,ror#19 1303e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1304e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#7*4] 1305e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) 1306e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#0*4] 1307e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1308e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r3,r3,r0 1309e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r9,r9,ror#5 @ from BODY_00_15 1310e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r3 1311e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r9,ror#19 @ Sigma1(e) 1312e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r1 @ X[i] 1313e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r3,[r14],#4 @ *K256++ 1314e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r2 @ h+=X[i] 1315e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r2,[sp,#7*4] 1316e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r10,r11 1317e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r0,ror#6 @ h+=Sigma1(e) 1318e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r9 1319e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r3 @ h+=K256[i] 1320e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r11 @ Ch(e,f,g) 1321e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r5,r5,ror#11 1322e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r2 @ h+=Ch(e,f,g) 1323e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 23==31 1324e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,#0xff 1325e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang cmp r3,#0xf2 @ done? 1326e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1327e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 23<15 1328e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# if __ARM_ARCH__>=7 1329e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[r1],#4 @ prefetch 1330e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# else 1331e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldrb r2,[r1,#3] 1332e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# endif 1333e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r5,r6 @ a^b, b^c in next round 1334e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#else 1335e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#9*4] @ from future BODY_16_xx 1336e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r5,r6 @ a^b, b^c in next round 1337e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#6*4] @ from future BODY_16_xx 1338e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1339e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r5,ror#20 @ Sigma0(a) 1340e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 @ (b^c)&=(a^b) 1341e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r4 @ d+=h 1342e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r6 @ Maj(a,b,c) 1343e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r0,ror#2 @ h+=Sigma0(a) 1344e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ add r4,r4,r12 @ h+=Maj(a,b,c) 1345e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r2,[sp,#9*4] @ 24 1346e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r1,[sp,#6*4] 1347e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r0,r2,ror#7 1348e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r12 @ h+=Maj(a,b,c) from the past 1349e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r12,r1,ror#17 1350e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,ror#18 1351e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r1,ror#19 1352e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1353e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#8*4] 1354e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) 1355e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#1*4] 1356e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1357e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r12,r12,r0 1358e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r8,r8,ror#5 @ from BODY_00_15 1359e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r12 1360e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r8,ror#19 @ Sigma1(e) 1361e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r1 @ X[i] 1362e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r12,[r14],#4 @ *K256++ 1363e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r2 @ h+=X[i] 1364e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r2,[sp,#8*4] 1365e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r9,r10 1366e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r0,ror#6 @ h+=Sigma1(e) 1367e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r8 1368e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r12 @ h+=K256[i] 1369e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r10 @ Ch(e,f,g) 1370e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r4,r4,ror#11 1371e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r2 @ h+=Ch(e,f,g) 1372e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 24==31 1373e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,#0xff 1374e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang cmp r12,#0xf2 @ done? 1375e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1376e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 24<15 1377e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# if __ARM_ARCH__>=7 1378e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[r1],#4 @ prefetch 1379e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# else 1380e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldrb r2,[r1,#3] 1381e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# endif 1382e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r4,r5 @ a^b, b^c in next round 1383e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#else 1384e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#10*4] @ from future BODY_16_xx 1385e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r4,r5 @ a^b, b^c in next round 1386e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#7*4] @ from future BODY_16_xx 1387e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1388e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r4,ror#20 @ Sigma0(a) 1389e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 @ (b^c)&=(a^b) 1390e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r11 @ d+=h 1391e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r5 @ Maj(a,b,c) 1392e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r0,ror#2 @ h+=Sigma0(a) 1393e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ add r11,r11,r3 @ h+=Maj(a,b,c) 1394e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r2,[sp,#10*4] @ 25 1395e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r1,[sp,#7*4] 1396e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r0,r2,ror#7 1397e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r3 @ h+=Maj(a,b,c) from the past 1398e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r3,r1,ror#17 1399e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,ror#18 1400e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r1,ror#19 1401e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1402e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#9*4] 1403e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) 1404e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#2*4] 1405e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1406e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r3,r3,r0 1407e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r7,r7,ror#5 @ from BODY_00_15 1408e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r3 1409e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r7,ror#19 @ Sigma1(e) 1410e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r1 @ X[i] 1411e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r3,[r14],#4 @ *K256++ 1412e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r2 @ h+=X[i] 1413e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r2,[sp,#9*4] 1414e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r8,r9 1415e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r0,ror#6 @ h+=Sigma1(e) 1416e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r7 1417e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r3 @ h+=K256[i] 1418e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r9 @ Ch(e,f,g) 1419e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r11,r11,ror#11 1420e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r2 @ h+=Ch(e,f,g) 1421e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 25==31 1422e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,#0xff 1423e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang cmp r3,#0xf2 @ done? 1424e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1425e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 25<15 1426e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# if __ARM_ARCH__>=7 1427e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[r1],#4 @ prefetch 1428e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# else 1429e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldrb r2,[r1,#3] 1430e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# endif 1431e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r11,r4 @ a^b, b^c in next round 1432e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#else 1433e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#11*4] @ from future BODY_16_xx 1434e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r11,r4 @ a^b, b^c in next round 1435e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#8*4] @ from future BODY_16_xx 1436e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1437e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r11,ror#20 @ Sigma0(a) 1438e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 @ (b^c)&=(a^b) 1439e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r10 @ d+=h 1440e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r4 @ Maj(a,b,c) 1441e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r0,ror#2 @ h+=Sigma0(a) 1442e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ add r10,r10,r12 @ h+=Maj(a,b,c) 1443e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r2,[sp,#11*4] @ 26 1444e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r1,[sp,#8*4] 1445e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r0,r2,ror#7 1446e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r12 @ h+=Maj(a,b,c) from the past 1447e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r12,r1,ror#17 1448e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,ror#18 1449e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r1,ror#19 1450e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1451e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#10*4] 1452e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) 1453e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#3*4] 1454e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1455e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r12,r12,r0 1456e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r6,r6,ror#5 @ from BODY_00_15 1457e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r12 1458e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r6,ror#19 @ Sigma1(e) 1459e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r1 @ X[i] 1460e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r12,[r14],#4 @ *K256++ 1461e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r2 @ h+=X[i] 1462e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r2,[sp,#10*4] 1463e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r7,r8 1464e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r0,ror#6 @ h+=Sigma1(e) 1465e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r6 1466e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r12 @ h+=K256[i] 1467e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r8 @ Ch(e,f,g) 1468e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r10,r10,ror#11 1469e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r2 @ h+=Ch(e,f,g) 1470e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 26==31 1471e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,#0xff 1472e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang cmp r12,#0xf2 @ done? 1473e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1474e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 26<15 1475e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# if __ARM_ARCH__>=7 1476e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[r1],#4 @ prefetch 1477e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# else 1478e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldrb r2,[r1,#3] 1479e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# endif 1480e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r10,r11 @ a^b, b^c in next round 1481e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#else 1482e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#12*4] @ from future BODY_16_xx 1483e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r10,r11 @ a^b, b^c in next round 1484e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#9*4] @ from future BODY_16_xx 1485e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1486e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r10,ror#20 @ Sigma0(a) 1487e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 @ (b^c)&=(a^b) 1488e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r9 @ d+=h 1489e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r11 @ Maj(a,b,c) 1490e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r0,ror#2 @ h+=Sigma0(a) 1491e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ add r9,r9,r3 @ h+=Maj(a,b,c) 1492e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r2,[sp,#12*4] @ 27 1493e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r1,[sp,#9*4] 1494e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r0,r2,ror#7 1495e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r3 @ h+=Maj(a,b,c) from the past 1496e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r3,r1,ror#17 1497e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,ror#18 1498e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r1,ror#19 1499e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1500e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#11*4] 1501e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) 1502e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#4*4] 1503e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1504e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r3,r3,r0 1505e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r5,r5,ror#5 @ from BODY_00_15 1506e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r3 1507e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r5,ror#19 @ Sigma1(e) 1508e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r1 @ X[i] 1509e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r3,[r14],#4 @ *K256++ 1510e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r2 @ h+=X[i] 1511e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r2,[sp,#11*4] 1512e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r6,r7 1513e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r0,ror#6 @ h+=Sigma1(e) 1514e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r5 1515e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r3 @ h+=K256[i] 1516e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r7 @ Ch(e,f,g) 1517e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r9,r9,ror#11 1518e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r2 @ h+=Ch(e,f,g) 1519e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 27==31 1520e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,#0xff 1521e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang cmp r3,#0xf2 @ done? 1522e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1523e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 27<15 1524e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# if __ARM_ARCH__>=7 1525e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[r1],#4 @ prefetch 1526e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# else 1527e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldrb r2,[r1,#3] 1528e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# endif 1529e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r9,r10 @ a^b, b^c in next round 1530e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#else 1531e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#13*4] @ from future BODY_16_xx 1532e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r9,r10 @ a^b, b^c in next round 1533e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#10*4] @ from future BODY_16_xx 1534e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1535e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r9,ror#20 @ Sigma0(a) 1536e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 @ (b^c)&=(a^b) 1537e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r8 @ d+=h 1538e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r10 @ Maj(a,b,c) 1539e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r0,ror#2 @ h+=Sigma0(a) 1540e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ add r8,r8,r12 @ h+=Maj(a,b,c) 1541e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r2,[sp,#13*4] @ 28 1542e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r1,[sp,#10*4] 1543e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r0,r2,ror#7 1544e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r12 @ h+=Maj(a,b,c) from the past 1545e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r12,r1,ror#17 1546e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,ror#18 1547e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r1,ror#19 1548e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1549e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#12*4] 1550e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) 1551e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#5*4] 1552e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1553e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r12,r12,r0 1554e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r4,r4,ror#5 @ from BODY_00_15 1555e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r12 1556e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r4,ror#19 @ Sigma1(e) 1557e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r1 @ X[i] 1558e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r12,[r14],#4 @ *K256++ 1559e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r2 @ h+=X[i] 1560e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r2,[sp,#12*4] 1561e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r5,r6 1562e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r0,ror#6 @ h+=Sigma1(e) 1563e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r4 1564e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r12 @ h+=K256[i] 1565e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r6 @ Ch(e,f,g) 1566e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r8,r8,ror#11 1567e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r2 @ h+=Ch(e,f,g) 1568e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 28==31 1569e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,#0xff 1570e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang cmp r12,#0xf2 @ done? 1571e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1572e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 28<15 1573e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# if __ARM_ARCH__>=7 1574e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[r1],#4 @ prefetch 1575e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# else 1576e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldrb r2,[r1,#3] 1577e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# endif 1578e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r8,r9 @ a^b, b^c in next round 1579e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#else 1580e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#14*4] @ from future BODY_16_xx 1581e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r8,r9 @ a^b, b^c in next round 1582e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#11*4] @ from future BODY_16_xx 1583e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1584e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r8,ror#20 @ Sigma0(a) 1585e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 @ (b^c)&=(a^b) 1586e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r7 @ d+=h 1587e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r9 @ Maj(a,b,c) 1588e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r0,ror#2 @ h+=Sigma0(a) 1589e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ add r7,r7,r3 @ h+=Maj(a,b,c) 1590e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r2,[sp,#14*4] @ 29 1591e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r1,[sp,#11*4] 1592e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r0,r2,ror#7 1593e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r3 @ h+=Maj(a,b,c) from the past 1594e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r3,r1,ror#17 1595e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,ror#18 1596e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r1,ror#19 1597e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1598e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#13*4] 1599e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) 1600e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#6*4] 1601e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1602e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r3,r3,r0 1603e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r11,r11,ror#5 @ from BODY_00_15 1604e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r3 1605e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r11,ror#19 @ Sigma1(e) 1606e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r1 @ X[i] 1607e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r3,[r14],#4 @ *K256++ 1608e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r2 @ h+=X[i] 1609e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r2,[sp,#13*4] 1610e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r4,r5 1611e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r0,ror#6 @ h+=Sigma1(e) 1612e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r11 1613e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r3 @ h+=K256[i] 1614e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r5 @ Ch(e,f,g) 1615e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r7,r7,ror#11 1616e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r2 @ h+=Ch(e,f,g) 1617e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 29==31 1618e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,#0xff 1619e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang cmp r3,#0xf2 @ done? 1620e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1621e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 29<15 1622e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# if __ARM_ARCH__>=7 1623e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[r1],#4 @ prefetch 1624e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# else 1625e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldrb r2,[r1,#3] 1626e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# endif 1627e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r7,r8 @ a^b, b^c in next round 1628e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#else 1629e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#15*4] @ from future BODY_16_xx 1630e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r7,r8 @ a^b, b^c in next round 1631e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#12*4] @ from future BODY_16_xx 1632e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1633e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r7,ror#20 @ Sigma0(a) 1634e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 @ (b^c)&=(a^b) 1635e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r6 @ d+=h 1636e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r8 @ Maj(a,b,c) 1637e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r0,ror#2 @ h+=Sigma0(a) 1638e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ add r6,r6,r12 @ h+=Maj(a,b,c) 1639e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r2,[sp,#15*4] @ 30 1640e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r1,[sp,#12*4] 1641e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r0,r2,ror#7 1642e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r12 @ h+=Maj(a,b,c) from the past 1643e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r12,r1,ror#17 1644e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,ror#18 1645e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r1,ror#19 1646e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1647e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#14*4] 1648e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r1,lsr#10 @ sigma1(X[i+14]) 1649e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#7*4] 1650e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1651e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r12,r12,r0 1652e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r10,r10,ror#5 @ from BODY_00_15 1653e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r12 1654e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r10,ror#19 @ Sigma1(e) 1655e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r1 @ X[i] 1656e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r12,[r14],#4 @ *K256++ 1657e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r2 @ h+=X[i] 1658e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r2,[sp,#14*4] 1659e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r11,r4 1660e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r0,ror#6 @ h+=Sigma1(e) 1661e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r10 1662e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r12 @ h+=K256[i] 1663e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r4 @ Ch(e,f,g) 1664e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r6,r6,ror#11 1665e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r2 @ h+=Ch(e,f,g) 1666e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 30==31 1667e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,#0xff 1668e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang cmp r12,#0xf2 @ done? 1669e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1670e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 30<15 1671e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# if __ARM_ARCH__>=7 1672e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[r1],#4 @ prefetch 1673e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# else 1674e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldrb r2,[r1,#3] 1675e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# endif 1676e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r6,r7 @ a^b, b^c in next round 1677e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#else 1678e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#0*4] @ from future BODY_16_xx 1679e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r6,r7 @ a^b, b^c in next round 1680e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#13*4] @ from future BODY_16_xx 1681e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1682e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r6,ror#20 @ Sigma0(a) 1683e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 @ (b^c)&=(a^b) 1684e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r5 @ d+=h 1685e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r7 @ Maj(a,b,c) 1686e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r0,ror#2 @ h+=Sigma0(a) 1687e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ add r5,r5,r3 @ h+=Maj(a,b,c) 1688e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r2,[sp,#0*4] @ 31 1689e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ ldr r1,[sp,#13*4] 1690e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r0,r2,ror#7 1691e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r3 @ h+=Maj(a,b,c) from the past 1692e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r3,r1,ror#17 1693e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,ror#18 1694e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r1,ror#19 1695e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r2,lsr#3 @ sigma0(X[i+1]) 1696e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#15*4] 1697e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r1,lsr#10 @ sigma1(X[i+14]) 1698e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#8*4] 1699e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1700e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r3,r3,r0 1701e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r9,r9,ror#5 @ from BODY_00_15 1702e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r3 1703e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r9,ror#19 @ Sigma1(e) 1704e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r2,r2,r1 @ X[i] 1705e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r3,[r14],#4 @ *K256++ 1706e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r2 @ h+=X[i] 1707e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r2,[sp,#15*4] 1708e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r10,r11 1709e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r0,ror#6 @ h+=Sigma1(e) 1710e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r9 1711e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r3 @ h+=K256[i] 1712e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r11 @ Ch(e,f,g) 1713e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r5,r5,ror#11 1714e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r2 @ h+=Ch(e,f,g) 1715e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 31==31 1716e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,#0xff 1717e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang cmp r3,#0xf2 @ done? 1718e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1719e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if 31<15 1720e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# if __ARM_ARCH__>=7 1721e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[r1],#4 @ prefetch 1722e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# else 1723e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldrb r2,[r1,#3] 1724e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang# endif 1725e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r5,r6 @ a^b, b^c in next round 1726e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#else 1727e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#1*4] @ from future BODY_16_xx 1728e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r5,r6 @ a^b, b^c in next round 1729e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#14*4] @ from future BODY_16_xx 1730e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1731e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r5,ror#20 @ Sigma0(a) 1732e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 @ (b^c)&=(a^b) 1733e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r4 @ d+=h 1734e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r6 @ Maj(a,b,c) 1735e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r0,ror#2 @ h+=Sigma0(a) 1736e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang @ add r4,r4,r12 @ h+=Maj(a,b,c) 1737e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldreq r3,[sp,#16*4] @ pull ctx 1738e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang bne .Lrounds_16_xx 1739e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1740e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r12 @ h+=Maj(a,b,c) from the past 1741e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r0,[r3,#0] 1742e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[r3,#4] 1743e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r12,[r3,#8] 1744e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r0 1745e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r0,[r3,#12] 1746e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r2 1747e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[r3,#16] 1748e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r12 1749e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r12,[r3,#20] 1750e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r0 1751e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r0,[r3,#24] 1752e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r2 1753e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[r3,#28] 1754e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r12 1755e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#17*4] @ pull inp 1756e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r12,[sp,#18*4] @ pull inp+len 1757e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r0 1758e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r2 1759e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang stmia r3,{r4,r5,r6,r7,r8,r9,r10,r11} 1760e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang cmp r1,r12 1761e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang sub r14,r14,#256 @ rewind Ktbl 1762e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang bne .Loop 1763e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1764e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add sp,sp,#19*4 @ destroy frame 1765e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if __ARM_ARCH__>=5 1766e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldmia sp!,{r4-r11,pc} 1767e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#else 1768e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldmia sp!,{r4-r11,lr} 1769e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang tst lr,#1 1770e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang moveq pc,lr @ be binary compatible with V4, yet 1771e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .word 0xe12fff1e @ interoperable with Thumb ISA:-) 1772e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 1773e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang.size sha256_block_data_order,.-sha256_block_data_order 1774e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if __ARM_ARCH__>=7 1775e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang.fpu neon 1776e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1777e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang.type sha256_block_data_order_neon,%function 1778e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang.align 4 1779e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wangsha256_block_data_order_neon: 1780e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang.LNEON: 1781e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang stmdb sp!,{r4-r12,lr} 1782e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1783e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r12,sp 1784e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang sub sp,sp,#16*4+16 @ alloca 1785e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang sub r14,r3,#256+32 @ K256 1786e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang bic sp,sp,#15 @ align for 128-bit stores 1787e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1788e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.8 {q0},[r1]! 1789e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.8 {q1},[r1]! 1790e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.8 {q2},[r1]! 1791e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.8 {q3},[r1]! 1792e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q8},[r14,:128]! 1793e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q9},[r14,:128]! 1794e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q10},[r14,:128]! 1795e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q11},[r14,:128]! 1796e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vrev32.8 q0,q0 @ yes, even on 1797e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r0,[sp,#64] 1798e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vrev32.8 q1,q1 @ big-endian 1799e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r1,[sp,#68] 1800e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r1,sp 1801e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vrev32.8 q2,q2 1802e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r2,[sp,#72] 1803e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vrev32.8 q3,q3 1804e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r12,[sp,#76] @ save original sp 1805e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q8,q8,q0 1806e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q9,q9,q1 1807e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vst1.32 {q8},[r1,:128]! 1808e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q10,q10,q2 1809e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vst1.32 {q9},[r1,:128]! 1810e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q11,q11,q3 1811e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vst1.32 {q10},[r1,:128]! 1812e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vst1.32 {q11},[r1,:128]! 1813e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1814e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldmia r0,{r4-r11} 1815e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang sub r1,r1,#64 1816e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#0] 1817e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r12 1818e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r5,r6 1819e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang b .L_00_48 1820e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 1821e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang.align 4 1822e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang.L_00_48: 1823e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vext.8 q8,q0,q1,#4 1824e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r2 1825e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r9,r10 1826e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r8,r8,ror#5 1827e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vext.8 q9,q2,q3,#4 1828e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r12 1829e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r8 1830e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r0,r8,ror#19 1831e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 q10,q8,#7 1832e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r4,r4,ror#11 1833e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r10 1834e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q0,q0,q9 1835e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r12,ror#6 1836e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r4,r5 1837e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 q9,q8,#3 1838e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r4,ror#20 1839e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r2 1840e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 q10,q8,#25 1841e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#4] 1842e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 1843e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 q11,q8,#18 1844e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r11 1845e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r0,ror#2 1846e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r5 1847e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor q9,q9,q10 1848e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r2 1849e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 q11,q8,#14 1850e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r8,r9 1851e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r7,r7,ror#5 1852e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d24,d7,#17 1853e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r3 1854e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r7 1855e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor q9,q9,q11 1856e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r0,r7,ror#19 1857e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r11,r11,ror#11 1858e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 d24,d7,#15 1859e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r9 1860e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r3,ror#6 1861e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d25,d7,#10 1862e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r11,r4 1863e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r11,ror#20 1864e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q0,q0,q9 1865e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r2 1866e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#8] 1867e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor d25,d25,d24 1868e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 1869e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r10 1870e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d24,d7,#19 1871e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r0,ror#2 1872e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r4 1873e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 d24,d7,#13 1874e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r2 1875e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r7,r8 1876e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor d25,d25,d24 1877e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r6,r6,ror#5 1878e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r12 1879e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 d0,d0,d25 1880e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r6 1881e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r0,r6,ror#19 1882e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d24,d0,#17 1883e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r10,r10,ror#11 1884e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r8 1885e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 d24,d0,#15 1886e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r12,ror#6 1887e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r10,r11 1888e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d25,d0,#10 1889e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r10,ror#20 1890e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r2 1891e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor d25,d25,d24 1892e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#12] 1893e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 1894e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d24,d0,#19 1895e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r9 1896e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r0,ror#2 1897e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r11 1898e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q8},[r14,:128]! 1899e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r2 1900e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 d24,d0,#13 1901e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r6,r7 1902e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r5,r5,ror#5 1903e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor d25,d25,d24 1904e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r3 1905e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r5 1906e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 d1,d1,d25 1907e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r0,r5,ror#19 1908e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r9,r9,ror#11 1909e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q8,q8,q0 1910e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r7 1911e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r3,ror#6 1912e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r9,r10 1913e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r9,ror#20 1914e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r2 1915e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#16] 1916e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 1917e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r8 1918e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vst1.32 {q8},[r1,:128]! 1919e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r0,ror#2 1920e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r10 1921e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vext.8 q8,q1,q2,#4 1922e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r2 1923e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r5,r6 1924e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r4,r4,ror#5 1925e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vext.8 q9,q3,q0,#4 1926e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r12 1927e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r4 1928e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r0,r4,ror#19 1929e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 q10,q8,#7 1930e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r8,r8,ror#11 1931e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r6 1932e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q1,q1,q9 1933e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r12,ror#6 1934e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r8,r9 1935e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 q9,q8,#3 1936e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r8,ror#20 1937e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r2 1938e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 q10,q8,#25 1939e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#20] 1940e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 1941e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 q11,q8,#18 1942e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r7 1943e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r0,ror#2 1944e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r9 1945e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor q9,q9,q10 1946e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r2 1947e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 q11,q8,#14 1948e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r4,r5 1949e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r11,r11,ror#5 1950e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d24,d1,#17 1951e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r3 1952e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r11 1953e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor q9,q9,q11 1954e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r0,r11,ror#19 1955e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r7,r7,ror#11 1956e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 d24,d1,#15 1957e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r5 1958e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r3,ror#6 1959e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d25,d1,#10 1960e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r7,r8 1961e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r7,ror#20 1962e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q1,q1,q9 1963e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r2 1964e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#24] 1965e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor d25,d25,d24 1966e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 1967e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r6 1968e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d24,d1,#19 1969e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r0,ror#2 1970e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r8 1971e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 d24,d1,#13 1972e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r2 1973e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r11,r4 1974e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor d25,d25,d24 1975e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r10,r10,ror#5 1976e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r12 1977e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 d2,d2,d25 1978e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r10 1979e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r0,r10,ror#19 1980e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d24,d2,#17 1981e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r6,r6,ror#11 1982e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r4 1983e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 d24,d2,#15 1984e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r12,ror#6 1985e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r6,r7 1986e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d25,d2,#10 1987e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r6,ror#20 1988e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r2 1989e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor d25,d25,d24 1990e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#28] 1991e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 1992e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d24,d2,#19 1993e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r5 1994e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r0,ror#2 1995e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r7 1996e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q8},[r14,:128]! 1997e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r2 1998e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 d24,d2,#13 1999e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r10,r11 2000e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r9,r9,ror#5 2001e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor d25,d25,d24 2002e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r3 2003e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r9 2004e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 d3,d3,d25 2005e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r0,r9,ror#19 2006e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r5,r5,ror#11 2007e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q8,q8,q1 2008e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r11 2009e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r3,ror#6 2010e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r5,r6 2011e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r5,ror#20 2012e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r2 2013e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#32] 2014e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 2015e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r4 2016e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vst1.32 {q8},[r1,:128]! 2017e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r0,ror#2 2018e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r6 2019e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vext.8 q8,q2,q3,#4 2020e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r2 2021e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r9,r10 2022e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r8,r8,ror#5 2023e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vext.8 q9,q0,q1,#4 2024e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r12 2025e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r8 2026e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r0,r8,ror#19 2027e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 q10,q8,#7 2028e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r4,r4,ror#11 2029e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r10 2030e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q2,q2,q9 2031e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r12,ror#6 2032e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r4,r5 2033e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 q9,q8,#3 2034e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r4,ror#20 2035e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r2 2036e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 q10,q8,#25 2037e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#36] 2038e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 2039e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 q11,q8,#18 2040e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r11 2041e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r0,ror#2 2042049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project eor r3,r3,r5 2043e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor q9,q9,q10 2044e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r2 2045e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 q11,q8,#14 2046e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r8,r9 2047e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r7,r7,ror#5 2048e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d24,d3,#17 2049e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r3 2050e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r7 2051e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor q9,q9,q11 2052e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r0,r7,ror#19 2053e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r11,r11,ror#11 2054e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 d24,d3,#15 2055e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r9 2056e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r3,ror#6 2057e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d25,d3,#10 2058e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r11,r4 2059e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r11,ror#20 2060e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q2,q2,q9 2061e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r2 2062e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#40] 2063e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor d25,d25,d24 2064e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 2065e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r10 2066e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d24,d3,#19 2067e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r0,ror#2 2068e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r4 2069e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 d24,d3,#13 2070e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r2 2071e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r7,r8 2072e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor d25,d25,d24 2073e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r6,r6,ror#5 2074e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r12 2075e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 d4,d4,d25 2076e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r6 2077e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r0,r6,ror#19 2078e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d24,d4,#17 2079e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r10,r10,ror#11 2080e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r8 2081e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 d24,d4,#15 2082e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r12,ror#6 2083e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r10,r11 2084e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d25,d4,#10 2085e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r10,ror#20 2086e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r2 2087e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor d25,d25,d24 2088e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#44] 2089e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 2090e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d24,d4,#19 2091e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r9 2092e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r0,ror#2 2093e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r11 2094e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q8},[r14,:128]! 2095e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r2 2096e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 d24,d4,#13 2097e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r6,r7 2098e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r5,r5,ror#5 2099e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor d25,d25,d24 2100e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r3 2101e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r5 2102e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 d5,d5,d25 2103e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r0,r5,ror#19 2104e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r9,r9,ror#11 2105e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q8,q8,q2 2106e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r7 2107e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r3,ror#6 2108e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r9,r10 2109e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r9,ror#20 2110e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r2 2111e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#48] 2112e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 2113e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r8 2114e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vst1.32 {q8},[r1,:128]! 2115e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r0,ror#2 2116e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r10 2117e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vext.8 q8,q3,q0,#4 2118e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r2 2119e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r5,r6 2120e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r4,r4,ror#5 2121e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vext.8 q9,q1,q2,#4 2122e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r12 2123e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r4 2124e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r0,r4,ror#19 2125e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 q10,q8,#7 2126e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r8,r8,ror#11 2127e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r6 2128e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q3,q3,q9 2129e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r12,ror#6 2130e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r8,r9 2131e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 q9,q8,#3 2132e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r8,ror#20 2133e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r2 2134e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 q10,q8,#25 2135e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#52] 2136e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 2137e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 q11,q8,#18 2138e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r7 2139e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r0,ror#2 2140e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r9 2141e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor q9,q9,q10 2142e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r2 2143e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 q11,q8,#14 2144e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r4,r5 2145e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r11,r11,ror#5 2146e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d24,d5,#17 2147e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r3 2148e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r11 2149e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor q9,q9,q11 2150e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r0,r11,ror#19 2151e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r7,r7,ror#11 2152e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 d24,d5,#15 2153e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r5 2154e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r3,ror#6 2155e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d25,d5,#10 2156e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r7,r8 2157e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r7,ror#20 2158e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q3,q3,q9 2159e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r2 2160e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#56] 2161e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor d25,d25,d24 2162e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 2163e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r6 2164e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d24,d5,#19 2165e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r0,ror#2 2166e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r8 2167e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 d24,d5,#13 2168e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r2 2169e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r11,r4 2170e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor d25,d25,d24 2171e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r10,r10,ror#5 2172e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r12 2173e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 d6,d6,d25 2174e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r10 2175e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r0,r10,ror#19 2176e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d24,d6,#17 2177e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r6,r6,ror#11 2178e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r4 2179e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 d24,d6,#15 2180e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r12,ror#6 2181e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r6,r7 2182e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d25,d6,#10 2183e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r6,ror#20 2184e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r2 2185e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor d25,d25,d24 2186e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#60] 2187e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 2188e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vshr.u32 d24,d6,#19 2189e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r5 2190e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r0,ror#2 2191e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r7 2192e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q8},[r14,:128]! 2193e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r2 2194e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vsli.32 d24,d6,#13 2195e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r10,r11 2196e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r9,r9,ror#5 2197e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang veor d25,d25,d24 2198e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r3 2199e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r9 2200e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 d7,d7,d25 2201e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r0,r9,ror#19 2202e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r5,r5,ror#11 2203e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q8,q8,q3 2204e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r11 2205e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r3,ror#6 2206e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r5,r6 2207e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r5,ror#20 2208e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r2 2209e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[r14] 2210e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 2211e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r4 2212e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vst1.32 {q8},[r1,:128]! 2213e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r0,ror#2 2214e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r6 2215e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang teq r2,#0 @ check for K256 terminator 2216e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#0] 2217e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang sub r1,r1,#64 2218e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang bne .L_00_48 2219e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 2220e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[sp,#68] 2221e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r0,[sp,#72] 2222e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang sub r14,r14,#256 @ rewind r14 2223e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang teq r1,r0 2224e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang subeq r1,r1,#64 @ avoid SEGV 2225e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.8 {q0},[r1]! @ load next input block 2226e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.8 {q1},[r1]! 2227e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.8 {q2},[r1]! 2228e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.8 {q3},[r1]! 2229e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang strne r1,[sp,#68] 2230e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang mov r1,sp 2231e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r2 2232e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r9,r10 2233e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r8,r8,ror#5 2234e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r12 2235e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q8},[r14,:128]! 2236e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r8 2237e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r0,r8,ror#19 2238e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r4,r4,ror#11 2239e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r10 2240e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vrev32.8 q0,q0 2241e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r12,ror#6 2242e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r4,r5 2243e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r4,ror#20 2244e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r2 2245e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q8,q8,q0 2246e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#4] 2247e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 2248e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r11 2249e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r0,ror#2 2250e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r5 2251e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r2 2252e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r8,r9 2253e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r7,r7,ror#5 2254e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r3 2255e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r7 2256e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r0,r7,ror#19 2257e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r11,r11,ror#11 2258e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r9 2259e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r3,ror#6 2260e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r11,r4 2261e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r11,ror#20 2262e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r2 2263e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#8] 2264e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 2265e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r10 2266e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r0,ror#2 2267e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r4 2268e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r2 2269e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r7,r8 2270e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r6,r6,ror#5 2271e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r12 2272e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r6 2273e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r0,r6,ror#19 2274e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r10,r10,ror#11 2275e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r8 2276e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r12,ror#6 2277e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r10,r11 2278e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r10,ror#20 2279e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r2 2280e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#12] 2281e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 2282e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r9 2283e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r0,ror#2 2284e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r11 2285e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r2 2286e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r6,r7 2287e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r5,r5,ror#5 2288e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r3 2289e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r5 2290e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r0,r5,ror#19 2291e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r9,r9,ror#11 2292e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r7 2293e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r3,ror#6 2294e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r9,r10 2295e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r9,ror#20 2296e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r2 2297e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#16] 2298e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 2299e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r8 2300e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r0,ror#2 2301e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r10 2302e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vst1.32 {q8},[r1,:128]! 2303e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r2 2304e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r5,r6 2305e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r4,r4,ror#5 2306e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r12 2307e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q8},[r14,:128]! 2308e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r4 2309e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r0,r4,ror#19 2310e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r8,r8,ror#11 2311e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r6 2312e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vrev32.8 q1,q1 2313e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r12,ror#6 2314e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r8,r9 2315e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r8,ror#20 2316e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r2 2317e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q8,q8,q1 2318e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#20] 2319e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 2320e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r7 2321e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r0,ror#2 2322e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r9 2323e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r2 2324e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r4,r5 2325e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r11,r11,ror#5 2326e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r3 2327e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r11 2328e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r0,r11,ror#19 2329e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r7,r7,ror#11 2330e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r5 2331e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r3,ror#6 2332e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r7,r8 2333e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r7,ror#20 2334e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r2 2335e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#24] 2336e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 2337e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r6 2338e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r0,ror#2 2339e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r8 2340e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r2 2341e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r11,r4 2342e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r10,r10,ror#5 2343e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r12 2344e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r10 2345e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r0,r10,ror#19 2346e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r6,r6,ror#11 2347e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r4 2348e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r12,ror#6 2349e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r6,r7 2350e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r6,ror#20 2351e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r2 2352e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#28] 2353e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 2354e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r5 2355e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r0,ror#2 2356e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r7 2357e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r2 2358e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r10,r11 2359e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r9,r9,ror#5 2360e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r3 2361e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r9 2362e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r0,r9,ror#19 2363e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r5,r5,ror#11 2364e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r11 2365e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r3,ror#6 2366e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r5,r6 2367e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r5,ror#20 2368e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r2 2369e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#32] 2370e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 2371e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r4 2372e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r0,ror#2 2373e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r6 2374e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vst1.32 {q8},[r1,:128]! 2375e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r2 2376e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r9,r10 2377e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r8,r8,ror#5 2378e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r12 2379e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q8},[r14,:128]! 2380e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r8 2381e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r0,r8,ror#19 2382e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r4,r4,ror#11 2383e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r10 2384e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vrev32.8 q2,q2 2385e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r12,ror#6 2386e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r4,r5 2387e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r4,ror#20 2388e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r2 2389e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q8,q8,q2 2390e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#36] 2391e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 2392e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r11 2393e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r0,ror#2 2394e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r5 2395e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r2 2396e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r8,r9 2397e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r7,r7,ror#5 2398e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r3 2399e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r7 2400e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r0,r7,ror#19 2401e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r11,r11,ror#11 2402e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r9 2403e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r3,ror#6 2404e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r11,r4 2405e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r11,ror#20 2406e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r2 2407e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#40] 2408e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 2409e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r10 2410e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r0,ror#2 2411e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r4 2412e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r2 2413e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r7,r8 2414e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r6,r6,ror#5 2415e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r12 2416e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r6 2417e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r0,r6,ror#19 2418e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r10,r10,ror#11 2419e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r8 2420e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r12,ror#6 2421e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r10,r11 2422e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r10,ror#20 2423e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r2 2424e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#44] 2425e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 2426e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r9 2427e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r0,ror#2 2428e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r11 2429e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r2 2430e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r6,r7 2431e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r5,r5,ror#5 2432e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r3 2433e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r5 2434e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r0,r5,ror#19 2435e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r9,r9,ror#11 2436e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r7 2437e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r3,ror#6 2438e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r9,r10 2439e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r9,ror#20 2440e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r2 2441e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#48] 2442e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 2443e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r8 2444e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r0,ror#2 2445e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r10 2446e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vst1.32 {q8},[r1,:128]! 2447e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r2 2448e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r5,r6 2449e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r4,r4,ror#5 2450e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r12 2451e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q8},[r14,:128]! 2452e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r4 2453e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r0,r4,ror#19 2454e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r8,r8,ror#11 2455e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r6 2456e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vrev32.8 q3,q3 2457e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r12,ror#6 2458e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r8,r9 2459e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r8,ror#20 2460e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r2 2461e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q8,q8,q3 2462e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#52] 2463e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 2464e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r7 2465e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r0,ror#2 2466e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r9 2467e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r2 2468e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r4,r5 2469e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r11,r11,ror#5 2470e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r3 2471e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r11 2472e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r0,r11,ror#19 2473e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r7,r7,ror#11 2474e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r5 2475e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r3,ror#6 2476e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r7,r8 2477e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r7,ror#20 2478e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r2 2479e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#56] 2480e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 2481e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r6 2482e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r0,ror#2 2483e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r8 2484e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r2 2485e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r11,r4 2486e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r10,r10,ror#5 2487e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r12 2488e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r10 2489e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r0,r10,ror#19 2490e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r6,r6,ror#11 2491e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r4 2492e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r12,ror#6 2493e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r6,r7 2494e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r6,ror#20 2495e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r2 2496e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#60] 2497e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r3,r3,r12 2498e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r5 2499e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r0,ror#2 2500e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r3,r7 2501e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r2 2502e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r10,r11 2503e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r9,r9,ror#5 2504e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r3 2505e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r2,r2,r9 2506e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r0,r9,ror#19 2507e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r5,r5,ror#11 2508e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r2,r2,r11 2509e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r3,ror#6 2510e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r3,r5,r6 2511e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r0,r0,r5,ror#20 2512e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r2 2513e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r2,[sp,#64] 2514e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang and r12,r12,r3 2515e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r4 2516e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r0,ror#2 2517e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eor r12,r12,r6 2518e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vst1.32 {q8},[r1,:128]! 2519e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r0,[r2,#0] 2520e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r12 @ h+=Maj(a,b,c) from the past 2521e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r12,[r2,#4] 2522e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r3,[r2,#8] 2523e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[r2,#12] 2524e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r4,r4,r0 @ accumulate 2525e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r0,[r2,#16] 2526e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r5,r5,r12 2527e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r12,[r2,#20] 2528e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r6,r6,r3 2529e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r3,[r2,#24] 2530e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r7,r7,r1 2531e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldr r1,[r2,#28] 2532e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r8,r8,r0 2533e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r4,[r2],#4 2534e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r9,r9,r12 2535e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r5,[r2],#4 2536e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r10,r10,r3 2537e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r6,[r2],#4 2538e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang add r11,r11,r1 2539e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang str r7,[r2],#4 2540e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang stmia r2,{r8-r11} 2541e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 2542e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang movne r1,sp 2543e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldrne r2,[sp,#0] 2544e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eorne r12,r12,r12 2545e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldreq sp,[sp,#76] @ restore original sp 2546e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang eorne r3,r5,r6 2547e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang bne .L_00_48 2548e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 2549e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang ldmia sp!,{r4-r12,pc} 2550e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang.size sha256_block_data_order_neon,.-sha256_block_data_order_neon 2551e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 2552e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#if __ARM_ARCH__>=7 2553e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang.type sha256_block_data_order_armv8,%function 2554e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang.align 5 2555e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wangsha256_block_data_order_armv8: 2556e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang.LARMv8: 2557e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q0,q1},[r0] 2558e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang sub r3,r3,#sha256_block_data_order-K256 2559e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 2560e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang.Loop_v8: 2561e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.8 {q8-q9},[r1]! 2562e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.8 {q10-q11},[r1]! 2563e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q12},[r3]! 2564e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vrev32.8 q8,q8 2565e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vrev32.8 q9,q9 2566e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vrev32.8 q10,q10 2567e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vrev32.8 q11,q11 2568e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vmov q14,q0 @ offload 2569e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vmov q15,q1 2570e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang teq r1,r2 2571e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q13},[r3]! 2572e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q12,q12,q8 2573e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe2,0x03,0xfa,0xf3 @ sha256su0 q8,q9 2574e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vmov q2,q0 2575e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x68,0x0c,0x02,0xf3 @ sha256h q0,q1,q12 2576e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x68,0x2c,0x14,0xf3 @ sha256h2 q1,q2,q12 2577e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe6,0x0c,0x64,0xf3 @ sha256su1 q8,q10,q11 2578e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q12},[r3]! 2579e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q13,q13,q9 2580e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe4,0x23,0xfa,0xf3 @ sha256su0 q9,q10 2581e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vmov q2,q0 2582e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x6a,0x0c,0x02,0xf3 @ sha256h q0,q1,q13 2583e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x6a,0x2c,0x14,0xf3 @ sha256h2 q1,q2,q13 2584e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe0,0x2c,0x66,0xf3 @ sha256su1 q9,q11,q8 2585e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q13},[r3]! 2586e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q12,q12,q10 2587e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe6,0x43,0xfa,0xf3 @ sha256su0 q10,q11 2588e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vmov q2,q0 2589e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x68,0x0c,0x02,0xf3 @ sha256h q0,q1,q12 2590e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x68,0x2c,0x14,0xf3 @ sha256h2 q1,q2,q12 2591e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe2,0x4c,0x60,0xf3 @ sha256su1 q10,q8,q9 2592e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q12},[r3]! 2593e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q13,q13,q11 2594e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe0,0x63,0xfa,0xf3 @ sha256su0 q11,q8 2595e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vmov q2,q0 2596e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x6a,0x0c,0x02,0xf3 @ sha256h q0,q1,q13 2597e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x6a,0x2c,0x14,0xf3 @ sha256h2 q1,q2,q13 2598e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe4,0x6c,0x62,0xf3 @ sha256su1 q11,q9,q10 2599e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q13},[r3]! 2600e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q12,q12,q8 2601e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe2,0x03,0xfa,0xf3 @ sha256su0 q8,q9 2602e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vmov q2,q0 2603e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x68,0x0c,0x02,0xf3 @ sha256h q0,q1,q12 2604e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x68,0x2c,0x14,0xf3 @ sha256h2 q1,q2,q12 2605e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe6,0x0c,0x64,0xf3 @ sha256su1 q8,q10,q11 2606e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q12},[r3]! 2607e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q13,q13,q9 2608e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe4,0x23,0xfa,0xf3 @ sha256su0 q9,q10 2609e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vmov q2,q0 2610e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x6a,0x0c,0x02,0xf3 @ sha256h q0,q1,q13 2611e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x6a,0x2c,0x14,0xf3 @ sha256h2 q1,q2,q13 2612e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe0,0x2c,0x66,0xf3 @ sha256su1 q9,q11,q8 2613e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q13},[r3]! 2614e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q12,q12,q10 2615e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe6,0x43,0xfa,0xf3 @ sha256su0 q10,q11 2616e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vmov q2,q0 2617e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x68,0x0c,0x02,0xf3 @ sha256h q0,q1,q12 2618e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x68,0x2c,0x14,0xf3 @ sha256h2 q1,q2,q12 2619e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe2,0x4c,0x60,0xf3 @ sha256su1 q10,q8,q9 2620e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q12},[r3]! 2621e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q13,q13,q11 2622e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe0,0x63,0xfa,0xf3 @ sha256su0 q11,q8 2623e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vmov q2,q0 2624e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x6a,0x0c,0x02,0xf3 @ sha256h q0,q1,q13 2625e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x6a,0x2c,0x14,0xf3 @ sha256h2 q1,q2,q13 2626e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe4,0x6c,0x62,0xf3 @ sha256su1 q11,q9,q10 2627e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q13},[r3]! 2628e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q12,q12,q8 2629e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe2,0x03,0xfa,0xf3 @ sha256su0 q8,q9 2630e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vmov q2,q0 2631e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x68,0x0c,0x02,0xf3 @ sha256h q0,q1,q12 2632e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x68,0x2c,0x14,0xf3 @ sha256h2 q1,q2,q12 2633e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe6,0x0c,0x64,0xf3 @ sha256su1 q8,q10,q11 2634e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q12},[r3]! 2635e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q13,q13,q9 2636e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe4,0x23,0xfa,0xf3 @ sha256su0 q9,q10 2637e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vmov q2,q0 2638e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x6a,0x0c,0x02,0xf3 @ sha256h q0,q1,q13 2639e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x6a,0x2c,0x14,0xf3 @ sha256h2 q1,q2,q13 2640e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe0,0x2c,0x66,0xf3 @ sha256su1 q9,q11,q8 2641e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q13},[r3]! 2642e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q12,q12,q10 2643e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe6,0x43,0xfa,0xf3 @ sha256su0 q10,q11 2644e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vmov q2,q0 2645e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x68,0x0c,0x02,0xf3 @ sha256h q0,q1,q12 2646e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x68,0x2c,0x14,0xf3 @ sha256h2 q1,q2,q12 2647e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe2,0x4c,0x60,0xf3 @ sha256su1 q10,q8,q9 2648e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q12},[r3]! 2649e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q13,q13,q11 2650e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe0,0x63,0xfa,0xf3 @ sha256su0 q11,q8 2651e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vmov q2,q0 2652e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x6a,0x0c,0x02,0xf3 @ sha256h q0,q1,q13 2653e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x6a,0x2c,0x14,0xf3 @ sha256h2 q1,q2,q13 2654e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0xe4,0x6c,0x62,0xf3 @ sha256su1 q11,q9,q10 2655e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q13},[r3]! 2656e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q12,q12,q8 2657e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vmov q2,q0 2658e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x68,0x0c,0x02,0xf3 @ sha256h q0,q1,q12 2659e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x68,0x2c,0x14,0xf3 @ sha256h2 q1,q2,q12 2660e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 2661e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q12},[r3]! 2662e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q13,q13,q9 2663e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vmov q2,q0 2664e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x6a,0x0c,0x02,0xf3 @ sha256h q0,q1,q13 2665e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x6a,0x2c,0x14,0xf3 @ sha256h2 q1,q2,q13 2666e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 2667e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vld1.32 {q13},[r3] 2668e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q12,q12,q10 2669e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang sub r3,r3,#256-16 @ rewind 2670e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vmov q2,q0 2671e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x68,0x0c,0x02,0xf3 @ sha256h q0,q1,q12 2672e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x68,0x2c,0x14,0xf3 @ sha256h2 q1,q2,q12 2673e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 2674e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q13,q13,q11 2675e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vmov q2,q0 2676e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x6a,0x0c,0x02,0xf3 @ sha256h q0,q1,q13 2677e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang .byte 0x6a,0x2c,0x14,0xf3 @ sha256h2 q1,q2,q13 2678e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 2679e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q0,q0,q14 2680e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vadd.i32 q1,q1,q15 2681e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang bne .Loop_v8 2682e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 2683e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang vst1.32 {q0,q1},[r0] 2684e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang 2685e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang bx lr @ bx lr 2686e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang.size sha256_block_data_order_armv8,.-sha256_block_data_order_armv8 2687e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#endif 2688e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang.asciz "SHA256 block transform for ARMv4/NEON/ARMv8, CRYPTOGAMS by <appro@openssl.org>" 2689e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang.align 2 2690e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang.comm OPENSSL_armcap_P,4,4 2691e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang