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