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