Home | History | Annotate | Download | only in asm
      1 .text
      2 .code	32
      3 
      4 .type	K256,%object
      5 .align	5
      6 K256:
      7 .word	0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
      8 .word	0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
      9 .word	0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
     10 .word	0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
     11 .word	0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
     12 .word	0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
     13 .word	0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
     14 .word	0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
     15 .word	0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
     16 .word	0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
     17 .word	0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
     18 .word	0xd192e819,0xd6990624,0xf40e3585,0x106aa070
     19 .word	0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
     20 .word	0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
     21 .word	0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
     22 .word	0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
     23 .size	K256,.-K256
     24 
     25 .global	sha256_block_data_order
     26 .type	sha256_block_data_order,%function
     27 sha256_block_data_order:
     28 	sub	r3,pc,#8		@ sha256_block_data_order
     29 	add	r2,r1,r2,lsl#6	@ len to point at the end of inp
     30 	stmdb	sp!,{r0,r1,r2,r4-r12,lr}
     31 	ldmia	r0,{r4,r5,r6,r7,r8,r9,r10,r11}
     32 	sub	r14,r3,#256		@ K256
     33 	sub	sp,sp,#16*4		@ alloca(X[16])
     34 .Loop:
     35 	ldrb	r3,[r1,#3]			@ 0
     36 	ldrb	r12,[r1,#2]
     37 	ldrb	r2,[r1,#1]
     38 	ldrb	r0,[r1],#4
     39 	orr	r3,r3,r12,lsl#8
     40 	orr	r3,r3,r2,lsl#16
     41 	orr	r3,r3,r0,lsl#24
     42 
     43 	ldr	r12,[r14],#4			@ *K256++
     44 	mov	r0,r8,ror#6
     45 	str	r3,[sp,#0*4]
     46 	eor	r0,r0,r8,ror#11
     47 	eor	r2,r9,r10
     48 	eor	r0,r0,r8,ror#25	@ Sigma1(e)
     49 	and	r2,r2,r8
     50 	add	r3,r3,r0
     51 	eor	r2,r2,r10			@ Ch(e,f,g)
     52 	add	r3,r3,r11
     53 	mov	r11,r4,ror#2
     54 	add	r3,r3,r2
     55 	eor	r11,r11,r4,ror#13
     56 	add	r3,r3,r12
     57 	eor	r11,r11,r4,ror#22		@ Sigma0(a)
     58 	orr	r0,r4,r5
     59 	and	r2,r4,r5
     60 	and	r0,r0,r6
     61 	add	r11,r11,r3
     62 	orr	r0,r0,r2			@ Maj(a,b,c)
     63 	add	r7,r7,r3
     64 	add	r11,r11,r0
     65 	ldrb	r3,[r1,#3]			@ 1
     66 	ldrb	r12,[r1,#2]
     67 	ldrb	r2,[r1,#1]
     68 	ldrb	r0,[r1],#4
     69 	orr	r3,r3,r12,lsl#8
     70 	orr	r3,r3,r2,lsl#16
     71 	orr	r3,r3,r0,lsl#24
     72 
     73 	ldr	r12,[r14],#4			@ *K256++
     74 	mov	r0,r7,ror#6
     75 	str	r3,[sp,#1*4]
     76 	eor	r0,r0,r7,ror#11
     77 	eor	r2,r8,r9
     78 	eor	r0,r0,r7,ror#25	@ Sigma1(e)
     79 	and	r2,r2,r7
     80 	add	r3,r3,r0
     81 	eor	r2,r2,r9			@ Ch(e,f,g)
     82 	add	r3,r3,r10
     83 	mov	r10,r11,ror#2
     84 	add	r3,r3,r2
     85 	eor	r10,r10,r11,ror#13
     86 	add	r3,r3,r12
     87 	eor	r10,r10,r11,ror#22		@ Sigma0(a)
     88 	orr	r0,r11,r4
     89 	and	r2,r11,r4
     90 	and	r0,r0,r5
     91 	add	r10,r10,r3
     92 	orr	r0,r0,r2			@ Maj(a,b,c)
     93 	add	r6,r6,r3
     94 	add	r10,r10,r0
     95 	ldrb	r3,[r1,#3]			@ 2
     96 	ldrb	r12,[r1,#2]
     97 	ldrb	r2,[r1,#1]
     98 	ldrb	r0,[r1],#4
     99 	orr	r3,r3,r12,lsl#8
    100 	orr	r3,r3,r2,lsl#16
    101 	orr	r3,r3,r0,lsl#24
    102 
    103 	ldr	r12,[r14],#4			@ *K256++
    104 	mov	r0,r6,ror#6
    105 	str	r3,[sp,#2*4]
    106 	eor	r0,r0,r6,ror#11
    107 	eor	r2,r7,r8
    108 	eor	r0,r0,r6,ror#25	@ Sigma1(e)
    109 	and	r2,r2,r6
    110 	add	r3,r3,r0
    111 	eor	r2,r2,r8			@ Ch(e,f,g)
    112 	add	r3,r3,r9
    113 	mov	r9,r10,ror#2
    114 	add	r3,r3,r2
    115 	eor	r9,r9,r10,ror#13
    116 	add	r3,r3,r12
    117 	eor	r9,r9,r10,ror#22		@ Sigma0(a)
    118 	orr	r0,r10,r11
    119 	and	r2,r10,r11
    120 	and	r0,r0,r4
    121 	add	r9,r9,r3
    122 	orr	r0,r0,r2			@ Maj(a,b,c)
    123 	add	r5,r5,r3
    124 	add	r9,r9,r0
    125 	ldrb	r3,[r1,#3]			@ 3
    126 	ldrb	r12,[r1,#2]
    127 	ldrb	r2,[r1,#1]
    128 	ldrb	r0,[r1],#4
    129 	orr	r3,r3,r12,lsl#8
    130 	orr	r3,r3,r2,lsl#16
    131 	orr	r3,r3,r0,lsl#24
    132 
    133 	ldr	r12,[r14],#4			@ *K256++
    134 	mov	r0,r5,ror#6
    135 	str	r3,[sp,#3*4]
    136 	eor	r0,r0,r5,ror#11
    137 	eor	r2,r6,r7
    138 	eor	r0,r0,r5,ror#25	@ Sigma1(e)
    139 	and	r2,r2,r5
    140 	add	r3,r3,r0
    141 	eor	r2,r2,r7			@ Ch(e,f,g)
    142 	add	r3,r3,r8
    143 	mov	r8,r9,ror#2
    144 	add	r3,r3,r2
    145 	eor	r8,r8,r9,ror#13
    146 	add	r3,r3,r12
    147 	eor	r8,r8,r9,ror#22		@ Sigma0(a)
    148 	orr	r0,r9,r10
    149 	and	r2,r9,r10
    150 	and	r0,r0,r11
    151 	add	r8,r8,r3
    152 	orr	r0,r0,r2			@ Maj(a,b,c)
    153 	add	r4,r4,r3
    154 	add	r8,r8,r0
    155 	ldrb	r3,[r1,#3]			@ 4
    156 	ldrb	r12,[r1,#2]
    157 	ldrb	r2,[r1,#1]
    158 	ldrb	r0,[r1],#4
    159 	orr	r3,r3,r12,lsl#8
    160 	orr	r3,r3,r2,lsl#16
    161 	orr	r3,r3,r0,lsl#24
    162 
    163 	ldr	r12,[r14],#4			@ *K256++
    164 	mov	r0,r4,ror#6
    165 	str	r3,[sp,#4*4]
    166 	eor	r0,r0,r4,ror#11
    167 	eor	r2,r5,r6
    168 	eor	r0,r0,r4,ror#25	@ Sigma1(e)
    169 	and	r2,r2,r4
    170 	add	r3,r3,r0
    171 	eor	r2,r2,r6			@ Ch(e,f,g)
    172 	add	r3,r3,r7
    173 	mov	r7,r8,ror#2
    174 	add	r3,r3,r2
    175 	eor	r7,r7,r8,ror#13
    176 	add	r3,r3,r12
    177 	eor	r7,r7,r8,ror#22		@ Sigma0(a)
    178 	orr	r0,r8,r9
    179 	and	r2,r8,r9
    180 	and	r0,r0,r10
    181 	add	r7,r7,r3
    182 	orr	r0,r0,r2			@ Maj(a,b,c)
    183 	add	r11,r11,r3
    184 	add	r7,r7,r0
    185 	ldrb	r3,[r1,#3]			@ 5
    186 	ldrb	r12,[r1,#2]
    187 	ldrb	r2,[r1,#1]
    188 	ldrb	r0,[r1],#4
    189 	orr	r3,r3,r12,lsl#8
    190 	orr	r3,r3,r2,lsl#16
    191 	orr	r3,r3,r0,lsl#24
    192 
    193 	ldr	r12,[r14],#4			@ *K256++
    194 	mov	r0,r11,ror#6
    195 	str	r3,[sp,#5*4]
    196 	eor	r0,r0,r11,ror#11
    197 	eor	r2,r4,r5
    198 	eor	r0,r0,r11,ror#25	@ Sigma1(e)
    199 	and	r2,r2,r11
    200 	add	r3,r3,r0
    201 	eor	r2,r2,r5			@ Ch(e,f,g)
    202 	add	r3,r3,r6
    203 	mov	r6,r7,ror#2
    204 	add	r3,r3,r2
    205 	eor	r6,r6,r7,ror#13
    206 	add	r3,r3,r12
    207 	eor	r6,r6,r7,ror#22		@ Sigma0(a)
    208 	orr	r0,r7,r8
    209 	and	r2,r7,r8
    210 	and	r0,r0,r9
    211 	add	r6,r6,r3
    212 	orr	r0,r0,r2			@ Maj(a,b,c)
    213 	add	r10,r10,r3
    214 	add	r6,r6,r0
    215 	ldrb	r3,[r1,#3]			@ 6
    216 	ldrb	r12,[r1,#2]
    217 	ldrb	r2,[r1,#1]
    218 	ldrb	r0,[r1],#4
    219 	orr	r3,r3,r12,lsl#8
    220 	orr	r3,r3,r2,lsl#16
    221 	orr	r3,r3,r0,lsl#24
    222 
    223 	ldr	r12,[r14],#4			@ *K256++
    224 	mov	r0,r10,ror#6
    225 	str	r3,[sp,#6*4]
    226 	eor	r0,r0,r10,ror#11
    227 	eor	r2,r11,r4
    228 	eor	r0,r0,r10,ror#25	@ Sigma1(e)
    229 	and	r2,r2,r10
    230 	add	r3,r3,r0
    231 	eor	r2,r2,r4			@ Ch(e,f,g)
    232 	add	r3,r3,r5
    233 	mov	r5,r6,ror#2
    234 	add	r3,r3,r2
    235 	eor	r5,r5,r6,ror#13
    236 	add	r3,r3,r12
    237 	eor	r5,r5,r6,ror#22		@ Sigma0(a)
    238 	orr	r0,r6,r7
    239 	and	r2,r6,r7
    240 	and	r0,r0,r8
    241 	add	r5,r5,r3
    242 	orr	r0,r0,r2			@ Maj(a,b,c)
    243 	add	r9,r9,r3
    244 	add	r5,r5,r0
    245 	ldrb	r3,[r1,#3]			@ 7
    246 	ldrb	r12,[r1,#2]
    247 	ldrb	r2,[r1,#1]
    248 	ldrb	r0,[r1],#4
    249 	orr	r3,r3,r12,lsl#8
    250 	orr	r3,r3,r2,lsl#16
    251 	orr	r3,r3,r0,lsl#24
    252 
    253 	ldr	r12,[r14],#4			@ *K256++
    254 	mov	r0,r9,ror#6
    255 	str	r3,[sp,#7*4]
    256 	eor	r0,r0,r9,ror#11
    257 	eor	r2,r10,r11
    258 	eor	r0,r0,r9,ror#25	@ Sigma1(e)
    259 	and	r2,r2,r9
    260 	add	r3,r3,r0
    261 	eor	r2,r2,r11			@ Ch(e,f,g)
    262 	add	r3,r3,r4
    263 	mov	r4,r5,ror#2
    264 	add	r3,r3,r2
    265 	eor	r4,r4,r5,ror#13
    266 	add	r3,r3,r12
    267 	eor	r4,r4,r5,ror#22		@ Sigma0(a)
    268 	orr	r0,r5,r6
    269 	and	r2,r5,r6
    270 	and	r0,r0,r7
    271 	add	r4,r4,r3
    272 	orr	r0,r0,r2			@ Maj(a,b,c)
    273 	add	r8,r8,r3
    274 	add	r4,r4,r0
    275 	ldrb	r3,[r1,#3]			@ 8
    276 	ldrb	r12,[r1,#2]
    277 	ldrb	r2,[r1,#1]
    278 	ldrb	r0,[r1],#4
    279 	orr	r3,r3,r12,lsl#8
    280 	orr	r3,r3,r2,lsl#16
    281 	orr	r3,r3,r0,lsl#24
    282 
    283 	ldr	r12,[r14],#4			@ *K256++
    284 	mov	r0,r8,ror#6
    285 	str	r3,[sp,#8*4]
    286 	eor	r0,r0,r8,ror#11
    287 	eor	r2,r9,r10
    288 	eor	r0,r0,r8,ror#25	@ Sigma1(e)
    289 	and	r2,r2,r8
    290 	add	r3,r3,r0
    291 	eor	r2,r2,r10			@ Ch(e,f,g)
    292 	add	r3,r3,r11
    293 	mov	r11,r4,ror#2
    294 	add	r3,r3,r2
    295 	eor	r11,r11,r4,ror#13
    296 	add	r3,r3,r12
    297 	eor	r11,r11,r4,ror#22		@ Sigma0(a)
    298 	orr	r0,r4,r5
    299 	and	r2,r4,r5
    300 	and	r0,r0,r6
    301 	add	r11,r11,r3
    302 	orr	r0,r0,r2			@ Maj(a,b,c)
    303 	add	r7,r7,r3
    304 	add	r11,r11,r0
    305 	ldrb	r3,[r1,#3]			@ 9
    306 	ldrb	r12,[r1,#2]
    307 	ldrb	r2,[r1,#1]
    308 	ldrb	r0,[r1],#4
    309 	orr	r3,r3,r12,lsl#8
    310 	orr	r3,r3,r2,lsl#16
    311 	orr	r3,r3,r0,lsl#24
    312 
    313 	ldr	r12,[r14],#4			@ *K256++
    314 	mov	r0,r7,ror#6
    315 	str	r3,[sp,#9*4]
    316 	eor	r0,r0,r7,ror#11
    317 	eor	r2,r8,r9
    318 	eor	r0,r0,r7,ror#25	@ Sigma1(e)
    319 	and	r2,r2,r7
    320 	add	r3,r3,r0
    321 	eor	r2,r2,r9			@ Ch(e,f,g)
    322 	add	r3,r3,r10
    323 	mov	r10,r11,ror#2
    324 	add	r3,r3,r2
    325 	eor	r10,r10,r11,ror#13
    326 	add	r3,r3,r12
    327 	eor	r10,r10,r11,ror#22		@ Sigma0(a)
    328 	orr	r0,r11,r4
    329 	and	r2,r11,r4
    330 	and	r0,r0,r5
    331 	add	r10,r10,r3
    332 	orr	r0,r0,r2			@ Maj(a,b,c)
    333 	add	r6,r6,r3
    334 	add	r10,r10,r0
    335 	ldrb	r3,[r1,#3]			@ 10
    336 	ldrb	r12,[r1,#2]
    337 	ldrb	r2,[r1,#1]
    338 	ldrb	r0,[r1],#4
    339 	orr	r3,r3,r12,lsl#8
    340 	orr	r3,r3,r2,lsl#16
    341 	orr	r3,r3,r0,lsl#24
    342 
    343 	ldr	r12,[r14],#4			@ *K256++
    344 	mov	r0,r6,ror#6
    345 	str	r3,[sp,#10*4]
    346 	eor	r0,r0,r6,ror#11
    347 	eor	r2,r7,r8
    348 	eor	r0,r0,r6,ror#25	@ Sigma1(e)
    349 	and	r2,r2,r6
    350 	add	r3,r3,r0
    351 	eor	r2,r2,r8			@ Ch(e,f,g)
    352 	add	r3,r3,r9
    353 	mov	r9,r10,ror#2
    354 	add	r3,r3,r2
    355 	eor	r9,r9,r10,ror#13
    356 	add	r3,r3,r12
    357 	eor	r9,r9,r10,ror#22		@ Sigma0(a)
    358 	orr	r0,r10,r11
    359 	and	r2,r10,r11
    360 	and	r0,r0,r4
    361 	add	r9,r9,r3
    362 	orr	r0,r0,r2			@ Maj(a,b,c)
    363 	add	r5,r5,r3
    364 	add	r9,r9,r0
    365 	ldrb	r3,[r1,#3]			@ 11
    366 	ldrb	r12,[r1,#2]
    367 	ldrb	r2,[r1,#1]
    368 	ldrb	r0,[r1],#4
    369 	orr	r3,r3,r12,lsl#8
    370 	orr	r3,r3,r2,lsl#16
    371 	orr	r3,r3,r0,lsl#24
    372 
    373 	ldr	r12,[r14],#4			@ *K256++
    374 	mov	r0,r5,ror#6
    375 	str	r3,[sp,#11*4]
    376 	eor	r0,r0,r5,ror#11
    377 	eor	r2,r6,r7
    378 	eor	r0,r0,r5,ror#25	@ Sigma1(e)
    379 	and	r2,r2,r5
    380 	add	r3,r3,r0
    381 	eor	r2,r2,r7			@ Ch(e,f,g)
    382 	add	r3,r3,r8
    383 	mov	r8,r9,ror#2
    384 	add	r3,r3,r2
    385 	eor	r8,r8,r9,ror#13
    386 	add	r3,r3,r12
    387 	eor	r8,r8,r9,ror#22		@ Sigma0(a)
    388 	orr	r0,r9,r10
    389 	and	r2,r9,r10
    390 	and	r0,r0,r11
    391 	add	r8,r8,r3
    392 	orr	r0,r0,r2			@ Maj(a,b,c)
    393 	add	r4,r4,r3
    394 	add	r8,r8,r0
    395 	ldrb	r3,[r1,#3]			@ 12
    396 	ldrb	r12,[r1,#2]
    397 	ldrb	r2,[r1,#1]
    398 	ldrb	r0,[r1],#4
    399 	orr	r3,r3,r12,lsl#8
    400 	orr	r3,r3,r2,lsl#16
    401 	orr	r3,r3,r0,lsl#24
    402 
    403 	ldr	r12,[r14],#4			@ *K256++
    404 	mov	r0,r4,ror#6
    405 	str	r3,[sp,#12*4]
    406 	eor	r0,r0,r4,ror#11
    407 	eor	r2,r5,r6
    408 	eor	r0,r0,r4,ror#25	@ Sigma1(e)
    409 	and	r2,r2,r4
    410 	add	r3,r3,r0
    411 	eor	r2,r2,r6			@ Ch(e,f,g)
    412 	add	r3,r3,r7
    413 	mov	r7,r8,ror#2
    414 	add	r3,r3,r2
    415 	eor	r7,r7,r8,ror#13
    416 	add	r3,r3,r12
    417 	eor	r7,r7,r8,ror#22		@ Sigma0(a)
    418 	orr	r0,r8,r9
    419 	and	r2,r8,r9
    420 	and	r0,r0,r10
    421 	add	r7,r7,r3
    422 	orr	r0,r0,r2			@ Maj(a,b,c)
    423 	add	r11,r11,r3
    424 	add	r7,r7,r0
    425 	ldrb	r3,[r1,#3]			@ 13
    426 	ldrb	r12,[r1,#2]
    427 	ldrb	r2,[r1,#1]
    428 	ldrb	r0,[r1],#4
    429 	orr	r3,r3,r12,lsl#8
    430 	orr	r3,r3,r2,lsl#16
    431 	orr	r3,r3,r0,lsl#24
    432 
    433 	ldr	r12,[r14],#4			@ *K256++
    434 	mov	r0,r11,ror#6
    435 	str	r3,[sp,#13*4]
    436 	eor	r0,r0,r11,ror#11
    437 	eor	r2,r4,r5
    438 	eor	r0,r0,r11,ror#25	@ Sigma1(e)
    439 	and	r2,r2,r11
    440 	add	r3,r3,r0
    441 	eor	r2,r2,r5			@ Ch(e,f,g)
    442 	add	r3,r3,r6
    443 	mov	r6,r7,ror#2
    444 	add	r3,r3,r2
    445 	eor	r6,r6,r7,ror#13
    446 	add	r3,r3,r12
    447 	eor	r6,r6,r7,ror#22		@ Sigma0(a)
    448 	orr	r0,r7,r8
    449 	and	r2,r7,r8
    450 	and	r0,r0,r9
    451 	add	r6,r6,r3
    452 	orr	r0,r0,r2			@ Maj(a,b,c)
    453 	add	r10,r10,r3
    454 	add	r6,r6,r0
    455 	ldrb	r3,[r1,#3]			@ 14
    456 	ldrb	r12,[r1,#2]
    457 	ldrb	r2,[r1,#1]
    458 	ldrb	r0,[r1],#4
    459 	orr	r3,r3,r12,lsl#8
    460 	orr	r3,r3,r2,lsl#16
    461 	orr	r3,r3,r0,lsl#24
    462 
    463 	ldr	r12,[r14],#4			@ *K256++
    464 	mov	r0,r10,ror#6
    465 	str	r3,[sp,#14*4]
    466 	eor	r0,r0,r10,ror#11
    467 	eor	r2,r11,r4
    468 	eor	r0,r0,r10,ror#25	@ Sigma1(e)
    469 	and	r2,r2,r10
    470 	add	r3,r3,r0
    471 	eor	r2,r2,r4			@ Ch(e,f,g)
    472 	add	r3,r3,r5
    473 	mov	r5,r6,ror#2
    474 	add	r3,r3,r2
    475 	eor	r5,r5,r6,ror#13
    476 	add	r3,r3,r12
    477 	eor	r5,r5,r6,ror#22		@ Sigma0(a)
    478 	orr	r0,r6,r7
    479 	and	r2,r6,r7
    480 	and	r0,r0,r8
    481 	add	r5,r5,r3
    482 	orr	r0,r0,r2			@ Maj(a,b,c)
    483 	add	r9,r9,r3
    484 	add	r5,r5,r0
    485 	ldrb	r3,[r1,#3]			@ 15
    486 	ldrb	r12,[r1,#2]
    487 	ldrb	r2,[r1,#1]
    488 	ldrb	r0,[r1],#4
    489 	orr	r3,r3,r12,lsl#8
    490 	orr	r3,r3,r2,lsl#16
    491 	orr	r3,r3,r0,lsl#24
    492 	str	r1,[sp,#17*4]
    493 	ldr	r12,[r14],#4			@ *K256++
    494 	mov	r0,r9,ror#6
    495 	str	r3,[sp,#15*4]
    496 	eor	r0,r0,r9,ror#11
    497 	eor	r2,r10,r11
    498 	eor	r0,r0,r9,ror#25	@ Sigma1(e)
    499 	and	r2,r2,r9
    500 	add	r3,r3,r0
    501 	eor	r2,r2,r11			@ Ch(e,f,g)
    502 	add	r3,r3,r4
    503 	mov	r4,r5,ror#2
    504 	add	r3,r3,r2
    505 	eor	r4,r4,r5,ror#13
    506 	add	r3,r3,r12
    507 	eor	r4,r4,r5,ror#22		@ Sigma0(a)
    508 	orr	r0,r5,r6
    509 	and	r2,r5,r6
    510 	and	r0,r0,r7
    511 	add	r4,r4,r3
    512 	orr	r0,r0,r2			@ Maj(a,b,c)
    513 	add	r8,r8,r3
    514 	add	r4,r4,r0
    515 .Lrounds_16_xx:
    516 	ldr	r2,[sp,#1*4]		@ 16
    517 	ldr	r12,[sp,#14*4]
    518 	ldr	r3,[sp,#0*4]
    519 	mov	r0,r2,ror#7
    520 	ldr	r1,[sp,#9*4]
    521 	eor	r0,r0,r2,ror#18
    522 	eor	r0,r0,r2,lsr#3	@ sigma0(X[i+1])
    523 	mov	r2,r12,ror#17
    524 	add	r3,r3,r0
    525 	eor	r2,r2,r12,ror#19
    526 	add	r3,r3,r1
    527 	eor	r2,r2,r12,lsr#10	@ sigma1(X[i+14])
    528 	add	r3,r3,r2
    529 	ldr	r12,[r14],#4			@ *K256++
    530 	mov	r0,r8,ror#6
    531 	str	r3,[sp,#0*4]
    532 	eor	r0,r0,r8,ror#11
    533 	eor	r2,r9,r10
    534 	eor	r0,r0,r8,ror#25	@ Sigma1(e)
    535 	and	r2,r2,r8
    536 	add	r3,r3,r0
    537 	eor	r2,r2,r10			@ Ch(e,f,g)
    538 	add	r3,r3,r11
    539 	mov	r11,r4,ror#2
    540 	add	r3,r3,r2
    541 	eor	r11,r11,r4,ror#13
    542 	add	r3,r3,r12
    543 	eor	r11,r11,r4,ror#22		@ Sigma0(a)
    544 	orr	r0,r4,r5
    545 	and	r2,r4,r5
    546 	and	r0,r0,r6
    547 	add	r11,r11,r3
    548 	orr	r0,r0,r2			@ Maj(a,b,c)
    549 	add	r7,r7,r3
    550 	add	r11,r11,r0
    551 	ldr	r2,[sp,#2*4]		@ 17
    552 	ldr	r12,[sp,#15*4]
    553 	ldr	r3,[sp,#1*4]
    554 	mov	r0,r2,ror#7
    555 	ldr	r1,[sp,#10*4]
    556 	eor	r0,r0,r2,ror#18
    557 	eor	r0,r0,r2,lsr#3	@ sigma0(X[i+1])
    558 	mov	r2,r12,ror#17
    559 	add	r3,r3,r0
    560 	eor	r2,r2,r12,ror#19
    561 	add	r3,r3,r1
    562 	eor	r2,r2,r12,lsr#10	@ sigma1(X[i+14])
    563 	add	r3,r3,r2
    564 	ldr	r12,[r14],#4			@ *K256++
    565 	mov	r0,r7,ror#6
    566 	str	r3,[sp,#1*4]
    567 	eor	r0,r0,r7,ror#11
    568 	eor	r2,r8,r9
    569 	eor	r0,r0,r7,ror#25	@ Sigma1(e)
    570 	and	r2,r2,r7
    571 	add	r3,r3,r0
    572 	eor	r2,r2,r9			@ Ch(e,f,g)
    573 	add	r3,r3,r10
    574 	mov	r10,r11,ror#2
    575 	add	r3,r3,r2
    576 	eor	r10,r10,r11,ror#13
    577 	add	r3,r3,r12
    578 	eor	r10,r10,r11,ror#22		@ Sigma0(a)
    579 	orr	r0,r11,r4
    580 	and	r2,r11,r4
    581 	and	r0,r0,r5
    582 	add	r10,r10,r3
    583 	orr	r0,r0,r2			@ Maj(a,b,c)
    584 	add	r6,r6,r3
    585 	add	r10,r10,r0
    586 	ldr	r2,[sp,#3*4]		@ 18
    587 	ldr	r12,[sp,#0*4]
    588 	ldr	r3,[sp,#2*4]
    589 	mov	r0,r2,ror#7
    590 	ldr	r1,[sp,#11*4]
    591 	eor	r0,r0,r2,ror#18
    592 	eor	r0,r0,r2,lsr#3	@ sigma0(X[i+1])
    593 	mov	r2,r12,ror#17
    594 	add	r3,r3,r0
    595 	eor	r2,r2,r12,ror#19
    596 	add	r3,r3,r1
    597 	eor	r2,r2,r12,lsr#10	@ sigma1(X[i+14])
    598 	add	r3,r3,r2
    599 	ldr	r12,[r14],#4			@ *K256++
    600 	mov	r0,r6,ror#6
    601 	str	r3,[sp,#2*4]
    602 	eor	r0,r0,r6,ror#11
    603 	eor	r2,r7,r8
    604 	eor	r0,r0,r6,ror#25	@ Sigma1(e)
    605 	and	r2,r2,r6
    606 	add	r3,r3,r0
    607 	eor	r2,r2,r8			@ Ch(e,f,g)
    608 	add	r3,r3,r9
    609 	mov	r9,r10,ror#2
    610 	add	r3,r3,r2
    611 	eor	r9,r9,r10,ror#13
    612 	add	r3,r3,r12
    613 	eor	r9,r9,r10,ror#22		@ Sigma0(a)
    614 	orr	r0,r10,r11
    615 	and	r2,r10,r11
    616 	and	r0,r0,r4
    617 	add	r9,r9,r3
    618 	orr	r0,r0,r2			@ Maj(a,b,c)
    619 	add	r5,r5,r3
    620 	add	r9,r9,r0
    621 	ldr	r2,[sp,#4*4]		@ 19
    622 	ldr	r12,[sp,#1*4]
    623 	ldr	r3,[sp,#3*4]
    624 	mov	r0,r2,ror#7
    625 	ldr	r1,[sp,#12*4]
    626 	eor	r0,r0,r2,ror#18
    627 	eor	r0,r0,r2,lsr#3	@ sigma0(X[i+1])
    628 	mov	r2,r12,ror#17
    629 	add	r3,r3,r0
    630 	eor	r2,r2,r12,ror#19
    631 	add	r3,r3,r1
    632 	eor	r2,r2,r12,lsr#10	@ sigma1(X[i+14])
    633 	add	r3,r3,r2
    634 	ldr	r12,[r14],#4			@ *K256++
    635 	mov	r0,r5,ror#6
    636 	str	r3,[sp,#3*4]
    637 	eor	r0,r0,r5,ror#11
    638 	eor	r2,r6,r7
    639 	eor	r0,r0,r5,ror#25	@ Sigma1(e)
    640 	and	r2,r2,r5
    641 	add	r3,r3,r0
    642 	eor	r2,r2,r7			@ Ch(e,f,g)
    643 	add	r3,r3,r8
    644 	mov	r8,r9,ror#2
    645 	add	r3,r3,r2
    646 	eor	r8,r8,r9,ror#13
    647 	add	r3,r3,r12
    648 	eor	r8,r8,r9,ror#22		@ Sigma0(a)
    649 	orr	r0,r9,r10
    650 	and	r2,r9,r10
    651 	and	r0,r0,r11
    652 	add	r8,r8,r3
    653 	orr	r0,r0,r2			@ Maj(a,b,c)
    654 	add	r4,r4,r3
    655 	add	r8,r8,r0
    656 	ldr	r2,[sp,#5*4]		@ 20
    657 	ldr	r12,[sp,#2*4]
    658 	ldr	r3,[sp,#4*4]
    659 	mov	r0,r2,ror#7
    660 	ldr	r1,[sp,#13*4]
    661 	eor	r0,r0,r2,ror#18
    662 	eor	r0,r0,r2,lsr#3	@ sigma0(X[i+1])
    663 	mov	r2,r12,ror#17
    664 	add	r3,r3,r0
    665 	eor	r2,r2,r12,ror#19
    666 	add	r3,r3,r1
    667 	eor	r2,r2,r12,lsr#10	@ sigma1(X[i+14])
    668 	add	r3,r3,r2
    669 	ldr	r12,[r14],#4			@ *K256++
    670 	mov	r0,r4,ror#6
    671 	str	r3,[sp,#4*4]
    672 	eor	r0,r0,r4,ror#11
    673 	eor	r2,r5,r6
    674 	eor	r0,r0,r4,ror#25	@ Sigma1(e)
    675 	and	r2,r2,r4
    676 	add	r3,r3,r0
    677 	eor	r2,r2,r6			@ Ch(e,f,g)
    678 	add	r3,r3,r7
    679 	mov	r7,r8,ror#2
    680 	add	r3,r3,r2
    681 	eor	r7,r7,r8,ror#13
    682 	add	r3,r3,r12
    683 	eor	r7,r7,r8,ror#22		@ Sigma0(a)
    684 	orr	r0,r8,r9
    685 	and	r2,r8,r9
    686 	and	r0,r0,r10
    687 	add	r7,r7,r3
    688 	orr	r0,r0,r2			@ Maj(a,b,c)
    689 	add	r11,r11,r3
    690 	add	r7,r7,r0
    691 	ldr	r2,[sp,#6*4]		@ 21
    692 	ldr	r12,[sp,#3*4]
    693 	ldr	r3,[sp,#5*4]
    694 	mov	r0,r2,ror#7
    695 	ldr	r1,[sp,#14*4]
    696 	eor	r0,r0,r2,ror#18
    697 	eor	r0,r0,r2,lsr#3	@ sigma0(X[i+1])
    698 	mov	r2,r12,ror#17
    699 	add	r3,r3,r0
    700 	eor	r2,r2,r12,ror#19
    701 	add	r3,r3,r1
    702 	eor	r2,r2,r12,lsr#10	@ sigma1(X[i+14])
    703 	add	r3,r3,r2
    704 	ldr	r12,[r14],#4			@ *K256++
    705 	mov	r0,r11,ror#6
    706 	str	r3,[sp,#5*4]
    707 	eor	r0,r0,r11,ror#11
    708 	eor	r2,r4,r5
    709 	eor	r0,r0,r11,ror#25	@ Sigma1(e)
    710 	and	r2,r2,r11
    711 	add	r3,r3,r0
    712 	eor	r2,r2,r5			@ Ch(e,f,g)
    713 	add	r3,r3,r6
    714 	mov	r6,r7,ror#2
    715 	add	r3,r3,r2
    716 	eor	r6,r6,r7,ror#13
    717 	add	r3,r3,r12
    718 	eor	r6,r6,r7,ror#22		@ Sigma0(a)
    719 	orr	r0,r7,r8
    720 	and	r2,r7,r8
    721 	and	r0,r0,r9
    722 	add	r6,r6,r3
    723 	orr	r0,r0,r2			@ Maj(a,b,c)
    724 	add	r10,r10,r3
    725 	add	r6,r6,r0
    726 	ldr	r2,[sp,#7*4]		@ 22
    727 	ldr	r12,[sp,#4*4]
    728 	ldr	r3,[sp,#6*4]
    729 	mov	r0,r2,ror#7
    730 	ldr	r1,[sp,#15*4]
    731 	eor	r0,r0,r2,ror#18
    732 	eor	r0,r0,r2,lsr#3	@ sigma0(X[i+1])
    733 	mov	r2,r12,ror#17
    734 	add	r3,r3,r0
    735 	eor	r2,r2,r12,ror#19
    736 	add	r3,r3,r1
    737 	eor	r2,r2,r12,lsr#10	@ sigma1(X[i+14])
    738 	add	r3,r3,r2
    739 	ldr	r12,[r14],#4			@ *K256++
    740 	mov	r0,r10,ror#6
    741 	str	r3,[sp,#6*4]
    742 	eor	r0,r0,r10,ror#11
    743 	eor	r2,r11,r4
    744 	eor	r0,r0,r10,ror#25	@ Sigma1(e)
    745 	and	r2,r2,r10
    746 	add	r3,r3,r0
    747 	eor	r2,r2,r4			@ Ch(e,f,g)
    748 	add	r3,r3,r5
    749 	mov	r5,r6,ror#2
    750 	add	r3,r3,r2
    751 	eor	r5,r5,r6,ror#13
    752 	add	r3,r3,r12
    753 	eor	r5,r5,r6,ror#22		@ Sigma0(a)
    754 	orr	r0,r6,r7
    755 	and	r2,r6,r7
    756 	and	r0,r0,r8
    757 	add	r5,r5,r3
    758 	orr	r0,r0,r2			@ Maj(a,b,c)
    759 	add	r9,r9,r3
    760 	add	r5,r5,r0
    761 	ldr	r2,[sp,#8*4]		@ 23
    762 	ldr	r12,[sp,#5*4]
    763 	ldr	r3,[sp,#7*4]
    764 	mov	r0,r2,ror#7
    765 	ldr	r1,[sp,#0*4]
    766 	eor	r0,r0,r2,ror#18
    767 	eor	r0,r0,r2,lsr#3	@ sigma0(X[i+1])
    768 	mov	r2,r12,ror#17
    769 	add	r3,r3,r0
    770 	eor	r2,r2,r12,ror#19
    771 	add	r3,r3,r1
    772 	eor	r2,r2,r12,lsr#10	@ sigma1(X[i+14])
    773 	add	r3,r3,r2
    774 	ldr	r12,[r14],#4			@ *K256++
    775 	mov	r0,r9,ror#6
    776 	str	r3,[sp,#7*4]
    777 	eor	r0,r0,r9,ror#11
    778 	eor	r2,r10,r11
    779 	eor	r0,r0,r9,ror#25	@ Sigma1(e)
    780 	and	r2,r2,r9
    781 	add	r3,r3,r0
    782 	eor	r2,r2,r11			@ Ch(e,f,g)
    783 	add	r3,r3,r4
    784 	mov	r4,r5,ror#2
    785 	add	r3,r3,r2
    786 	eor	r4,r4,r5,ror#13
    787 	add	r3,r3,r12
    788 	eor	r4,r4,r5,ror#22		@ Sigma0(a)
    789 	orr	r0,r5,r6
    790 	and	r2,r5,r6
    791 	and	r0,r0,r7
    792 	add	r4,r4,r3
    793 	orr	r0,r0,r2			@ Maj(a,b,c)
    794 	add	r8,r8,r3
    795 	add	r4,r4,r0
    796 	ldr	r2,[sp,#9*4]		@ 24
    797 	ldr	r12,[sp,#6*4]
    798 	ldr	r3,[sp,#8*4]
    799 	mov	r0,r2,ror#7
    800 	ldr	r1,[sp,#1*4]
    801 	eor	r0,r0,r2,ror#18
    802 	eor	r0,r0,r2,lsr#3	@ sigma0(X[i+1])
    803 	mov	r2,r12,ror#17
    804 	add	r3,r3,r0
    805 	eor	r2,r2,r12,ror#19
    806 	add	r3,r3,r1
    807 	eor	r2,r2,r12,lsr#10	@ sigma1(X[i+14])
    808 	add	r3,r3,r2
    809 	ldr	r12,[r14],#4			@ *K256++
    810 	mov	r0,r8,ror#6
    811 	str	r3,[sp,#8*4]
    812 	eor	r0,r0,r8,ror#11
    813 	eor	r2,r9,r10
    814 	eor	r0,r0,r8,ror#25	@ Sigma1(e)
    815 	and	r2,r2,r8
    816 	add	r3,r3,r0
    817 	eor	r2,r2,r10			@ Ch(e,f,g)
    818 	add	r3,r3,r11
    819 	mov	r11,r4,ror#2
    820 	add	r3,r3,r2
    821 	eor	r11,r11,r4,ror#13
    822 	add	r3,r3,r12
    823 	eor	r11,r11,r4,ror#22		@ Sigma0(a)
    824 	orr	r0,r4,r5
    825 	and	r2,r4,r5
    826 	and	r0,r0,r6
    827 	add	r11,r11,r3
    828 	orr	r0,r0,r2			@ Maj(a,b,c)
    829 	add	r7,r7,r3
    830 	add	r11,r11,r0
    831 	ldr	r2,[sp,#10*4]		@ 25
    832 	ldr	r12,[sp,#7*4]
    833 	ldr	r3,[sp,#9*4]
    834 	mov	r0,r2,ror#7
    835 	ldr	r1,[sp,#2*4]
    836 	eor	r0,r0,r2,ror#18
    837 	eor	r0,r0,r2,lsr#3	@ sigma0(X[i+1])
    838 	mov	r2,r12,ror#17
    839 	add	r3,r3,r0
    840 	eor	r2,r2,r12,ror#19
    841 	add	r3,r3,r1
    842 	eor	r2,r2,r12,lsr#10	@ sigma1(X[i+14])
    843 	add	r3,r3,r2
    844 	ldr	r12,[r14],#4			@ *K256++
    845 	mov	r0,r7,ror#6
    846 	str	r3,[sp,#9*4]
    847 	eor	r0,r0,r7,ror#11
    848 	eor	r2,r8,r9
    849 	eor	r0,r0,r7,ror#25	@ Sigma1(e)
    850 	and	r2,r2,r7
    851 	add	r3,r3,r0
    852 	eor	r2,r2,r9			@ Ch(e,f,g)
    853 	add	r3,r3,r10
    854 	mov	r10,r11,ror#2
    855 	add	r3,r3,r2
    856 	eor	r10,r10,r11,ror#13
    857 	add	r3,r3,r12
    858 	eor	r10,r10,r11,ror#22		@ Sigma0(a)
    859 	orr	r0,r11,r4
    860 	and	r2,r11,r4
    861 	and	r0,r0,r5
    862 	add	r10,r10,r3
    863 	orr	r0,r0,r2			@ Maj(a,b,c)
    864 	add	r6,r6,r3
    865 	add	r10,r10,r0
    866 	ldr	r2,[sp,#11*4]		@ 26
    867 	ldr	r12,[sp,#8*4]
    868 	ldr	r3,[sp,#10*4]
    869 	mov	r0,r2,ror#7
    870 	ldr	r1,[sp,#3*4]
    871 	eor	r0,r0,r2,ror#18
    872 	eor	r0,r0,r2,lsr#3	@ sigma0(X[i+1])
    873 	mov	r2,r12,ror#17
    874 	add	r3,r3,r0
    875 	eor	r2,r2,r12,ror#19
    876 	add	r3,r3,r1
    877 	eor	r2,r2,r12,lsr#10	@ sigma1(X[i+14])
    878 	add	r3,r3,r2
    879 	ldr	r12,[r14],#4			@ *K256++
    880 	mov	r0,r6,ror#6
    881 	str	r3,[sp,#10*4]
    882 	eor	r0,r0,r6,ror#11
    883 	eor	r2,r7,r8
    884 	eor	r0,r0,r6,ror#25	@ Sigma1(e)
    885 	and	r2,r2,r6
    886 	add	r3,r3,r0
    887 	eor	r2,r2,r8			@ Ch(e,f,g)
    888 	add	r3,r3,r9
    889 	mov	r9,r10,ror#2
    890 	add	r3,r3,r2
    891 	eor	r9,r9,r10,ror#13
    892 	add	r3,r3,r12
    893 	eor	r9,r9,r10,ror#22		@ Sigma0(a)
    894 	orr	r0,r10,r11
    895 	and	r2,r10,r11
    896 	and	r0,r0,r4
    897 	add	r9,r9,r3
    898 	orr	r0,r0,r2			@ Maj(a,b,c)
    899 	add	r5,r5,r3
    900 	add	r9,r9,r0
    901 	ldr	r2,[sp,#12*4]		@ 27
    902 	ldr	r12,[sp,#9*4]
    903 	ldr	r3,[sp,#11*4]
    904 	mov	r0,r2,ror#7
    905 	ldr	r1,[sp,#4*4]
    906 	eor	r0,r0,r2,ror#18
    907 	eor	r0,r0,r2,lsr#3	@ sigma0(X[i+1])
    908 	mov	r2,r12,ror#17
    909 	add	r3,r3,r0
    910 	eor	r2,r2,r12,ror#19
    911 	add	r3,r3,r1
    912 	eor	r2,r2,r12,lsr#10	@ sigma1(X[i+14])
    913 	add	r3,r3,r2
    914 	ldr	r12,[r14],#4			@ *K256++
    915 	mov	r0,r5,ror#6
    916 	str	r3,[sp,#11*4]
    917 	eor	r0,r0,r5,ror#11
    918 	eor	r2,r6,r7
    919 	eor	r0,r0,r5,ror#25	@ Sigma1(e)
    920 	and	r2,r2,r5
    921 	add	r3,r3,r0
    922 	eor	r2,r2,r7			@ Ch(e,f,g)
    923 	add	r3,r3,r8
    924 	mov	r8,r9,ror#2
    925 	add	r3,r3,r2
    926 	eor	r8,r8,r9,ror#13
    927 	add	r3,r3,r12
    928 	eor	r8,r8,r9,ror#22		@ Sigma0(a)
    929 	orr	r0,r9,r10
    930 	and	r2,r9,r10
    931 	and	r0,r0,r11
    932 	add	r8,r8,r3
    933 	orr	r0,r0,r2			@ Maj(a,b,c)
    934 	add	r4,r4,r3
    935 	add	r8,r8,r0
    936 	ldr	r2,[sp,#13*4]		@ 28
    937 	ldr	r12,[sp,#10*4]
    938 	ldr	r3,[sp,#12*4]
    939 	mov	r0,r2,ror#7
    940 	ldr	r1,[sp,#5*4]
    941 	eor	r0,r0,r2,ror#18
    942 	eor	r0,r0,r2,lsr#3	@ sigma0(X[i+1])
    943 	mov	r2,r12,ror#17
    944 	add	r3,r3,r0
    945 	eor	r2,r2,r12,ror#19
    946 	add	r3,r3,r1
    947 	eor	r2,r2,r12,lsr#10	@ sigma1(X[i+14])
    948 	add	r3,r3,r2
    949 	ldr	r12,[r14],#4			@ *K256++
    950 	mov	r0,r4,ror#6
    951 	str	r3,[sp,#12*4]
    952 	eor	r0,r0,r4,ror#11
    953 	eor	r2,r5,r6
    954 	eor	r0,r0,r4,ror#25	@ Sigma1(e)
    955 	and	r2,r2,r4
    956 	add	r3,r3,r0
    957 	eor	r2,r2,r6			@ Ch(e,f,g)
    958 	add	r3,r3,r7
    959 	mov	r7,r8,ror#2
    960 	add	r3,r3,r2
    961 	eor	r7,r7,r8,ror#13
    962 	add	r3,r3,r12
    963 	eor	r7,r7,r8,ror#22		@ Sigma0(a)
    964 	orr	r0,r8,r9
    965 	and	r2,r8,r9
    966 	and	r0,r0,r10
    967 	add	r7,r7,r3
    968 	orr	r0,r0,r2			@ Maj(a,b,c)
    969 	add	r11,r11,r3
    970 	add	r7,r7,r0
    971 	ldr	r2,[sp,#14*4]		@ 29
    972 	ldr	r12,[sp,#11*4]
    973 	ldr	r3,[sp,#13*4]
    974 	mov	r0,r2,ror#7
    975 	ldr	r1,[sp,#6*4]
    976 	eor	r0,r0,r2,ror#18
    977 	eor	r0,r0,r2,lsr#3	@ sigma0(X[i+1])
    978 	mov	r2,r12,ror#17
    979 	add	r3,r3,r0
    980 	eor	r2,r2,r12,ror#19
    981 	add	r3,r3,r1
    982 	eor	r2,r2,r12,lsr#10	@ sigma1(X[i+14])
    983 	add	r3,r3,r2
    984 	ldr	r12,[r14],#4			@ *K256++
    985 	mov	r0,r11,ror#6
    986 	str	r3,[sp,#13*4]
    987 	eor	r0,r0,r11,ror#11
    988 	eor	r2,r4,r5
    989 	eor	r0,r0,r11,ror#25	@ Sigma1(e)
    990 	and	r2,r2,r11
    991 	add	r3,r3,r0
    992 	eor	r2,r2,r5			@ Ch(e,f,g)
    993 	add	r3,r3,r6
    994 	mov	r6,r7,ror#2
    995 	add	r3,r3,r2
    996 	eor	r6,r6,r7,ror#13
    997 	add	r3,r3,r12
    998 	eor	r6,r6,r7,ror#22		@ Sigma0(a)
    999 	orr	r0,r7,r8
   1000 	and	r2,r7,r8
   1001 	and	r0,r0,r9
   1002 	add	r6,r6,r3
   1003 	orr	r0,r0,r2			@ Maj(a,b,c)
   1004 	add	r10,r10,r3
   1005 	add	r6,r6,r0
   1006 	ldr	r2,[sp,#15*4]		@ 30
   1007 	ldr	r12,[sp,#12*4]
   1008 	ldr	r3,[sp,#14*4]
   1009 	mov	r0,r2,ror#7
   1010 	ldr	r1,[sp,#7*4]
   1011 	eor	r0,r0,r2,ror#18
   1012 	eor	r0,r0,r2,lsr#3	@ sigma0(X[i+1])
   1013 	mov	r2,r12,ror#17
   1014 	add	r3,r3,r0
   1015 	eor	r2,r2,r12,ror#19
   1016 	add	r3,r3,r1
   1017 	eor	r2,r2,r12,lsr#10	@ sigma1(X[i+14])
   1018 	add	r3,r3,r2
   1019 	ldr	r12,[r14],#4			@ *K256++
   1020 	mov	r0,r10,ror#6
   1021 	str	r3,[sp,#14*4]
   1022 	eor	r0,r0,r10,ror#11
   1023 	eor	r2,r11,r4
   1024 	eor	r0,r0,r10,ror#25	@ Sigma1(e)
   1025 	and	r2,r2,r10
   1026 	add	r3,r3,r0
   1027 	eor	r2,r2,r4			@ Ch(e,f,g)
   1028 	add	r3,r3,r5
   1029 	mov	r5,r6,ror#2
   1030 	add	r3,r3,r2
   1031 	eor	r5,r5,r6,ror#13
   1032 	add	r3,r3,r12
   1033 	eor	r5,r5,r6,ror#22		@ Sigma0(a)
   1034 	orr	r0,r6,r7
   1035 	and	r2,r6,r7
   1036 	and	r0,r0,r8
   1037 	add	r5,r5,r3
   1038 	orr	r0,r0,r2			@ Maj(a,b,c)
   1039 	add	r9,r9,r3
   1040 	add	r5,r5,r0
   1041 	ldr	r2,[sp,#0*4]		@ 31
   1042 	ldr	r12,[sp,#13*4]
   1043 	ldr	r3,[sp,#15*4]
   1044 	mov	r0,r2,ror#7
   1045 	ldr	r1,[sp,#8*4]
   1046 	eor	r0,r0,r2,ror#18
   1047 	eor	r0,r0,r2,lsr#3	@ sigma0(X[i+1])
   1048 	mov	r2,r12,ror#17
   1049 	add	r3,r3,r0
   1050 	eor	r2,r2,r12,ror#19
   1051 	add	r3,r3,r1
   1052 	eor	r2,r2,r12,lsr#10	@ sigma1(X[i+14])
   1053 	add	r3,r3,r2
   1054 	ldr	r12,[r14],#4			@ *K256++
   1055 	mov	r0,r9,ror#6
   1056 	str	r3,[sp,#15*4]
   1057 	eor	r0,r0,r9,ror#11
   1058 	eor	r2,r10,r11
   1059 	eor	r0,r0,r9,ror#25	@ Sigma1(e)
   1060 	and	r2,r2,r9
   1061 	add	r3,r3,r0
   1062 	eor	r2,r2,r11			@ Ch(e,f,g)
   1063 	add	r3,r3,r4
   1064 	mov	r4,r5,ror#2
   1065 	add	r3,r3,r2
   1066 	eor	r4,r4,r5,ror#13
   1067 	add	r3,r3,r12
   1068 	eor	r4,r4,r5,ror#22		@ Sigma0(a)
   1069 	orr	r0,r5,r6
   1070 	and	r2,r5,r6
   1071 	and	r0,r0,r7
   1072 	add	r4,r4,r3
   1073 	orr	r0,r0,r2			@ Maj(a,b,c)
   1074 	add	r8,r8,r3
   1075 	add	r4,r4,r0
   1076 	and	r12,r12,#0xff
   1077 	cmp	r12,#0xf2
   1078 	bne	.Lrounds_16_xx
   1079 
   1080 	ldr	r3,[sp,#16*4]		@ pull ctx
   1081 	ldr	r0,[r3,#0]
   1082 	ldr	r2,[r3,#4]
   1083 	ldr	r12,[r3,#8]
   1084 	add	r4,r4,r0
   1085 	ldr	r0,[r3,#12]
   1086 	add	r5,r5,r2
   1087 	ldr	r2,[r3,#16]
   1088 	add	r6,r6,r12
   1089 	ldr	r12,[r3,#20]
   1090 	add	r7,r7,r0
   1091 	ldr	r0,[r3,#24]
   1092 	add	r8,r8,r2
   1093 	ldr	r2,[r3,#28]
   1094 	add	r9,r9,r12
   1095 	ldr	r1,[sp,#17*4]		@ pull inp
   1096 	ldr	r12,[sp,#18*4]		@ pull inp+len
   1097 	add	r10,r10,r0
   1098 	add	r11,r11,r2
   1099 	stmia	r3,{r4,r5,r6,r7,r8,r9,r10,r11}
   1100 	cmp	r1,r12
   1101 	sub	r14,r14,#256	@ rewind Ktbl
   1102 	bne	.Loop
   1103 
   1104 	add	sp,sp,#19*4	@ destroy frame
   1105 	ldmia	sp!,{r4-r12,lr}
   1106 	tst	lr,#1
   1107 	moveq	pc,lr			@ be binary compatible with V4, yet
   1108 	.word	0xe12fff1e			@ interoperable with Thumb ISA:-)
   1109 .size   sha256_block_data_order,.-sha256_block_data_order
   1110 .asciz  "SHA256 block transform for ARMv4, CRYPTOGAMS by <appro (at) openssl.org>"
   1111 .align	2
   1112