Home | History | Annotate | Line # | Download | only in arm
      1  1.1  christos #include "arm_asm.h"
      2  1.1  christos // Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved.
      3  1.1  christos //
      4  1.1  christos // Licensed under the OpenSSL license (the "License").  You may not use
      5  1.1  christos // this file except in compliance with the License.  You can obtain a copy
      6  1.1  christos // in the file LICENSE in the source distribution or at
      7  1.1  christos // https://www.openssl.org/source/license.html
      8  1.1  christos 
      9  1.1  christos // ====================================================================
     10  1.1  christos // Written by Andy Polyakov <appro (at) openssl.org> for the OpenSSL
     11  1.1  christos // project. The module is, however, dual licensed under OpenSSL and
     12  1.1  christos // CRYPTOGAMS licenses depending on where you obtain it. For further
     13  1.1  christos // details see http://www.openssl.org/~appro/cryptogams/.
     14  1.1  christos //
     15  1.1  christos // Permission to use under GPLv2 terms is granted.
     16  1.1  christos // ====================================================================
     17  1.1  christos //
     18  1.1  christos // SHA256/512 for ARMv8.
     19  1.1  christos //
     20  1.1  christos // Performance in cycles per processed byte and improvement coefficient
     21  1.1  christos // over code generated with "default" compiler:
     22  1.1  christos //
     23  1.1  christos //		SHA256-hw	SHA256(*)	SHA512
     24  1.1  christos // Apple A7	1.97		10.5 (+33%)	6.73 (-1%(**))
     25  1.1  christos // Cortex-A53	2.38		15.5 (+115%)	10.0 (+150%(***))
     26  1.1  christos // Cortex-A57	2.31		11.6 (+86%)	7.51 (+260%(***))
     27  1.1  christos // Denver	2.01		10.5 (+26%)	6.70 (+8%)
     28  1.1  christos // X-Gene			20.0 (+100%)	12.8 (+300%(***))
     29  1.1  christos // Mongoose	2.36		13.0 (+50%)	8.36 (+33%)
     30  1.1  christos // Kryo		1.92		17.4 (+30%)	11.2 (+8%)
     31  1.1  christos //
     32  1.1  christos // (*)	Software SHA256 results are of lesser relevance, presented
     33  1.1  christos //	mostly for informational purposes.
     34  1.1  christos // (**)	The result is a trade-off: it's possible to improve it by
     35  1.1  christos //	10% (or by 1 cycle per round), but at the cost of 20% loss
     36  1.1  christos //	on Cortex-A53 (or by 4 cycles per round).
     37  1.1  christos // (***)	Super-impressive coefficients over gcc-generated code are
     38  1.1  christos //	indication of some compiler "pathology", most notably code
     39  1.1  christos //	generated with -mgeneral-regs-only is significantly faster
     40  1.1  christos //	and the gap is only 40-90%.
     41  1.1  christos //
     42  1.1  christos // October 2016.
     43  1.1  christos //
     44  1.1  christos // Originally it was reckoned that it makes no sense to implement NEON
     45  1.1  christos // version of SHA256 for 64-bit processors. This is because performance
     46  1.1  christos // improvement on most wide-spread Cortex-A5x processors was observed
     47  1.1  christos // to be marginal, same on Cortex-A53 and ~10% on A57. But then it was
     48  1.1  christos // observed that 32-bit NEON SHA256 performs significantly better than
     49  1.1  christos // 64-bit scalar version on *some* of the more recent processors. As
     50  1.1  christos // result 64-bit NEON version of SHA256 was added to provide best
     51  1.1  christos // all-round performance. For example it executes ~30% faster on X-Gene
     52  1.1  christos // and Mongoose. [For reference, NEON version of SHA512 is bound to
     53  1.1  christos // deliver much less improvement, likely *negative* on Cortex-A5x.
     54  1.1  christos // Which is why NEON support is limited to SHA256.]
     55  1.1  christos 
     56  1.1  christos #ifndef	__KERNEL__
     57  1.1  christos # include "arm_arch.h"
     58  1.1  christos #endif
     59  1.1  christos 
     60  1.1  christos .text
     61  1.1  christos 
     62  1.1  christos 
     63  1.1  christos .hidden	OPENSSL_armcap_P
     64  1.1  christos .globl	sha256_block_data_order
     65  1.1  christos .type	sha256_block_data_order,%function
     66  1.1  christos .align	6
     67  1.1  christos sha256_block_data_order:
     68  1.1  christos #ifndef	__KERNEL__
     69  1.1  christos # ifdef	__ILP32__
     70  1.1  christos 	ldrsw	x16,.LOPENSSL_armcap_P
     71  1.1  christos # else
     72  1.1  christos 	ldr	x16,.LOPENSSL_armcap_P
     73  1.1  christos # endif
     74  1.1  christos 	adr	x17,.LOPENSSL_armcap_P
     75  1.1  christos 	add	x16,x16,x17
     76  1.1  christos 	ldr	w16,[x16]
     77  1.1  christos 	tst	w16,#ARMV8_SHA256
     78  1.1  christos 	b.ne	.Lv8_entry
     79  1.1  christos 	tst	w16,#ARMV7_NEON
     80  1.1  christos 	b.ne	.Lneon_entry
     81  1.1  christos #endif
     82  1.1  christos .inst	0xd503233f				// paciasp
     83  1.1  christos 	stp	x29,x30,[sp,#-128]!
     84  1.1  christos 	add	x29,sp,#0
     85  1.1  christos 
     86  1.1  christos 	stp	x19,x20,[sp,#16]
     87  1.1  christos 	stp	x21,x22,[sp,#32]
     88  1.1  christos 	stp	x23,x24,[sp,#48]
     89  1.1  christos 	stp	x25,x26,[sp,#64]
     90  1.1  christos 	stp	x27,x28,[sp,#80]
     91  1.1  christos 	sub	sp,sp,#4*4
     92  1.1  christos 
     93  1.1  christos 	ldp	w20,w21,[x0]				// load context
     94  1.1  christos 	ldp	w22,w23,[x0,#2*4]
     95  1.1  christos 	ldp	w24,w25,[x0,#4*4]
     96  1.1  christos 	add	x2,x1,x2,lsl#6	// end of input
     97  1.1  christos 	ldp	w26,w27,[x0,#6*4]
     98  1.1  christos 	adr	x30,.LK256
     99  1.1  christos 	stp	x0,x2,[x29,#96]
    100  1.1  christos 
    101  1.1  christos .Loop:
    102  1.1  christos 	ldp	w3,w4,[x1],#2*4
    103  1.1  christos 	ldr	w19,[x30],#4			// *K++
    104  1.1  christos 	eor	w28,w21,w22				// magic seed
    105  1.1  christos 	str	x1,[x29,#112]
    106  1.1  christos #ifndef	__AARCH64EB__
    107  1.1  christos 	rev	w3,w3			// 0
    108  1.1  christos #endif
    109  1.1  christos 	ror	w16,w24,#6
    110  1.1  christos 	add	w27,w27,w19			// h+=K[i]
    111  1.1  christos 	eor	w6,w24,w24,ror#14
    112  1.1  christos 	and	w17,w25,w24
    113  1.1  christos 	bic	w19,w26,w24
    114  1.1  christos 	add	w27,w27,w3			// h+=X[i]
    115  1.1  christos 	orr	w17,w17,w19			// Ch(e,f,g)
    116  1.1  christos 	eor	w19,w20,w21			// a^b, b^c in next round
    117  1.1  christos 	eor	w16,w16,w6,ror#11	// Sigma1(e)
    118  1.1  christos 	ror	w6,w20,#2
    119  1.1  christos 	add	w27,w27,w17			// h+=Ch(e,f,g)
    120  1.1  christos 	eor	w17,w20,w20,ror#9
    121  1.1  christos 	add	w27,w27,w16			// h+=Sigma1(e)
    122  1.1  christos 	and	w28,w28,w19			// (b^c)&=(a^b)
    123  1.1  christos 	add	w23,w23,w27			// d+=h
    124  1.1  christos 	eor	w28,w28,w21			// Maj(a,b,c)
    125  1.1  christos 	eor	w17,w6,w17,ror#13	// Sigma0(a)
    126  1.1  christos 	add	w27,w27,w28			// h+=Maj(a,b,c)
    127  1.1  christos 	ldr	w28,[x30],#4		// *K++, w19 in next round
    128  1.1  christos 	//add	w27,w27,w17			// h+=Sigma0(a)
    129  1.1  christos #ifndef	__AARCH64EB__
    130  1.1  christos 	rev	w4,w4			// 1
    131  1.1  christos #endif
    132  1.1  christos 	ldp	w5,w6,[x1],#2*4
    133  1.1  christos 	add	w27,w27,w17			// h+=Sigma0(a)
    134  1.1  christos 	ror	w16,w23,#6
    135  1.1  christos 	add	w26,w26,w28			// h+=K[i]
    136  1.1  christos 	eor	w7,w23,w23,ror#14
    137  1.1  christos 	and	w17,w24,w23
    138  1.1  christos 	bic	w28,w25,w23
    139  1.1  christos 	add	w26,w26,w4			// h+=X[i]
    140  1.1  christos 	orr	w17,w17,w28			// Ch(e,f,g)
    141  1.1  christos 	eor	w28,w27,w20			// a^b, b^c in next round
    142  1.1  christos 	eor	w16,w16,w7,ror#11	// Sigma1(e)
    143  1.1  christos 	ror	w7,w27,#2
    144  1.1  christos 	add	w26,w26,w17			// h+=Ch(e,f,g)
    145  1.1  christos 	eor	w17,w27,w27,ror#9
    146  1.1  christos 	add	w26,w26,w16			// h+=Sigma1(e)
    147  1.1  christos 	and	w19,w19,w28			// (b^c)&=(a^b)
    148  1.1  christos 	add	w22,w22,w26			// d+=h
    149  1.1  christos 	eor	w19,w19,w20			// Maj(a,b,c)
    150  1.1  christos 	eor	w17,w7,w17,ror#13	// Sigma0(a)
    151  1.1  christos 	add	w26,w26,w19			// h+=Maj(a,b,c)
    152  1.1  christos 	ldr	w19,[x30],#4		// *K++, w28 in next round
    153  1.1  christos 	//add	w26,w26,w17			// h+=Sigma0(a)
    154  1.1  christos #ifndef	__AARCH64EB__
    155  1.1  christos 	rev	w5,w5			// 2
    156  1.1  christos #endif
    157  1.1  christos 	add	w26,w26,w17			// h+=Sigma0(a)
    158  1.1  christos 	ror	w16,w22,#6
    159  1.1  christos 	add	w25,w25,w19			// h+=K[i]
    160  1.1  christos 	eor	w8,w22,w22,ror#14
    161  1.1  christos 	and	w17,w23,w22
    162  1.1  christos 	bic	w19,w24,w22
    163  1.1  christos 	add	w25,w25,w5			// h+=X[i]
    164  1.1  christos 	orr	w17,w17,w19			// Ch(e,f,g)
    165  1.1  christos 	eor	w19,w26,w27			// a^b, b^c in next round
    166  1.1  christos 	eor	w16,w16,w8,ror#11	// Sigma1(e)
    167  1.1  christos 	ror	w8,w26,#2
    168  1.1  christos 	add	w25,w25,w17			// h+=Ch(e,f,g)
    169  1.1  christos 	eor	w17,w26,w26,ror#9
    170  1.1  christos 	add	w25,w25,w16			// h+=Sigma1(e)
    171  1.1  christos 	and	w28,w28,w19			// (b^c)&=(a^b)
    172  1.1  christos 	add	w21,w21,w25			// d+=h
    173  1.1  christos 	eor	w28,w28,w27			// Maj(a,b,c)
    174  1.1  christos 	eor	w17,w8,w17,ror#13	// Sigma0(a)
    175  1.1  christos 	add	w25,w25,w28			// h+=Maj(a,b,c)
    176  1.1  christos 	ldr	w28,[x30],#4		// *K++, w19 in next round
    177  1.1  christos 	//add	w25,w25,w17			// h+=Sigma0(a)
    178  1.1  christos #ifndef	__AARCH64EB__
    179  1.1  christos 	rev	w6,w6			// 3
    180  1.1  christos #endif
    181  1.1  christos 	ldp	w7,w8,[x1],#2*4
    182  1.1  christos 	add	w25,w25,w17			// h+=Sigma0(a)
    183  1.1  christos 	ror	w16,w21,#6
    184  1.1  christos 	add	w24,w24,w28			// h+=K[i]
    185  1.1  christos 	eor	w9,w21,w21,ror#14
    186  1.1  christos 	and	w17,w22,w21
    187  1.1  christos 	bic	w28,w23,w21
    188  1.1  christos 	add	w24,w24,w6			// h+=X[i]
    189  1.1  christos 	orr	w17,w17,w28			// Ch(e,f,g)
    190  1.1  christos 	eor	w28,w25,w26			// a^b, b^c in next round
    191  1.1  christos 	eor	w16,w16,w9,ror#11	// Sigma1(e)
    192  1.1  christos 	ror	w9,w25,#2
    193  1.1  christos 	add	w24,w24,w17			// h+=Ch(e,f,g)
    194  1.1  christos 	eor	w17,w25,w25,ror#9
    195  1.1  christos 	add	w24,w24,w16			// h+=Sigma1(e)
    196  1.1  christos 	and	w19,w19,w28			// (b^c)&=(a^b)
    197  1.1  christos 	add	w20,w20,w24			// d+=h
    198  1.1  christos 	eor	w19,w19,w26			// Maj(a,b,c)
    199  1.1  christos 	eor	w17,w9,w17,ror#13	// Sigma0(a)
    200  1.1  christos 	add	w24,w24,w19			// h+=Maj(a,b,c)
    201  1.1  christos 	ldr	w19,[x30],#4		// *K++, w28 in next round
    202  1.1  christos 	//add	w24,w24,w17			// h+=Sigma0(a)
    203  1.1  christos #ifndef	__AARCH64EB__
    204  1.1  christos 	rev	w7,w7			// 4
    205  1.1  christos #endif
    206  1.1  christos 	add	w24,w24,w17			// h+=Sigma0(a)
    207  1.1  christos 	ror	w16,w20,#6
    208  1.1  christos 	add	w23,w23,w19			// h+=K[i]
    209  1.1  christos 	eor	w10,w20,w20,ror#14
    210  1.1  christos 	and	w17,w21,w20
    211  1.1  christos 	bic	w19,w22,w20
    212  1.1  christos 	add	w23,w23,w7			// h+=X[i]
    213  1.1  christos 	orr	w17,w17,w19			// Ch(e,f,g)
    214  1.1  christos 	eor	w19,w24,w25			// a^b, b^c in next round
    215  1.1  christos 	eor	w16,w16,w10,ror#11	// Sigma1(e)
    216  1.1  christos 	ror	w10,w24,#2
    217  1.1  christos 	add	w23,w23,w17			// h+=Ch(e,f,g)
    218  1.1  christos 	eor	w17,w24,w24,ror#9
    219  1.1  christos 	add	w23,w23,w16			// h+=Sigma1(e)
    220  1.1  christos 	and	w28,w28,w19			// (b^c)&=(a^b)
    221  1.1  christos 	add	w27,w27,w23			// d+=h
    222  1.1  christos 	eor	w28,w28,w25			// Maj(a,b,c)
    223  1.1  christos 	eor	w17,w10,w17,ror#13	// Sigma0(a)
    224  1.1  christos 	add	w23,w23,w28			// h+=Maj(a,b,c)
    225  1.1  christos 	ldr	w28,[x30],#4		// *K++, w19 in next round
    226  1.1  christos 	//add	w23,w23,w17			// h+=Sigma0(a)
    227  1.1  christos #ifndef	__AARCH64EB__
    228  1.1  christos 	rev	w8,w8			// 5
    229  1.1  christos #endif
    230  1.1  christos 	ldp	w9,w10,[x1],#2*4
    231  1.1  christos 	add	w23,w23,w17			// h+=Sigma0(a)
    232  1.1  christos 	ror	w16,w27,#6
    233  1.1  christos 	add	w22,w22,w28			// h+=K[i]
    234  1.1  christos 	eor	w11,w27,w27,ror#14
    235  1.1  christos 	and	w17,w20,w27
    236  1.1  christos 	bic	w28,w21,w27
    237  1.1  christos 	add	w22,w22,w8			// h+=X[i]
    238  1.1  christos 	orr	w17,w17,w28			// Ch(e,f,g)
    239  1.1  christos 	eor	w28,w23,w24			// a^b, b^c in next round
    240  1.1  christos 	eor	w16,w16,w11,ror#11	// Sigma1(e)
    241  1.1  christos 	ror	w11,w23,#2
    242  1.1  christos 	add	w22,w22,w17			// h+=Ch(e,f,g)
    243  1.1  christos 	eor	w17,w23,w23,ror#9
    244  1.1  christos 	add	w22,w22,w16			// h+=Sigma1(e)
    245  1.1  christos 	and	w19,w19,w28			// (b^c)&=(a^b)
    246  1.1  christos 	add	w26,w26,w22			// d+=h
    247  1.1  christos 	eor	w19,w19,w24			// Maj(a,b,c)
    248  1.1  christos 	eor	w17,w11,w17,ror#13	// Sigma0(a)
    249  1.1  christos 	add	w22,w22,w19			// h+=Maj(a,b,c)
    250  1.1  christos 	ldr	w19,[x30],#4		// *K++, w28 in next round
    251  1.1  christos 	//add	w22,w22,w17			// h+=Sigma0(a)
    252  1.1  christos #ifndef	__AARCH64EB__
    253  1.1  christos 	rev	w9,w9			// 6
    254  1.1  christos #endif
    255  1.1  christos 	add	w22,w22,w17			// h+=Sigma0(a)
    256  1.1  christos 	ror	w16,w26,#6
    257  1.1  christos 	add	w21,w21,w19			// h+=K[i]
    258  1.1  christos 	eor	w12,w26,w26,ror#14
    259  1.1  christos 	and	w17,w27,w26
    260  1.1  christos 	bic	w19,w20,w26
    261  1.1  christos 	add	w21,w21,w9			// h+=X[i]
    262  1.1  christos 	orr	w17,w17,w19			// Ch(e,f,g)
    263  1.1  christos 	eor	w19,w22,w23			// a^b, b^c in next round
    264  1.1  christos 	eor	w16,w16,w12,ror#11	// Sigma1(e)
    265  1.1  christos 	ror	w12,w22,#2
    266  1.1  christos 	add	w21,w21,w17			// h+=Ch(e,f,g)
    267  1.1  christos 	eor	w17,w22,w22,ror#9
    268  1.1  christos 	add	w21,w21,w16			// h+=Sigma1(e)
    269  1.1  christos 	and	w28,w28,w19			// (b^c)&=(a^b)
    270  1.1  christos 	add	w25,w25,w21			// d+=h
    271  1.1  christos 	eor	w28,w28,w23			// Maj(a,b,c)
    272  1.1  christos 	eor	w17,w12,w17,ror#13	// Sigma0(a)
    273  1.1  christos 	add	w21,w21,w28			// h+=Maj(a,b,c)
    274  1.1  christos 	ldr	w28,[x30],#4		// *K++, w19 in next round
    275  1.1  christos 	//add	w21,w21,w17			// h+=Sigma0(a)
    276  1.1  christos #ifndef	__AARCH64EB__
    277  1.1  christos 	rev	w10,w10			// 7
    278  1.1  christos #endif
    279  1.1  christos 	ldp	w11,w12,[x1],#2*4
    280  1.1  christos 	add	w21,w21,w17			// h+=Sigma0(a)
    281  1.1  christos 	ror	w16,w25,#6
    282  1.1  christos 	add	w20,w20,w28			// h+=K[i]
    283  1.1  christos 	eor	w13,w25,w25,ror#14
    284  1.1  christos 	and	w17,w26,w25
    285  1.1  christos 	bic	w28,w27,w25
    286  1.1  christos 	add	w20,w20,w10			// h+=X[i]
    287  1.1  christos 	orr	w17,w17,w28			// Ch(e,f,g)
    288  1.1  christos 	eor	w28,w21,w22			// a^b, b^c in next round
    289  1.1  christos 	eor	w16,w16,w13,ror#11	// Sigma1(e)
    290  1.1  christos 	ror	w13,w21,#2
    291  1.1  christos 	add	w20,w20,w17			// h+=Ch(e,f,g)
    292  1.1  christos 	eor	w17,w21,w21,ror#9
    293  1.1  christos 	add	w20,w20,w16			// h+=Sigma1(e)
    294  1.1  christos 	and	w19,w19,w28			// (b^c)&=(a^b)
    295  1.1  christos 	add	w24,w24,w20			// d+=h
    296  1.1  christos 	eor	w19,w19,w22			// Maj(a,b,c)
    297  1.1  christos 	eor	w17,w13,w17,ror#13	// Sigma0(a)
    298  1.1  christos 	add	w20,w20,w19			// h+=Maj(a,b,c)
    299  1.1  christos 	ldr	w19,[x30],#4		// *K++, w28 in next round
    300  1.1  christos 	//add	w20,w20,w17			// h+=Sigma0(a)
    301  1.1  christos #ifndef	__AARCH64EB__
    302  1.1  christos 	rev	w11,w11			// 8
    303  1.1  christos #endif
    304  1.1  christos 	add	w20,w20,w17			// h+=Sigma0(a)
    305  1.1  christos 	ror	w16,w24,#6
    306  1.1  christos 	add	w27,w27,w19			// h+=K[i]
    307  1.1  christos 	eor	w14,w24,w24,ror#14
    308  1.1  christos 	and	w17,w25,w24
    309  1.1  christos 	bic	w19,w26,w24
    310  1.1  christos 	add	w27,w27,w11			// h+=X[i]
    311  1.1  christos 	orr	w17,w17,w19			// Ch(e,f,g)
    312  1.1  christos 	eor	w19,w20,w21			// a^b, b^c in next round
    313  1.1  christos 	eor	w16,w16,w14,ror#11	// Sigma1(e)
    314  1.1  christos 	ror	w14,w20,#2
    315  1.1  christos 	add	w27,w27,w17			// h+=Ch(e,f,g)
    316  1.1  christos 	eor	w17,w20,w20,ror#9
    317  1.1  christos 	add	w27,w27,w16			// h+=Sigma1(e)
    318  1.1  christos 	and	w28,w28,w19			// (b^c)&=(a^b)
    319  1.1  christos 	add	w23,w23,w27			// d+=h
    320  1.1  christos 	eor	w28,w28,w21			// Maj(a,b,c)
    321  1.1  christos 	eor	w17,w14,w17,ror#13	// Sigma0(a)
    322  1.1  christos 	add	w27,w27,w28			// h+=Maj(a,b,c)
    323  1.1  christos 	ldr	w28,[x30],#4		// *K++, w19 in next round
    324  1.1  christos 	//add	w27,w27,w17			// h+=Sigma0(a)
    325  1.1  christos #ifndef	__AARCH64EB__
    326  1.1  christos 	rev	w12,w12			// 9
    327  1.1  christos #endif
    328  1.1  christos 	ldp	w13,w14,[x1],#2*4
    329  1.1  christos 	add	w27,w27,w17			// h+=Sigma0(a)
    330  1.1  christos 	ror	w16,w23,#6
    331  1.1  christos 	add	w26,w26,w28			// h+=K[i]
    332  1.1  christos 	eor	w15,w23,w23,ror#14
    333  1.1  christos 	and	w17,w24,w23
    334  1.1  christos 	bic	w28,w25,w23
    335  1.1  christos 	add	w26,w26,w12			// h+=X[i]
    336  1.1  christos 	orr	w17,w17,w28			// Ch(e,f,g)
    337  1.1  christos 	eor	w28,w27,w20			// a^b, b^c in next round
    338  1.1  christos 	eor	w16,w16,w15,ror#11	// Sigma1(e)
    339  1.1  christos 	ror	w15,w27,#2
    340  1.1  christos 	add	w26,w26,w17			// h+=Ch(e,f,g)
    341  1.1  christos 	eor	w17,w27,w27,ror#9
    342  1.1  christos 	add	w26,w26,w16			// h+=Sigma1(e)
    343  1.1  christos 	and	w19,w19,w28			// (b^c)&=(a^b)
    344  1.1  christos 	add	w22,w22,w26			// d+=h
    345  1.1  christos 	eor	w19,w19,w20			// Maj(a,b,c)
    346  1.1  christos 	eor	w17,w15,w17,ror#13	// Sigma0(a)
    347  1.1  christos 	add	w26,w26,w19			// h+=Maj(a,b,c)
    348  1.1  christos 	ldr	w19,[x30],#4		// *K++, w28 in next round
    349  1.1  christos 	//add	w26,w26,w17			// h+=Sigma0(a)
    350  1.1  christos #ifndef	__AARCH64EB__
    351  1.1  christos 	rev	w13,w13			// 10
    352  1.1  christos #endif
    353  1.1  christos 	add	w26,w26,w17			// h+=Sigma0(a)
    354  1.1  christos 	ror	w16,w22,#6
    355  1.1  christos 	add	w25,w25,w19			// h+=K[i]
    356  1.1  christos 	eor	w0,w22,w22,ror#14
    357  1.1  christos 	and	w17,w23,w22
    358  1.1  christos 	bic	w19,w24,w22
    359  1.1  christos 	add	w25,w25,w13			// h+=X[i]
    360  1.1  christos 	orr	w17,w17,w19			// Ch(e,f,g)
    361  1.1  christos 	eor	w19,w26,w27			// a^b, b^c in next round
    362  1.1  christos 	eor	w16,w16,w0,ror#11	// Sigma1(e)
    363  1.1  christos 	ror	w0,w26,#2
    364  1.1  christos 	add	w25,w25,w17			// h+=Ch(e,f,g)
    365  1.1  christos 	eor	w17,w26,w26,ror#9
    366  1.1  christos 	add	w25,w25,w16			// h+=Sigma1(e)
    367  1.1  christos 	and	w28,w28,w19			// (b^c)&=(a^b)
    368  1.1  christos 	add	w21,w21,w25			// d+=h
    369  1.1  christos 	eor	w28,w28,w27			// Maj(a,b,c)
    370  1.1  christos 	eor	w17,w0,w17,ror#13	// Sigma0(a)
    371  1.1  christos 	add	w25,w25,w28			// h+=Maj(a,b,c)
    372  1.1  christos 	ldr	w28,[x30],#4		// *K++, w19 in next round
    373  1.1  christos 	//add	w25,w25,w17			// h+=Sigma0(a)
    374  1.1  christos #ifndef	__AARCH64EB__
    375  1.1  christos 	rev	w14,w14			// 11
    376  1.1  christos #endif
    377  1.1  christos 	ldp	w15,w0,[x1],#2*4
    378  1.1  christos 	add	w25,w25,w17			// h+=Sigma0(a)
    379  1.1  christos 	str	w6,[sp,#12]
    380  1.1  christos 	ror	w16,w21,#6
    381  1.1  christos 	add	w24,w24,w28			// h+=K[i]
    382  1.1  christos 	eor	w6,w21,w21,ror#14
    383  1.1  christos 	and	w17,w22,w21
    384  1.1  christos 	bic	w28,w23,w21
    385  1.1  christos 	add	w24,w24,w14			// h+=X[i]
    386  1.1  christos 	orr	w17,w17,w28			// Ch(e,f,g)
    387  1.1  christos 	eor	w28,w25,w26			// a^b, b^c in next round
    388  1.1  christos 	eor	w16,w16,w6,ror#11	// Sigma1(e)
    389  1.1  christos 	ror	w6,w25,#2
    390  1.1  christos 	add	w24,w24,w17			// h+=Ch(e,f,g)
    391  1.1  christos 	eor	w17,w25,w25,ror#9
    392  1.1  christos 	add	w24,w24,w16			// h+=Sigma1(e)
    393  1.1  christos 	and	w19,w19,w28			// (b^c)&=(a^b)
    394  1.1  christos 	add	w20,w20,w24			// d+=h
    395  1.1  christos 	eor	w19,w19,w26			// Maj(a,b,c)
    396  1.1  christos 	eor	w17,w6,w17,ror#13	// Sigma0(a)
    397  1.1  christos 	add	w24,w24,w19			// h+=Maj(a,b,c)
    398  1.1  christos 	ldr	w19,[x30],#4		// *K++, w28 in next round
    399  1.1  christos 	//add	w24,w24,w17			// h+=Sigma0(a)
    400  1.1  christos #ifndef	__AARCH64EB__
    401  1.1  christos 	rev	w15,w15			// 12
    402  1.1  christos #endif
    403  1.1  christos 	add	w24,w24,w17			// h+=Sigma0(a)
    404  1.1  christos 	str	w7,[sp,#0]
    405  1.1  christos 	ror	w16,w20,#6
    406  1.1  christos 	add	w23,w23,w19			// h+=K[i]
    407  1.1  christos 	eor	w7,w20,w20,ror#14
    408  1.1  christos 	and	w17,w21,w20
    409  1.1  christos 	bic	w19,w22,w20
    410  1.1  christos 	add	w23,w23,w15			// h+=X[i]
    411  1.1  christos 	orr	w17,w17,w19			// Ch(e,f,g)
    412  1.1  christos 	eor	w19,w24,w25			// a^b, b^c in next round
    413  1.1  christos 	eor	w16,w16,w7,ror#11	// Sigma1(e)
    414  1.1  christos 	ror	w7,w24,#2
    415  1.1  christos 	add	w23,w23,w17			// h+=Ch(e,f,g)
    416  1.1  christos 	eor	w17,w24,w24,ror#9
    417  1.1  christos 	add	w23,w23,w16			// h+=Sigma1(e)
    418  1.1  christos 	and	w28,w28,w19			// (b^c)&=(a^b)
    419  1.1  christos 	add	w27,w27,w23			// d+=h
    420  1.1  christos 	eor	w28,w28,w25			// Maj(a,b,c)
    421  1.1  christos 	eor	w17,w7,w17,ror#13	// Sigma0(a)
    422  1.1  christos 	add	w23,w23,w28			// h+=Maj(a,b,c)
    423  1.1  christos 	ldr	w28,[x30],#4		// *K++, w19 in next round
    424  1.1  christos 	//add	w23,w23,w17			// h+=Sigma0(a)
    425  1.1  christos #ifndef	__AARCH64EB__
    426  1.1  christos 	rev	w0,w0			// 13
    427  1.1  christos #endif
    428  1.1  christos 	ldp	w1,w2,[x1]
    429  1.1  christos 	add	w23,w23,w17			// h+=Sigma0(a)
    430  1.1  christos 	str	w8,[sp,#4]
    431  1.1  christos 	ror	w16,w27,#6
    432  1.1  christos 	add	w22,w22,w28			// h+=K[i]
    433  1.1  christos 	eor	w8,w27,w27,ror#14
    434  1.1  christos 	and	w17,w20,w27
    435  1.1  christos 	bic	w28,w21,w27
    436  1.1  christos 	add	w22,w22,w0			// h+=X[i]
    437  1.1  christos 	orr	w17,w17,w28			// Ch(e,f,g)
    438  1.1  christos 	eor	w28,w23,w24			// a^b, b^c in next round
    439  1.1  christos 	eor	w16,w16,w8,ror#11	// Sigma1(e)
    440  1.1  christos 	ror	w8,w23,#2
    441  1.1  christos 	add	w22,w22,w17			// h+=Ch(e,f,g)
    442  1.1  christos 	eor	w17,w23,w23,ror#9
    443  1.1  christos 	add	w22,w22,w16			// h+=Sigma1(e)
    444  1.1  christos 	and	w19,w19,w28			// (b^c)&=(a^b)
    445  1.1  christos 	add	w26,w26,w22			// d+=h
    446  1.1  christos 	eor	w19,w19,w24			// Maj(a,b,c)
    447  1.1  christos 	eor	w17,w8,w17,ror#13	// Sigma0(a)
    448  1.1  christos 	add	w22,w22,w19			// h+=Maj(a,b,c)
    449  1.1  christos 	ldr	w19,[x30],#4		// *K++, w28 in next round
    450  1.1  christos 	//add	w22,w22,w17			// h+=Sigma0(a)
    451  1.1  christos #ifndef	__AARCH64EB__
    452  1.1  christos 	rev	w1,w1			// 14
    453  1.1  christos #endif
    454  1.1  christos 	ldr	w6,[sp,#12]
    455  1.1  christos 	add	w22,w22,w17			// h+=Sigma0(a)
    456  1.1  christos 	str	w9,[sp,#8]
    457  1.1  christos 	ror	w16,w26,#6
    458  1.1  christos 	add	w21,w21,w19			// h+=K[i]
    459  1.1  christos 	eor	w9,w26,w26,ror#14
    460  1.1  christos 	and	w17,w27,w26
    461  1.1  christos 	bic	w19,w20,w26
    462  1.1  christos 	add	w21,w21,w1			// h+=X[i]
    463  1.1  christos 	orr	w17,w17,w19			// Ch(e,f,g)
    464  1.1  christos 	eor	w19,w22,w23			// a^b, b^c in next round
    465  1.1  christos 	eor	w16,w16,w9,ror#11	// Sigma1(e)
    466  1.1  christos 	ror	w9,w22,#2
    467  1.1  christos 	add	w21,w21,w17			// h+=Ch(e,f,g)
    468  1.1  christos 	eor	w17,w22,w22,ror#9
    469  1.1  christos 	add	w21,w21,w16			// h+=Sigma1(e)
    470  1.1  christos 	and	w28,w28,w19			// (b^c)&=(a^b)
    471  1.1  christos 	add	w25,w25,w21			// d+=h
    472  1.1  christos 	eor	w28,w28,w23			// Maj(a,b,c)
    473  1.1  christos 	eor	w17,w9,w17,ror#13	// Sigma0(a)
    474  1.1  christos 	add	w21,w21,w28			// h+=Maj(a,b,c)
    475  1.1  christos 	ldr	w28,[x30],#4		// *K++, w19 in next round
    476  1.1  christos 	//add	w21,w21,w17			// h+=Sigma0(a)
    477  1.1  christos #ifndef	__AARCH64EB__
    478  1.1  christos 	rev	w2,w2			// 15
    479  1.1  christos #endif
    480  1.1  christos 	ldr	w7,[sp,#0]
    481  1.1  christos 	add	w21,w21,w17			// h+=Sigma0(a)
    482  1.1  christos 	str	w10,[sp,#12]
    483  1.1  christos 	ror	w16,w25,#6
    484  1.1  christos 	add	w20,w20,w28			// h+=K[i]
    485  1.1  christos 	ror	w9,w4,#7
    486  1.1  christos 	and	w17,w26,w25
    487  1.1  christos 	ror	w8,w1,#17
    488  1.1  christos 	bic	w28,w27,w25
    489  1.1  christos 	ror	w10,w21,#2
    490  1.1  christos 	add	w20,w20,w2			// h+=X[i]
    491  1.1  christos 	eor	w16,w16,w25,ror#11
    492  1.1  christos 	eor	w9,w9,w4,ror#18
    493  1.1  christos 	orr	w17,w17,w28			// Ch(e,f,g)
    494  1.1  christos 	eor	w28,w21,w22			// a^b, b^c in next round
    495  1.1  christos 	eor	w16,w16,w25,ror#25	// Sigma1(e)
    496  1.1  christos 	eor	w10,w10,w21,ror#13
    497  1.1  christos 	add	w20,w20,w17			// h+=Ch(e,f,g)
    498  1.1  christos 	and	w19,w19,w28			// (b^c)&=(a^b)
    499  1.1  christos 	eor	w8,w8,w1,ror#19
    500  1.1  christos 	eor	w9,w9,w4,lsr#3	// sigma0(X[i+1])
    501  1.1  christos 	add	w20,w20,w16			// h+=Sigma1(e)
    502  1.1  christos 	eor	w19,w19,w22			// Maj(a,b,c)
    503  1.1  christos 	eor	w17,w10,w21,ror#22	// Sigma0(a)
    504  1.1  christos 	eor	w8,w8,w1,lsr#10	// sigma1(X[i+14])
    505  1.1  christos 	add	w3,w3,w12
    506  1.1  christos 	add	w24,w24,w20			// d+=h
    507  1.1  christos 	add	w20,w20,w19			// h+=Maj(a,b,c)
    508  1.1  christos 	ldr	w19,[x30],#4		// *K++, w28 in next round
    509  1.1  christos 	add	w3,w3,w9
    510  1.1  christos 	add	w20,w20,w17			// h+=Sigma0(a)
    511  1.1  christos 	add	w3,w3,w8
    512  1.1  christos .Loop_16_xx:
    513  1.1  christos 	ldr	w8,[sp,#4]
    514  1.1  christos 	str	w11,[sp,#0]
    515  1.1  christos 	ror	w16,w24,#6
    516  1.1  christos 	add	w27,w27,w19			// h+=K[i]
    517  1.1  christos 	ror	w10,w5,#7
    518  1.1  christos 	and	w17,w25,w24
    519  1.1  christos 	ror	w9,w2,#17
    520  1.1  christos 	bic	w19,w26,w24
    521  1.1  christos 	ror	w11,w20,#2
    522  1.1  christos 	add	w27,w27,w3			// h+=X[i]
    523  1.1  christos 	eor	w16,w16,w24,ror#11
    524  1.1  christos 	eor	w10,w10,w5,ror#18
    525  1.1  christos 	orr	w17,w17,w19			// Ch(e,f,g)
    526  1.1  christos 	eor	w19,w20,w21			// a^b, b^c in next round
    527  1.1  christos 	eor	w16,w16,w24,ror#25	// Sigma1(e)
    528  1.1  christos 	eor	w11,w11,w20,ror#13
    529  1.1  christos 	add	w27,w27,w17			// h+=Ch(e,f,g)
    530  1.1  christos 	and	w28,w28,w19			// (b^c)&=(a^b)
    531  1.1  christos 	eor	w9,w9,w2,ror#19
    532  1.1  christos 	eor	w10,w10,w5,lsr#3	// sigma0(X[i+1])
    533  1.1  christos 	add	w27,w27,w16			// h+=Sigma1(e)
    534  1.1  christos 	eor	w28,w28,w21			// Maj(a,b,c)
    535  1.1  christos 	eor	w17,w11,w20,ror#22	// Sigma0(a)
    536  1.1  christos 	eor	w9,w9,w2,lsr#10	// sigma1(X[i+14])
    537  1.1  christos 	add	w4,w4,w13
    538  1.1  christos 	add	w23,w23,w27			// d+=h
    539  1.1  christos 	add	w27,w27,w28			// h+=Maj(a,b,c)
    540  1.1  christos 	ldr	w28,[x30],#4		// *K++, w19 in next round
    541  1.1  christos 	add	w4,w4,w10
    542  1.1  christos 	add	w27,w27,w17			// h+=Sigma0(a)
    543  1.1  christos 	add	w4,w4,w9
    544  1.1  christos 	ldr	w9,[sp,#8]
    545  1.1  christos 	str	w12,[sp,#4]
    546  1.1  christos 	ror	w16,w23,#6
    547  1.1  christos 	add	w26,w26,w28			// h+=K[i]
    548  1.1  christos 	ror	w11,w6,#7
    549  1.1  christos 	and	w17,w24,w23
    550  1.1  christos 	ror	w10,w3,#17
    551  1.1  christos 	bic	w28,w25,w23
    552  1.1  christos 	ror	w12,w27,#2
    553  1.1  christos 	add	w26,w26,w4			// h+=X[i]
    554  1.1  christos 	eor	w16,w16,w23,ror#11
    555  1.1  christos 	eor	w11,w11,w6,ror#18
    556  1.1  christos 	orr	w17,w17,w28			// Ch(e,f,g)
    557  1.1  christos 	eor	w28,w27,w20			// a^b, b^c in next round
    558  1.1  christos 	eor	w16,w16,w23,ror#25	// Sigma1(e)
    559  1.1  christos 	eor	w12,w12,w27,ror#13
    560  1.1  christos 	add	w26,w26,w17			// h+=Ch(e,f,g)
    561  1.1  christos 	and	w19,w19,w28			// (b^c)&=(a^b)
    562  1.1  christos 	eor	w10,w10,w3,ror#19
    563  1.1  christos 	eor	w11,w11,w6,lsr#3	// sigma0(X[i+1])
    564  1.1  christos 	add	w26,w26,w16			// h+=Sigma1(e)
    565  1.1  christos 	eor	w19,w19,w20			// Maj(a,b,c)
    566  1.1  christos 	eor	w17,w12,w27,ror#22	// Sigma0(a)
    567  1.1  christos 	eor	w10,w10,w3,lsr#10	// sigma1(X[i+14])
    568  1.1  christos 	add	w5,w5,w14
    569  1.1  christos 	add	w22,w22,w26			// d+=h
    570  1.1  christos 	add	w26,w26,w19			// h+=Maj(a,b,c)
    571  1.1  christos 	ldr	w19,[x30],#4		// *K++, w28 in next round
    572  1.1  christos 	add	w5,w5,w11
    573  1.1  christos 	add	w26,w26,w17			// h+=Sigma0(a)
    574  1.1  christos 	add	w5,w5,w10
    575  1.1  christos 	ldr	w10,[sp,#12]
    576  1.1  christos 	str	w13,[sp,#8]
    577  1.1  christos 	ror	w16,w22,#6
    578  1.1  christos 	add	w25,w25,w19			// h+=K[i]
    579  1.1  christos 	ror	w12,w7,#7
    580  1.1  christos 	and	w17,w23,w22
    581  1.1  christos 	ror	w11,w4,#17
    582  1.1  christos 	bic	w19,w24,w22
    583  1.1  christos 	ror	w13,w26,#2
    584  1.1  christos 	add	w25,w25,w5			// h+=X[i]
    585  1.1  christos 	eor	w16,w16,w22,ror#11
    586  1.1  christos 	eor	w12,w12,w7,ror#18
    587  1.1  christos 	orr	w17,w17,w19			// Ch(e,f,g)
    588  1.1  christos 	eor	w19,w26,w27			// a^b, b^c in next round
    589  1.1  christos 	eor	w16,w16,w22,ror#25	// Sigma1(e)
    590  1.1  christos 	eor	w13,w13,w26,ror#13
    591  1.1  christos 	add	w25,w25,w17			// h+=Ch(e,f,g)
    592  1.1  christos 	and	w28,w28,w19			// (b^c)&=(a^b)
    593  1.1  christos 	eor	w11,w11,w4,ror#19
    594  1.1  christos 	eor	w12,w12,w7,lsr#3	// sigma0(X[i+1])
    595  1.1  christos 	add	w25,w25,w16			// h+=Sigma1(e)
    596  1.1  christos 	eor	w28,w28,w27			// Maj(a,b,c)
    597  1.1  christos 	eor	w17,w13,w26,ror#22	// Sigma0(a)
    598  1.1  christos 	eor	w11,w11,w4,lsr#10	// sigma1(X[i+14])
    599  1.1  christos 	add	w6,w6,w15
    600  1.1  christos 	add	w21,w21,w25			// d+=h
    601  1.1  christos 	add	w25,w25,w28			// h+=Maj(a,b,c)
    602  1.1  christos 	ldr	w28,[x30],#4		// *K++, w19 in next round
    603  1.1  christos 	add	w6,w6,w12
    604  1.1  christos 	add	w25,w25,w17			// h+=Sigma0(a)
    605  1.1  christos 	add	w6,w6,w11
    606  1.1  christos 	ldr	w11,[sp,#0]
    607  1.1  christos 	str	w14,[sp,#12]
    608  1.1  christos 	ror	w16,w21,#6
    609  1.1  christos 	add	w24,w24,w28			// h+=K[i]
    610  1.1  christos 	ror	w13,w8,#7
    611  1.1  christos 	and	w17,w22,w21
    612  1.1  christos 	ror	w12,w5,#17
    613  1.1  christos 	bic	w28,w23,w21
    614  1.1  christos 	ror	w14,w25,#2
    615  1.1  christos 	add	w24,w24,w6			// h+=X[i]
    616  1.1  christos 	eor	w16,w16,w21,ror#11
    617  1.1  christos 	eor	w13,w13,w8,ror#18
    618  1.1  christos 	orr	w17,w17,w28			// Ch(e,f,g)
    619  1.1  christos 	eor	w28,w25,w26			// a^b, b^c in next round
    620  1.1  christos 	eor	w16,w16,w21,ror#25	// Sigma1(e)
    621  1.1  christos 	eor	w14,w14,w25,ror#13
    622  1.1  christos 	add	w24,w24,w17			// h+=Ch(e,f,g)
    623  1.1  christos 	and	w19,w19,w28			// (b^c)&=(a^b)
    624  1.1  christos 	eor	w12,w12,w5,ror#19
    625  1.1  christos 	eor	w13,w13,w8,lsr#3	// sigma0(X[i+1])
    626  1.1  christos 	add	w24,w24,w16			// h+=Sigma1(e)
    627  1.1  christos 	eor	w19,w19,w26			// Maj(a,b,c)
    628  1.1  christos 	eor	w17,w14,w25,ror#22	// Sigma0(a)
    629  1.1  christos 	eor	w12,w12,w5,lsr#10	// sigma1(X[i+14])
    630  1.1  christos 	add	w7,w7,w0
    631  1.1  christos 	add	w20,w20,w24			// d+=h
    632  1.1  christos 	add	w24,w24,w19			// h+=Maj(a,b,c)
    633  1.1  christos 	ldr	w19,[x30],#4		// *K++, w28 in next round
    634  1.1  christos 	add	w7,w7,w13
    635  1.1  christos 	add	w24,w24,w17			// h+=Sigma0(a)
    636  1.1  christos 	add	w7,w7,w12
    637  1.1  christos 	ldr	w12,[sp,#4]
    638  1.1  christos 	str	w15,[sp,#0]
    639  1.1  christos 	ror	w16,w20,#6
    640  1.1  christos 	add	w23,w23,w19			// h+=K[i]
    641  1.1  christos 	ror	w14,w9,#7
    642  1.1  christos 	and	w17,w21,w20
    643  1.1  christos 	ror	w13,w6,#17
    644  1.1  christos 	bic	w19,w22,w20
    645  1.1  christos 	ror	w15,w24,#2
    646  1.1  christos 	add	w23,w23,w7			// h+=X[i]
    647  1.1  christos 	eor	w16,w16,w20,ror#11
    648  1.1  christos 	eor	w14,w14,w9,ror#18
    649  1.1  christos 	orr	w17,w17,w19			// Ch(e,f,g)
    650  1.1  christos 	eor	w19,w24,w25			// a^b, b^c in next round
    651  1.1  christos 	eor	w16,w16,w20,ror#25	// Sigma1(e)
    652  1.1  christos 	eor	w15,w15,w24,ror#13
    653  1.1  christos 	add	w23,w23,w17			// h+=Ch(e,f,g)
    654  1.1  christos 	and	w28,w28,w19			// (b^c)&=(a^b)
    655  1.1  christos 	eor	w13,w13,w6,ror#19
    656  1.1  christos 	eor	w14,w14,w9,lsr#3	// sigma0(X[i+1])
    657  1.1  christos 	add	w23,w23,w16			// h+=Sigma1(e)
    658  1.1  christos 	eor	w28,w28,w25			// Maj(a,b,c)
    659  1.1  christos 	eor	w17,w15,w24,ror#22	// Sigma0(a)
    660  1.1  christos 	eor	w13,w13,w6,lsr#10	// sigma1(X[i+14])
    661  1.1  christos 	add	w8,w8,w1
    662  1.1  christos 	add	w27,w27,w23			// d+=h
    663  1.1  christos 	add	w23,w23,w28			// h+=Maj(a,b,c)
    664  1.1  christos 	ldr	w28,[x30],#4		// *K++, w19 in next round
    665  1.1  christos 	add	w8,w8,w14
    666  1.1  christos 	add	w23,w23,w17			// h+=Sigma0(a)
    667  1.1  christos 	add	w8,w8,w13
    668  1.1  christos 	ldr	w13,[sp,#8]
    669  1.1  christos 	str	w0,[sp,#4]
    670  1.1  christos 	ror	w16,w27,#6
    671  1.1  christos 	add	w22,w22,w28			// h+=K[i]
    672  1.1  christos 	ror	w15,w10,#7
    673  1.1  christos 	and	w17,w20,w27
    674  1.1  christos 	ror	w14,w7,#17
    675  1.1  christos 	bic	w28,w21,w27
    676  1.1  christos 	ror	w0,w23,#2
    677  1.1  christos 	add	w22,w22,w8			// h+=X[i]
    678  1.1  christos 	eor	w16,w16,w27,ror#11
    679  1.1  christos 	eor	w15,w15,w10,ror#18
    680  1.1  christos 	orr	w17,w17,w28			// Ch(e,f,g)
    681  1.1  christos 	eor	w28,w23,w24			// a^b, b^c in next round
    682  1.1  christos 	eor	w16,w16,w27,ror#25	// Sigma1(e)
    683  1.1  christos 	eor	w0,w0,w23,ror#13
    684  1.1  christos 	add	w22,w22,w17			// h+=Ch(e,f,g)
    685  1.1  christos 	and	w19,w19,w28			// (b^c)&=(a^b)
    686  1.1  christos 	eor	w14,w14,w7,ror#19
    687  1.1  christos 	eor	w15,w15,w10,lsr#3	// sigma0(X[i+1])
    688  1.1  christos 	add	w22,w22,w16			// h+=Sigma1(e)
    689  1.1  christos 	eor	w19,w19,w24			// Maj(a,b,c)
    690  1.1  christos 	eor	w17,w0,w23,ror#22	// Sigma0(a)
    691  1.1  christos 	eor	w14,w14,w7,lsr#10	// sigma1(X[i+14])
    692  1.1  christos 	add	w9,w9,w2
    693  1.1  christos 	add	w26,w26,w22			// d+=h
    694  1.1  christos 	add	w22,w22,w19			// h+=Maj(a,b,c)
    695  1.1  christos 	ldr	w19,[x30],#4		// *K++, w28 in next round
    696  1.1  christos 	add	w9,w9,w15
    697  1.1  christos 	add	w22,w22,w17			// h+=Sigma0(a)
    698  1.1  christos 	add	w9,w9,w14
    699  1.1  christos 	ldr	w14,[sp,#12]
    700  1.1  christos 	str	w1,[sp,#8]
    701  1.1  christos 	ror	w16,w26,#6
    702  1.1  christos 	add	w21,w21,w19			// h+=K[i]
    703  1.1  christos 	ror	w0,w11,#7
    704  1.1  christos 	and	w17,w27,w26
    705  1.1  christos 	ror	w15,w8,#17
    706  1.1  christos 	bic	w19,w20,w26
    707  1.1  christos 	ror	w1,w22,#2
    708  1.1  christos 	add	w21,w21,w9			// h+=X[i]
    709  1.1  christos 	eor	w16,w16,w26,ror#11
    710  1.1  christos 	eor	w0,w0,w11,ror#18
    711  1.1  christos 	orr	w17,w17,w19			// Ch(e,f,g)
    712  1.1  christos 	eor	w19,w22,w23			// a^b, b^c in next round
    713  1.1  christos 	eor	w16,w16,w26,ror#25	// Sigma1(e)
    714  1.1  christos 	eor	w1,w1,w22,ror#13
    715  1.1  christos 	add	w21,w21,w17			// h+=Ch(e,f,g)
    716  1.1  christos 	and	w28,w28,w19			// (b^c)&=(a^b)
    717  1.1  christos 	eor	w15,w15,w8,ror#19
    718  1.1  christos 	eor	w0,w0,w11,lsr#3	// sigma0(X[i+1])
    719  1.1  christos 	add	w21,w21,w16			// h+=Sigma1(e)
    720  1.1  christos 	eor	w28,w28,w23			// Maj(a,b,c)
    721  1.1  christos 	eor	w17,w1,w22,ror#22	// Sigma0(a)
    722  1.1  christos 	eor	w15,w15,w8,lsr#10	// sigma1(X[i+14])
    723  1.1  christos 	add	w10,w10,w3
    724  1.1  christos 	add	w25,w25,w21			// d+=h
    725  1.1  christos 	add	w21,w21,w28			// h+=Maj(a,b,c)
    726  1.1  christos 	ldr	w28,[x30],#4		// *K++, w19 in next round
    727  1.1  christos 	add	w10,w10,w0
    728  1.1  christos 	add	w21,w21,w17			// h+=Sigma0(a)
    729  1.1  christos 	add	w10,w10,w15
    730  1.1  christos 	ldr	w15,[sp,#0]
    731  1.1  christos 	str	w2,[sp,#12]
    732  1.1  christos 	ror	w16,w25,#6
    733  1.1  christos 	add	w20,w20,w28			// h+=K[i]
    734  1.1  christos 	ror	w1,w12,#7
    735  1.1  christos 	and	w17,w26,w25
    736  1.1  christos 	ror	w0,w9,#17
    737  1.1  christos 	bic	w28,w27,w25
    738  1.1  christos 	ror	w2,w21,#2
    739  1.1  christos 	add	w20,w20,w10			// h+=X[i]
    740  1.1  christos 	eor	w16,w16,w25,ror#11
    741  1.1  christos 	eor	w1,w1,w12,ror#18
    742  1.1  christos 	orr	w17,w17,w28			// Ch(e,f,g)
    743  1.1  christos 	eor	w28,w21,w22			// a^b, b^c in next round
    744  1.1  christos 	eor	w16,w16,w25,ror#25	// Sigma1(e)
    745  1.1  christos 	eor	w2,w2,w21,ror#13
    746  1.1  christos 	add	w20,w20,w17			// h+=Ch(e,f,g)
    747  1.1  christos 	and	w19,w19,w28			// (b^c)&=(a^b)
    748  1.1  christos 	eor	w0,w0,w9,ror#19
    749  1.1  christos 	eor	w1,w1,w12,lsr#3	// sigma0(X[i+1])
    750  1.1  christos 	add	w20,w20,w16			// h+=Sigma1(e)
    751  1.1  christos 	eor	w19,w19,w22			// Maj(a,b,c)
    752  1.1  christos 	eor	w17,w2,w21,ror#22	// Sigma0(a)
    753  1.1  christos 	eor	w0,w0,w9,lsr#10	// sigma1(X[i+14])
    754  1.1  christos 	add	w11,w11,w4
    755  1.1  christos 	add	w24,w24,w20			// d+=h
    756  1.1  christos 	add	w20,w20,w19			// h+=Maj(a,b,c)
    757  1.1  christos 	ldr	w19,[x30],#4		// *K++, w28 in next round
    758  1.1  christos 	add	w11,w11,w1
    759  1.1  christos 	add	w20,w20,w17			// h+=Sigma0(a)
    760  1.1  christos 	add	w11,w11,w0
    761  1.1  christos 	ldr	w0,[sp,#4]
    762  1.1  christos 	str	w3,[sp,#0]
    763  1.1  christos 	ror	w16,w24,#6
    764  1.1  christos 	add	w27,w27,w19			// h+=K[i]
    765  1.1  christos 	ror	w2,w13,#7
    766  1.1  christos 	and	w17,w25,w24
    767  1.1  christos 	ror	w1,w10,#17
    768  1.1  christos 	bic	w19,w26,w24
    769  1.1  christos 	ror	w3,w20,#2
    770  1.1  christos 	add	w27,w27,w11			// h+=X[i]
    771  1.1  christos 	eor	w16,w16,w24,ror#11
    772  1.1  christos 	eor	w2,w2,w13,ror#18
    773  1.1  christos 	orr	w17,w17,w19			// Ch(e,f,g)
    774  1.1  christos 	eor	w19,w20,w21			// a^b, b^c in next round
    775  1.1  christos 	eor	w16,w16,w24,ror#25	// Sigma1(e)
    776  1.1  christos 	eor	w3,w3,w20,ror#13
    777  1.1  christos 	add	w27,w27,w17			// h+=Ch(e,f,g)
    778  1.1  christos 	and	w28,w28,w19			// (b^c)&=(a^b)
    779  1.1  christos 	eor	w1,w1,w10,ror#19
    780  1.1  christos 	eor	w2,w2,w13,lsr#3	// sigma0(X[i+1])
    781  1.1  christos 	add	w27,w27,w16			// h+=Sigma1(e)
    782  1.1  christos 	eor	w28,w28,w21			// Maj(a,b,c)
    783  1.1  christos 	eor	w17,w3,w20,ror#22	// Sigma0(a)
    784  1.1  christos 	eor	w1,w1,w10,lsr#10	// sigma1(X[i+14])
    785  1.1  christos 	add	w12,w12,w5
    786  1.1  christos 	add	w23,w23,w27			// d+=h
    787  1.1  christos 	add	w27,w27,w28			// h+=Maj(a,b,c)
    788  1.1  christos 	ldr	w28,[x30],#4		// *K++, w19 in next round
    789  1.1  christos 	add	w12,w12,w2
    790  1.1  christos 	add	w27,w27,w17			// h+=Sigma0(a)
    791  1.1  christos 	add	w12,w12,w1
    792  1.1  christos 	ldr	w1,[sp,#8]
    793  1.1  christos 	str	w4,[sp,#4]
    794  1.1  christos 	ror	w16,w23,#6
    795  1.1  christos 	add	w26,w26,w28			// h+=K[i]
    796  1.1  christos 	ror	w3,w14,#7
    797  1.1  christos 	and	w17,w24,w23
    798  1.1  christos 	ror	w2,w11,#17
    799  1.1  christos 	bic	w28,w25,w23
    800  1.1  christos 	ror	w4,w27,#2
    801  1.1  christos 	add	w26,w26,w12			// h+=X[i]
    802  1.1  christos 	eor	w16,w16,w23,ror#11
    803  1.1  christos 	eor	w3,w3,w14,ror#18
    804  1.1  christos 	orr	w17,w17,w28			// Ch(e,f,g)
    805  1.1  christos 	eor	w28,w27,w20			// a^b, b^c in next round
    806  1.1  christos 	eor	w16,w16,w23,ror#25	// Sigma1(e)
    807  1.1  christos 	eor	w4,w4,w27,ror#13
    808  1.1  christos 	add	w26,w26,w17			// h+=Ch(e,f,g)
    809  1.1  christos 	and	w19,w19,w28			// (b^c)&=(a^b)
    810  1.1  christos 	eor	w2,w2,w11,ror#19
    811  1.1  christos 	eor	w3,w3,w14,lsr#3	// sigma0(X[i+1])
    812  1.1  christos 	add	w26,w26,w16			// h+=Sigma1(e)
    813  1.1  christos 	eor	w19,w19,w20			// Maj(a,b,c)
    814  1.1  christos 	eor	w17,w4,w27,ror#22	// Sigma0(a)
    815  1.1  christos 	eor	w2,w2,w11,lsr#10	// sigma1(X[i+14])
    816  1.1  christos 	add	w13,w13,w6
    817  1.1  christos 	add	w22,w22,w26			// d+=h
    818  1.1  christos 	add	w26,w26,w19			// h+=Maj(a,b,c)
    819  1.1  christos 	ldr	w19,[x30],#4		// *K++, w28 in next round
    820  1.1  christos 	add	w13,w13,w3
    821  1.1  christos 	add	w26,w26,w17			// h+=Sigma0(a)
    822  1.1  christos 	add	w13,w13,w2
    823  1.1  christos 	ldr	w2,[sp,#12]
    824  1.1  christos 	str	w5,[sp,#8]
    825  1.1  christos 	ror	w16,w22,#6
    826  1.1  christos 	add	w25,w25,w19			// h+=K[i]
    827  1.1  christos 	ror	w4,w15,#7
    828  1.1  christos 	and	w17,w23,w22
    829  1.1  christos 	ror	w3,w12,#17
    830  1.1  christos 	bic	w19,w24,w22
    831  1.1  christos 	ror	w5,w26,#2
    832  1.1  christos 	add	w25,w25,w13			// h+=X[i]
    833  1.1  christos 	eor	w16,w16,w22,ror#11
    834  1.1  christos 	eor	w4,w4,w15,ror#18
    835  1.1  christos 	orr	w17,w17,w19			// Ch(e,f,g)
    836  1.1  christos 	eor	w19,w26,w27			// a^b, b^c in next round
    837  1.1  christos 	eor	w16,w16,w22,ror#25	// Sigma1(e)
    838  1.1  christos 	eor	w5,w5,w26,ror#13
    839  1.1  christos 	add	w25,w25,w17			// h+=Ch(e,f,g)
    840  1.1  christos 	and	w28,w28,w19			// (b^c)&=(a^b)
    841  1.1  christos 	eor	w3,w3,w12,ror#19
    842  1.1  christos 	eor	w4,w4,w15,lsr#3	// sigma0(X[i+1])
    843  1.1  christos 	add	w25,w25,w16			// h+=Sigma1(e)
    844  1.1  christos 	eor	w28,w28,w27			// Maj(a,b,c)
    845  1.1  christos 	eor	w17,w5,w26,ror#22	// Sigma0(a)
    846  1.1  christos 	eor	w3,w3,w12,lsr#10	// sigma1(X[i+14])
    847  1.1  christos 	add	w14,w14,w7
    848  1.1  christos 	add	w21,w21,w25			// d+=h
    849  1.1  christos 	add	w25,w25,w28			// h+=Maj(a,b,c)
    850  1.1  christos 	ldr	w28,[x30],#4		// *K++, w19 in next round
    851  1.1  christos 	add	w14,w14,w4
    852  1.1  christos 	add	w25,w25,w17			// h+=Sigma0(a)
    853  1.1  christos 	add	w14,w14,w3
    854  1.1  christos 	ldr	w3,[sp,#0]
    855  1.1  christos 	str	w6,[sp,#12]
    856  1.1  christos 	ror	w16,w21,#6
    857  1.1  christos 	add	w24,w24,w28			// h+=K[i]
    858  1.1  christos 	ror	w5,w0,#7
    859  1.1  christos 	and	w17,w22,w21
    860  1.1  christos 	ror	w4,w13,#17
    861  1.1  christos 	bic	w28,w23,w21
    862  1.1  christos 	ror	w6,w25,#2
    863  1.1  christos 	add	w24,w24,w14			// h+=X[i]
    864  1.1  christos 	eor	w16,w16,w21,ror#11
    865  1.1  christos 	eor	w5,w5,w0,ror#18
    866  1.1  christos 	orr	w17,w17,w28			// Ch(e,f,g)
    867  1.1  christos 	eor	w28,w25,w26			// a^b, b^c in next round
    868  1.1  christos 	eor	w16,w16,w21,ror#25	// Sigma1(e)
    869  1.1  christos 	eor	w6,w6,w25,ror#13
    870  1.1  christos 	add	w24,w24,w17			// h+=Ch(e,f,g)
    871  1.1  christos 	and	w19,w19,w28			// (b^c)&=(a^b)
    872  1.1  christos 	eor	w4,w4,w13,ror#19
    873  1.1  christos 	eor	w5,w5,w0,lsr#3	// sigma0(X[i+1])
    874  1.1  christos 	add	w24,w24,w16			// h+=Sigma1(e)
    875  1.1  christos 	eor	w19,w19,w26			// Maj(a,b,c)
    876  1.1  christos 	eor	w17,w6,w25,ror#22	// Sigma0(a)
    877  1.1  christos 	eor	w4,w4,w13,lsr#10	// sigma1(X[i+14])
    878  1.1  christos 	add	w15,w15,w8
    879  1.1  christos 	add	w20,w20,w24			// d+=h
    880  1.1  christos 	add	w24,w24,w19			// h+=Maj(a,b,c)
    881  1.1  christos 	ldr	w19,[x30],#4		// *K++, w28 in next round
    882  1.1  christos 	add	w15,w15,w5
    883  1.1  christos 	add	w24,w24,w17			// h+=Sigma0(a)
    884  1.1  christos 	add	w15,w15,w4
    885  1.1  christos 	ldr	w4,[sp,#4]
    886  1.1  christos 	str	w7,[sp,#0]
    887  1.1  christos 	ror	w16,w20,#6
    888  1.1  christos 	add	w23,w23,w19			// h+=K[i]
    889  1.1  christos 	ror	w6,w1,#7
    890  1.1  christos 	and	w17,w21,w20
    891  1.1  christos 	ror	w5,w14,#17
    892  1.1  christos 	bic	w19,w22,w20
    893  1.1  christos 	ror	w7,w24,#2
    894  1.1  christos 	add	w23,w23,w15			// h+=X[i]
    895  1.1  christos 	eor	w16,w16,w20,ror#11
    896  1.1  christos 	eor	w6,w6,w1,ror#18
    897  1.1  christos 	orr	w17,w17,w19			// Ch(e,f,g)
    898  1.1  christos 	eor	w19,w24,w25			// a^b, b^c in next round
    899  1.1  christos 	eor	w16,w16,w20,ror#25	// Sigma1(e)
    900  1.1  christos 	eor	w7,w7,w24,ror#13
    901  1.1  christos 	add	w23,w23,w17			// h+=Ch(e,f,g)
    902  1.1  christos 	and	w28,w28,w19			// (b^c)&=(a^b)
    903  1.1  christos 	eor	w5,w5,w14,ror#19
    904  1.1  christos 	eor	w6,w6,w1,lsr#3	// sigma0(X[i+1])
    905  1.1  christos 	add	w23,w23,w16			// h+=Sigma1(e)
    906  1.1  christos 	eor	w28,w28,w25			// Maj(a,b,c)
    907  1.1  christos 	eor	w17,w7,w24,ror#22	// Sigma0(a)
    908  1.1  christos 	eor	w5,w5,w14,lsr#10	// sigma1(X[i+14])
    909  1.1  christos 	add	w0,w0,w9
    910  1.1  christos 	add	w27,w27,w23			// d+=h
    911  1.1  christos 	add	w23,w23,w28			// h+=Maj(a,b,c)
    912  1.1  christos 	ldr	w28,[x30],#4		// *K++, w19 in next round
    913  1.1  christos 	add	w0,w0,w6
    914  1.1  christos 	add	w23,w23,w17			// h+=Sigma0(a)
    915  1.1  christos 	add	w0,w0,w5
    916  1.1  christos 	ldr	w5,[sp,#8]
    917  1.1  christos 	str	w8,[sp,#4]
    918  1.1  christos 	ror	w16,w27,#6
    919  1.1  christos 	add	w22,w22,w28			// h+=K[i]
    920  1.1  christos 	ror	w7,w2,#7
    921  1.1  christos 	and	w17,w20,w27
    922  1.1  christos 	ror	w6,w15,#17
    923  1.1  christos 	bic	w28,w21,w27
    924  1.1  christos 	ror	w8,w23,#2
    925  1.1  christos 	add	w22,w22,w0			// h+=X[i]
    926  1.1  christos 	eor	w16,w16,w27,ror#11
    927  1.1  christos 	eor	w7,w7,w2,ror#18
    928  1.1  christos 	orr	w17,w17,w28			// Ch(e,f,g)
    929  1.1  christos 	eor	w28,w23,w24			// a^b, b^c in next round
    930  1.1  christos 	eor	w16,w16,w27,ror#25	// Sigma1(e)
    931  1.1  christos 	eor	w8,w8,w23,ror#13
    932  1.1  christos 	add	w22,w22,w17			// h+=Ch(e,f,g)
    933  1.1  christos 	and	w19,w19,w28			// (b^c)&=(a^b)
    934  1.1  christos 	eor	w6,w6,w15,ror#19
    935  1.1  christos 	eor	w7,w7,w2,lsr#3	// sigma0(X[i+1])
    936  1.1  christos 	add	w22,w22,w16			// h+=Sigma1(e)
    937  1.1  christos 	eor	w19,w19,w24			// Maj(a,b,c)
    938  1.1  christos 	eor	w17,w8,w23,ror#22	// Sigma0(a)
    939  1.1  christos 	eor	w6,w6,w15,lsr#10	// sigma1(X[i+14])
    940  1.1  christos 	add	w1,w1,w10
    941  1.1  christos 	add	w26,w26,w22			// d+=h
    942  1.1  christos 	add	w22,w22,w19			// h+=Maj(a,b,c)
    943  1.1  christos 	ldr	w19,[x30],#4		// *K++, w28 in next round
    944  1.1  christos 	add	w1,w1,w7
    945  1.1  christos 	add	w22,w22,w17			// h+=Sigma0(a)
    946  1.1  christos 	add	w1,w1,w6
    947  1.1  christos 	ldr	w6,[sp,#12]
    948  1.1  christos 	str	w9,[sp,#8]
    949  1.1  christos 	ror	w16,w26,#6
    950  1.1  christos 	add	w21,w21,w19			// h+=K[i]
    951  1.1  christos 	ror	w8,w3,#7
    952  1.1  christos 	and	w17,w27,w26
    953  1.1  christos 	ror	w7,w0,#17
    954  1.1  christos 	bic	w19,w20,w26
    955  1.1  christos 	ror	w9,w22,#2
    956  1.1  christos 	add	w21,w21,w1			// h+=X[i]
    957  1.1  christos 	eor	w16,w16,w26,ror#11
    958  1.1  christos 	eor	w8,w8,w3,ror#18
    959  1.1  christos 	orr	w17,w17,w19			// Ch(e,f,g)
    960  1.1  christos 	eor	w19,w22,w23			// a^b, b^c in next round
    961  1.1  christos 	eor	w16,w16,w26,ror#25	// Sigma1(e)
    962  1.1  christos 	eor	w9,w9,w22,ror#13
    963  1.1  christos 	add	w21,w21,w17			// h+=Ch(e,f,g)
    964  1.1  christos 	and	w28,w28,w19			// (b^c)&=(a^b)
    965  1.1  christos 	eor	w7,w7,w0,ror#19
    966  1.1  christos 	eor	w8,w8,w3,lsr#3	// sigma0(X[i+1])
    967  1.1  christos 	add	w21,w21,w16			// h+=Sigma1(e)
    968  1.1  christos 	eor	w28,w28,w23			// Maj(a,b,c)
    969  1.1  christos 	eor	w17,w9,w22,ror#22	// Sigma0(a)
    970  1.1  christos 	eor	w7,w7,w0,lsr#10	// sigma1(X[i+14])
    971  1.1  christos 	add	w2,w2,w11
    972  1.1  christos 	add	w25,w25,w21			// d+=h
    973  1.1  christos 	add	w21,w21,w28			// h+=Maj(a,b,c)
    974  1.1  christos 	ldr	w28,[x30],#4		// *K++, w19 in next round
    975  1.1  christos 	add	w2,w2,w8
    976  1.1  christos 	add	w21,w21,w17			// h+=Sigma0(a)
    977  1.1  christos 	add	w2,w2,w7
    978  1.1  christos 	ldr	w7,[sp,#0]
    979  1.1  christos 	str	w10,[sp,#12]
    980  1.1  christos 	ror	w16,w25,#6
    981  1.1  christos 	add	w20,w20,w28			// h+=K[i]
    982  1.1  christos 	ror	w9,w4,#7
    983  1.1  christos 	and	w17,w26,w25
    984  1.1  christos 	ror	w8,w1,#17
    985  1.1  christos 	bic	w28,w27,w25
    986  1.1  christos 	ror	w10,w21,#2
    987  1.1  christos 	add	w20,w20,w2			// h+=X[i]
    988  1.1  christos 	eor	w16,w16,w25,ror#11
    989  1.1  christos 	eor	w9,w9,w4,ror#18
    990  1.1  christos 	orr	w17,w17,w28			// Ch(e,f,g)
    991  1.1  christos 	eor	w28,w21,w22			// a^b, b^c in next round
    992  1.1  christos 	eor	w16,w16,w25,ror#25	// Sigma1(e)
    993  1.1  christos 	eor	w10,w10,w21,ror#13
    994  1.1  christos 	add	w20,w20,w17			// h+=Ch(e,f,g)
    995  1.1  christos 	and	w19,w19,w28			// (b^c)&=(a^b)
    996  1.1  christos 	eor	w8,w8,w1,ror#19
    997  1.1  christos 	eor	w9,w9,w4,lsr#3	// sigma0(X[i+1])
    998  1.1  christos 	add	w20,w20,w16			// h+=Sigma1(e)
    999  1.1  christos 	eor	w19,w19,w22			// Maj(a,b,c)
   1000  1.1  christos 	eor	w17,w10,w21,ror#22	// Sigma0(a)
   1001  1.1  christos 	eor	w8,w8,w1,lsr#10	// sigma1(X[i+14])
   1002  1.1  christos 	add	w3,w3,w12
   1003  1.1  christos 	add	w24,w24,w20			// d+=h
   1004  1.1  christos 	add	w20,w20,w19			// h+=Maj(a,b,c)
   1005  1.1  christos 	ldr	w19,[x30],#4		// *K++, w28 in next round
   1006  1.1  christos 	add	w3,w3,w9
   1007  1.1  christos 	add	w20,w20,w17			// h+=Sigma0(a)
   1008  1.1  christos 	add	w3,w3,w8
   1009  1.1  christos 	cbnz	w19,.Loop_16_xx
   1010  1.1  christos 
   1011  1.1  christos 	ldp	x0,x2,[x29,#96]
   1012  1.1  christos 	ldr	x1,[x29,#112]
   1013  1.1  christos 	sub	x30,x30,#260		// rewind
   1014  1.1  christos 
   1015  1.1  christos 	ldp	w3,w4,[x0]
   1016  1.1  christos 	ldp	w5,w6,[x0,#2*4]
   1017  1.1  christos 	add	x1,x1,#14*4			// advance input pointer
   1018  1.1  christos 	ldp	w7,w8,[x0,#4*4]
   1019  1.1  christos 	add	w20,w20,w3
   1020  1.1  christos 	ldp	w9,w10,[x0,#6*4]
   1021  1.1  christos 	add	w21,w21,w4
   1022  1.1  christos 	add	w22,w22,w5
   1023  1.1  christos 	add	w23,w23,w6
   1024  1.1  christos 	stp	w20,w21,[x0]
   1025  1.1  christos 	add	w24,w24,w7
   1026  1.1  christos 	add	w25,w25,w8
   1027  1.1  christos 	stp	w22,w23,[x0,#2*4]
   1028  1.1  christos 	add	w26,w26,w9
   1029  1.1  christos 	add	w27,w27,w10
   1030  1.1  christos 	cmp	x1,x2
   1031  1.1  christos 	stp	w24,w25,[x0,#4*4]
   1032  1.1  christos 	stp	w26,w27,[x0,#6*4]
   1033  1.1  christos 	b.ne	.Loop
   1034  1.1  christos 
   1035  1.1  christos 	ldp	x19,x20,[x29,#16]
   1036  1.1  christos 	add	sp,sp,#4*4
   1037  1.1  christos 	ldp	x21,x22,[x29,#32]
   1038  1.1  christos 	ldp	x23,x24,[x29,#48]
   1039  1.1  christos 	ldp	x25,x26,[x29,#64]
   1040  1.1  christos 	ldp	x27,x28,[x29,#80]
   1041  1.1  christos 	ldp	x29,x30,[sp],#128
   1042  1.1  christos .inst	0xd50323bf				// autiasp
   1043  1.1  christos 	ret
   1044  1.1  christos .size	sha256_block_data_order,.-sha256_block_data_order
   1045  1.1  christos 
   1046  1.1  christos .align	6
   1047  1.1  christos .type	.LK256,%object
   1048  1.1  christos .LK256:
   1049  1.1  christos .long	0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
   1050  1.1  christos .long	0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
   1051  1.1  christos .long	0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
   1052  1.1  christos .long	0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
   1053  1.1  christos .long	0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
   1054  1.1  christos .long	0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
   1055  1.1  christos .long	0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
   1056  1.1  christos .long	0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
   1057  1.1  christos .long	0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
   1058  1.1  christos .long	0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
   1059  1.1  christos .long	0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
   1060  1.1  christos .long	0xd192e819,0xd6990624,0xf40e3585,0x106aa070
   1061  1.1  christos .long	0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
   1062  1.1  christos .long	0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
   1063  1.1  christos .long	0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
   1064  1.1  christos .long	0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
   1065  1.1  christos .long	0	//terminator
   1066  1.1  christos .size	.LK256,.-.LK256
   1067  1.1  christos #ifndef	__KERNEL__
   1068  1.1  christos .align	3
   1069  1.1  christos .LOPENSSL_armcap_P:
   1070  1.1  christos # ifdef	__ILP32__
   1071  1.1  christos .long	OPENSSL_armcap_P-.
   1072  1.1  christos # else
   1073  1.1  christos .quad	OPENSSL_armcap_P-.
   1074  1.1  christos # endif
   1075  1.1  christos #endif
   1076  1.1  christos .byte	83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
   1077  1.1  christos .align	2
   1078  1.1  christos .align	2
   1079  1.1  christos #ifndef	__KERNEL__
   1080  1.1  christos .type	sha256_block_armv8,%function
   1081  1.1  christos .align	6
   1082  1.1  christos sha256_block_armv8:
   1083  1.1  christos .Lv8_entry:
   1084  1.1  christos 	stp	x29,x30,[sp,#-16]!
   1085  1.1  christos 	add	x29,sp,#0
   1086  1.1  christos 
   1087  1.1  christos 	ld1	{v0.4s,v1.4s},[x0]
   1088  1.1  christos 	adr	x3,.LK256
   1089  1.1  christos 
   1090  1.1  christos .Loop_hw:
   1091  1.1  christos 	ld1	{v4.16b,v5.16b,v6.16b,v7.16b},[x1],#64
   1092  1.1  christos 	sub	x2,x2,#1
   1093  1.1  christos 	ld1	{v16.4s},[x3],#16
   1094  1.1  christos 	rev32	v4.16b,v4.16b
   1095  1.1  christos 	rev32	v5.16b,v5.16b
   1096  1.1  christos 	rev32	v6.16b,v6.16b
   1097  1.1  christos 	rev32	v7.16b,v7.16b
   1098  1.1  christos 	orr	v18.16b,v0.16b,v0.16b		// offload
   1099  1.1  christos 	orr	v19.16b,v1.16b,v1.16b
   1100  1.1  christos 	ld1	{v17.4s},[x3],#16
   1101  1.1  christos 	add	v16.4s,v16.4s,v4.4s
   1102  1.1  christos .inst	0x5e2828a4	//sha256su0 v4.16b,v5.16b
   1103  1.1  christos 	orr	v2.16b,v0.16b,v0.16b
   1104  1.1  christos .inst	0x5e104020	//sha256h v0.16b,v1.16b,v16.4s
   1105  1.1  christos .inst	0x5e105041	//sha256h2 v1.16b,v2.16b,v16.4s
   1106  1.1  christos .inst	0x5e0760c4	//sha256su1 v4.16b,v6.16b,v7.16b
   1107  1.1  christos 	ld1	{v16.4s},[x3],#16
   1108  1.1  christos 	add	v17.4s,v17.4s,v5.4s
   1109  1.1  christos .inst	0x5e2828c5	//sha256su0 v5.16b,v6.16b
   1110  1.1  christos 	orr	v2.16b,v0.16b,v0.16b
   1111  1.1  christos .inst	0x5e114020	//sha256h v0.16b,v1.16b,v17.4s
   1112  1.1  christos .inst	0x5e115041	//sha256h2 v1.16b,v2.16b,v17.4s
   1113  1.1  christos .inst	0x5e0460e5	//sha256su1 v5.16b,v7.16b,v4.16b
   1114  1.1  christos 	ld1	{v17.4s},[x3],#16
   1115  1.1  christos 	add	v16.4s,v16.4s,v6.4s
   1116  1.1  christos .inst	0x5e2828e6	//sha256su0 v6.16b,v7.16b
   1117  1.1  christos 	orr	v2.16b,v0.16b,v0.16b
   1118  1.1  christos .inst	0x5e104020	//sha256h v0.16b,v1.16b,v16.4s
   1119  1.1  christos .inst	0x5e105041	//sha256h2 v1.16b,v2.16b,v16.4s
   1120  1.1  christos .inst	0x5e056086	//sha256su1 v6.16b,v4.16b,v5.16b
   1121  1.1  christos 	ld1	{v16.4s},[x3],#16
   1122  1.1  christos 	add	v17.4s,v17.4s,v7.4s
   1123  1.1  christos .inst	0x5e282887	//sha256su0 v7.16b,v4.16b
   1124  1.1  christos 	orr	v2.16b,v0.16b,v0.16b
   1125  1.1  christos .inst	0x5e114020	//sha256h v0.16b,v1.16b,v17.4s
   1126  1.1  christos .inst	0x5e115041	//sha256h2 v1.16b,v2.16b,v17.4s
   1127  1.1  christos .inst	0x5e0660a7	//sha256su1 v7.16b,v5.16b,v6.16b
   1128  1.1  christos 	ld1	{v17.4s},[x3],#16
   1129  1.1  christos 	add	v16.4s,v16.4s,v4.4s
   1130  1.1  christos .inst	0x5e2828a4	//sha256su0 v4.16b,v5.16b
   1131  1.1  christos 	orr	v2.16b,v0.16b,v0.16b
   1132  1.1  christos .inst	0x5e104020	//sha256h v0.16b,v1.16b,v16.4s
   1133  1.1  christos .inst	0x5e105041	//sha256h2 v1.16b,v2.16b,v16.4s
   1134  1.1  christos .inst	0x5e0760c4	//sha256su1 v4.16b,v6.16b,v7.16b
   1135  1.1  christos 	ld1	{v16.4s},[x3],#16
   1136  1.1  christos 	add	v17.4s,v17.4s,v5.4s
   1137  1.1  christos .inst	0x5e2828c5	//sha256su0 v5.16b,v6.16b
   1138  1.1  christos 	orr	v2.16b,v0.16b,v0.16b
   1139  1.1  christos .inst	0x5e114020	//sha256h v0.16b,v1.16b,v17.4s
   1140  1.1  christos .inst	0x5e115041	//sha256h2 v1.16b,v2.16b,v17.4s
   1141  1.1  christos .inst	0x5e0460e5	//sha256su1 v5.16b,v7.16b,v4.16b
   1142  1.1  christos 	ld1	{v17.4s},[x3],#16
   1143  1.1  christos 	add	v16.4s,v16.4s,v6.4s
   1144  1.1  christos .inst	0x5e2828e6	//sha256su0 v6.16b,v7.16b
   1145  1.1  christos 	orr	v2.16b,v0.16b,v0.16b
   1146  1.1  christos .inst	0x5e104020	//sha256h v0.16b,v1.16b,v16.4s
   1147  1.1  christos .inst	0x5e105041	//sha256h2 v1.16b,v2.16b,v16.4s
   1148  1.1  christos .inst	0x5e056086	//sha256su1 v6.16b,v4.16b,v5.16b
   1149  1.1  christos 	ld1	{v16.4s},[x3],#16
   1150  1.1  christos 	add	v17.4s,v17.4s,v7.4s
   1151  1.1  christos .inst	0x5e282887	//sha256su0 v7.16b,v4.16b
   1152  1.1  christos 	orr	v2.16b,v0.16b,v0.16b
   1153  1.1  christos .inst	0x5e114020	//sha256h v0.16b,v1.16b,v17.4s
   1154  1.1  christos .inst	0x5e115041	//sha256h2 v1.16b,v2.16b,v17.4s
   1155  1.1  christos .inst	0x5e0660a7	//sha256su1 v7.16b,v5.16b,v6.16b
   1156  1.1  christos 	ld1	{v17.4s},[x3],#16
   1157  1.1  christos 	add	v16.4s,v16.4s,v4.4s
   1158  1.1  christos .inst	0x5e2828a4	//sha256su0 v4.16b,v5.16b
   1159  1.1  christos 	orr	v2.16b,v0.16b,v0.16b
   1160  1.1  christos .inst	0x5e104020	//sha256h v0.16b,v1.16b,v16.4s
   1161  1.1  christos .inst	0x5e105041	//sha256h2 v1.16b,v2.16b,v16.4s
   1162  1.1  christos .inst	0x5e0760c4	//sha256su1 v4.16b,v6.16b,v7.16b
   1163  1.1  christos 	ld1	{v16.4s},[x3],#16
   1164  1.1  christos 	add	v17.4s,v17.4s,v5.4s
   1165  1.1  christos .inst	0x5e2828c5	//sha256su0 v5.16b,v6.16b
   1166  1.1  christos 	orr	v2.16b,v0.16b,v0.16b
   1167  1.1  christos .inst	0x5e114020	//sha256h v0.16b,v1.16b,v17.4s
   1168  1.1  christos .inst	0x5e115041	//sha256h2 v1.16b,v2.16b,v17.4s
   1169  1.1  christos .inst	0x5e0460e5	//sha256su1 v5.16b,v7.16b,v4.16b
   1170  1.1  christos 	ld1	{v17.4s},[x3],#16
   1171  1.1  christos 	add	v16.4s,v16.4s,v6.4s
   1172  1.1  christos .inst	0x5e2828e6	//sha256su0 v6.16b,v7.16b
   1173  1.1  christos 	orr	v2.16b,v0.16b,v0.16b
   1174  1.1  christos .inst	0x5e104020	//sha256h v0.16b,v1.16b,v16.4s
   1175  1.1  christos .inst	0x5e105041	//sha256h2 v1.16b,v2.16b,v16.4s
   1176  1.1  christos .inst	0x5e056086	//sha256su1 v6.16b,v4.16b,v5.16b
   1177  1.1  christos 	ld1	{v16.4s},[x3],#16
   1178  1.1  christos 	add	v17.4s,v17.4s,v7.4s
   1179  1.1  christos .inst	0x5e282887	//sha256su0 v7.16b,v4.16b
   1180  1.1  christos 	orr	v2.16b,v0.16b,v0.16b
   1181  1.1  christos .inst	0x5e114020	//sha256h v0.16b,v1.16b,v17.4s
   1182  1.1  christos .inst	0x5e115041	//sha256h2 v1.16b,v2.16b,v17.4s
   1183  1.1  christos .inst	0x5e0660a7	//sha256su1 v7.16b,v5.16b,v6.16b
   1184  1.1  christos 	ld1	{v17.4s},[x3],#16
   1185  1.1  christos 	add	v16.4s,v16.4s,v4.4s
   1186  1.1  christos 	orr	v2.16b,v0.16b,v0.16b
   1187  1.1  christos .inst	0x5e104020	//sha256h v0.16b,v1.16b,v16.4s
   1188  1.1  christos .inst	0x5e105041	//sha256h2 v1.16b,v2.16b,v16.4s
   1189  1.1  christos 
   1190  1.1  christos 	ld1	{v16.4s},[x3],#16
   1191  1.1  christos 	add	v17.4s,v17.4s,v5.4s
   1192  1.1  christos 	orr	v2.16b,v0.16b,v0.16b
   1193  1.1  christos .inst	0x5e114020	//sha256h v0.16b,v1.16b,v17.4s
   1194  1.1  christos .inst	0x5e115041	//sha256h2 v1.16b,v2.16b,v17.4s
   1195  1.1  christos 
   1196  1.1  christos 	ld1	{v17.4s},[x3]
   1197  1.1  christos 	add	v16.4s,v16.4s,v6.4s
   1198  1.1  christos 	sub	x3,x3,#64*4-16	// rewind
   1199  1.1  christos 	orr	v2.16b,v0.16b,v0.16b
   1200  1.1  christos .inst	0x5e104020	//sha256h v0.16b,v1.16b,v16.4s
   1201  1.1  christos .inst	0x5e105041	//sha256h2 v1.16b,v2.16b,v16.4s
   1202  1.1  christos 
   1203  1.1  christos 	add	v17.4s,v17.4s,v7.4s
   1204  1.1  christos 	orr	v2.16b,v0.16b,v0.16b
   1205  1.1  christos .inst	0x5e114020	//sha256h v0.16b,v1.16b,v17.4s
   1206  1.1  christos .inst	0x5e115041	//sha256h2 v1.16b,v2.16b,v17.4s
   1207  1.1  christos 
   1208  1.1  christos 	add	v0.4s,v0.4s,v18.4s
   1209  1.1  christos 	add	v1.4s,v1.4s,v19.4s
   1210  1.1  christos 
   1211  1.1  christos 	cbnz	x2,.Loop_hw
   1212  1.1  christos 
   1213  1.1  christos 	st1	{v0.4s,v1.4s},[x0]
   1214  1.1  christos 
   1215  1.1  christos 	ldr	x29,[sp],#16
   1216  1.1  christos 	ret
   1217  1.1  christos .size	sha256_block_armv8,.-sha256_block_armv8
   1218  1.1  christos #endif
   1219  1.1  christos #ifdef	__KERNEL__
   1220  1.1  christos .globl	sha256_block_neon
   1221  1.1  christos #endif
   1222  1.1  christos .type	sha256_block_neon,%function
   1223  1.1  christos .align	4
   1224  1.1  christos sha256_block_neon:
   1225  1.1  christos .Lneon_entry:
   1226  1.1  christos 	stp	x29, x30, [sp, #-16]!
   1227  1.1  christos 	mov	x29, sp
   1228  1.1  christos 	sub	sp,sp,#16*4
   1229  1.1  christos 
   1230  1.1  christos 	adr	x16,.LK256
   1231  1.1  christos 	add	x2,x1,x2,lsl#6	// len to point at the end of inp
   1232  1.1  christos 
   1233  1.1  christos 	ld1	{v0.16b},[x1], #16
   1234  1.1  christos 	ld1	{v1.16b},[x1], #16
   1235  1.1  christos 	ld1	{v2.16b},[x1], #16
   1236  1.1  christos 	ld1	{v3.16b},[x1], #16
   1237  1.1  christos 	ld1	{v4.4s},[x16], #16
   1238  1.1  christos 	ld1	{v5.4s},[x16], #16
   1239  1.1  christos 	ld1	{v6.4s},[x16], #16
   1240  1.1  christos 	ld1	{v7.4s},[x16], #16
   1241  1.1  christos 	rev32	v0.16b,v0.16b		// yes, even on
   1242  1.1  christos 	rev32	v1.16b,v1.16b		// big-endian
   1243  1.1  christos 	rev32	v2.16b,v2.16b
   1244  1.1  christos 	rev32	v3.16b,v3.16b
   1245  1.1  christos 	mov	x17,sp
   1246  1.1  christos 	add	v4.4s,v4.4s,v0.4s
   1247  1.1  christos 	add	v5.4s,v5.4s,v1.4s
   1248  1.1  christos 	add	v6.4s,v6.4s,v2.4s
   1249  1.1  christos 	st1	{v4.4s,v5.4s},[x17], #32
   1250  1.1  christos 	add	v7.4s,v7.4s,v3.4s
   1251  1.1  christos 	st1	{v6.4s,v7.4s},[x17]
   1252  1.1  christos 	sub	x17,x17,#32
   1253  1.1  christos 
   1254  1.1  christos 	ldp	w3,w4,[x0]
   1255  1.1  christos 	ldp	w5,w6,[x0,#8]
   1256  1.1  christos 	ldp	w7,w8,[x0,#16]
   1257  1.1  christos 	ldp	w9,w10,[x0,#24]
   1258  1.1  christos 	ldr	w12,[sp,#0]
   1259  1.1  christos 	mov	w13,wzr
   1260  1.1  christos 	eor	w14,w4,w5
   1261  1.1  christos 	mov	w15,wzr
   1262  1.1  christos 	b	.L_00_48
   1263  1.1  christos 
   1264  1.1  christos .align	4
   1265  1.1  christos .L_00_48:
   1266  1.1  christos 	ext	v4.16b,v0.16b,v1.16b,#4
   1267  1.1  christos 	add	w10,w10,w12
   1268  1.1  christos 	add	w3,w3,w15
   1269  1.1  christos 	and	w12,w8,w7
   1270  1.1  christos 	bic	w15,w9,w7
   1271  1.1  christos 	ext	v7.16b,v2.16b,v3.16b,#4
   1272  1.1  christos 	eor	w11,w7,w7,ror#5
   1273  1.1  christos 	add	w3,w3,w13
   1274  1.1  christos 	mov	d19,v3.d[1]
   1275  1.1  christos 	orr	w12,w12,w15
   1276  1.1  christos 	eor	w11,w11,w7,ror#19
   1277  1.1  christos 	ushr	v6.4s,v4.4s,#7
   1278  1.1  christos 	eor	w15,w3,w3,ror#11
   1279  1.1  christos 	ushr	v5.4s,v4.4s,#3
   1280  1.1  christos 	add	w10,w10,w12
   1281  1.1  christos 	add	v0.4s,v0.4s,v7.4s
   1282  1.1  christos 	ror	w11,w11,#6
   1283  1.1  christos 	sli	v6.4s,v4.4s,#25
   1284  1.1  christos 	eor	w13,w3,w4
   1285  1.1  christos 	eor	w15,w15,w3,ror#20
   1286  1.1  christos 	ushr	v7.4s,v4.4s,#18
   1287  1.1  christos 	add	w10,w10,w11
   1288  1.1  christos 	ldr	w12,[sp,#4]
   1289  1.1  christos 	and	w14,w14,w13
   1290  1.1  christos 	eor	v5.16b,v5.16b,v6.16b
   1291  1.1  christos 	ror	w15,w15,#2
   1292  1.1  christos 	add	w6,w6,w10
   1293  1.1  christos 	sli	v7.4s,v4.4s,#14
   1294  1.1  christos 	eor	w14,w14,w4
   1295  1.1  christos 	ushr	v16.4s,v19.4s,#17
   1296  1.1  christos 	add	w9,w9,w12
   1297  1.1  christos 	add	w10,w10,w15
   1298  1.1  christos 	and	w12,w7,w6
   1299  1.1  christos 	eor	v5.16b,v5.16b,v7.16b
   1300  1.1  christos 	bic	w15,w8,w6
   1301  1.1  christos 	eor	w11,w6,w6,ror#5
   1302  1.1  christos 	sli	v16.4s,v19.4s,#15
   1303  1.1  christos 	add	w10,w10,w14
   1304  1.1  christos 	orr	w12,w12,w15
   1305  1.1  christos 	ushr	v17.4s,v19.4s,#10
   1306  1.1  christos 	eor	w11,w11,w6,ror#19
   1307  1.1  christos 	eor	w15,w10,w10,ror#11
   1308  1.1  christos 	ushr	v7.4s,v19.4s,#19
   1309  1.1  christos 	add	w9,w9,w12
   1310  1.1  christos 	ror	w11,w11,#6
   1311  1.1  christos 	add	v0.4s,v0.4s,v5.4s
   1312  1.1  christos 	eor	w14,w10,w3
   1313  1.1  christos 	eor	w15,w15,w10,ror#20
   1314  1.1  christos 	sli	v7.4s,v19.4s,#13
   1315  1.1  christos 	add	w9,w9,w11
   1316  1.1  christos 	ldr	w12,[sp,#8]
   1317  1.1  christos 	and	w13,w13,w14
   1318  1.1  christos 	eor	v17.16b,v17.16b,v16.16b
   1319  1.1  christos 	ror	w15,w15,#2
   1320  1.1  christos 	add	w5,w5,w9
   1321  1.1  christos 	eor	w13,w13,w3
   1322  1.1  christos 	eor	v17.16b,v17.16b,v7.16b
   1323  1.1  christos 	add	w8,w8,w12
   1324  1.1  christos 	add	w9,w9,w15
   1325  1.1  christos 	and	w12,w6,w5
   1326  1.1  christos 	add	v0.4s,v0.4s,v17.4s
   1327  1.1  christos 	bic	w15,w7,w5
   1328  1.1  christos 	eor	w11,w5,w5,ror#5
   1329  1.1  christos 	add	w9,w9,w13
   1330  1.1  christos 	ushr	v18.4s,v0.4s,#17
   1331  1.1  christos 	orr	w12,w12,w15
   1332  1.1  christos 	ushr	v19.4s,v0.4s,#10
   1333  1.1  christos 	eor	w11,w11,w5,ror#19
   1334  1.1  christos 	eor	w15,w9,w9,ror#11
   1335  1.1  christos 	sli	v18.4s,v0.4s,#15
   1336  1.1  christos 	add	w8,w8,w12
   1337  1.1  christos 	ushr	v17.4s,v0.4s,#19
   1338  1.1  christos 	ror	w11,w11,#6
   1339  1.1  christos 	eor	w13,w9,w10
   1340  1.1  christos 	eor	v19.16b,v19.16b,v18.16b
   1341  1.1  christos 	eor	w15,w15,w9,ror#20
   1342  1.1  christos 	add	w8,w8,w11
   1343  1.1  christos 	sli	v17.4s,v0.4s,#13
   1344  1.1  christos 	ldr	w12,[sp,#12]
   1345  1.1  christos 	and	w14,w14,w13
   1346  1.1  christos 	ror	w15,w15,#2
   1347  1.1  christos 	ld1	{v4.4s},[x16], #16
   1348  1.1  christos 	add	w4,w4,w8
   1349  1.1  christos 	eor	v19.16b,v19.16b,v17.16b
   1350  1.1  christos 	eor	w14,w14,w10
   1351  1.1  christos 	eor	v17.16b,v17.16b,v17.16b
   1352  1.1  christos 	add	w7,w7,w12
   1353  1.1  christos 	add	w8,w8,w15
   1354  1.1  christos 	and	w12,w5,w4
   1355  1.1  christos 	mov	v17.d[1],v19.d[0]
   1356  1.1  christos 	bic	w15,w6,w4
   1357  1.1  christos 	eor	w11,w4,w4,ror#5
   1358  1.1  christos 	add	w8,w8,w14
   1359  1.1  christos 	add	v0.4s,v0.4s,v17.4s
   1360  1.1  christos 	orr	w12,w12,w15
   1361  1.1  christos 	eor	w11,w11,w4,ror#19
   1362  1.1  christos 	eor	w15,w8,w8,ror#11
   1363  1.1  christos 	add	v4.4s,v4.4s,v0.4s
   1364  1.1  christos 	add	w7,w7,w12
   1365  1.1  christos 	ror	w11,w11,#6
   1366  1.1  christos 	eor	w14,w8,w9
   1367  1.1  christos 	eor	w15,w15,w8,ror#20
   1368  1.1  christos 	add	w7,w7,w11
   1369  1.1  christos 	ldr	w12,[sp,#16]
   1370  1.1  christos 	and	w13,w13,w14
   1371  1.1  christos 	ror	w15,w15,#2
   1372  1.1  christos 	add	w3,w3,w7
   1373  1.1  christos 	eor	w13,w13,w9
   1374  1.1  christos 	st1	{v4.4s},[x17], #16
   1375  1.1  christos 	ext	v4.16b,v1.16b,v2.16b,#4
   1376  1.1  christos 	add	w6,w6,w12
   1377  1.1  christos 	add	w7,w7,w15
   1378  1.1  christos 	and	w12,w4,w3
   1379  1.1  christos 	bic	w15,w5,w3
   1380  1.1  christos 	ext	v7.16b,v3.16b,v0.16b,#4
   1381  1.1  christos 	eor	w11,w3,w3,ror#5
   1382  1.1  christos 	add	w7,w7,w13
   1383  1.1  christos 	mov	d19,v0.d[1]
   1384  1.1  christos 	orr	w12,w12,w15
   1385  1.1  christos 	eor	w11,w11,w3,ror#19
   1386  1.1  christos 	ushr	v6.4s,v4.4s,#7
   1387  1.1  christos 	eor	w15,w7,w7,ror#11
   1388  1.1  christos 	ushr	v5.4s,v4.4s,#3
   1389  1.1  christos 	add	w6,w6,w12
   1390  1.1  christos 	add	v1.4s,v1.4s,v7.4s
   1391  1.1  christos 	ror	w11,w11,#6
   1392  1.1  christos 	sli	v6.4s,v4.4s,#25
   1393  1.1  christos 	eor	w13,w7,w8
   1394  1.1  christos 	eor	w15,w15,w7,ror#20
   1395  1.1  christos 	ushr	v7.4s,v4.4s,#18
   1396  1.1  christos 	add	w6,w6,w11
   1397  1.1  christos 	ldr	w12,[sp,#20]
   1398  1.1  christos 	and	w14,w14,w13
   1399  1.1  christos 	eor	v5.16b,v5.16b,v6.16b
   1400  1.1  christos 	ror	w15,w15,#2
   1401  1.1  christos 	add	w10,w10,w6
   1402  1.1  christos 	sli	v7.4s,v4.4s,#14
   1403  1.1  christos 	eor	w14,w14,w8
   1404  1.1  christos 	ushr	v16.4s,v19.4s,#17
   1405  1.1  christos 	add	w5,w5,w12
   1406  1.1  christos 	add	w6,w6,w15
   1407  1.1  christos 	and	w12,w3,w10
   1408  1.1  christos 	eor	v5.16b,v5.16b,v7.16b
   1409  1.1  christos 	bic	w15,w4,w10
   1410  1.1  christos 	eor	w11,w10,w10,ror#5
   1411  1.1  christos 	sli	v16.4s,v19.4s,#15
   1412  1.1  christos 	add	w6,w6,w14
   1413  1.1  christos 	orr	w12,w12,w15
   1414  1.1  christos 	ushr	v17.4s,v19.4s,#10
   1415  1.1  christos 	eor	w11,w11,w10,ror#19
   1416  1.1  christos 	eor	w15,w6,w6,ror#11
   1417  1.1  christos 	ushr	v7.4s,v19.4s,#19
   1418  1.1  christos 	add	w5,w5,w12
   1419  1.1  christos 	ror	w11,w11,#6
   1420  1.1  christos 	add	v1.4s,v1.4s,v5.4s
   1421  1.1  christos 	eor	w14,w6,w7
   1422  1.1  christos 	eor	w15,w15,w6,ror#20
   1423  1.1  christos 	sli	v7.4s,v19.4s,#13
   1424  1.1  christos 	add	w5,w5,w11
   1425  1.1  christos 	ldr	w12,[sp,#24]
   1426  1.1  christos 	and	w13,w13,w14
   1427  1.1  christos 	eor	v17.16b,v17.16b,v16.16b
   1428  1.1  christos 	ror	w15,w15,#2
   1429  1.1  christos 	add	w9,w9,w5
   1430  1.1  christos 	eor	w13,w13,w7
   1431  1.1  christos 	eor	v17.16b,v17.16b,v7.16b
   1432  1.1  christos 	add	w4,w4,w12
   1433  1.1  christos 	add	w5,w5,w15
   1434  1.1  christos 	and	w12,w10,w9
   1435  1.1  christos 	add	v1.4s,v1.4s,v17.4s
   1436  1.1  christos 	bic	w15,w3,w9
   1437  1.1  christos 	eor	w11,w9,w9,ror#5
   1438  1.1  christos 	add	w5,w5,w13
   1439  1.1  christos 	ushr	v18.4s,v1.4s,#17
   1440  1.1  christos 	orr	w12,w12,w15
   1441  1.1  christos 	ushr	v19.4s,v1.4s,#10
   1442  1.1  christos 	eor	w11,w11,w9,ror#19
   1443  1.1  christos 	eor	w15,w5,w5,ror#11
   1444  1.1  christos 	sli	v18.4s,v1.4s,#15
   1445  1.1  christos 	add	w4,w4,w12
   1446  1.1  christos 	ushr	v17.4s,v1.4s,#19
   1447  1.1  christos 	ror	w11,w11,#6
   1448  1.1  christos 	eor	w13,w5,w6
   1449  1.1  christos 	eor	v19.16b,v19.16b,v18.16b
   1450  1.1  christos 	eor	w15,w15,w5,ror#20
   1451  1.1  christos 	add	w4,w4,w11
   1452  1.1  christos 	sli	v17.4s,v1.4s,#13
   1453  1.1  christos 	ldr	w12,[sp,#28]
   1454  1.1  christos 	and	w14,w14,w13
   1455  1.1  christos 	ror	w15,w15,#2
   1456  1.1  christos 	ld1	{v4.4s},[x16], #16
   1457  1.1  christos 	add	w8,w8,w4
   1458  1.1  christos 	eor	v19.16b,v19.16b,v17.16b
   1459  1.1  christos 	eor	w14,w14,w6
   1460  1.1  christos 	eor	v17.16b,v17.16b,v17.16b
   1461  1.1  christos 	add	w3,w3,w12
   1462  1.1  christos 	add	w4,w4,w15
   1463  1.1  christos 	and	w12,w9,w8
   1464  1.1  christos 	mov	v17.d[1],v19.d[0]
   1465  1.1  christos 	bic	w15,w10,w8
   1466  1.1  christos 	eor	w11,w8,w8,ror#5
   1467  1.1  christos 	add	w4,w4,w14
   1468  1.1  christos 	add	v1.4s,v1.4s,v17.4s
   1469  1.1  christos 	orr	w12,w12,w15
   1470  1.1  christos 	eor	w11,w11,w8,ror#19
   1471  1.1  christos 	eor	w15,w4,w4,ror#11
   1472  1.1  christos 	add	v4.4s,v4.4s,v1.4s
   1473  1.1  christos 	add	w3,w3,w12
   1474  1.1  christos 	ror	w11,w11,#6
   1475  1.1  christos 	eor	w14,w4,w5
   1476  1.1  christos 	eor	w15,w15,w4,ror#20
   1477  1.1  christos 	add	w3,w3,w11
   1478  1.1  christos 	ldr	w12,[sp,#32]
   1479  1.1  christos 	and	w13,w13,w14
   1480  1.1  christos 	ror	w15,w15,#2
   1481  1.1  christos 	add	w7,w7,w3
   1482  1.1  christos 	eor	w13,w13,w5
   1483  1.1  christos 	st1	{v4.4s},[x17], #16
   1484  1.1  christos 	ext	v4.16b,v2.16b,v3.16b,#4
   1485  1.1  christos 	add	w10,w10,w12
   1486  1.1  christos 	add	w3,w3,w15
   1487  1.1  christos 	and	w12,w8,w7
   1488  1.1  christos 	bic	w15,w9,w7
   1489  1.1  christos 	ext	v7.16b,v0.16b,v1.16b,#4
   1490  1.1  christos 	eor	w11,w7,w7,ror#5
   1491  1.1  christos 	add	w3,w3,w13
   1492  1.1  christos 	mov	d19,v1.d[1]
   1493  1.1  christos 	orr	w12,w12,w15
   1494  1.1  christos 	eor	w11,w11,w7,ror#19
   1495  1.1  christos 	ushr	v6.4s,v4.4s,#7
   1496  1.1  christos 	eor	w15,w3,w3,ror#11
   1497  1.1  christos 	ushr	v5.4s,v4.4s,#3
   1498  1.1  christos 	add	w10,w10,w12
   1499  1.1  christos 	add	v2.4s,v2.4s,v7.4s
   1500  1.1  christos 	ror	w11,w11,#6
   1501  1.1  christos 	sli	v6.4s,v4.4s,#25
   1502  1.1  christos 	eor	w13,w3,w4
   1503  1.1  christos 	eor	w15,w15,w3,ror#20
   1504  1.1  christos 	ushr	v7.4s,v4.4s,#18
   1505  1.1  christos 	add	w10,w10,w11
   1506  1.1  christos 	ldr	w12,[sp,#36]
   1507  1.1  christos 	and	w14,w14,w13
   1508  1.1  christos 	eor	v5.16b,v5.16b,v6.16b
   1509  1.1  christos 	ror	w15,w15,#2
   1510  1.1  christos 	add	w6,w6,w10
   1511  1.1  christos 	sli	v7.4s,v4.4s,#14
   1512  1.1  christos 	eor	w14,w14,w4
   1513  1.1  christos 	ushr	v16.4s,v19.4s,#17
   1514  1.1  christos 	add	w9,w9,w12
   1515  1.1  christos 	add	w10,w10,w15
   1516  1.1  christos 	and	w12,w7,w6
   1517  1.1  christos 	eor	v5.16b,v5.16b,v7.16b
   1518  1.1  christos 	bic	w15,w8,w6
   1519  1.1  christos 	eor	w11,w6,w6,ror#5
   1520  1.1  christos 	sli	v16.4s,v19.4s,#15
   1521  1.1  christos 	add	w10,w10,w14
   1522  1.1  christos 	orr	w12,w12,w15
   1523  1.1  christos 	ushr	v17.4s,v19.4s,#10
   1524  1.1  christos 	eor	w11,w11,w6,ror#19
   1525  1.1  christos 	eor	w15,w10,w10,ror#11
   1526  1.1  christos 	ushr	v7.4s,v19.4s,#19
   1527  1.1  christos 	add	w9,w9,w12
   1528  1.1  christos 	ror	w11,w11,#6
   1529  1.1  christos 	add	v2.4s,v2.4s,v5.4s
   1530  1.1  christos 	eor	w14,w10,w3
   1531  1.1  christos 	eor	w15,w15,w10,ror#20
   1532  1.1  christos 	sli	v7.4s,v19.4s,#13
   1533  1.1  christos 	add	w9,w9,w11
   1534  1.1  christos 	ldr	w12,[sp,#40]
   1535  1.1  christos 	and	w13,w13,w14
   1536  1.1  christos 	eor	v17.16b,v17.16b,v16.16b
   1537  1.1  christos 	ror	w15,w15,#2
   1538  1.1  christos 	add	w5,w5,w9
   1539  1.1  christos 	eor	w13,w13,w3
   1540  1.1  christos 	eor	v17.16b,v17.16b,v7.16b
   1541  1.1  christos 	add	w8,w8,w12
   1542  1.1  christos 	add	w9,w9,w15
   1543  1.1  christos 	and	w12,w6,w5
   1544  1.1  christos 	add	v2.4s,v2.4s,v17.4s
   1545  1.1  christos 	bic	w15,w7,w5
   1546  1.1  christos 	eor	w11,w5,w5,ror#5
   1547  1.1  christos 	add	w9,w9,w13
   1548  1.1  christos 	ushr	v18.4s,v2.4s,#17
   1549  1.1  christos 	orr	w12,w12,w15
   1550  1.1  christos 	ushr	v19.4s,v2.4s,#10
   1551  1.1  christos 	eor	w11,w11,w5,ror#19
   1552  1.1  christos 	eor	w15,w9,w9,ror#11
   1553  1.1  christos 	sli	v18.4s,v2.4s,#15
   1554  1.1  christos 	add	w8,w8,w12
   1555  1.1  christos 	ushr	v17.4s,v2.4s,#19
   1556  1.1  christos 	ror	w11,w11,#6
   1557  1.1  christos 	eor	w13,w9,w10
   1558  1.1  christos 	eor	v19.16b,v19.16b,v18.16b
   1559  1.1  christos 	eor	w15,w15,w9,ror#20
   1560  1.1  christos 	add	w8,w8,w11
   1561  1.1  christos 	sli	v17.4s,v2.4s,#13
   1562  1.1  christos 	ldr	w12,[sp,#44]
   1563  1.1  christos 	and	w14,w14,w13
   1564  1.1  christos 	ror	w15,w15,#2
   1565  1.1  christos 	ld1	{v4.4s},[x16], #16
   1566  1.1  christos 	add	w4,w4,w8
   1567  1.1  christos 	eor	v19.16b,v19.16b,v17.16b
   1568  1.1  christos 	eor	w14,w14,w10
   1569  1.1  christos 	eor	v17.16b,v17.16b,v17.16b
   1570  1.1  christos 	add	w7,w7,w12
   1571  1.1  christos 	add	w8,w8,w15
   1572  1.1  christos 	and	w12,w5,w4
   1573  1.1  christos 	mov	v17.d[1],v19.d[0]
   1574  1.1  christos 	bic	w15,w6,w4
   1575  1.1  christos 	eor	w11,w4,w4,ror#5
   1576  1.1  christos 	add	w8,w8,w14
   1577  1.1  christos 	add	v2.4s,v2.4s,v17.4s
   1578  1.1  christos 	orr	w12,w12,w15
   1579  1.1  christos 	eor	w11,w11,w4,ror#19
   1580  1.1  christos 	eor	w15,w8,w8,ror#11
   1581  1.1  christos 	add	v4.4s,v4.4s,v2.4s
   1582  1.1  christos 	add	w7,w7,w12
   1583  1.1  christos 	ror	w11,w11,#6
   1584  1.1  christos 	eor	w14,w8,w9
   1585  1.1  christos 	eor	w15,w15,w8,ror#20
   1586  1.1  christos 	add	w7,w7,w11
   1587  1.1  christos 	ldr	w12,[sp,#48]
   1588  1.1  christos 	and	w13,w13,w14
   1589  1.1  christos 	ror	w15,w15,#2
   1590  1.1  christos 	add	w3,w3,w7
   1591  1.1  christos 	eor	w13,w13,w9
   1592  1.1  christos 	st1	{v4.4s},[x17], #16
   1593  1.1  christos 	ext	v4.16b,v3.16b,v0.16b,#4
   1594  1.1  christos 	add	w6,w6,w12
   1595  1.1  christos 	add	w7,w7,w15
   1596  1.1  christos 	and	w12,w4,w3
   1597  1.1  christos 	bic	w15,w5,w3
   1598  1.1  christos 	ext	v7.16b,v1.16b,v2.16b,#4
   1599  1.1  christos 	eor	w11,w3,w3,ror#5
   1600  1.1  christos 	add	w7,w7,w13
   1601  1.1  christos 	mov	d19,v2.d[1]
   1602  1.1  christos 	orr	w12,w12,w15
   1603  1.1  christos 	eor	w11,w11,w3,ror#19
   1604  1.1  christos 	ushr	v6.4s,v4.4s,#7
   1605  1.1  christos 	eor	w15,w7,w7,ror#11
   1606  1.1  christos 	ushr	v5.4s,v4.4s,#3
   1607  1.1  christos 	add	w6,w6,w12
   1608  1.1  christos 	add	v3.4s,v3.4s,v7.4s
   1609  1.1  christos 	ror	w11,w11,#6
   1610  1.1  christos 	sli	v6.4s,v4.4s,#25
   1611  1.1  christos 	eor	w13,w7,w8
   1612  1.1  christos 	eor	w15,w15,w7,ror#20
   1613  1.1  christos 	ushr	v7.4s,v4.4s,#18
   1614  1.1  christos 	add	w6,w6,w11
   1615  1.1  christos 	ldr	w12,[sp,#52]
   1616  1.1  christos 	and	w14,w14,w13
   1617  1.1  christos 	eor	v5.16b,v5.16b,v6.16b
   1618  1.1  christos 	ror	w15,w15,#2
   1619  1.1  christos 	add	w10,w10,w6
   1620  1.1  christos 	sli	v7.4s,v4.4s,#14
   1621  1.1  christos 	eor	w14,w14,w8
   1622  1.1  christos 	ushr	v16.4s,v19.4s,#17
   1623  1.1  christos 	add	w5,w5,w12
   1624  1.1  christos 	add	w6,w6,w15
   1625  1.1  christos 	and	w12,w3,w10
   1626  1.1  christos 	eor	v5.16b,v5.16b,v7.16b
   1627  1.1  christos 	bic	w15,w4,w10
   1628  1.1  christos 	eor	w11,w10,w10,ror#5
   1629  1.1  christos 	sli	v16.4s,v19.4s,#15
   1630  1.1  christos 	add	w6,w6,w14
   1631  1.1  christos 	orr	w12,w12,w15
   1632  1.1  christos 	ushr	v17.4s,v19.4s,#10
   1633  1.1  christos 	eor	w11,w11,w10,ror#19
   1634  1.1  christos 	eor	w15,w6,w6,ror#11
   1635  1.1  christos 	ushr	v7.4s,v19.4s,#19
   1636  1.1  christos 	add	w5,w5,w12
   1637  1.1  christos 	ror	w11,w11,#6
   1638  1.1  christos 	add	v3.4s,v3.4s,v5.4s
   1639  1.1  christos 	eor	w14,w6,w7
   1640  1.1  christos 	eor	w15,w15,w6,ror#20
   1641  1.1  christos 	sli	v7.4s,v19.4s,#13
   1642  1.1  christos 	add	w5,w5,w11
   1643  1.1  christos 	ldr	w12,[sp,#56]
   1644  1.1  christos 	and	w13,w13,w14
   1645  1.1  christos 	eor	v17.16b,v17.16b,v16.16b
   1646  1.1  christos 	ror	w15,w15,#2
   1647  1.1  christos 	add	w9,w9,w5
   1648  1.1  christos 	eor	w13,w13,w7
   1649  1.1  christos 	eor	v17.16b,v17.16b,v7.16b
   1650  1.1  christos 	add	w4,w4,w12
   1651  1.1  christos 	add	w5,w5,w15
   1652  1.1  christos 	and	w12,w10,w9
   1653  1.1  christos 	add	v3.4s,v3.4s,v17.4s
   1654  1.1  christos 	bic	w15,w3,w9
   1655  1.1  christos 	eor	w11,w9,w9,ror#5
   1656  1.1  christos 	add	w5,w5,w13
   1657  1.1  christos 	ushr	v18.4s,v3.4s,#17
   1658  1.1  christos 	orr	w12,w12,w15
   1659  1.1  christos 	ushr	v19.4s,v3.4s,#10
   1660  1.1  christos 	eor	w11,w11,w9,ror#19
   1661  1.1  christos 	eor	w15,w5,w5,ror#11
   1662  1.1  christos 	sli	v18.4s,v3.4s,#15
   1663  1.1  christos 	add	w4,w4,w12
   1664  1.1  christos 	ushr	v17.4s,v3.4s,#19
   1665  1.1  christos 	ror	w11,w11,#6
   1666  1.1  christos 	eor	w13,w5,w6
   1667  1.1  christos 	eor	v19.16b,v19.16b,v18.16b
   1668  1.1  christos 	eor	w15,w15,w5,ror#20
   1669  1.1  christos 	add	w4,w4,w11
   1670  1.1  christos 	sli	v17.4s,v3.4s,#13
   1671  1.1  christos 	ldr	w12,[sp,#60]
   1672  1.1  christos 	and	w14,w14,w13
   1673  1.1  christos 	ror	w15,w15,#2
   1674  1.1  christos 	ld1	{v4.4s},[x16], #16
   1675  1.1  christos 	add	w8,w8,w4
   1676  1.1  christos 	eor	v19.16b,v19.16b,v17.16b
   1677  1.1  christos 	eor	w14,w14,w6
   1678  1.1  christos 	eor	v17.16b,v17.16b,v17.16b
   1679  1.1  christos 	add	w3,w3,w12
   1680  1.1  christos 	add	w4,w4,w15
   1681  1.1  christos 	and	w12,w9,w8
   1682  1.1  christos 	mov	v17.d[1],v19.d[0]
   1683  1.1  christos 	bic	w15,w10,w8
   1684  1.1  christos 	eor	w11,w8,w8,ror#5
   1685  1.1  christos 	add	w4,w4,w14
   1686  1.1  christos 	add	v3.4s,v3.4s,v17.4s
   1687  1.1  christos 	orr	w12,w12,w15
   1688  1.1  christos 	eor	w11,w11,w8,ror#19
   1689  1.1  christos 	eor	w15,w4,w4,ror#11
   1690  1.1  christos 	add	v4.4s,v4.4s,v3.4s
   1691  1.1  christos 	add	w3,w3,w12
   1692  1.1  christos 	ror	w11,w11,#6
   1693  1.1  christos 	eor	w14,w4,w5
   1694  1.1  christos 	eor	w15,w15,w4,ror#20
   1695  1.1  christos 	add	w3,w3,w11
   1696  1.1  christos 	ldr	w12,[x16]
   1697  1.1  christos 	and	w13,w13,w14
   1698  1.1  christos 	ror	w15,w15,#2
   1699  1.1  christos 	add	w7,w7,w3
   1700  1.1  christos 	eor	w13,w13,w5
   1701  1.1  christos 	st1	{v4.4s},[x17], #16
   1702  1.1  christos 	cmp	w12,#0				// check for K256 terminator
   1703  1.1  christos 	ldr	w12,[sp,#0]
   1704  1.1  christos 	sub	x17,x17,#64
   1705  1.1  christos 	bne	.L_00_48
   1706  1.1  christos 
   1707  1.1  christos 	sub	x16,x16,#256		// rewind x16
   1708  1.1  christos 	cmp	x1,x2
   1709  1.1  christos 	mov	x17, #64
   1710  1.1  christos 	csel	x17, x17, xzr, eq
   1711  1.1  christos 	sub	x1,x1,x17			// avoid SEGV
   1712  1.1  christos 	mov	x17,sp
   1713  1.1  christos 	add	w10,w10,w12
   1714  1.1  christos 	add	w3,w3,w15
   1715  1.1  christos 	and	w12,w8,w7
   1716  1.1  christos 	ld1	{v0.16b},[x1],#16
   1717  1.1  christos 	bic	w15,w9,w7
   1718  1.1  christos 	eor	w11,w7,w7,ror#5
   1719  1.1  christos 	ld1	{v4.4s},[x16],#16
   1720  1.1  christos 	add	w3,w3,w13
   1721  1.1  christos 	orr	w12,w12,w15
   1722  1.1  christos 	eor	w11,w11,w7,ror#19
   1723  1.1  christos 	eor	w15,w3,w3,ror#11
   1724  1.1  christos 	rev32	v0.16b,v0.16b
   1725  1.1  christos 	add	w10,w10,w12
   1726  1.1  christos 	ror	w11,w11,#6
   1727  1.1  christos 	eor	w13,w3,w4
   1728  1.1  christos 	eor	w15,w15,w3,ror#20
   1729  1.1  christos 	add	v4.4s,v4.4s,v0.4s
   1730  1.1  christos 	add	w10,w10,w11
   1731  1.1  christos 	ldr	w12,[sp,#4]
   1732  1.1  christos 	and	w14,w14,w13
   1733  1.1  christos 	ror	w15,w15,#2
   1734  1.1  christos 	add	w6,w6,w10
   1735  1.1  christos 	eor	w14,w14,w4
   1736  1.1  christos 	add	w9,w9,w12
   1737  1.1  christos 	add	w10,w10,w15
   1738  1.1  christos 	and	w12,w7,w6
   1739  1.1  christos 	bic	w15,w8,w6
   1740  1.1  christos 	eor	w11,w6,w6,ror#5
   1741  1.1  christos 	add	w10,w10,w14
   1742  1.1  christos 	orr	w12,w12,w15
   1743  1.1  christos 	eor	w11,w11,w6,ror#19
   1744  1.1  christos 	eor	w15,w10,w10,ror#11
   1745  1.1  christos 	add	w9,w9,w12
   1746  1.1  christos 	ror	w11,w11,#6
   1747  1.1  christos 	eor	w14,w10,w3
   1748  1.1  christos 	eor	w15,w15,w10,ror#20
   1749  1.1  christos 	add	w9,w9,w11
   1750  1.1  christos 	ldr	w12,[sp,#8]
   1751  1.1  christos 	and	w13,w13,w14
   1752  1.1  christos 	ror	w15,w15,#2
   1753  1.1  christos 	add	w5,w5,w9
   1754  1.1  christos 	eor	w13,w13,w3
   1755  1.1  christos 	add	w8,w8,w12
   1756  1.1  christos 	add	w9,w9,w15
   1757  1.1  christos 	and	w12,w6,w5
   1758  1.1  christos 	bic	w15,w7,w5
   1759  1.1  christos 	eor	w11,w5,w5,ror#5
   1760  1.1  christos 	add	w9,w9,w13
   1761  1.1  christos 	orr	w12,w12,w15
   1762  1.1  christos 	eor	w11,w11,w5,ror#19
   1763  1.1  christos 	eor	w15,w9,w9,ror#11
   1764  1.1  christos 	add	w8,w8,w12
   1765  1.1  christos 	ror	w11,w11,#6
   1766  1.1  christos 	eor	w13,w9,w10
   1767  1.1  christos 	eor	w15,w15,w9,ror#20
   1768  1.1  christos 	add	w8,w8,w11
   1769  1.1  christos 	ldr	w12,[sp,#12]
   1770  1.1  christos 	and	w14,w14,w13
   1771  1.1  christos 	ror	w15,w15,#2
   1772  1.1  christos 	add	w4,w4,w8
   1773  1.1  christos 	eor	w14,w14,w10
   1774  1.1  christos 	add	w7,w7,w12
   1775  1.1  christos 	add	w8,w8,w15
   1776  1.1  christos 	and	w12,w5,w4
   1777  1.1  christos 	bic	w15,w6,w4
   1778  1.1  christos 	eor	w11,w4,w4,ror#5
   1779  1.1  christos 	add	w8,w8,w14
   1780  1.1  christos 	orr	w12,w12,w15
   1781  1.1  christos 	eor	w11,w11,w4,ror#19
   1782  1.1  christos 	eor	w15,w8,w8,ror#11
   1783  1.1  christos 	add	w7,w7,w12
   1784  1.1  christos 	ror	w11,w11,#6
   1785  1.1  christos 	eor	w14,w8,w9
   1786  1.1  christos 	eor	w15,w15,w8,ror#20
   1787  1.1  christos 	add	w7,w7,w11
   1788  1.1  christos 	ldr	w12,[sp,#16]
   1789  1.1  christos 	and	w13,w13,w14
   1790  1.1  christos 	ror	w15,w15,#2
   1791  1.1  christos 	add	w3,w3,w7
   1792  1.1  christos 	eor	w13,w13,w9
   1793  1.1  christos 	st1	{v4.4s},[x17], #16
   1794  1.1  christos 	add	w6,w6,w12
   1795  1.1  christos 	add	w7,w7,w15
   1796  1.1  christos 	and	w12,w4,w3
   1797  1.1  christos 	ld1	{v1.16b},[x1],#16
   1798  1.1  christos 	bic	w15,w5,w3
   1799  1.1  christos 	eor	w11,w3,w3,ror#5
   1800  1.1  christos 	ld1	{v4.4s},[x16],#16
   1801  1.1  christos 	add	w7,w7,w13
   1802  1.1  christos 	orr	w12,w12,w15
   1803  1.1  christos 	eor	w11,w11,w3,ror#19
   1804  1.1  christos 	eor	w15,w7,w7,ror#11
   1805  1.1  christos 	rev32	v1.16b,v1.16b
   1806  1.1  christos 	add	w6,w6,w12
   1807  1.1  christos 	ror	w11,w11,#6
   1808  1.1  christos 	eor	w13,w7,w8
   1809  1.1  christos 	eor	w15,w15,w7,ror#20
   1810  1.1  christos 	add	v4.4s,v4.4s,v1.4s
   1811  1.1  christos 	add	w6,w6,w11
   1812  1.1  christos 	ldr	w12,[sp,#20]
   1813  1.1  christos 	and	w14,w14,w13
   1814  1.1  christos 	ror	w15,w15,#2
   1815  1.1  christos 	add	w10,w10,w6
   1816  1.1  christos 	eor	w14,w14,w8
   1817  1.1  christos 	add	w5,w5,w12
   1818  1.1  christos 	add	w6,w6,w15
   1819  1.1  christos 	and	w12,w3,w10
   1820  1.1  christos 	bic	w15,w4,w10
   1821  1.1  christos 	eor	w11,w10,w10,ror#5
   1822  1.1  christos 	add	w6,w6,w14
   1823  1.1  christos 	orr	w12,w12,w15
   1824  1.1  christos 	eor	w11,w11,w10,ror#19
   1825  1.1  christos 	eor	w15,w6,w6,ror#11
   1826  1.1  christos 	add	w5,w5,w12
   1827  1.1  christos 	ror	w11,w11,#6
   1828  1.1  christos 	eor	w14,w6,w7
   1829  1.1  christos 	eor	w15,w15,w6,ror#20
   1830  1.1  christos 	add	w5,w5,w11
   1831  1.1  christos 	ldr	w12,[sp,#24]
   1832  1.1  christos 	and	w13,w13,w14
   1833  1.1  christos 	ror	w15,w15,#2
   1834  1.1  christos 	add	w9,w9,w5
   1835  1.1  christos 	eor	w13,w13,w7
   1836  1.1  christos 	add	w4,w4,w12
   1837  1.1  christos 	add	w5,w5,w15
   1838  1.1  christos 	and	w12,w10,w9
   1839  1.1  christos 	bic	w15,w3,w9
   1840  1.1  christos 	eor	w11,w9,w9,ror#5
   1841  1.1  christos 	add	w5,w5,w13
   1842  1.1  christos 	orr	w12,w12,w15
   1843  1.1  christos 	eor	w11,w11,w9,ror#19
   1844  1.1  christos 	eor	w15,w5,w5,ror#11
   1845  1.1  christos 	add	w4,w4,w12
   1846  1.1  christos 	ror	w11,w11,#6
   1847  1.1  christos 	eor	w13,w5,w6
   1848  1.1  christos 	eor	w15,w15,w5,ror#20
   1849  1.1  christos 	add	w4,w4,w11
   1850  1.1  christos 	ldr	w12,[sp,#28]
   1851  1.1  christos 	and	w14,w14,w13
   1852  1.1  christos 	ror	w15,w15,#2
   1853  1.1  christos 	add	w8,w8,w4
   1854  1.1  christos 	eor	w14,w14,w6
   1855  1.1  christos 	add	w3,w3,w12
   1856  1.1  christos 	add	w4,w4,w15
   1857  1.1  christos 	and	w12,w9,w8
   1858  1.1  christos 	bic	w15,w10,w8
   1859  1.1  christos 	eor	w11,w8,w8,ror#5
   1860  1.1  christos 	add	w4,w4,w14
   1861  1.1  christos 	orr	w12,w12,w15
   1862  1.1  christos 	eor	w11,w11,w8,ror#19
   1863  1.1  christos 	eor	w15,w4,w4,ror#11
   1864  1.1  christos 	add	w3,w3,w12
   1865  1.1  christos 	ror	w11,w11,#6
   1866  1.1  christos 	eor	w14,w4,w5
   1867  1.1  christos 	eor	w15,w15,w4,ror#20
   1868  1.1  christos 	add	w3,w3,w11
   1869  1.1  christos 	ldr	w12,[sp,#32]
   1870  1.1  christos 	and	w13,w13,w14
   1871  1.1  christos 	ror	w15,w15,#2
   1872  1.1  christos 	add	w7,w7,w3
   1873  1.1  christos 	eor	w13,w13,w5
   1874  1.1  christos 	st1	{v4.4s},[x17], #16
   1875  1.1  christos 	add	w10,w10,w12
   1876  1.1  christos 	add	w3,w3,w15
   1877  1.1  christos 	and	w12,w8,w7
   1878  1.1  christos 	ld1	{v2.16b},[x1],#16
   1879  1.1  christos 	bic	w15,w9,w7
   1880  1.1  christos 	eor	w11,w7,w7,ror#5
   1881  1.1  christos 	ld1	{v4.4s},[x16],#16
   1882  1.1  christos 	add	w3,w3,w13
   1883  1.1  christos 	orr	w12,w12,w15
   1884  1.1  christos 	eor	w11,w11,w7,ror#19
   1885  1.1  christos 	eor	w15,w3,w3,ror#11
   1886  1.1  christos 	rev32	v2.16b,v2.16b
   1887  1.1  christos 	add	w10,w10,w12
   1888  1.1  christos 	ror	w11,w11,#6
   1889  1.1  christos 	eor	w13,w3,w4
   1890  1.1  christos 	eor	w15,w15,w3,ror#20
   1891  1.1  christos 	add	v4.4s,v4.4s,v2.4s
   1892  1.1  christos 	add	w10,w10,w11
   1893  1.1  christos 	ldr	w12,[sp,#36]
   1894  1.1  christos 	and	w14,w14,w13
   1895  1.1  christos 	ror	w15,w15,#2
   1896  1.1  christos 	add	w6,w6,w10
   1897  1.1  christos 	eor	w14,w14,w4
   1898  1.1  christos 	add	w9,w9,w12
   1899  1.1  christos 	add	w10,w10,w15
   1900  1.1  christos 	and	w12,w7,w6
   1901  1.1  christos 	bic	w15,w8,w6
   1902  1.1  christos 	eor	w11,w6,w6,ror#5
   1903  1.1  christos 	add	w10,w10,w14
   1904  1.1  christos 	orr	w12,w12,w15
   1905  1.1  christos 	eor	w11,w11,w6,ror#19
   1906  1.1  christos 	eor	w15,w10,w10,ror#11
   1907  1.1  christos 	add	w9,w9,w12
   1908  1.1  christos 	ror	w11,w11,#6
   1909  1.1  christos 	eor	w14,w10,w3
   1910  1.1  christos 	eor	w15,w15,w10,ror#20
   1911  1.1  christos 	add	w9,w9,w11
   1912  1.1  christos 	ldr	w12,[sp,#40]
   1913  1.1  christos 	and	w13,w13,w14
   1914  1.1  christos 	ror	w15,w15,#2
   1915  1.1  christos 	add	w5,w5,w9
   1916  1.1  christos 	eor	w13,w13,w3
   1917  1.1  christos 	add	w8,w8,w12
   1918  1.1  christos 	add	w9,w9,w15
   1919  1.1  christos 	and	w12,w6,w5
   1920  1.1  christos 	bic	w15,w7,w5
   1921  1.1  christos 	eor	w11,w5,w5,ror#5
   1922  1.1  christos 	add	w9,w9,w13
   1923  1.1  christos 	orr	w12,w12,w15
   1924  1.1  christos 	eor	w11,w11,w5,ror#19
   1925  1.1  christos 	eor	w15,w9,w9,ror#11
   1926  1.1  christos 	add	w8,w8,w12
   1927  1.1  christos 	ror	w11,w11,#6
   1928  1.1  christos 	eor	w13,w9,w10
   1929  1.1  christos 	eor	w15,w15,w9,ror#20
   1930  1.1  christos 	add	w8,w8,w11
   1931  1.1  christos 	ldr	w12,[sp,#44]
   1932  1.1  christos 	and	w14,w14,w13
   1933  1.1  christos 	ror	w15,w15,#2
   1934  1.1  christos 	add	w4,w4,w8
   1935  1.1  christos 	eor	w14,w14,w10
   1936  1.1  christos 	add	w7,w7,w12
   1937  1.1  christos 	add	w8,w8,w15
   1938  1.1  christos 	and	w12,w5,w4
   1939  1.1  christos 	bic	w15,w6,w4
   1940  1.1  christos 	eor	w11,w4,w4,ror#5
   1941  1.1  christos 	add	w8,w8,w14
   1942  1.1  christos 	orr	w12,w12,w15
   1943  1.1  christos 	eor	w11,w11,w4,ror#19
   1944  1.1  christos 	eor	w15,w8,w8,ror#11
   1945  1.1  christos 	add	w7,w7,w12
   1946  1.1  christos 	ror	w11,w11,#6
   1947  1.1  christos 	eor	w14,w8,w9
   1948  1.1  christos 	eor	w15,w15,w8,ror#20
   1949  1.1  christos 	add	w7,w7,w11
   1950  1.1  christos 	ldr	w12,[sp,#48]
   1951  1.1  christos 	and	w13,w13,w14
   1952  1.1  christos 	ror	w15,w15,#2
   1953  1.1  christos 	add	w3,w3,w7
   1954  1.1  christos 	eor	w13,w13,w9
   1955  1.1  christos 	st1	{v4.4s},[x17], #16
   1956  1.1  christos 	add	w6,w6,w12
   1957  1.1  christos 	add	w7,w7,w15
   1958  1.1  christos 	and	w12,w4,w3
   1959  1.1  christos 	ld1	{v3.16b},[x1],#16
   1960  1.1  christos 	bic	w15,w5,w3
   1961  1.1  christos 	eor	w11,w3,w3,ror#5
   1962  1.1  christos 	ld1	{v4.4s},[x16],#16
   1963  1.1  christos 	add	w7,w7,w13
   1964  1.1  christos 	orr	w12,w12,w15
   1965  1.1  christos 	eor	w11,w11,w3,ror#19
   1966  1.1  christos 	eor	w15,w7,w7,ror#11
   1967  1.1  christos 	rev32	v3.16b,v3.16b
   1968  1.1  christos 	add	w6,w6,w12
   1969  1.1  christos 	ror	w11,w11,#6
   1970  1.1  christos 	eor	w13,w7,w8
   1971  1.1  christos 	eor	w15,w15,w7,ror#20
   1972  1.1  christos 	add	v4.4s,v4.4s,v3.4s
   1973  1.1  christos 	add	w6,w6,w11
   1974  1.1  christos 	ldr	w12,[sp,#52]
   1975  1.1  christos 	and	w14,w14,w13
   1976  1.1  christos 	ror	w15,w15,#2
   1977  1.1  christos 	add	w10,w10,w6
   1978  1.1  christos 	eor	w14,w14,w8
   1979  1.1  christos 	add	w5,w5,w12
   1980  1.1  christos 	add	w6,w6,w15
   1981  1.1  christos 	and	w12,w3,w10
   1982  1.1  christos 	bic	w15,w4,w10
   1983  1.1  christos 	eor	w11,w10,w10,ror#5
   1984  1.1  christos 	add	w6,w6,w14
   1985  1.1  christos 	orr	w12,w12,w15
   1986  1.1  christos 	eor	w11,w11,w10,ror#19
   1987  1.1  christos 	eor	w15,w6,w6,ror#11
   1988  1.1  christos 	add	w5,w5,w12
   1989  1.1  christos 	ror	w11,w11,#6
   1990  1.1  christos 	eor	w14,w6,w7
   1991  1.1  christos 	eor	w15,w15,w6,ror#20
   1992  1.1  christos 	add	w5,w5,w11
   1993  1.1  christos 	ldr	w12,[sp,#56]
   1994  1.1  christos 	and	w13,w13,w14
   1995  1.1  christos 	ror	w15,w15,#2
   1996  1.1  christos 	add	w9,w9,w5
   1997  1.1  christos 	eor	w13,w13,w7
   1998  1.1  christos 	add	w4,w4,w12
   1999  1.1  christos 	add	w5,w5,w15
   2000  1.1  christos 	and	w12,w10,w9
   2001  1.1  christos 	bic	w15,w3,w9
   2002  1.1  christos 	eor	w11,w9,w9,ror#5
   2003  1.1  christos 	add	w5,w5,w13
   2004  1.1  christos 	orr	w12,w12,w15
   2005  1.1  christos 	eor	w11,w11,w9,ror#19
   2006  1.1  christos 	eor	w15,w5,w5,ror#11
   2007  1.1  christos 	add	w4,w4,w12
   2008  1.1  christos 	ror	w11,w11,#6
   2009  1.1  christos 	eor	w13,w5,w6
   2010  1.1  christos 	eor	w15,w15,w5,ror#20
   2011  1.1  christos 	add	w4,w4,w11
   2012  1.1  christos 	ldr	w12,[sp,#60]
   2013  1.1  christos 	and	w14,w14,w13
   2014  1.1  christos 	ror	w15,w15,#2
   2015  1.1  christos 	add	w8,w8,w4
   2016  1.1  christos 	eor	w14,w14,w6
   2017  1.1  christos 	add	w3,w3,w12
   2018  1.1  christos 	add	w4,w4,w15
   2019  1.1  christos 	and	w12,w9,w8
   2020  1.1  christos 	bic	w15,w10,w8
   2021  1.1  christos 	eor	w11,w8,w8,ror#5
   2022  1.1  christos 	add	w4,w4,w14
   2023  1.1  christos 	orr	w12,w12,w15
   2024  1.1  christos 	eor	w11,w11,w8,ror#19
   2025  1.1  christos 	eor	w15,w4,w4,ror#11
   2026  1.1  christos 	add	w3,w3,w12
   2027  1.1  christos 	ror	w11,w11,#6
   2028  1.1  christos 	eor	w14,w4,w5
   2029  1.1  christos 	eor	w15,w15,w4,ror#20
   2030  1.1  christos 	add	w3,w3,w11
   2031  1.1  christos 	and	w13,w13,w14
   2032  1.1  christos 	ror	w15,w15,#2
   2033  1.1  christos 	add	w7,w7,w3
   2034  1.1  christos 	eor	w13,w13,w5
   2035  1.1  christos 	st1	{v4.4s},[x17], #16
   2036  1.1  christos 	add	w3,w3,w15			// h+=Sigma0(a) from the past
   2037  1.1  christos 	ldp	w11,w12,[x0,#0]
   2038  1.1  christos 	add	w3,w3,w13			// h+=Maj(a,b,c) from the past
   2039  1.1  christos 	ldp	w13,w14,[x0,#8]
   2040  1.1  christos 	add	w3,w3,w11			// accumulate
   2041  1.1  christos 	add	w4,w4,w12
   2042  1.1  christos 	ldp	w11,w12,[x0,#16]
   2043  1.1  christos 	add	w5,w5,w13
   2044  1.1  christos 	add	w6,w6,w14
   2045  1.1  christos 	ldp	w13,w14,[x0,#24]
   2046  1.1  christos 	add	w7,w7,w11
   2047  1.1  christos 	add	w8,w8,w12
   2048  1.1  christos 	ldr	w12,[sp,#0]
   2049  1.1  christos 	stp	w3,w4,[x0,#0]
   2050  1.1  christos 	add	w9,w9,w13
   2051  1.1  christos 	mov	w13,wzr
   2052  1.1  christos 	stp	w5,w6,[x0,#8]
   2053  1.1  christos 	add	w10,w10,w14
   2054  1.1  christos 	stp	w7,w8,[x0,#16]
   2055  1.1  christos 	eor	w14,w4,w5
   2056  1.1  christos 	stp	w9,w10,[x0,#24]
   2057  1.1  christos 	mov	w15,wzr
   2058  1.1  christos 	mov	x17,sp
   2059  1.1  christos 	b.ne	.L_00_48
   2060  1.1  christos 
   2061  1.1  christos 	ldr	x29,[x29]
   2062  1.1  christos 	add	sp,sp,#16*4+16
   2063  1.1  christos 	ret
   2064  1.1  christos .size	sha256_block_neon,.-sha256_block_neon
   2065