Home | History | Annotate | Line # | Download | only in sparc64
sha512-sparcv9.S revision 1.5
      1 #include "sparc_arch.h"
      2 
      3 #ifdef __arch64__
      4 .register	%g2,#scratch
      5 .register	%g3,#scratch
      6 #endif
      7 
      8 .section	".text",#alloc,#execinstr
      9 
     10 .align	64
     11 K512:
     12 .type	K512,#object
     13 	.long	0x428a2f98,0xd728ae22, 0x71374491,0x23ef65cd
     14 	.long	0xb5c0fbcf,0xec4d3b2f, 0xe9b5dba5,0x8189dbbc
     15 	.long	0x3956c25b,0xf348b538, 0x59f111f1,0xb605d019
     16 	.long	0x923f82a4,0xaf194f9b, 0xab1c5ed5,0xda6d8118
     17 	.long	0xd807aa98,0xa3030242, 0x12835b01,0x45706fbe
     18 	.long	0x243185be,0x4ee4b28c, 0x550c7dc3,0xd5ffb4e2
     19 	.long	0x72be5d74,0xf27b896f, 0x80deb1fe,0x3b1696b1
     20 	.long	0x9bdc06a7,0x25c71235, 0xc19bf174,0xcf692694
     21 	.long	0xe49b69c1,0x9ef14ad2, 0xefbe4786,0x384f25e3
     22 	.long	0x0fc19dc6,0x8b8cd5b5, 0x240ca1cc,0x77ac9c65
     23 	.long	0x2de92c6f,0x592b0275, 0x4a7484aa,0x6ea6e483
     24 	.long	0x5cb0a9dc,0xbd41fbd4, 0x76f988da,0x831153b5
     25 	.long	0x983e5152,0xee66dfab, 0xa831c66d,0x2db43210
     26 	.long	0xb00327c8,0x98fb213f, 0xbf597fc7,0xbeef0ee4
     27 	.long	0xc6e00bf3,0x3da88fc2, 0xd5a79147,0x930aa725
     28 	.long	0x06ca6351,0xe003826f, 0x14292967,0x0a0e6e70
     29 	.long	0x27b70a85,0x46d22ffc, 0x2e1b2138,0x5c26c926
     30 	.long	0x4d2c6dfc,0x5ac42aed, 0x53380d13,0x9d95b3df
     31 	.long	0x650a7354,0x8baf63de, 0x766a0abb,0x3c77b2a8
     32 	.long	0x81c2c92e,0x47edaee6, 0x92722c85,0x1482353b
     33 	.long	0xa2bfe8a1,0x4cf10364, 0xa81a664b,0xbc423001
     34 	.long	0xc24b8b70,0xd0f89791, 0xc76c51a3,0x0654be30
     35 	.long	0xd192e819,0xd6ef5218, 0xd6990624,0x5565a910
     36 	.long	0xf40e3585,0x5771202a, 0x106aa070,0x32bbd1b8
     37 	.long	0x19a4c116,0xb8d2d0c8, 0x1e376c08,0x5141ab53
     38 	.long	0x2748774c,0xdf8eeb99, 0x34b0bcb5,0xe19b48a8
     39 	.long	0x391c0cb3,0xc5c95a63, 0x4ed8aa4a,0xe3418acb
     40 	.long	0x5b9cca4f,0x7763e373, 0x682e6ff3,0xd6b2b8a3
     41 	.long	0x748f82ee,0x5defb2fc, 0x78a5636f,0x43172f60
     42 	.long	0x84c87814,0xa1f0ab72, 0x8cc70208,0x1a6439ec
     43 	.long	0x90befffa,0x23631e28, 0xa4506ceb,0xde82bde9
     44 	.long	0xbef9a3f7,0xb2c67915, 0xc67178f2,0xe372532b
     45 	.long	0xca273ece,0xea26619c, 0xd186b8c7,0x21c0c207
     46 	.long	0xeada7dd6,0xcde0eb1e, 0xf57d4f7f,0xee6ed178
     47 	.long	0x06f067aa,0x72176fba, 0x0a637dc5,0xa2c898a6
     48 	.long	0x113f9804,0xbef90dae, 0x1b710b35,0x131c471b
     49 	.long	0x28db77f5,0x23047d84, 0x32caab7b,0x40c72493
     50 	.long	0x3c9ebe0a,0x15c9bebc, 0x431d67c4,0x9c100d4c
     51 	.long	0x4cc5d4be,0xcb3e42b6, 0x597f299c,0xfc657e2a
     52 	.long	0x5fcb6fab,0x3ad6faec, 0x6c44198c,0x4a475817
     53 .size	K512,.-K512
     54 
     55 #ifdef __PIC__
     56 SPARC_PIC_THUNK(%g1)
     57 #endif
     58 
     59 .globl	sha512_block_data_order
     60 .align	32
     61 sha512_block_data_order:
     62 	SPARC_LOAD_ADDRESS_LEAF(OPENSSL_sparcv9cap_P,%g1,%g5)
     63 	ld	[%g1+4],%g1		! OPENSSL_sparcv9cap_P[1]
     64 
     65 	andcc	%g1, CFR_SHA512, %g0
     66 	be	.Lsoftware
     67 	nop
     68 	ldd	[%o0 + 0x00], %f0	! load context
     69 	ldd	[%o0 + 0x08], %f2
     70 	ldd	[%o0 + 0x10], %f4
     71 	ldd	[%o0 + 0x18], %f6
     72 	ldd	[%o0 + 0x20], %f8
     73 	ldd	[%o0 + 0x28], %f10
     74 	andcc	%o1, 0x7, %g0
     75 	ldd	[%o0 + 0x30], %f12
     76 	bne,pn	%icc, .Lhwunaligned
     77 	 ldd	[%o0 + 0x38], %f14
     78 
     79 .Lhwaligned_loop:
     80 	ldd	[%o1 + 0x00], %f16
     81 	ldd	[%o1 + 0x08], %f18
     82 	ldd	[%o1 + 0x10], %f20
     83 	ldd	[%o1 + 0x18], %f22
     84 	ldd	[%o1 + 0x20], %f24
     85 	ldd	[%o1 + 0x28], %f26
     86 	ldd	[%o1 + 0x30], %f28
     87 	ldd	[%o1 + 0x38], %f30
     88 	ldd	[%o1 + 0x40], %f32
     89 	ldd	[%o1 + 0x48], %f34
     90 	ldd	[%o1 + 0x50], %f36
     91 	ldd	[%o1 + 0x58], %f38
     92 	ldd	[%o1 + 0x60], %f40
     93 	ldd	[%o1 + 0x68], %f42
     94 	ldd	[%o1 + 0x70], %f44
     95 	subcc	%o2, 1, %o2		! done yet?
     96 	ldd	[%o1 + 0x78], %f46
     97 	add	%o1, 0x80, %o1
     98 	prefetch [%o1 + 63], 20
     99 	prefetch [%o1 + 64+63], 20
    100 
    101 	.word	0x81b02860		! SHA512
    102 
    103 	bne,pt	SIZE_T_CC, .Lhwaligned_loop
    104 	nop
    105 
    106 .Lhwfinish:
    107 	std	%f0, [%o0 + 0x00]	! store context
    108 	std	%f2, [%o0 + 0x08]
    109 	std	%f4, [%o0 + 0x10]
    110 	std	%f6, [%o0 + 0x18]
    111 	std	%f8, [%o0 + 0x20]
    112 	std	%f10, [%o0 + 0x28]
    113 	std	%f12, [%o0 + 0x30]
    114 	retl
    115 	 std	%f14, [%o0 + 0x38]
    116 
    117 .align	16
    118 .Lhwunaligned:
    119 	.word	0x93b24300 !alignaddr	%o1,%g0,%o1
    120 
    121 	ldd	[%o1 + 0x00], %f18
    122 .Lhwunaligned_loop:
    123 	ldd	[%o1 + 0x08], %f20
    124 	ldd	[%o1 + 0x10], %f22
    125 	ldd	[%o1 + 0x18], %f24
    126 	ldd	[%o1 + 0x20], %f26
    127 	ldd	[%o1 + 0x28], %f28
    128 	ldd	[%o1 + 0x30], %f30
    129 	ldd	[%o1 + 0x38], %f32
    130 	ldd	[%o1 + 0x40], %f34
    131 	ldd	[%o1 + 0x48], %f36
    132 	ldd	[%o1 + 0x50], %f38
    133 	ldd	[%o1 + 0x58], %f40
    134 	ldd	[%o1 + 0x60], %f42
    135 	ldd	[%o1 + 0x68], %f44
    136 	ldd	[%o1 + 0x70], %f46
    137 	ldd	[%o1 + 0x78], %f48
    138 	subcc	%o2, 1, %o2		! done yet?
    139 	ldd	[%o1 + 0x80], %f50
    140 	add	%o1, 0x80, %o1
    141 	prefetch [%o1 + 63], 20
    142 	prefetch [%o1 + 64+63], 20
    143 
    144 	.word	0xa1b48914 !faligndata	%f18,%f20,%f16
    145 	.word	0xa5b50916 !faligndata	%f20,%f22,%f18
    146 	.word	0xa9b58918 !faligndata	%f22,%f24,%f20
    147 	.word	0xadb6091a !faligndata	%f24,%f26,%f22
    148 	.word	0xb1b6891c !faligndata	%f26,%f28,%f24
    149 	.word	0xb5b7091e !faligndata	%f28,%f30,%f26
    150 	.word	0xb9b78901 !faligndata	%f30,%f32,%f28
    151 	.word	0xbdb04903 !faligndata	%f32,%f34,%f30
    152 	.word	0x83b0c905 !faligndata	%f34,%f36,%f32
    153 	.word	0x87b14907 !faligndata	%f36,%f38,%f34
    154 	.word	0x8bb1c909 !faligndata	%f38,%f40,%f36
    155 	.word	0x8fb2490b !faligndata	%f40,%f42,%f38
    156 	.word	0x93b2c90d !faligndata	%f42,%f44,%f40
    157 	.word	0x97b3490f !faligndata	%f44,%f46,%f42
    158 	.word	0x9bb3c911 !faligndata	%f46,%f48,%f44
    159 	.word	0x9fb44913 !faligndata	%f48,%f50,%f46
    160 
    161 	.word	0x81b02860		! SHA512
    162 
    163 	bne,pt	SIZE_T_CC, .Lhwunaligned_loop
    164 	.word	0xa5b4cf93 !for	%f50,%f50,%f18	! %f18=%f50
    165 
    166 	ba	.Lhwfinish
    167 	nop
    168 .align	16
    169 .Lsoftware:
    170 	save	%sp,-STACK_FRAME-128,%sp
    171 	and	%i1,3,%i4
    172 	sllx	%i2,7,%i2
    173 	andn	%i1,3,%i1
    174 	sll	%i4,3,%i4
    175 	add	%i1,%i2,%i2
    176 	mov	32,%i5
    177 	sub	%i5,%i4,%i5
    178 .Lpic:	call	.+8
    179 	add	%o7,K512-.Lpic,%i3
    180 
    181 	ldx	[%i0+0],%o0
    182 	ldx	[%i0+8],%o1
    183 	ldx	[%i0+16],%o2
    184 	ldx	[%i0+24],%o3
    185 	ldx	[%i0+32],%o4
    186 	ldx	[%i0+40],%o5
    187 	ldx	[%i0+48],%g1
    188 	ldx	[%i0+56],%o7
    189 
    190 .Lloop:
    191 	ld	[%i1+0],%l0
    192 	ld	[%i1+4],%l1
    193 	ld	[%i1+8],%l2
    194 	ld	[%i1+12],%l3
    195 	ld	[%i1+16],%l4
    196 	ld	[%i1+20],%l5
    197 	ld	[%i1+24],%l6
    198 	cmp	%i4,0
    199 	ld	[%i1+28],%l7
    200 	sllx	%l1,%i4,%g5	! Xload(0)
    201 	add	%i4,32,%g3
    202 	sllx	%l0,%g3,%g4
    203 	ld	[%i1+32],%l0
    204 	srlx	%l2,%i5,%l1
    205 	or	%g4,%g5,%g5
    206 	or	%l1,%g5,%g5
    207 	ld	[%i1+36],%l1
    208 	add	%o7,%g5,%g2
    209 	stx	%g5,[%sp+STACK_BIAS+STACK_FRAME+0]
    210 	srlx	%o4,14,%o7	!! 0
    211 	xor	%o5,%g1,%g5
    212 	sllx	%o4,23,%g4
    213 	and	%o4,%g5,%g5
    214 	srlx	%o4,18,%g3
    215 	xor	%g4,%o7,%o7
    216 	sllx	%o4,46,%g4
    217 	xor	%g3,%o7,%o7
    218 	srlx	%o4,41,%g3
    219 	xor	%g4,%o7,%o7
    220 	sllx	%o4,50,%g4
    221 	xor	%g3,%o7,%o7
    222 	xor	%g1,%g5,%g5		! Ch(e,f,g)
    223 	xor	%g4,%o7,%g3		! Sigma1(e)
    224 
    225 	srlx	%o0,28,%o7
    226 	add	%g5,%g2,%g2
    227 	ldx	[%i3+0],%g5	! K[0]
    228 	sllx	%o0,25,%g4
    229 	add	%g3,%g2,%g2
    230 	srlx	%o0,34,%g3
    231 	xor	%g4,%o7,%o7
    232 	sllx	%o0,30,%g4
    233 	xor	%g3,%o7,%o7
    234 	srlx	%o0,39,%g3
    235 	xor	%g4,%o7,%o7
    236 	sllx	%o0,36,%g4
    237 	xor	%g3,%o7,%o7
    238 	xor	%g4,%o7,%o7		! Sigma0(a)
    239 
    240 	or	%o0,%o1,%g3
    241 	and	%o0,%o1,%g4
    242 	and	%o2,%g3,%g3
    243 	or	%g3,%g4,%g4	! Maj(a,b,c)
    244 	add	%g5,%g2,%g2		! +=K[0]
    245 	add	%g4,%o7,%o7
    246 
    247 	add	%g2,%o3,%o3
    248 	add	%g2,%o7,%o7
    249 	sllx	%l3,%i4,%g5	! Xload(1)
    250 	add	%i4,32,%g3
    251 	sllx	%l2,%g3,%g4
    252 	ld	[%i1+40],%l2
    253 	srlx	%l4,%i5,%l3
    254 	or	%g4,%g5,%g5
    255 	or	%l3,%g5,%g5
    256 	ld	[%i1+44],%l3
    257 	add	%g1,%g5,%g2
    258 	stx	%g5,[%sp+STACK_BIAS+STACK_FRAME+8]
    259 	srlx	%o3,14,%g1	!! 1
    260 	xor	%o4,%o5,%g5
    261 	sllx	%o3,23,%g4
    262 	and	%o3,%g5,%g5
    263 	srlx	%o3,18,%g3
    264 	xor	%g4,%g1,%g1
    265 	sllx	%o3,46,%g4
    266 	xor	%g3,%g1,%g1
    267 	srlx	%o3,41,%g3
    268 	xor	%g4,%g1,%g1
    269 	sllx	%o3,50,%g4
    270 	xor	%g3,%g1,%g1
    271 	xor	%o5,%g5,%g5		! Ch(e,f,g)
    272 	xor	%g4,%g1,%g3		! Sigma1(e)
    273 
    274 	srlx	%o7,28,%g1
    275 	add	%g5,%g2,%g2
    276 	ldx	[%i3+8],%g5	! K[1]
    277 	sllx	%o7,25,%g4
    278 	add	%g3,%g2,%g2
    279 	srlx	%o7,34,%g3
    280 	xor	%g4,%g1,%g1
    281 	sllx	%o7,30,%g4
    282 	xor	%g3,%g1,%g1
    283 	srlx	%o7,39,%g3
    284 	xor	%g4,%g1,%g1
    285 	sllx	%o7,36,%g4
    286 	xor	%g3,%g1,%g1
    287 	xor	%g4,%g1,%g1		! Sigma0(a)
    288 
    289 	or	%o7,%o0,%g3
    290 	and	%o7,%o0,%g4
    291 	and	%o1,%g3,%g3
    292 	or	%g3,%g4,%g4	! Maj(a,b,c)
    293 	add	%g5,%g2,%g2		! +=K[1]
    294 	add	%g4,%g1,%g1
    295 
    296 	add	%g2,%o2,%o2
    297 	add	%g2,%g1,%g1
    298 	sllx	%l5,%i4,%g5	! Xload(2)
    299 	add	%i4,32,%g3
    300 	sllx	%l4,%g3,%g4
    301 	ld	[%i1+48],%l4
    302 	srlx	%l6,%i5,%l5
    303 	or	%g4,%g5,%g5
    304 	or	%l5,%g5,%g5
    305 	ld	[%i1+52],%l5
    306 	add	%o5,%g5,%g2
    307 	stx	%g5,[%sp+STACK_BIAS+STACK_FRAME+16]
    308 	srlx	%o2,14,%o5	!! 2
    309 	xor	%o3,%o4,%g5
    310 	sllx	%o2,23,%g4
    311 	and	%o2,%g5,%g5
    312 	srlx	%o2,18,%g3
    313 	xor	%g4,%o5,%o5
    314 	sllx	%o2,46,%g4
    315 	xor	%g3,%o5,%o5
    316 	srlx	%o2,41,%g3
    317 	xor	%g4,%o5,%o5
    318 	sllx	%o2,50,%g4
    319 	xor	%g3,%o5,%o5
    320 	xor	%o4,%g5,%g5		! Ch(e,f,g)
    321 	xor	%g4,%o5,%g3		! Sigma1(e)
    322 
    323 	srlx	%g1,28,%o5
    324 	add	%g5,%g2,%g2
    325 	ldx	[%i3+16],%g5	! K[2]
    326 	sllx	%g1,25,%g4
    327 	add	%g3,%g2,%g2
    328 	srlx	%g1,34,%g3
    329 	xor	%g4,%o5,%o5
    330 	sllx	%g1,30,%g4
    331 	xor	%g3,%o5,%o5
    332 	srlx	%g1,39,%g3
    333 	xor	%g4,%o5,%o5
    334 	sllx	%g1,36,%g4
    335 	xor	%g3,%o5,%o5
    336 	xor	%g4,%o5,%o5		! Sigma0(a)
    337 
    338 	or	%g1,%o7,%g3
    339 	and	%g1,%o7,%g4
    340 	and	%o0,%g3,%g3
    341 	or	%g3,%g4,%g4	! Maj(a,b,c)
    342 	add	%g5,%g2,%g2		! +=K[2]
    343 	add	%g4,%o5,%o5
    344 
    345 	add	%g2,%o1,%o1
    346 	add	%g2,%o5,%o5
    347 	sllx	%l7,%i4,%g5	! Xload(3)
    348 	add	%i4,32,%g3
    349 	sllx	%l6,%g3,%g4
    350 	ld	[%i1+56],%l6
    351 	srlx	%l0,%i5,%l7
    352 	or	%g4,%g5,%g5
    353 	or	%l7,%g5,%g5
    354 	ld	[%i1+60],%l7
    355 	add	%o4,%g5,%g2
    356 	stx	%g5,[%sp+STACK_BIAS+STACK_FRAME+24]
    357 	srlx	%o1,14,%o4	!! 3
    358 	xor	%o2,%o3,%g5
    359 	sllx	%o1,23,%g4
    360 	and	%o1,%g5,%g5
    361 	srlx	%o1,18,%g3
    362 	xor	%g4,%o4,%o4
    363 	sllx	%o1,46,%g4
    364 	xor	%g3,%o4,%o4
    365 	srlx	%o1,41,%g3
    366 	xor	%g4,%o4,%o4
    367 	sllx	%o1,50,%g4
    368 	xor	%g3,%o4,%o4
    369 	xor	%o3,%g5,%g5		! Ch(e,f,g)
    370 	xor	%g4,%o4,%g3		! Sigma1(e)
    371 
    372 	srlx	%o5,28,%o4
    373 	add	%g5,%g2,%g2
    374 	ldx	[%i3+24],%g5	! K[3]
    375 	sllx	%o5,25,%g4
    376 	add	%g3,%g2,%g2
    377 	srlx	%o5,34,%g3
    378 	xor	%g4,%o4,%o4
    379 	sllx	%o5,30,%g4
    380 	xor	%g3,%o4,%o4
    381 	srlx	%o5,39,%g3
    382 	xor	%g4,%o4,%o4
    383 	sllx	%o5,36,%g4
    384 	xor	%g3,%o4,%o4
    385 	xor	%g4,%o4,%o4		! Sigma0(a)
    386 
    387 	or	%o5,%g1,%g3
    388 	and	%o5,%g1,%g4
    389 	and	%o7,%g3,%g3
    390 	or	%g3,%g4,%g4	! Maj(a,b,c)
    391 	add	%g5,%g2,%g2		! +=K[3]
    392 	add	%g4,%o4,%o4
    393 
    394 	add	%g2,%o0,%o0
    395 	add	%g2,%o4,%o4
    396 	sllx	%l1,%i4,%g5	! Xload(4)
    397 	add	%i4,32,%g3
    398 	sllx	%l0,%g3,%g4
    399 	ld	[%i1+64],%l0
    400 	srlx	%l2,%i5,%l1
    401 	or	%g4,%g5,%g5
    402 	or	%l1,%g5,%g5
    403 	ld	[%i1+68],%l1
    404 	add	%o3,%g5,%g2
    405 	stx	%g5,[%sp+STACK_BIAS+STACK_FRAME+32]
    406 	srlx	%o0,14,%o3	!! 4
    407 	xor	%o1,%o2,%g5
    408 	sllx	%o0,23,%g4
    409 	and	%o0,%g5,%g5
    410 	srlx	%o0,18,%g3
    411 	xor	%g4,%o3,%o3
    412 	sllx	%o0,46,%g4
    413 	xor	%g3,%o3,%o3
    414 	srlx	%o0,41,%g3
    415 	xor	%g4,%o3,%o3
    416 	sllx	%o0,50,%g4
    417 	xor	%g3,%o3,%o3
    418 	xor	%o2,%g5,%g5		! Ch(e,f,g)
    419 	xor	%g4,%o3,%g3		! Sigma1(e)
    420 
    421 	srlx	%o4,28,%o3
    422 	add	%g5,%g2,%g2
    423 	ldx	[%i3+32],%g5	! K[4]
    424 	sllx	%o4,25,%g4
    425 	add	%g3,%g2,%g2
    426 	srlx	%o4,34,%g3
    427 	xor	%g4,%o3,%o3
    428 	sllx	%o4,30,%g4
    429 	xor	%g3,%o3,%o3
    430 	srlx	%o4,39,%g3
    431 	xor	%g4,%o3,%o3
    432 	sllx	%o4,36,%g4
    433 	xor	%g3,%o3,%o3
    434 	xor	%g4,%o3,%o3		! Sigma0(a)
    435 
    436 	or	%o4,%o5,%g3
    437 	and	%o4,%o5,%g4
    438 	and	%g1,%g3,%g3
    439 	or	%g3,%g4,%g4	! Maj(a,b,c)
    440 	add	%g5,%g2,%g2		! +=K[4]
    441 	add	%g4,%o3,%o3
    442 
    443 	add	%g2,%o7,%o7
    444 	add	%g2,%o3,%o3
    445 	sllx	%l3,%i4,%g5	! Xload(5)
    446 	add	%i4,32,%g3
    447 	sllx	%l2,%g3,%g4
    448 	ld	[%i1+72],%l2
    449 	srlx	%l4,%i5,%l3
    450 	or	%g4,%g5,%g5
    451 	or	%l3,%g5,%g5
    452 	ld	[%i1+76],%l3
    453 	add	%o2,%g5,%g2
    454 	stx	%g5,[%sp+STACK_BIAS+STACK_FRAME+40]
    455 	srlx	%o7,14,%o2	!! 5
    456 	xor	%o0,%o1,%g5
    457 	sllx	%o7,23,%g4
    458 	and	%o7,%g5,%g5
    459 	srlx	%o7,18,%g3
    460 	xor	%g4,%o2,%o2
    461 	sllx	%o7,46,%g4
    462 	xor	%g3,%o2,%o2
    463 	srlx	%o7,41,%g3
    464 	xor	%g4,%o2,%o2
    465 	sllx	%o7,50,%g4
    466 	xor	%g3,%o2,%o2
    467 	xor	%o1,%g5,%g5		! Ch(e,f,g)
    468 	xor	%g4,%o2,%g3		! Sigma1(e)
    469 
    470 	srlx	%o3,28,%o2
    471 	add	%g5,%g2,%g2
    472 	ldx	[%i3+40],%g5	! K[5]
    473 	sllx	%o3,25,%g4
    474 	add	%g3,%g2,%g2
    475 	srlx	%o3,34,%g3
    476 	xor	%g4,%o2,%o2
    477 	sllx	%o3,30,%g4
    478 	xor	%g3,%o2,%o2
    479 	srlx	%o3,39,%g3
    480 	xor	%g4,%o2,%o2
    481 	sllx	%o3,36,%g4
    482 	xor	%g3,%o2,%o2
    483 	xor	%g4,%o2,%o2		! Sigma0(a)
    484 
    485 	or	%o3,%o4,%g3
    486 	and	%o3,%o4,%g4
    487 	and	%o5,%g3,%g3
    488 	or	%g3,%g4,%g4	! Maj(a,b,c)
    489 	add	%g5,%g2,%g2		! +=K[5]
    490 	add	%g4,%o2,%o2
    491 
    492 	add	%g2,%g1,%g1
    493 	add	%g2,%o2,%o2
    494 	sllx	%l5,%i4,%g5	! Xload(6)
    495 	add	%i4,32,%g3
    496 	sllx	%l4,%g3,%g4
    497 	ld	[%i1+80],%l4
    498 	srlx	%l6,%i5,%l5
    499 	or	%g4,%g5,%g5
    500 	or	%l5,%g5,%g5
    501 	ld	[%i1+84],%l5
    502 	add	%o1,%g5,%g2
    503 	stx	%g5,[%sp+STACK_BIAS+STACK_FRAME+48]
    504 	srlx	%g1,14,%o1	!! 6
    505 	xor	%o7,%o0,%g5
    506 	sllx	%g1,23,%g4
    507 	and	%g1,%g5,%g5
    508 	srlx	%g1,18,%g3
    509 	xor	%g4,%o1,%o1
    510 	sllx	%g1,46,%g4
    511 	xor	%g3,%o1,%o1
    512 	srlx	%g1,41,%g3
    513 	xor	%g4,%o1,%o1
    514 	sllx	%g1,50,%g4
    515 	xor	%g3,%o1,%o1
    516 	xor	%o0,%g5,%g5		! Ch(e,f,g)
    517 	xor	%g4,%o1,%g3		! Sigma1(e)
    518 
    519 	srlx	%o2,28,%o1
    520 	add	%g5,%g2,%g2
    521 	ldx	[%i3+48],%g5	! K[6]
    522 	sllx	%o2,25,%g4
    523 	add	%g3,%g2,%g2
    524 	srlx	%o2,34,%g3
    525 	xor	%g4,%o1,%o1
    526 	sllx	%o2,30,%g4
    527 	xor	%g3,%o1,%o1
    528 	srlx	%o2,39,%g3
    529 	xor	%g4,%o1,%o1
    530 	sllx	%o2,36,%g4
    531 	xor	%g3,%o1,%o1
    532 	xor	%g4,%o1,%o1		! Sigma0(a)
    533 
    534 	or	%o2,%o3,%g3
    535 	and	%o2,%o3,%g4
    536 	and	%o4,%g3,%g3
    537 	or	%g3,%g4,%g4	! Maj(a,b,c)
    538 	add	%g5,%g2,%g2		! +=K[6]
    539 	add	%g4,%o1,%o1
    540 
    541 	add	%g2,%o5,%o5
    542 	add	%g2,%o1,%o1
    543 	sllx	%l7,%i4,%g5	! Xload(7)
    544 	add	%i4,32,%g3
    545 	sllx	%l6,%g3,%g4
    546 	ld	[%i1+88],%l6
    547 	srlx	%l0,%i5,%l7
    548 	or	%g4,%g5,%g5
    549 	or	%l7,%g5,%g5
    550 	ld	[%i1+92],%l7
    551 	add	%o0,%g5,%g2
    552 	stx	%g5,[%sp+STACK_BIAS+STACK_FRAME+56]
    553 	srlx	%o5,14,%o0	!! 7
    554 	xor	%g1,%o7,%g5
    555 	sllx	%o5,23,%g4
    556 	and	%o5,%g5,%g5
    557 	srlx	%o5,18,%g3
    558 	xor	%g4,%o0,%o0
    559 	sllx	%o5,46,%g4
    560 	xor	%g3,%o0,%o0
    561 	srlx	%o5,41,%g3
    562 	xor	%g4,%o0,%o0
    563 	sllx	%o5,50,%g4
    564 	xor	%g3,%o0,%o0
    565 	xor	%o7,%g5,%g5		! Ch(e,f,g)
    566 	xor	%g4,%o0,%g3		! Sigma1(e)
    567 
    568 	srlx	%o1,28,%o0
    569 	add	%g5,%g2,%g2
    570 	ldx	[%i3+56],%g5	! K[7]
    571 	sllx	%o1,25,%g4
    572 	add	%g3,%g2,%g2
    573 	srlx	%o1,34,%g3
    574 	xor	%g4,%o0,%o0
    575 	sllx	%o1,30,%g4
    576 	xor	%g3,%o0,%o0
    577 	srlx	%o1,39,%g3
    578 	xor	%g4,%o0,%o0
    579 	sllx	%o1,36,%g4
    580 	xor	%g3,%o0,%o0
    581 	xor	%g4,%o0,%o0		! Sigma0(a)
    582 
    583 	or	%o1,%o2,%g3
    584 	and	%o1,%o2,%g4
    585 	and	%o3,%g3,%g3
    586 	or	%g3,%g4,%g4	! Maj(a,b,c)
    587 	add	%g5,%g2,%g2		! +=K[7]
    588 	add	%g4,%o0,%o0
    589 
    590 	add	%g2,%o4,%o4
    591 	add	%g2,%o0,%o0
    592 	sllx	%l1,%i4,%g5	! Xload(8)
    593 	add	%i4,32,%g3
    594 	sllx	%l0,%g3,%g4
    595 	ld	[%i1+96],%l0
    596 	srlx	%l2,%i5,%l1
    597 	or	%g4,%g5,%g5
    598 	or	%l1,%g5,%g5
    599 	ld	[%i1+100],%l1
    600 	add	%o7,%g5,%g2
    601 	stx	%g5,[%sp+STACK_BIAS+STACK_FRAME+64]
    602 	srlx	%o4,14,%o7	!! 8
    603 	xor	%o5,%g1,%g5
    604 	sllx	%o4,23,%g4
    605 	and	%o4,%g5,%g5
    606 	srlx	%o4,18,%g3
    607 	xor	%g4,%o7,%o7
    608 	sllx	%o4,46,%g4
    609 	xor	%g3,%o7,%o7
    610 	srlx	%o4,41,%g3
    611 	xor	%g4,%o7,%o7
    612 	sllx	%o4,50,%g4
    613 	xor	%g3,%o7,%o7
    614 	xor	%g1,%g5,%g5		! Ch(e,f,g)
    615 	xor	%g4,%o7,%g3		! Sigma1(e)
    616 
    617 	srlx	%o0,28,%o7
    618 	add	%g5,%g2,%g2
    619 	ldx	[%i3+64],%g5	! K[8]
    620 	sllx	%o0,25,%g4
    621 	add	%g3,%g2,%g2
    622 	srlx	%o0,34,%g3
    623 	xor	%g4,%o7,%o7
    624 	sllx	%o0,30,%g4
    625 	xor	%g3,%o7,%o7
    626 	srlx	%o0,39,%g3
    627 	xor	%g4,%o7,%o7
    628 	sllx	%o0,36,%g4
    629 	xor	%g3,%o7,%o7
    630 	xor	%g4,%o7,%o7		! Sigma0(a)
    631 
    632 	or	%o0,%o1,%g3
    633 	and	%o0,%o1,%g4
    634 	and	%o2,%g3,%g3
    635 	or	%g3,%g4,%g4	! Maj(a,b,c)
    636 	add	%g5,%g2,%g2		! +=K[8]
    637 	add	%g4,%o7,%o7
    638 
    639 	add	%g2,%o3,%o3
    640 	add	%g2,%o7,%o7
    641 	sllx	%l3,%i4,%g5	! Xload(9)
    642 	add	%i4,32,%g3
    643 	sllx	%l2,%g3,%g4
    644 	ld	[%i1+104],%l2
    645 	srlx	%l4,%i5,%l3
    646 	or	%g4,%g5,%g5
    647 	or	%l3,%g5,%g5
    648 	ld	[%i1+108],%l3
    649 	add	%g1,%g5,%g2
    650 	stx	%g5,[%sp+STACK_BIAS+STACK_FRAME+72]
    651 	srlx	%o3,14,%g1	!! 9
    652 	xor	%o4,%o5,%g5
    653 	sllx	%o3,23,%g4
    654 	and	%o3,%g5,%g5
    655 	srlx	%o3,18,%g3
    656 	xor	%g4,%g1,%g1
    657 	sllx	%o3,46,%g4
    658 	xor	%g3,%g1,%g1
    659 	srlx	%o3,41,%g3
    660 	xor	%g4,%g1,%g1
    661 	sllx	%o3,50,%g4
    662 	xor	%g3,%g1,%g1
    663 	xor	%o5,%g5,%g5		! Ch(e,f,g)
    664 	xor	%g4,%g1,%g3		! Sigma1(e)
    665 
    666 	srlx	%o7,28,%g1
    667 	add	%g5,%g2,%g2
    668 	ldx	[%i3+72],%g5	! K[9]
    669 	sllx	%o7,25,%g4
    670 	add	%g3,%g2,%g2
    671 	srlx	%o7,34,%g3
    672 	xor	%g4,%g1,%g1
    673 	sllx	%o7,30,%g4
    674 	xor	%g3,%g1,%g1
    675 	srlx	%o7,39,%g3
    676 	xor	%g4,%g1,%g1
    677 	sllx	%o7,36,%g4
    678 	xor	%g3,%g1,%g1
    679 	xor	%g4,%g1,%g1		! Sigma0(a)
    680 
    681 	or	%o7,%o0,%g3
    682 	and	%o7,%o0,%g4
    683 	and	%o1,%g3,%g3
    684 	or	%g3,%g4,%g4	! Maj(a,b,c)
    685 	add	%g5,%g2,%g2		! +=K[9]
    686 	add	%g4,%g1,%g1
    687 
    688 	add	%g2,%o2,%o2
    689 	add	%g2,%g1,%g1
    690 	sllx	%l5,%i4,%g5	! Xload(10)
    691 	add	%i4,32,%g3
    692 	sllx	%l4,%g3,%g4
    693 	ld	[%i1+112],%l4
    694 	srlx	%l6,%i5,%l5
    695 	or	%g4,%g5,%g5
    696 	or	%l5,%g5,%g5
    697 	ld	[%i1+116],%l5
    698 	add	%o5,%g5,%g2
    699 	stx	%g5,[%sp+STACK_BIAS+STACK_FRAME+80]
    700 	srlx	%o2,14,%o5	!! 10
    701 	xor	%o3,%o4,%g5
    702 	sllx	%o2,23,%g4
    703 	and	%o2,%g5,%g5
    704 	srlx	%o2,18,%g3
    705 	xor	%g4,%o5,%o5
    706 	sllx	%o2,46,%g4
    707 	xor	%g3,%o5,%o5
    708 	srlx	%o2,41,%g3
    709 	xor	%g4,%o5,%o5
    710 	sllx	%o2,50,%g4
    711 	xor	%g3,%o5,%o5
    712 	xor	%o4,%g5,%g5		! Ch(e,f,g)
    713 	xor	%g4,%o5,%g3		! Sigma1(e)
    714 
    715 	srlx	%g1,28,%o5
    716 	add	%g5,%g2,%g2
    717 	ldx	[%i3+80],%g5	! K[10]
    718 	sllx	%g1,25,%g4
    719 	add	%g3,%g2,%g2
    720 	srlx	%g1,34,%g3
    721 	xor	%g4,%o5,%o5
    722 	sllx	%g1,30,%g4
    723 	xor	%g3,%o5,%o5
    724 	srlx	%g1,39,%g3
    725 	xor	%g4,%o5,%o5
    726 	sllx	%g1,36,%g4
    727 	xor	%g3,%o5,%o5
    728 	xor	%g4,%o5,%o5		! Sigma0(a)
    729 
    730 	or	%g1,%o7,%g3
    731 	and	%g1,%o7,%g4
    732 	and	%o0,%g3,%g3
    733 	or	%g3,%g4,%g4	! Maj(a,b,c)
    734 	add	%g5,%g2,%g2		! +=K[10]
    735 	add	%g4,%o5,%o5
    736 
    737 	add	%g2,%o1,%o1
    738 	add	%g2,%o5,%o5
    739 	sllx	%l7,%i4,%g5	! Xload(11)
    740 	add	%i4,32,%g3
    741 	sllx	%l6,%g3,%g4
    742 	ld	[%i1+120],%l6
    743 	srlx	%l0,%i5,%l7
    744 	or	%g4,%g5,%g5
    745 	or	%l7,%g5,%g5
    746 	ld	[%i1+124],%l7
    747 	add	%o4,%g5,%g2
    748 	stx	%g5,[%sp+STACK_BIAS+STACK_FRAME+88]
    749 	srlx	%o1,14,%o4	!! 11
    750 	xor	%o2,%o3,%g5
    751 	sllx	%o1,23,%g4
    752 	and	%o1,%g5,%g5
    753 	srlx	%o1,18,%g3
    754 	xor	%g4,%o4,%o4
    755 	sllx	%o1,46,%g4
    756 	xor	%g3,%o4,%o4
    757 	srlx	%o1,41,%g3
    758 	xor	%g4,%o4,%o4
    759 	sllx	%o1,50,%g4
    760 	xor	%g3,%o4,%o4
    761 	xor	%o3,%g5,%g5		! Ch(e,f,g)
    762 	xor	%g4,%o4,%g3		! Sigma1(e)
    763 
    764 	srlx	%o5,28,%o4
    765 	add	%g5,%g2,%g2
    766 	ldx	[%i3+88],%g5	! K[11]
    767 	sllx	%o5,25,%g4
    768 	add	%g3,%g2,%g2
    769 	srlx	%o5,34,%g3
    770 	xor	%g4,%o4,%o4
    771 	sllx	%o5,30,%g4
    772 	xor	%g3,%o4,%o4
    773 	srlx	%o5,39,%g3
    774 	xor	%g4,%o4,%o4
    775 	sllx	%o5,36,%g4
    776 	xor	%g3,%o4,%o4
    777 	xor	%g4,%o4,%o4		! Sigma0(a)
    778 
    779 	or	%o5,%g1,%g3
    780 	and	%o5,%g1,%g4
    781 	and	%o7,%g3,%g3
    782 	or	%g3,%g4,%g4	! Maj(a,b,c)
    783 	add	%g5,%g2,%g2		! +=K[11]
    784 	add	%g4,%o4,%o4
    785 
    786 	add	%g2,%o0,%o0
    787 	add	%g2,%o4,%o4
    788 	sllx	%l1,%i4,%g5	! Xload(12)
    789 	add	%i4,32,%g3
    790 	sllx	%l0,%g3,%g4
    791 
    792 	srlx	%l2,%i5,%l1
    793 	or	%g4,%g5,%g5
    794 	or	%l1,%g5,%g5
    795 
    796 	add	%o3,%g5,%g2
    797 	stx	%g5,[%sp+STACK_BIAS+STACK_FRAME+96]
    798 	bnz,a,pn	%icc,.+8
    799 	ld	[%i1+128],%l0
    800 	srlx	%o0,14,%o3	!! 12
    801 	xor	%o1,%o2,%g5
    802 	sllx	%o0,23,%g4
    803 	and	%o0,%g5,%g5
    804 	srlx	%o0,18,%g3
    805 	xor	%g4,%o3,%o3
    806 	sllx	%o0,46,%g4
    807 	xor	%g3,%o3,%o3
    808 	srlx	%o0,41,%g3
    809 	xor	%g4,%o3,%o3
    810 	sllx	%o0,50,%g4
    811 	xor	%g3,%o3,%o3
    812 	xor	%o2,%g5,%g5		! Ch(e,f,g)
    813 	xor	%g4,%o3,%g3		! Sigma1(e)
    814 
    815 	srlx	%o4,28,%o3
    816 	add	%g5,%g2,%g2
    817 	ldx	[%i3+96],%g5	! K[12]
    818 	sllx	%o4,25,%g4
    819 	add	%g3,%g2,%g2
    820 	srlx	%o4,34,%g3
    821 	xor	%g4,%o3,%o3
    822 	sllx	%o4,30,%g4
    823 	xor	%g3,%o3,%o3
    824 	srlx	%o4,39,%g3
    825 	xor	%g4,%o3,%o3
    826 	sllx	%o4,36,%g4
    827 	xor	%g3,%o3,%o3
    828 	xor	%g4,%o3,%o3		! Sigma0(a)
    829 
    830 	or	%o4,%o5,%g3
    831 	and	%o4,%o5,%g4
    832 	and	%g1,%g3,%g3
    833 	or	%g3,%g4,%g4	! Maj(a,b,c)
    834 	add	%g5,%g2,%g2		! +=K[12]
    835 	add	%g4,%o3,%o3
    836 
    837 	add	%g2,%o7,%o7
    838 	add	%g2,%o3,%o3
    839 	sllx	%l3,%i4,%g5	! Xload(13)
    840 	add	%i4,32,%g3
    841 	sllx	%l2,%g3,%g4
    842 
    843 	srlx	%l4,%i5,%l3
    844 	or	%g4,%g5,%g5
    845 	or	%l3,%g5,%g5
    846 
    847 	add	%o2,%g5,%g2
    848 	stx	%g5,[%sp+STACK_BIAS+STACK_FRAME+104]
    849 	srlx	%o7,14,%o2	!! 13
    850 	xor	%o0,%o1,%g5
    851 	sllx	%o7,23,%g4
    852 	and	%o7,%g5,%g5
    853 	srlx	%o7,18,%g3
    854 	xor	%g4,%o2,%o2
    855 	sllx	%o7,46,%g4
    856 	xor	%g3,%o2,%o2
    857 	srlx	%o7,41,%g3
    858 	xor	%g4,%o2,%o2
    859 	sllx	%o7,50,%g4
    860 	xor	%g3,%o2,%o2
    861 	xor	%o1,%g5,%g5		! Ch(e,f,g)
    862 	xor	%g4,%o2,%g3		! Sigma1(e)
    863 
    864 	srlx	%o3,28,%o2
    865 	add	%g5,%g2,%g2
    866 	ldx	[%i3+104],%g5	! K[13]
    867 	sllx	%o3,25,%g4
    868 	add	%g3,%g2,%g2
    869 	srlx	%o3,34,%g3
    870 	xor	%g4,%o2,%o2
    871 	sllx	%o3,30,%g4
    872 	xor	%g3,%o2,%o2
    873 	srlx	%o3,39,%g3
    874 	xor	%g4,%o2,%o2
    875 	sllx	%o3,36,%g4
    876 	xor	%g3,%o2,%o2
    877 	xor	%g4,%o2,%o2		! Sigma0(a)
    878 
    879 	or	%o3,%o4,%g3
    880 	and	%o3,%o4,%g4
    881 	and	%o5,%g3,%g3
    882 	or	%g3,%g4,%g4	! Maj(a,b,c)
    883 	add	%g5,%g2,%g2		! +=K[13]
    884 	add	%g4,%o2,%o2
    885 
    886 	add	%g2,%g1,%g1
    887 	add	%g2,%o2,%o2
    888 	sllx	%l5,%i4,%g5	! Xload(14)
    889 	add	%i4,32,%g3
    890 	sllx	%l4,%g3,%g4
    891 
    892 	srlx	%l6,%i5,%l5
    893 	or	%g4,%g5,%g5
    894 	or	%l5,%g5,%g5
    895 
    896 	add	%o1,%g5,%g2
    897 	stx	%g5,[%sp+STACK_BIAS+STACK_FRAME+112]
    898 	srlx	%g1,14,%o1	!! 14
    899 	xor	%o7,%o0,%g5
    900 	sllx	%g1,23,%g4
    901 	and	%g1,%g5,%g5
    902 	srlx	%g1,18,%g3
    903 	xor	%g4,%o1,%o1
    904 	sllx	%g1,46,%g4
    905 	xor	%g3,%o1,%o1
    906 	srlx	%g1,41,%g3
    907 	xor	%g4,%o1,%o1
    908 	sllx	%g1,50,%g4
    909 	xor	%g3,%o1,%o1
    910 	xor	%o0,%g5,%g5		! Ch(e,f,g)
    911 	xor	%g4,%o1,%g3		! Sigma1(e)
    912 
    913 	srlx	%o2,28,%o1
    914 	add	%g5,%g2,%g2
    915 	ldx	[%i3+112],%g5	! K[14]
    916 	sllx	%o2,25,%g4
    917 	add	%g3,%g2,%g2
    918 	srlx	%o2,34,%g3
    919 	xor	%g4,%o1,%o1
    920 	sllx	%o2,30,%g4
    921 	xor	%g3,%o1,%o1
    922 	srlx	%o2,39,%g3
    923 	xor	%g4,%o1,%o1
    924 	sllx	%o2,36,%g4
    925 	xor	%g3,%o1,%o1
    926 	xor	%g4,%o1,%o1		! Sigma0(a)
    927 
    928 	or	%o2,%o3,%g3
    929 	and	%o2,%o3,%g4
    930 	and	%o4,%g3,%g3
    931 	or	%g3,%g4,%g4	! Maj(a,b,c)
    932 	add	%g5,%g2,%g2		! +=K[14]
    933 	add	%g4,%o1,%o1
    934 
    935 	add	%g2,%o5,%o5
    936 	add	%g2,%o1,%o1
    937 	ld	[%sp+STACK_BIAS+STACK_FRAME+8],%l2
    938 	sllx	%l7,%i4,%g5	! Xload(15)
    939 	add	%i4,32,%g3
    940 	ld	[%sp+STACK_BIAS+STACK_FRAME+12],%l3
    941 	sllx	%l6,%g3,%g4
    942 	ld	[%sp+STACK_BIAS+STACK_FRAME+72],%l4
    943 	srlx	%l0,%i5,%l7
    944 	or	%g4,%g5,%g5
    945 	ld	[%sp+STACK_BIAS+STACK_FRAME+76],%l5
    946 	or	%l7,%g5,%g5
    947 	ld	[%sp+STACK_BIAS+STACK_FRAME+112],%l6
    948 	add	%o0,%g5,%g2
    949 	stx	%g5,[%sp+STACK_BIAS+STACK_FRAME+120]
    950 	ld	[%sp+STACK_BIAS+STACK_FRAME+116],%l7
    951 	ld	[%sp+STACK_BIAS+STACK_FRAME+0],%l0
    952 	ld	[%sp+STACK_BIAS+STACK_FRAME+4],%l1
    953 	srlx	%o5,14,%o0	!! 15
    954 	xor	%g1,%o7,%g5
    955 	sllx	%o5,23,%g4
    956 	and	%o5,%g5,%g5
    957 	srlx	%o5,18,%g3
    958 	xor	%g4,%o0,%o0
    959 	sllx	%o5,46,%g4
    960 	xor	%g3,%o0,%o0
    961 	srlx	%o5,41,%g3
    962 	xor	%g4,%o0,%o0
    963 	sllx	%o5,50,%g4
    964 	xor	%g3,%o0,%o0
    965 	xor	%o7,%g5,%g5		! Ch(e,f,g)
    966 	xor	%g4,%o0,%g3		! Sigma1(e)
    967 
    968 	srlx	%o1,28,%o0
    969 	add	%g5,%g2,%g2
    970 	ldx	[%i3+120],%g5	! K[15]
    971 	sllx	%o1,25,%g4
    972 	add	%g3,%g2,%g2
    973 	srlx	%o1,34,%g3
    974 	xor	%g4,%o0,%o0
    975 	sllx	%o1,30,%g4
    976 	xor	%g3,%o0,%o0
    977 	srlx	%o1,39,%g3
    978 	xor	%g4,%o0,%o0
    979 	sllx	%o1,36,%g4
    980 	xor	%g3,%o0,%o0
    981 	xor	%g4,%o0,%o0		! Sigma0(a)
    982 
    983 	or	%o1,%o2,%g3
    984 	and	%o1,%o2,%g4
    985 	and	%o3,%g3,%g3
    986 	or	%g3,%g4,%g4	! Maj(a,b,c)
    987 	add	%g5,%g2,%g2		! +=K[15]
    988 	add	%g4,%o0,%o0
    989 
    990 	add	%g2,%o4,%o4
    991 	add	%g2,%o0,%o0
    992 .L16_xx:
    993 	sllx	%l2,32,%g3		!! Xupdate(16)
    994 	or	%l3,%g3,%g3
    995 
    996 	srlx	%g3,7,%g2
    997 	ld	[%sp+STACK_BIAS+STACK_FRAME+16],%l2
    998 	sllx	%g3,56,%g4
    999 	ld	[%sp+STACK_BIAS+STACK_FRAME+20],%l3
   1000 	srlx	%g3,1,%g3
   1001 	xor	%g4,%g2,%g2
   1002 	sllx	%g4,7,%g4
   1003 	xor	%g3,%g2,%g2
   1004 	srlx	%g3,7,%g3
   1005 	xor	%g4,%g2,%g2
   1006 	sllx	%l6,32,%g5
   1007 	xor	%g3,%g2,%g2		! sigma0(X[16+1])
   1008 	or	%l7,%g5,%g5
   1009 
   1010 	srlx	%g5,6,%g4
   1011 	ld	[%sp+STACK_BIAS+STACK_FRAME+120],%l6
   1012 	sllx	%g5,3,%g3
   1013 	ld	[%sp+STACK_BIAS+STACK_FRAME+124],%l7
   1014 	srlx	%g5,19,%g5
   1015 	xor	%g3,%g4,%g4
   1016 	sllx	%g3,42,%g3
   1017 	xor	%g5,%g4,%g4
   1018 	srlx	%g5,42,%g5
   1019 	xor	%g3,%g4,%g4
   1020 	sllx	%l4,32,%g3
   1021 	xor	%g5,%g4,%g4	! sigma1(X[16+14])
   1022 	ld	[%sp+STACK_BIAS+STACK_FRAME+80],%l4
   1023 	or	%l5,%g3,%g3
   1024 	ld	[%sp+STACK_BIAS+STACK_FRAME+84],%l5
   1025 
   1026 	sllx	%l0,32,%g5
   1027 	add	%g4,%g2,%g2
   1028 	ld	[%sp+STACK_BIAS+STACK_FRAME+8],%l0
   1029 	or	%l1,%g5,%g5
   1030 	add	%g3,%g2,%g2		! +=X[16+9]
   1031 	ld	[%sp+STACK_BIAS+STACK_FRAME+12],%l1
   1032 	add	%g5,%g2,%g2		! +=X[16]
   1033 	stx	%g2,[%sp+STACK_BIAS+STACK_FRAME+0]
   1034 	add	%o7,%g2,%g2
   1035 	srlx	%o4,14,%o7	!! 16
   1036 	xor	%o5,%g1,%g5
   1037 	sllx	%o4,23,%g4
   1038 	and	%o4,%g5,%g5
   1039 	srlx	%o4,18,%g3
   1040 	xor	%g4,%o7,%o7
   1041 	sllx	%o4,46,%g4
   1042 	xor	%g3,%o7,%o7
   1043 	srlx	%o4,41,%g3
   1044 	xor	%g4,%o7,%o7
   1045 	sllx	%o4,50,%g4
   1046 	xor	%g3,%o7,%o7
   1047 	xor	%g1,%g5,%g5		! Ch(e,f,g)
   1048 	xor	%g4,%o7,%g3		! Sigma1(e)
   1049 
   1050 	srlx	%o0,28,%o7
   1051 	add	%g5,%g2,%g2
   1052 	ldx	[%i3+128],%g5	! K[16]
   1053 	sllx	%o0,25,%g4
   1054 	add	%g3,%g2,%g2
   1055 	srlx	%o0,34,%g3
   1056 	xor	%g4,%o7,%o7
   1057 	sllx	%o0,30,%g4
   1058 	xor	%g3,%o7,%o7
   1059 	srlx	%o0,39,%g3
   1060 	xor	%g4,%o7,%o7
   1061 	sllx	%o0,36,%g4
   1062 	xor	%g3,%o7,%o7
   1063 	xor	%g4,%o7,%o7		! Sigma0(a)
   1064 
   1065 	or	%o0,%o1,%g3
   1066 	and	%o0,%o1,%g4
   1067 	and	%o2,%g3,%g3
   1068 	or	%g3,%g4,%g4	! Maj(a,b,c)
   1069 	add	%g5,%g2,%g2		! +=K[16]
   1070 	add	%g4,%o7,%o7
   1071 
   1072 	add	%g2,%o3,%o3
   1073 	add	%g2,%o7,%o7
   1074 	sllx	%l2,32,%g3		!! Xupdate(17)
   1075 	or	%l3,%g3,%g3
   1076 
   1077 	srlx	%g3,7,%g2
   1078 	ld	[%sp+STACK_BIAS+STACK_FRAME+24],%l2
   1079 	sllx	%g3,56,%g4
   1080 	ld	[%sp+STACK_BIAS+STACK_FRAME+28],%l3
   1081 	srlx	%g3,1,%g3
   1082 	xor	%g4,%g2,%g2
   1083 	sllx	%g4,7,%g4
   1084 	xor	%g3,%g2,%g2
   1085 	srlx	%g3,7,%g3
   1086 	xor	%g4,%g2,%g2
   1087 	sllx	%l6,32,%g5
   1088 	xor	%g3,%g2,%g2		! sigma0(X[17+1])
   1089 	or	%l7,%g5,%g5
   1090 
   1091 	srlx	%g5,6,%g4
   1092 	ld	[%sp+STACK_BIAS+STACK_FRAME+0],%l6
   1093 	sllx	%g5,3,%g3
   1094 	ld	[%sp+STACK_BIAS+STACK_FRAME+4],%l7
   1095 	srlx	%g5,19,%g5
   1096 	xor	%g3,%g4,%g4
   1097 	sllx	%g3,42,%g3
   1098 	xor	%g5,%g4,%g4
   1099 	srlx	%g5,42,%g5
   1100 	xor	%g3,%g4,%g4
   1101 	sllx	%l4,32,%g3
   1102 	xor	%g5,%g4,%g4	! sigma1(X[17+14])
   1103 	ld	[%sp+STACK_BIAS+STACK_FRAME+88],%l4
   1104 	or	%l5,%g3,%g3
   1105 	ld	[%sp+STACK_BIAS+STACK_FRAME+92],%l5
   1106 
   1107 	sllx	%l0,32,%g5
   1108 	add	%g4,%g2,%g2
   1109 	ld	[%sp+STACK_BIAS+STACK_FRAME+16],%l0
   1110 	or	%l1,%g5,%g5
   1111 	add	%g3,%g2,%g2		! +=X[17+9]
   1112 	ld	[%sp+STACK_BIAS+STACK_FRAME+20],%l1
   1113 	add	%g5,%g2,%g2		! +=X[17]
   1114 	stx	%g2,[%sp+STACK_BIAS+STACK_FRAME+8]
   1115 	add	%g1,%g2,%g2
   1116 	srlx	%o3,14,%g1	!! 17
   1117 	xor	%o4,%o5,%g5
   1118 	sllx	%o3,23,%g4
   1119 	and	%o3,%g5,%g5
   1120 	srlx	%o3,18,%g3
   1121 	xor	%g4,%g1,%g1
   1122 	sllx	%o3,46,%g4
   1123 	xor	%g3,%g1,%g1
   1124 	srlx	%o3,41,%g3
   1125 	xor	%g4,%g1,%g1
   1126 	sllx	%o3,50,%g4
   1127 	xor	%g3,%g1,%g1
   1128 	xor	%o5,%g5,%g5		! Ch(e,f,g)
   1129 	xor	%g4,%g1,%g3		! Sigma1(e)
   1130 
   1131 	srlx	%o7,28,%g1
   1132 	add	%g5,%g2,%g2
   1133 	ldx	[%i3+136],%g5	! K[17]
   1134 	sllx	%o7,25,%g4
   1135 	add	%g3,%g2,%g2
   1136 	srlx	%o7,34,%g3
   1137 	xor	%g4,%g1,%g1
   1138 	sllx	%o7,30,%g4
   1139 	xor	%g3,%g1,%g1
   1140 	srlx	%o7,39,%g3
   1141 	xor	%g4,%g1,%g1
   1142 	sllx	%o7,36,%g4
   1143 	xor	%g3,%g1,%g1
   1144 	xor	%g4,%g1,%g1		! Sigma0(a)
   1145 
   1146 	or	%o7,%o0,%g3
   1147 	and	%o7,%o0,%g4
   1148 	and	%o1,%g3,%g3
   1149 	or	%g3,%g4,%g4	! Maj(a,b,c)
   1150 	add	%g5,%g2,%g2		! +=K[17]
   1151 	add	%g4,%g1,%g1
   1152 
   1153 	add	%g2,%o2,%o2
   1154 	add	%g2,%g1,%g1
   1155 	sllx	%l2,32,%g3		!! Xupdate(18)
   1156 	or	%l3,%g3,%g3
   1157 
   1158 	srlx	%g3,7,%g2
   1159 	ld	[%sp+STACK_BIAS+STACK_FRAME+32],%l2
   1160 	sllx	%g3,56,%g4
   1161 	ld	[%sp+STACK_BIAS+STACK_FRAME+36],%l3
   1162 	srlx	%g3,1,%g3
   1163 	xor	%g4,%g2,%g2
   1164 	sllx	%g4,7,%g4
   1165 	xor	%g3,%g2,%g2
   1166 	srlx	%g3,7,%g3
   1167 	xor	%g4,%g2,%g2
   1168 	sllx	%l6,32,%g5
   1169 	xor	%g3,%g2,%g2		! sigma0(X[18+1])
   1170 	or	%l7,%g5,%g5
   1171 
   1172 	srlx	%g5,6,%g4
   1173 	ld	[%sp+STACK_BIAS+STACK_FRAME+8],%l6
   1174 	sllx	%g5,3,%g3
   1175 	ld	[%sp+STACK_BIAS+STACK_FRAME+12],%l7
   1176 	srlx	%g5,19,%g5
   1177 	xor	%g3,%g4,%g4
   1178 	sllx	%g3,42,%g3
   1179 	xor	%g5,%g4,%g4
   1180 	srlx	%g5,42,%g5
   1181 	xor	%g3,%g4,%g4
   1182 	sllx	%l4,32,%g3
   1183 	xor	%g5,%g4,%g4	! sigma1(X[18+14])
   1184 	ld	[%sp+STACK_BIAS+STACK_FRAME+96],%l4
   1185 	or	%l5,%g3,%g3
   1186 	ld	[%sp+STACK_BIAS+STACK_FRAME+100],%l5
   1187 
   1188 	sllx	%l0,32,%g5
   1189 	add	%g4,%g2,%g2
   1190 	ld	[%sp+STACK_BIAS+STACK_FRAME+24],%l0
   1191 	or	%l1,%g5,%g5
   1192 	add	%g3,%g2,%g2		! +=X[18+9]
   1193 	ld	[%sp+STACK_BIAS+STACK_FRAME+28],%l1
   1194 	add	%g5,%g2,%g2		! +=X[18]
   1195 	stx	%g2,[%sp+STACK_BIAS+STACK_FRAME+16]
   1196 	add	%o5,%g2,%g2
   1197 	srlx	%o2,14,%o5	!! 18
   1198 	xor	%o3,%o4,%g5
   1199 	sllx	%o2,23,%g4
   1200 	and	%o2,%g5,%g5
   1201 	srlx	%o2,18,%g3
   1202 	xor	%g4,%o5,%o5
   1203 	sllx	%o2,46,%g4
   1204 	xor	%g3,%o5,%o5
   1205 	srlx	%o2,41,%g3
   1206 	xor	%g4,%o5,%o5
   1207 	sllx	%o2,50,%g4
   1208 	xor	%g3,%o5,%o5
   1209 	xor	%o4,%g5,%g5		! Ch(e,f,g)
   1210 	xor	%g4,%o5,%g3		! Sigma1(e)
   1211 
   1212 	srlx	%g1,28,%o5
   1213 	add	%g5,%g2,%g2
   1214 	ldx	[%i3+144],%g5	! K[18]
   1215 	sllx	%g1,25,%g4
   1216 	add	%g3,%g2,%g2
   1217 	srlx	%g1,34,%g3
   1218 	xor	%g4,%o5,%o5
   1219 	sllx	%g1,30,%g4
   1220 	xor	%g3,%o5,%o5
   1221 	srlx	%g1,39,%g3
   1222 	xor	%g4,%o5,%o5
   1223 	sllx	%g1,36,%g4
   1224 	xor	%g3,%o5,%o5
   1225 	xor	%g4,%o5,%o5		! Sigma0(a)
   1226 
   1227 	or	%g1,%o7,%g3
   1228 	and	%g1,%o7,%g4
   1229 	and	%o0,%g3,%g3
   1230 	or	%g3,%g4,%g4	! Maj(a,b,c)
   1231 	add	%g5,%g2,%g2		! +=K[18]
   1232 	add	%g4,%o5,%o5
   1233 
   1234 	add	%g2,%o1,%o1
   1235 	add	%g2,%o5,%o5
   1236 	sllx	%l2,32,%g3		!! Xupdate(19)
   1237 	or	%l3,%g3,%g3
   1238 
   1239 	srlx	%g3,7,%g2
   1240 	ld	[%sp+STACK_BIAS+STACK_FRAME+40],%l2
   1241 	sllx	%g3,56,%g4
   1242 	ld	[%sp+STACK_BIAS+STACK_FRAME+44],%l3
   1243 	srlx	%g3,1,%g3
   1244 	xor	%g4,%g2,%g2
   1245 	sllx	%g4,7,%g4
   1246 	xor	%g3,%g2,%g2
   1247 	srlx	%g3,7,%g3
   1248 	xor	%g4,%g2,%g2
   1249 	sllx	%l6,32,%g5
   1250 	xor	%g3,%g2,%g2		! sigma0(X[19+1])
   1251 	or	%l7,%g5,%g5
   1252 
   1253 	srlx	%g5,6,%g4
   1254 	ld	[%sp+STACK_BIAS+STACK_FRAME+16],%l6
   1255 	sllx	%g5,3,%g3
   1256 	ld	[%sp+STACK_BIAS+STACK_FRAME+20],%l7
   1257 	srlx	%g5,19,%g5
   1258 	xor	%g3,%g4,%g4
   1259 	sllx	%g3,42,%g3
   1260 	xor	%g5,%g4,%g4
   1261 	srlx	%g5,42,%g5
   1262 	xor	%g3,%g4,%g4
   1263 	sllx	%l4,32,%g3
   1264 	xor	%g5,%g4,%g4	! sigma1(X[19+14])
   1265 	ld	[%sp+STACK_BIAS+STACK_FRAME+104],%l4
   1266 	or	%l5,%g3,%g3
   1267 	ld	[%sp+STACK_BIAS+STACK_FRAME+108],%l5
   1268 
   1269 	sllx	%l0,32,%g5
   1270 	add	%g4,%g2,%g2
   1271 	ld	[%sp+STACK_BIAS+STACK_FRAME+32],%l0
   1272 	or	%l1,%g5,%g5
   1273 	add	%g3,%g2,%g2		! +=X[19+9]
   1274 	ld	[%sp+STACK_BIAS+STACK_FRAME+36],%l1
   1275 	add	%g5,%g2,%g2		! +=X[19]
   1276 	stx	%g2,[%sp+STACK_BIAS+STACK_FRAME+24]
   1277 	add	%o4,%g2,%g2
   1278 	srlx	%o1,14,%o4	!! 19
   1279 	xor	%o2,%o3,%g5
   1280 	sllx	%o1,23,%g4
   1281 	and	%o1,%g5,%g5
   1282 	srlx	%o1,18,%g3
   1283 	xor	%g4,%o4,%o4
   1284 	sllx	%o1,46,%g4
   1285 	xor	%g3,%o4,%o4
   1286 	srlx	%o1,41,%g3
   1287 	xor	%g4,%o4,%o4
   1288 	sllx	%o1,50,%g4
   1289 	xor	%g3,%o4,%o4
   1290 	xor	%o3,%g5,%g5		! Ch(e,f,g)
   1291 	xor	%g4,%o4,%g3		! Sigma1(e)
   1292 
   1293 	srlx	%o5,28,%o4
   1294 	add	%g5,%g2,%g2
   1295 	ldx	[%i3+152],%g5	! K[19]
   1296 	sllx	%o5,25,%g4
   1297 	add	%g3,%g2,%g2
   1298 	srlx	%o5,34,%g3
   1299 	xor	%g4,%o4,%o4
   1300 	sllx	%o5,30,%g4
   1301 	xor	%g3,%o4,%o4
   1302 	srlx	%o5,39,%g3
   1303 	xor	%g4,%o4,%o4
   1304 	sllx	%o5,36,%g4
   1305 	xor	%g3,%o4,%o4
   1306 	xor	%g4,%o4,%o4		! Sigma0(a)
   1307 
   1308 	or	%o5,%g1,%g3
   1309 	and	%o5,%g1,%g4
   1310 	and	%o7,%g3,%g3
   1311 	or	%g3,%g4,%g4	! Maj(a,b,c)
   1312 	add	%g5,%g2,%g2		! +=K[19]
   1313 	add	%g4,%o4,%o4
   1314 
   1315 	add	%g2,%o0,%o0
   1316 	add	%g2,%o4,%o4
   1317 	sllx	%l2,32,%g3		!! Xupdate(20)
   1318 	or	%l3,%g3,%g3
   1319 
   1320 	srlx	%g3,7,%g2
   1321 	ld	[%sp+STACK_BIAS+STACK_FRAME+48],%l2
   1322 	sllx	%g3,56,%g4
   1323 	ld	[%sp+STACK_BIAS+STACK_FRAME+52],%l3
   1324 	srlx	%g3,1,%g3
   1325 	xor	%g4,%g2,%g2
   1326 	sllx	%g4,7,%g4
   1327 	xor	%g3,%g2,%g2
   1328 	srlx	%g3,7,%g3
   1329 	xor	%g4,%g2,%g2
   1330 	sllx	%l6,32,%g5
   1331 	xor	%g3,%g2,%g2		! sigma0(X[20+1])
   1332 	or	%l7,%g5,%g5
   1333 
   1334 	srlx	%g5,6,%g4
   1335 	ld	[%sp+STACK_BIAS+STACK_FRAME+24],%l6
   1336 	sllx	%g5,3,%g3
   1337 	ld	[%sp+STACK_BIAS+STACK_FRAME+28],%l7
   1338 	srlx	%g5,19,%g5
   1339 	xor	%g3,%g4,%g4
   1340 	sllx	%g3,42,%g3
   1341 	xor	%g5,%g4,%g4
   1342 	srlx	%g5,42,%g5
   1343 	xor	%g3,%g4,%g4
   1344 	sllx	%l4,32,%g3
   1345 	xor	%g5,%g4,%g4	! sigma1(X[20+14])
   1346 	ld	[%sp+STACK_BIAS+STACK_FRAME+112],%l4
   1347 	or	%l5,%g3,%g3
   1348 	ld	[%sp+STACK_BIAS+STACK_FRAME+116],%l5
   1349 
   1350 	sllx	%l0,32,%g5
   1351 	add	%g4,%g2,%g2
   1352 	ld	[%sp+STACK_BIAS+STACK_FRAME+40],%l0
   1353 	or	%l1,%g5,%g5
   1354 	add	%g3,%g2,%g2		! +=X[20+9]
   1355 	ld	[%sp+STACK_BIAS+STACK_FRAME+44],%l1
   1356 	add	%g5,%g2,%g2		! +=X[20]
   1357 	stx	%g2,[%sp+STACK_BIAS+STACK_FRAME+32]
   1358 	add	%o3,%g2,%g2
   1359 	srlx	%o0,14,%o3	!! 20
   1360 	xor	%o1,%o2,%g5
   1361 	sllx	%o0,23,%g4
   1362 	and	%o0,%g5,%g5
   1363 	srlx	%o0,18,%g3
   1364 	xor	%g4,%o3,%o3
   1365 	sllx	%o0,46,%g4
   1366 	xor	%g3,%o3,%o3
   1367 	srlx	%o0,41,%g3
   1368 	xor	%g4,%o3,%o3
   1369 	sllx	%o0,50,%g4
   1370 	xor	%g3,%o3,%o3
   1371 	xor	%o2,%g5,%g5		! Ch(e,f,g)
   1372 	xor	%g4,%o3,%g3		! Sigma1(e)
   1373 
   1374 	srlx	%o4,28,%o3
   1375 	add	%g5,%g2,%g2
   1376 	ldx	[%i3+160],%g5	! K[20]
   1377 	sllx	%o4,25,%g4
   1378 	add	%g3,%g2,%g2
   1379 	srlx	%o4,34,%g3
   1380 	xor	%g4,%o3,%o3
   1381 	sllx	%o4,30,%g4
   1382 	xor	%g3,%o3,%o3
   1383 	srlx	%o4,39,%g3
   1384 	xor	%g4,%o3,%o3
   1385 	sllx	%o4,36,%g4
   1386 	xor	%g3,%o3,%o3
   1387 	xor	%g4,%o3,%o3		! Sigma0(a)
   1388 
   1389 	or	%o4,%o5,%g3
   1390 	and	%o4,%o5,%g4
   1391 	and	%g1,%g3,%g3
   1392 	or	%g3,%g4,%g4	! Maj(a,b,c)
   1393 	add	%g5,%g2,%g2		! +=K[20]
   1394 	add	%g4,%o3,%o3
   1395 
   1396 	add	%g2,%o7,%o7
   1397 	add	%g2,%o3,%o3
   1398 	sllx	%l2,32,%g3		!! Xupdate(21)
   1399 	or	%l3,%g3,%g3
   1400 
   1401 	srlx	%g3,7,%g2
   1402 	ld	[%sp+STACK_BIAS+STACK_FRAME+56],%l2
   1403 	sllx	%g3,56,%g4
   1404 	ld	[%sp+STACK_BIAS+STACK_FRAME+60],%l3
   1405 	srlx	%g3,1,%g3
   1406 	xor	%g4,%g2,%g2
   1407 	sllx	%g4,7,%g4
   1408 	xor	%g3,%g2,%g2
   1409 	srlx	%g3,7,%g3
   1410 	xor	%g4,%g2,%g2
   1411 	sllx	%l6,32,%g5
   1412 	xor	%g3,%g2,%g2		! sigma0(X[21+1])
   1413 	or	%l7,%g5,%g5
   1414 
   1415 	srlx	%g5,6,%g4
   1416 	ld	[%sp+STACK_BIAS+STACK_FRAME+32],%l6
   1417 	sllx	%g5,3,%g3
   1418 	ld	[%sp+STACK_BIAS+STACK_FRAME+36],%l7
   1419 	srlx	%g5,19,%g5
   1420 	xor	%g3,%g4,%g4
   1421 	sllx	%g3,42,%g3
   1422 	xor	%g5,%g4,%g4
   1423 	srlx	%g5,42,%g5
   1424 	xor	%g3,%g4,%g4
   1425 	sllx	%l4,32,%g3
   1426 	xor	%g5,%g4,%g4	! sigma1(X[21+14])
   1427 	ld	[%sp+STACK_BIAS+STACK_FRAME+120],%l4
   1428 	or	%l5,%g3,%g3
   1429 	ld	[%sp+STACK_BIAS+STACK_FRAME+124],%l5
   1430 
   1431 	sllx	%l0,32,%g5
   1432 	add	%g4,%g2,%g2
   1433 	ld	[%sp+STACK_BIAS+STACK_FRAME+48],%l0
   1434 	or	%l1,%g5,%g5
   1435 	add	%g3,%g2,%g2		! +=X[21+9]
   1436 	ld	[%sp+STACK_BIAS+STACK_FRAME+52],%l1
   1437 	add	%g5,%g2,%g2		! +=X[21]
   1438 	stx	%g2,[%sp+STACK_BIAS+STACK_FRAME+40]
   1439 	add	%o2,%g2,%g2
   1440 	srlx	%o7,14,%o2	!! 21
   1441 	xor	%o0,%o1,%g5
   1442 	sllx	%o7,23,%g4
   1443 	and	%o7,%g5,%g5
   1444 	srlx	%o7,18,%g3
   1445 	xor	%g4,%o2,%o2
   1446 	sllx	%o7,46,%g4
   1447 	xor	%g3,%o2,%o2
   1448 	srlx	%o7,41,%g3
   1449 	xor	%g4,%o2,%o2
   1450 	sllx	%o7,50,%g4
   1451 	xor	%g3,%o2,%o2
   1452 	xor	%o1,%g5,%g5		! Ch(e,f,g)
   1453 	xor	%g4,%o2,%g3		! Sigma1(e)
   1454 
   1455 	srlx	%o3,28,%o2
   1456 	add	%g5,%g2,%g2
   1457 	ldx	[%i3+168],%g5	! K[21]
   1458 	sllx	%o3,25,%g4
   1459 	add	%g3,%g2,%g2
   1460 	srlx	%o3,34,%g3
   1461 	xor	%g4,%o2,%o2
   1462 	sllx	%o3,30,%g4
   1463 	xor	%g3,%o2,%o2
   1464 	srlx	%o3,39,%g3
   1465 	xor	%g4,%o2,%o2
   1466 	sllx	%o3,36,%g4
   1467 	xor	%g3,%o2,%o2
   1468 	xor	%g4,%o2,%o2		! Sigma0(a)
   1469 
   1470 	or	%o3,%o4,%g3
   1471 	and	%o3,%o4,%g4
   1472 	and	%o5,%g3,%g3
   1473 	or	%g3,%g4,%g4	! Maj(a,b,c)
   1474 	add	%g5,%g2,%g2		! +=K[21]
   1475 	add	%g4,%o2,%o2
   1476 
   1477 	add	%g2,%g1,%g1
   1478 	add	%g2,%o2,%o2
   1479 	sllx	%l2,32,%g3		!! Xupdate(22)
   1480 	or	%l3,%g3,%g3
   1481 
   1482 	srlx	%g3,7,%g2
   1483 	ld	[%sp+STACK_BIAS+STACK_FRAME+64],%l2
   1484 	sllx	%g3,56,%g4
   1485 	ld	[%sp+STACK_BIAS+STACK_FRAME+68],%l3
   1486 	srlx	%g3,1,%g3
   1487 	xor	%g4,%g2,%g2
   1488 	sllx	%g4,7,%g4
   1489 	xor	%g3,%g2,%g2
   1490 	srlx	%g3,7,%g3
   1491 	xor	%g4,%g2,%g2
   1492 	sllx	%l6,32,%g5
   1493 	xor	%g3,%g2,%g2		! sigma0(X[22+1])
   1494 	or	%l7,%g5,%g5
   1495 
   1496 	srlx	%g5,6,%g4
   1497 	ld	[%sp+STACK_BIAS+STACK_FRAME+40],%l6
   1498 	sllx	%g5,3,%g3
   1499 	ld	[%sp+STACK_BIAS+STACK_FRAME+44],%l7
   1500 	srlx	%g5,19,%g5
   1501 	xor	%g3,%g4,%g4
   1502 	sllx	%g3,42,%g3
   1503 	xor	%g5,%g4,%g4
   1504 	srlx	%g5,42,%g5
   1505 	xor	%g3,%g4,%g4
   1506 	sllx	%l4,32,%g3
   1507 	xor	%g5,%g4,%g4	! sigma1(X[22+14])
   1508 	ld	[%sp+STACK_BIAS+STACK_FRAME+0],%l4
   1509 	or	%l5,%g3,%g3
   1510 	ld	[%sp+STACK_BIAS+STACK_FRAME+4],%l5
   1511 
   1512 	sllx	%l0,32,%g5
   1513 	add	%g4,%g2,%g2
   1514 	ld	[%sp+STACK_BIAS+STACK_FRAME+56],%l0
   1515 	or	%l1,%g5,%g5
   1516 	add	%g3,%g2,%g2		! +=X[22+9]
   1517 	ld	[%sp+STACK_BIAS+STACK_FRAME+60],%l1
   1518 	add	%g5,%g2,%g2		! +=X[22]
   1519 	stx	%g2,[%sp+STACK_BIAS+STACK_FRAME+48]
   1520 	add	%o1,%g2,%g2
   1521 	srlx	%g1,14,%o1	!! 22
   1522 	xor	%o7,%o0,%g5
   1523 	sllx	%g1,23,%g4
   1524 	and	%g1,%g5,%g5
   1525 	srlx	%g1,18,%g3
   1526 	xor	%g4,%o1,%o1
   1527 	sllx	%g1,46,%g4
   1528 	xor	%g3,%o1,%o1
   1529 	srlx	%g1,41,%g3
   1530 	xor	%g4,%o1,%o1
   1531 	sllx	%g1,50,%g4
   1532 	xor	%g3,%o1,%o1
   1533 	xor	%o0,%g5,%g5		! Ch(e,f,g)
   1534 	xor	%g4,%o1,%g3		! Sigma1(e)
   1535 
   1536 	srlx	%o2,28,%o1
   1537 	add	%g5,%g2,%g2
   1538 	ldx	[%i3+176],%g5	! K[22]
   1539 	sllx	%o2,25,%g4
   1540 	add	%g3,%g2,%g2
   1541 	srlx	%o2,34,%g3
   1542 	xor	%g4,%o1,%o1
   1543 	sllx	%o2,30,%g4
   1544 	xor	%g3,%o1,%o1
   1545 	srlx	%o2,39,%g3
   1546 	xor	%g4,%o1,%o1
   1547 	sllx	%o2,36,%g4
   1548 	xor	%g3,%o1,%o1
   1549 	xor	%g4,%o1,%o1		! Sigma0(a)
   1550 
   1551 	or	%o2,%o3,%g3
   1552 	and	%o2,%o3,%g4
   1553 	and	%o4,%g3,%g3
   1554 	or	%g3,%g4,%g4	! Maj(a,b,c)
   1555 	add	%g5,%g2,%g2		! +=K[22]
   1556 	add	%g4,%o1,%o1
   1557 
   1558 	add	%g2,%o5,%o5
   1559 	add	%g2,%o1,%o1
   1560 	sllx	%l2,32,%g3		!! Xupdate(23)
   1561 	or	%l3,%g3,%g3
   1562 
   1563 	srlx	%g3,7,%g2
   1564 	ld	[%sp+STACK_BIAS+STACK_FRAME+72],%l2
   1565 	sllx	%g3,56,%g4
   1566 	ld	[%sp+STACK_BIAS+STACK_FRAME+76],%l3
   1567 	srlx	%g3,1,%g3
   1568 	xor	%g4,%g2,%g2
   1569 	sllx	%g4,7,%g4
   1570 	xor	%g3,%g2,%g2
   1571 	srlx	%g3,7,%g3
   1572 	xor	%g4,%g2,%g2
   1573 	sllx	%l6,32,%g5
   1574 	xor	%g3,%g2,%g2		! sigma0(X[23+1])
   1575 	or	%l7,%g5,%g5
   1576 
   1577 	srlx	%g5,6,%g4
   1578 	ld	[%sp+STACK_BIAS+STACK_FRAME+48],%l6
   1579 	sllx	%g5,3,%g3
   1580 	ld	[%sp+STACK_BIAS+STACK_FRAME+52],%l7
   1581 	srlx	%g5,19,%g5
   1582 	xor	%g3,%g4,%g4
   1583 	sllx	%g3,42,%g3
   1584 	xor	%g5,%g4,%g4
   1585 	srlx	%g5,42,%g5
   1586 	xor	%g3,%g4,%g4
   1587 	sllx	%l4,32,%g3
   1588 	xor	%g5,%g4,%g4	! sigma1(X[23+14])
   1589 	ld	[%sp+STACK_BIAS+STACK_FRAME+8],%l4
   1590 	or	%l5,%g3,%g3
   1591 	ld	[%sp+STACK_BIAS+STACK_FRAME+12],%l5
   1592 
   1593 	sllx	%l0,32,%g5
   1594 	add	%g4,%g2,%g2
   1595 	ld	[%sp+STACK_BIAS+STACK_FRAME+64],%l0
   1596 	or	%l1,%g5,%g5
   1597 	add	%g3,%g2,%g2		! +=X[23+9]
   1598 	ld	[%sp+STACK_BIAS+STACK_FRAME+68],%l1
   1599 	add	%g5,%g2,%g2		! +=X[23]
   1600 	stx	%g2,[%sp+STACK_BIAS+STACK_FRAME+56]
   1601 	add	%o0,%g2,%g2
   1602 	srlx	%o5,14,%o0	!! 23
   1603 	xor	%g1,%o7,%g5
   1604 	sllx	%o5,23,%g4
   1605 	and	%o5,%g5,%g5
   1606 	srlx	%o5,18,%g3
   1607 	xor	%g4,%o0,%o0
   1608 	sllx	%o5,46,%g4
   1609 	xor	%g3,%o0,%o0
   1610 	srlx	%o5,41,%g3
   1611 	xor	%g4,%o0,%o0
   1612 	sllx	%o5,50,%g4
   1613 	xor	%g3,%o0,%o0
   1614 	xor	%o7,%g5,%g5		! Ch(e,f,g)
   1615 	xor	%g4,%o0,%g3		! Sigma1(e)
   1616 
   1617 	srlx	%o1,28,%o0
   1618 	add	%g5,%g2,%g2
   1619 	ldx	[%i3+184],%g5	! K[23]
   1620 	sllx	%o1,25,%g4
   1621 	add	%g3,%g2,%g2
   1622 	srlx	%o1,34,%g3
   1623 	xor	%g4,%o0,%o0
   1624 	sllx	%o1,30,%g4
   1625 	xor	%g3,%o0,%o0
   1626 	srlx	%o1,39,%g3
   1627 	xor	%g4,%o0,%o0
   1628 	sllx	%o1,36,%g4
   1629 	xor	%g3,%o0,%o0
   1630 	xor	%g4,%o0,%o0		! Sigma0(a)
   1631 
   1632 	or	%o1,%o2,%g3
   1633 	and	%o1,%o2,%g4
   1634 	and	%o3,%g3,%g3
   1635 	or	%g3,%g4,%g4	! Maj(a,b,c)
   1636 	add	%g5,%g2,%g2		! +=K[23]
   1637 	add	%g4,%o0,%o0
   1638 
   1639 	add	%g2,%o4,%o4
   1640 	add	%g2,%o0,%o0
   1641 	sllx	%l2,32,%g3		!! Xupdate(24)
   1642 	or	%l3,%g3,%g3
   1643 
   1644 	srlx	%g3,7,%g2
   1645 	ld	[%sp+STACK_BIAS+STACK_FRAME+80],%l2
   1646 	sllx	%g3,56,%g4
   1647 	ld	[%sp+STACK_BIAS+STACK_FRAME+84],%l3
   1648 	srlx	%g3,1,%g3
   1649 	xor	%g4,%g2,%g2
   1650 	sllx	%g4,7,%g4
   1651 	xor	%g3,%g2,%g2
   1652 	srlx	%g3,7,%g3
   1653 	xor	%g4,%g2,%g2
   1654 	sllx	%l6,32,%g5
   1655 	xor	%g3,%g2,%g2		! sigma0(X[24+1])
   1656 	or	%l7,%g5,%g5
   1657 
   1658 	srlx	%g5,6,%g4
   1659 	ld	[%sp+STACK_BIAS+STACK_FRAME+56],%l6
   1660 	sllx	%g5,3,%g3
   1661 	ld	[%sp+STACK_BIAS+STACK_FRAME+60],%l7
   1662 	srlx	%g5,19,%g5
   1663 	xor	%g3,%g4,%g4
   1664 	sllx	%g3,42,%g3
   1665 	xor	%g5,%g4,%g4
   1666 	srlx	%g5,42,%g5
   1667 	xor	%g3,%g4,%g4
   1668 	sllx	%l4,32,%g3
   1669 	xor	%g5,%g4,%g4	! sigma1(X[24+14])
   1670 	ld	[%sp+STACK_BIAS+STACK_FRAME+16],%l4
   1671 	or	%l5,%g3,%g3
   1672 	ld	[%sp+STACK_BIAS+STACK_FRAME+20],%l5
   1673 
   1674 	sllx	%l0,32,%g5
   1675 	add	%g4,%g2,%g2
   1676 	ld	[%sp+STACK_BIAS+STACK_FRAME+72],%l0
   1677 	or	%l1,%g5,%g5
   1678 	add	%g3,%g2,%g2		! +=X[24+9]
   1679 	ld	[%sp+STACK_BIAS+STACK_FRAME+76],%l1
   1680 	add	%g5,%g2,%g2		! +=X[24]
   1681 	stx	%g2,[%sp+STACK_BIAS+STACK_FRAME+64]
   1682 	add	%o7,%g2,%g2
   1683 	srlx	%o4,14,%o7	!! 24
   1684 	xor	%o5,%g1,%g5
   1685 	sllx	%o4,23,%g4
   1686 	and	%o4,%g5,%g5
   1687 	srlx	%o4,18,%g3
   1688 	xor	%g4,%o7,%o7
   1689 	sllx	%o4,46,%g4
   1690 	xor	%g3,%o7,%o7
   1691 	srlx	%o4,41,%g3
   1692 	xor	%g4,%o7,%o7
   1693 	sllx	%o4,50,%g4
   1694 	xor	%g3,%o7,%o7
   1695 	xor	%g1,%g5,%g5		! Ch(e,f,g)
   1696 	xor	%g4,%o7,%g3		! Sigma1(e)
   1697 
   1698 	srlx	%o0,28,%o7
   1699 	add	%g5,%g2,%g2
   1700 	ldx	[%i3+192],%g5	! K[24]
   1701 	sllx	%o0,25,%g4
   1702 	add	%g3,%g2,%g2
   1703 	srlx	%o0,34,%g3
   1704 	xor	%g4,%o7,%o7
   1705 	sllx	%o0,30,%g4
   1706 	xor	%g3,%o7,%o7
   1707 	srlx	%o0,39,%g3
   1708 	xor	%g4,%o7,%o7
   1709 	sllx	%o0,36,%g4
   1710 	xor	%g3,%o7,%o7
   1711 	xor	%g4,%o7,%o7		! Sigma0(a)
   1712 
   1713 	or	%o0,%o1,%g3
   1714 	and	%o0,%o1,%g4
   1715 	and	%o2,%g3,%g3
   1716 	or	%g3,%g4,%g4	! Maj(a,b,c)
   1717 	add	%g5,%g2,%g2		! +=K[24]
   1718 	add	%g4,%o7,%o7
   1719 
   1720 	add	%g2,%o3,%o3
   1721 	add	%g2,%o7,%o7
   1722 	sllx	%l2,32,%g3		!! Xupdate(25)
   1723 	or	%l3,%g3,%g3
   1724 
   1725 	srlx	%g3,7,%g2
   1726 	ld	[%sp+STACK_BIAS+STACK_FRAME+88],%l2
   1727 	sllx	%g3,56,%g4
   1728 	ld	[%sp+STACK_BIAS+STACK_FRAME+92],%l3
   1729 	srlx	%g3,1,%g3
   1730 	xor	%g4,%g2,%g2
   1731 	sllx	%g4,7,%g4
   1732 	xor	%g3,%g2,%g2
   1733 	srlx	%g3,7,%g3
   1734 	xor	%g4,%g2,%g2
   1735 	sllx	%l6,32,%g5
   1736 	xor	%g3,%g2,%g2		! sigma0(X[25+1])
   1737 	or	%l7,%g5,%g5
   1738 
   1739 	srlx	%g5,6,%g4
   1740 	ld	[%sp+STACK_BIAS+STACK_FRAME+64],%l6
   1741 	sllx	%g5,3,%g3
   1742 	ld	[%sp+STACK_BIAS+STACK_FRAME+68],%l7
   1743 	srlx	%g5,19,%g5
   1744 	xor	%g3,%g4,%g4
   1745 	sllx	%g3,42,%g3
   1746 	xor	%g5,%g4,%g4
   1747 	srlx	%g5,42,%g5
   1748 	xor	%g3,%g4,%g4
   1749 	sllx	%l4,32,%g3
   1750 	xor	%g5,%g4,%g4	! sigma1(X[25+14])
   1751 	ld	[%sp+STACK_BIAS+STACK_FRAME+24],%l4
   1752 	or	%l5,%g3,%g3
   1753 	ld	[%sp+STACK_BIAS+STACK_FRAME+28],%l5
   1754 
   1755 	sllx	%l0,32,%g5
   1756 	add	%g4,%g2,%g2
   1757 	ld	[%sp+STACK_BIAS+STACK_FRAME+80],%l0
   1758 	or	%l1,%g5,%g5
   1759 	add	%g3,%g2,%g2		! +=X[25+9]
   1760 	ld	[%sp+STACK_BIAS+STACK_FRAME+84],%l1
   1761 	add	%g5,%g2,%g2		! +=X[25]
   1762 	stx	%g2,[%sp+STACK_BIAS+STACK_FRAME+72]
   1763 	add	%g1,%g2,%g2
   1764 	srlx	%o3,14,%g1	!! 25
   1765 	xor	%o4,%o5,%g5
   1766 	sllx	%o3,23,%g4
   1767 	and	%o3,%g5,%g5
   1768 	srlx	%o3,18,%g3
   1769 	xor	%g4,%g1,%g1
   1770 	sllx	%o3,46,%g4
   1771 	xor	%g3,%g1,%g1
   1772 	srlx	%o3,41,%g3
   1773 	xor	%g4,%g1,%g1
   1774 	sllx	%o3,50,%g4
   1775 	xor	%g3,%g1,%g1
   1776 	xor	%o5,%g5,%g5		! Ch(e,f,g)
   1777 	xor	%g4,%g1,%g3		! Sigma1(e)
   1778 
   1779 	srlx	%o7,28,%g1
   1780 	add	%g5,%g2,%g2
   1781 	ldx	[%i3+200],%g5	! K[25]
   1782 	sllx	%o7,25,%g4
   1783 	add	%g3,%g2,%g2
   1784 	srlx	%o7,34,%g3
   1785 	xor	%g4,%g1,%g1
   1786 	sllx	%o7,30,%g4
   1787 	xor	%g3,%g1,%g1
   1788 	srlx	%o7,39,%g3
   1789 	xor	%g4,%g1,%g1
   1790 	sllx	%o7,36,%g4
   1791 	xor	%g3,%g1,%g1
   1792 	xor	%g4,%g1,%g1		! Sigma0(a)
   1793 
   1794 	or	%o7,%o0,%g3
   1795 	and	%o7,%o0,%g4
   1796 	and	%o1,%g3,%g3
   1797 	or	%g3,%g4,%g4	! Maj(a,b,c)
   1798 	add	%g5,%g2,%g2		! +=K[25]
   1799 	add	%g4,%g1,%g1
   1800 
   1801 	add	%g2,%o2,%o2
   1802 	add	%g2,%g1,%g1
   1803 	sllx	%l2,32,%g3		!! Xupdate(26)
   1804 	or	%l3,%g3,%g3
   1805 
   1806 	srlx	%g3,7,%g2
   1807 	ld	[%sp+STACK_BIAS+STACK_FRAME+96],%l2
   1808 	sllx	%g3,56,%g4
   1809 	ld	[%sp+STACK_BIAS+STACK_FRAME+100],%l3
   1810 	srlx	%g3,1,%g3
   1811 	xor	%g4,%g2,%g2
   1812 	sllx	%g4,7,%g4
   1813 	xor	%g3,%g2,%g2
   1814 	srlx	%g3,7,%g3
   1815 	xor	%g4,%g2,%g2
   1816 	sllx	%l6,32,%g5
   1817 	xor	%g3,%g2,%g2		! sigma0(X[26+1])
   1818 	or	%l7,%g5,%g5
   1819 
   1820 	srlx	%g5,6,%g4
   1821 	ld	[%sp+STACK_BIAS+STACK_FRAME+72],%l6
   1822 	sllx	%g5,3,%g3
   1823 	ld	[%sp+STACK_BIAS+STACK_FRAME+76],%l7
   1824 	srlx	%g5,19,%g5
   1825 	xor	%g3,%g4,%g4
   1826 	sllx	%g3,42,%g3
   1827 	xor	%g5,%g4,%g4
   1828 	srlx	%g5,42,%g5
   1829 	xor	%g3,%g4,%g4
   1830 	sllx	%l4,32,%g3
   1831 	xor	%g5,%g4,%g4	! sigma1(X[26+14])
   1832 	ld	[%sp+STACK_BIAS+STACK_FRAME+32],%l4
   1833 	or	%l5,%g3,%g3
   1834 	ld	[%sp+STACK_BIAS+STACK_FRAME+36],%l5
   1835 
   1836 	sllx	%l0,32,%g5
   1837 	add	%g4,%g2,%g2
   1838 	ld	[%sp+STACK_BIAS+STACK_FRAME+88],%l0
   1839 	or	%l1,%g5,%g5
   1840 	add	%g3,%g2,%g2		! +=X[26+9]
   1841 	ld	[%sp+STACK_BIAS+STACK_FRAME+92],%l1
   1842 	add	%g5,%g2,%g2		! +=X[26]
   1843 	stx	%g2,[%sp+STACK_BIAS+STACK_FRAME+80]
   1844 	add	%o5,%g2,%g2
   1845 	srlx	%o2,14,%o5	!! 26
   1846 	xor	%o3,%o4,%g5
   1847 	sllx	%o2,23,%g4
   1848 	and	%o2,%g5,%g5
   1849 	srlx	%o2,18,%g3
   1850 	xor	%g4,%o5,%o5
   1851 	sllx	%o2,46,%g4
   1852 	xor	%g3,%o5,%o5
   1853 	srlx	%o2,41,%g3
   1854 	xor	%g4,%o5,%o5
   1855 	sllx	%o2,50,%g4
   1856 	xor	%g3,%o5,%o5
   1857 	xor	%o4,%g5,%g5		! Ch(e,f,g)
   1858 	xor	%g4,%o5,%g3		! Sigma1(e)
   1859 
   1860 	srlx	%g1,28,%o5
   1861 	add	%g5,%g2,%g2
   1862 	ldx	[%i3+208],%g5	! K[26]
   1863 	sllx	%g1,25,%g4
   1864 	add	%g3,%g2,%g2
   1865 	srlx	%g1,34,%g3
   1866 	xor	%g4,%o5,%o5
   1867 	sllx	%g1,30,%g4
   1868 	xor	%g3,%o5,%o5
   1869 	srlx	%g1,39,%g3
   1870 	xor	%g4,%o5,%o5
   1871 	sllx	%g1,36,%g4
   1872 	xor	%g3,%o5,%o5
   1873 	xor	%g4,%o5,%o5		! Sigma0(a)
   1874 
   1875 	or	%g1,%o7,%g3
   1876 	and	%g1,%o7,%g4
   1877 	and	%o0,%g3,%g3
   1878 	or	%g3,%g4,%g4	! Maj(a,b,c)
   1879 	add	%g5,%g2,%g2		! +=K[26]
   1880 	add	%g4,%o5,%o5
   1881 
   1882 	add	%g2,%o1,%o1
   1883 	add	%g2,%o5,%o5
   1884 	sllx	%l2,32,%g3		!! Xupdate(27)
   1885 	or	%l3,%g3,%g3
   1886 
   1887 	srlx	%g3,7,%g2
   1888 	ld	[%sp+STACK_BIAS+STACK_FRAME+104],%l2
   1889 	sllx	%g3,56,%g4
   1890 	ld	[%sp+STACK_BIAS+STACK_FRAME+108],%l3
   1891 	srlx	%g3,1,%g3
   1892 	xor	%g4,%g2,%g2
   1893 	sllx	%g4,7,%g4
   1894 	xor	%g3,%g2,%g2
   1895 	srlx	%g3,7,%g3
   1896 	xor	%g4,%g2,%g2
   1897 	sllx	%l6,32,%g5
   1898 	xor	%g3,%g2,%g2		! sigma0(X[27+1])
   1899 	or	%l7,%g5,%g5
   1900 
   1901 	srlx	%g5,6,%g4
   1902 	ld	[%sp+STACK_BIAS+STACK_FRAME+80],%l6
   1903 	sllx	%g5,3,%g3
   1904 	ld	[%sp+STACK_BIAS+STACK_FRAME+84],%l7
   1905 	srlx	%g5,19,%g5
   1906 	xor	%g3,%g4,%g4
   1907 	sllx	%g3,42,%g3
   1908 	xor	%g5,%g4,%g4
   1909 	srlx	%g5,42,%g5
   1910 	xor	%g3,%g4,%g4
   1911 	sllx	%l4,32,%g3
   1912 	xor	%g5,%g4,%g4	! sigma1(X[27+14])
   1913 	ld	[%sp+STACK_BIAS+STACK_FRAME+40],%l4
   1914 	or	%l5,%g3,%g3
   1915 	ld	[%sp+STACK_BIAS+STACK_FRAME+44],%l5
   1916 
   1917 	sllx	%l0,32,%g5
   1918 	add	%g4,%g2,%g2
   1919 	ld	[%sp+STACK_BIAS+STACK_FRAME+96],%l0
   1920 	or	%l1,%g5,%g5
   1921 	add	%g3,%g2,%g2		! +=X[27+9]
   1922 	ld	[%sp+STACK_BIAS+STACK_FRAME+100],%l1
   1923 	add	%g5,%g2,%g2		! +=X[27]
   1924 	stx	%g2,[%sp+STACK_BIAS+STACK_FRAME+88]
   1925 	add	%o4,%g2,%g2
   1926 	srlx	%o1,14,%o4	!! 27
   1927 	xor	%o2,%o3,%g5
   1928 	sllx	%o1,23,%g4
   1929 	and	%o1,%g5,%g5
   1930 	srlx	%o1,18,%g3
   1931 	xor	%g4,%o4,%o4
   1932 	sllx	%o1,46,%g4
   1933 	xor	%g3,%o4,%o4
   1934 	srlx	%o1,41,%g3
   1935 	xor	%g4,%o4,%o4
   1936 	sllx	%o1,50,%g4
   1937 	xor	%g3,%o4,%o4
   1938 	xor	%o3,%g5,%g5		! Ch(e,f,g)
   1939 	xor	%g4,%o4,%g3		! Sigma1(e)
   1940 
   1941 	srlx	%o5,28,%o4
   1942 	add	%g5,%g2,%g2
   1943 	ldx	[%i3+216],%g5	! K[27]
   1944 	sllx	%o5,25,%g4
   1945 	add	%g3,%g2,%g2
   1946 	srlx	%o5,34,%g3
   1947 	xor	%g4,%o4,%o4
   1948 	sllx	%o5,30,%g4
   1949 	xor	%g3,%o4,%o4
   1950 	srlx	%o5,39,%g3
   1951 	xor	%g4,%o4,%o4
   1952 	sllx	%o5,36,%g4
   1953 	xor	%g3,%o4,%o4
   1954 	xor	%g4,%o4,%o4		! Sigma0(a)
   1955 
   1956 	or	%o5,%g1,%g3
   1957 	and	%o5,%g1,%g4
   1958 	and	%o7,%g3,%g3
   1959 	or	%g3,%g4,%g4	! Maj(a,b,c)
   1960 	add	%g5,%g2,%g2		! +=K[27]
   1961 	add	%g4,%o4,%o4
   1962 
   1963 	add	%g2,%o0,%o0
   1964 	add	%g2,%o4,%o4
   1965 	sllx	%l2,32,%g3		!! Xupdate(28)
   1966 	or	%l3,%g3,%g3
   1967 
   1968 	srlx	%g3,7,%g2
   1969 	ld	[%sp+STACK_BIAS+STACK_FRAME+112],%l2
   1970 	sllx	%g3,56,%g4
   1971 	ld	[%sp+STACK_BIAS+STACK_FRAME+116],%l3
   1972 	srlx	%g3,1,%g3
   1973 	xor	%g4,%g2,%g2
   1974 	sllx	%g4,7,%g4
   1975 	xor	%g3,%g2,%g2
   1976 	srlx	%g3,7,%g3
   1977 	xor	%g4,%g2,%g2
   1978 	sllx	%l6,32,%g5
   1979 	xor	%g3,%g2,%g2		! sigma0(X[28+1])
   1980 	or	%l7,%g5,%g5
   1981 
   1982 	srlx	%g5,6,%g4
   1983 	ld	[%sp+STACK_BIAS+STACK_FRAME+88],%l6
   1984 	sllx	%g5,3,%g3
   1985 	ld	[%sp+STACK_BIAS+STACK_FRAME+92],%l7
   1986 	srlx	%g5,19,%g5
   1987 	xor	%g3,%g4,%g4
   1988 	sllx	%g3,42,%g3
   1989 	xor	%g5,%g4,%g4
   1990 	srlx	%g5,42,%g5
   1991 	xor	%g3,%g4,%g4
   1992 	sllx	%l4,32,%g3
   1993 	xor	%g5,%g4,%g4	! sigma1(X[28+14])
   1994 	ld	[%sp+STACK_BIAS+STACK_FRAME+48],%l4
   1995 	or	%l5,%g3,%g3
   1996 	ld	[%sp+STACK_BIAS+STACK_FRAME+52],%l5
   1997 
   1998 	sllx	%l0,32,%g5
   1999 	add	%g4,%g2,%g2
   2000 	ld	[%sp+STACK_BIAS+STACK_FRAME+104],%l0
   2001 	or	%l1,%g5,%g5
   2002 	add	%g3,%g2,%g2		! +=X[28+9]
   2003 	ld	[%sp+STACK_BIAS+STACK_FRAME+108],%l1
   2004 	add	%g5,%g2,%g2		! +=X[28]
   2005 	stx	%g2,[%sp+STACK_BIAS+STACK_FRAME+96]
   2006 	add	%o3,%g2,%g2
   2007 	srlx	%o0,14,%o3	!! 28
   2008 	xor	%o1,%o2,%g5
   2009 	sllx	%o0,23,%g4
   2010 	and	%o0,%g5,%g5
   2011 	srlx	%o0,18,%g3
   2012 	xor	%g4,%o3,%o3
   2013 	sllx	%o0,46,%g4
   2014 	xor	%g3,%o3,%o3
   2015 	srlx	%o0,41,%g3
   2016 	xor	%g4,%o3,%o3
   2017 	sllx	%o0,50,%g4
   2018 	xor	%g3,%o3,%o3
   2019 	xor	%o2,%g5,%g5		! Ch(e,f,g)
   2020 	xor	%g4,%o3,%g3		! Sigma1(e)
   2021 
   2022 	srlx	%o4,28,%o3
   2023 	add	%g5,%g2,%g2
   2024 	ldx	[%i3+224],%g5	! K[28]
   2025 	sllx	%o4,25,%g4
   2026 	add	%g3,%g2,%g2
   2027 	srlx	%o4,34,%g3
   2028 	xor	%g4,%o3,%o3
   2029 	sllx	%o4,30,%g4
   2030 	xor	%g3,%o3,%o3
   2031 	srlx	%o4,39,%g3
   2032 	xor	%g4,%o3,%o3
   2033 	sllx	%o4,36,%g4
   2034 	xor	%g3,%o3,%o3
   2035 	xor	%g4,%o3,%o3		! Sigma0(a)
   2036 
   2037 	or	%o4,%o5,%g3
   2038 	and	%o4,%o5,%g4
   2039 	and	%g1,%g3,%g3
   2040 	or	%g3,%g4,%g4	! Maj(a,b,c)
   2041 	add	%g5,%g2,%g2		! +=K[28]
   2042 	add	%g4,%o3,%o3
   2043 
   2044 	add	%g2,%o7,%o7
   2045 	add	%g2,%o3,%o3
   2046 	sllx	%l2,32,%g3		!! Xupdate(29)
   2047 	or	%l3,%g3,%g3
   2048 
   2049 	srlx	%g3,7,%g2
   2050 	ld	[%sp+STACK_BIAS+STACK_FRAME+120],%l2
   2051 	sllx	%g3,56,%g4
   2052 	ld	[%sp+STACK_BIAS+STACK_FRAME+124],%l3
   2053 	srlx	%g3,1,%g3
   2054 	xor	%g4,%g2,%g2
   2055 	sllx	%g4,7,%g4
   2056 	xor	%g3,%g2,%g2
   2057 	srlx	%g3,7,%g3
   2058 	xor	%g4,%g2,%g2
   2059 	sllx	%l6,32,%g5
   2060 	xor	%g3,%g2,%g2		! sigma0(X[29+1])
   2061 	or	%l7,%g5,%g5
   2062 
   2063 	srlx	%g5,6,%g4
   2064 	ld	[%sp+STACK_BIAS+STACK_FRAME+96],%l6
   2065 	sllx	%g5,3,%g3
   2066 	ld	[%sp+STACK_BIAS+STACK_FRAME+100],%l7
   2067 	srlx	%g5,19,%g5
   2068 	xor	%g3,%g4,%g4
   2069 	sllx	%g3,42,%g3
   2070 	xor	%g5,%g4,%g4
   2071 	srlx	%g5,42,%g5
   2072 	xor	%g3,%g4,%g4
   2073 	sllx	%l4,32,%g3
   2074 	xor	%g5,%g4,%g4	! sigma1(X[29+14])
   2075 	ld	[%sp+STACK_BIAS+STACK_FRAME+56],%l4
   2076 	or	%l5,%g3,%g3
   2077 	ld	[%sp+STACK_BIAS+STACK_FRAME+60],%l5
   2078 
   2079 	sllx	%l0,32,%g5
   2080 	add	%g4,%g2,%g2
   2081 	ld	[%sp+STACK_BIAS+STACK_FRAME+112],%l0
   2082 	or	%l1,%g5,%g5
   2083 	add	%g3,%g2,%g2		! +=X[29+9]
   2084 	ld	[%sp+STACK_BIAS+STACK_FRAME+116],%l1
   2085 	add	%g5,%g2,%g2		! +=X[29]
   2086 	stx	%g2,[%sp+STACK_BIAS+STACK_FRAME+104]
   2087 	add	%o2,%g2,%g2
   2088 	srlx	%o7,14,%o2	!! 29
   2089 	xor	%o0,%o1,%g5
   2090 	sllx	%o7,23,%g4
   2091 	and	%o7,%g5,%g5
   2092 	srlx	%o7,18,%g3
   2093 	xor	%g4,%o2,%o2
   2094 	sllx	%o7,46,%g4
   2095 	xor	%g3,%o2,%o2
   2096 	srlx	%o7,41,%g3
   2097 	xor	%g4,%o2,%o2
   2098 	sllx	%o7,50,%g4
   2099 	xor	%g3,%o2,%o2
   2100 	xor	%o1,%g5,%g5		! Ch(e,f,g)
   2101 	xor	%g4,%o2,%g3		! Sigma1(e)
   2102 
   2103 	srlx	%o3,28,%o2
   2104 	add	%g5,%g2,%g2
   2105 	ldx	[%i3+232],%g5	! K[29]
   2106 	sllx	%o3,25,%g4
   2107 	add	%g3,%g2,%g2
   2108 	srlx	%o3,34,%g3
   2109 	xor	%g4,%o2,%o2
   2110 	sllx	%o3,30,%g4
   2111 	xor	%g3,%o2,%o2
   2112 	srlx	%o3,39,%g3
   2113 	xor	%g4,%o2,%o2
   2114 	sllx	%o3,36,%g4
   2115 	xor	%g3,%o2,%o2
   2116 	xor	%g4,%o2,%o2		! Sigma0(a)
   2117 
   2118 	or	%o3,%o4,%g3
   2119 	and	%o3,%o4,%g4
   2120 	and	%o5,%g3,%g3
   2121 	or	%g3,%g4,%g4	! Maj(a,b,c)
   2122 	add	%g5,%g2,%g2		! +=K[29]
   2123 	add	%g4,%o2,%o2
   2124 
   2125 	add	%g2,%g1,%g1
   2126 	add	%g2,%o2,%o2
   2127 	sllx	%l2,32,%g3		!! Xupdate(30)
   2128 	or	%l3,%g3,%g3
   2129 
   2130 	srlx	%g3,7,%g2
   2131 	ld	[%sp+STACK_BIAS+STACK_FRAME+0],%l2
   2132 	sllx	%g3,56,%g4
   2133 	ld	[%sp+STACK_BIAS+STACK_FRAME+4],%l3
   2134 	srlx	%g3,1,%g3
   2135 	xor	%g4,%g2,%g2
   2136 	sllx	%g4,7,%g4
   2137 	xor	%g3,%g2,%g2
   2138 	srlx	%g3,7,%g3
   2139 	xor	%g4,%g2,%g2
   2140 	sllx	%l6,32,%g5
   2141 	xor	%g3,%g2,%g2		! sigma0(X[30+1])
   2142 	or	%l7,%g5,%g5
   2143 
   2144 	srlx	%g5,6,%g4
   2145 	ld	[%sp+STACK_BIAS+STACK_FRAME+104],%l6
   2146 	sllx	%g5,3,%g3
   2147 	ld	[%sp+STACK_BIAS+STACK_FRAME+108],%l7
   2148 	srlx	%g5,19,%g5
   2149 	xor	%g3,%g4,%g4
   2150 	sllx	%g3,42,%g3
   2151 	xor	%g5,%g4,%g4
   2152 	srlx	%g5,42,%g5
   2153 	xor	%g3,%g4,%g4
   2154 	sllx	%l4,32,%g3
   2155 	xor	%g5,%g4,%g4	! sigma1(X[30+14])
   2156 	ld	[%sp+STACK_BIAS+STACK_FRAME+64],%l4
   2157 	or	%l5,%g3,%g3
   2158 	ld	[%sp+STACK_BIAS+STACK_FRAME+68],%l5
   2159 
   2160 	sllx	%l0,32,%g5
   2161 	add	%g4,%g2,%g2
   2162 	ld	[%sp+STACK_BIAS+STACK_FRAME+120],%l0
   2163 	or	%l1,%g5,%g5
   2164 	add	%g3,%g2,%g2		! +=X[30+9]
   2165 	ld	[%sp+STACK_BIAS+STACK_FRAME+124],%l1
   2166 	add	%g5,%g2,%g2		! +=X[30]
   2167 	stx	%g2,[%sp+STACK_BIAS+STACK_FRAME+112]
   2168 	add	%o1,%g2,%g2
   2169 	srlx	%g1,14,%o1	!! 30
   2170 	xor	%o7,%o0,%g5
   2171 	sllx	%g1,23,%g4
   2172 	and	%g1,%g5,%g5
   2173 	srlx	%g1,18,%g3
   2174 	xor	%g4,%o1,%o1
   2175 	sllx	%g1,46,%g4
   2176 	xor	%g3,%o1,%o1
   2177 	srlx	%g1,41,%g3
   2178 	xor	%g4,%o1,%o1
   2179 	sllx	%g1,50,%g4
   2180 	xor	%g3,%o1,%o1
   2181 	xor	%o0,%g5,%g5		! Ch(e,f,g)
   2182 	xor	%g4,%o1,%g3		! Sigma1(e)
   2183 
   2184 	srlx	%o2,28,%o1
   2185 	add	%g5,%g2,%g2
   2186 	ldx	[%i3+240],%g5	! K[30]
   2187 	sllx	%o2,25,%g4
   2188 	add	%g3,%g2,%g2
   2189 	srlx	%o2,34,%g3
   2190 	xor	%g4,%o1,%o1
   2191 	sllx	%o2,30,%g4
   2192 	xor	%g3,%o1,%o1
   2193 	srlx	%o2,39,%g3
   2194 	xor	%g4,%o1,%o1
   2195 	sllx	%o2,36,%g4
   2196 	xor	%g3,%o1,%o1
   2197 	xor	%g4,%o1,%o1		! Sigma0(a)
   2198 
   2199 	or	%o2,%o3,%g3
   2200 	and	%o2,%o3,%g4
   2201 	and	%o4,%g3,%g3
   2202 	or	%g3,%g4,%g4	! Maj(a,b,c)
   2203 	add	%g5,%g2,%g2		! +=K[30]
   2204 	add	%g4,%o1,%o1
   2205 
   2206 	add	%g2,%o5,%o5
   2207 	add	%g2,%o1,%o1
   2208 	sllx	%l2,32,%g3		!! Xupdate(31)
   2209 	or	%l3,%g3,%g3
   2210 
   2211 	srlx	%g3,7,%g2
   2212 	ld	[%sp+STACK_BIAS+STACK_FRAME+8],%l2
   2213 	sllx	%g3,56,%g4
   2214 	ld	[%sp+STACK_BIAS+STACK_FRAME+12],%l3
   2215 	srlx	%g3,1,%g3
   2216 	xor	%g4,%g2,%g2
   2217 	sllx	%g4,7,%g4
   2218 	xor	%g3,%g2,%g2
   2219 	srlx	%g3,7,%g3
   2220 	xor	%g4,%g2,%g2
   2221 	sllx	%l6,32,%g5
   2222 	xor	%g3,%g2,%g2		! sigma0(X[31+1])
   2223 	or	%l7,%g5,%g5
   2224 
   2225 	srlx	%g5,6,%g4
   2226 	ld	[%sp+STACK_BIAS+STACK_FRAME+112],%l6
   2227 	sllx	%g5,3,%g3
   2228 	ld	[%sp+STACK_BIAS+STACK_FRAME+116],%l7
   2229 	srlx	%g5,19,%g5
   2230 	xor	%g3,%g4,%g4
   2231 	sllx	%g3,42,%g3
   2232 	xor	%g5,%g4,%g4
   2233 	srlx	%g5,42,%g5
   2234 	xor	%g3,%g4,%g4
   2235 	sllx	%l4,32,%g3
   2236 	xor	%g5,%g4,%g4	! sigma1(X[31+14])
   2237 	ld	[%sp+STACK_BIAS+STACK_FRAME+72],%l4
   2238 	or	%l5,%g3,%g3
   2239 	ld	[%sp+STACK_BIAS+STACK_FRAME+76],%l5
   2240 
   2241 	sllx	%l0,32,%g5
   2242 	add	%g4,%g2,%g2
   2243 	ld	[%sp+STACK_BIAS+STACK_FRAME+0],%l0
   2244 	or	%l1,%g5,%g5
   2245 	add	%g3,%g2,%g2		! +=X[31+9]
   2246 	ld	[%sp+STACK_BIAS+STACK_FRAME+4],%l1
   2247 	add	%g5,%g2,%g2		! +=X[31]
   2248 	stx	%g2,[%sp+STACK_BIAS+STACK_FRAME+120]
   2249 	add	%o0,%g2,%g2
   2250 	srlx	%o5,14,%o0	!! 31
   2251 	xor	%g1,%o7,%g5
   2252 	sllx	%o5,23,%g4
   2253 	and	%o5,%g5,%g5
   2254 	srlx	%o5,18,%g3
   2255 	xor	%g4,%o0,%o0
   2256 	sllx	%o5,46,%g4
   2257 	xor	%g3,%o0,%o0
   2258 	srlx	%o5,41,%g3
   2259 	xor	%g4,%o0,%o0
   2260 	sllx	%o5,50,%g4
   2261 	xor	%g3,%o0,%o0
   2262 	xor	%o7,%g5,%g5		! Ch(e,f,g)
   2263 	xor	%g4,%o0,%g3		! Sigma1(e)
   2264 
   2265 	srlx	%o1,28,%o0
   2266 	add	%g5,%g2,%g2
   2267 	ldx	[%i3+248],%g5	! K[31]
   2268 	sllx	%o1,25,%g4
   2269 	add	%g3,%g2,%g2
   2270 	srlx	%o1,34,%g3
   2271 	xor	%g4,%o0,%o0
   2272 	sllx	%o1,30,%g4
   2273 	xor	%g3,%o0,%o0
   2274 	srlx	%o1,39,%g3
   2275 	xor	%g4,%o0,%o0
   2276 	sllx	%o1,36,%g4
   2277 	xor	%g3,%o0,%o0
   2278 	xor	%g4,%o0,%o0		! Sigma0(a)
   2279 
   2280 	or	%o1,%o2,%g3
   2281 	and	%o1,%o2,%g4
   2282 	and	%o3,%g3,%g3
   2283 	or	%g3,%g4,%g4	! Maj(a,b,c)
   2284 	add	%g5,%g2,%g2		! +=K[31]
   2285 	add	%g4,%o0,%o0
   2286 
   2287 	add	%g2,%o4,%o4
   2288 	add	%g2,%o0,%o0
   2289 	and	%g5,0xfff,%g5
   2290 	cmp	%g5,2071
   2291 	bne	.L16_xx
   2292 	add	%i3,128,%i3	! Ktbl+=16
   2293 
   2294 	ld	[%i0+0],%l0
   2295 	ld	[%i0+4],%l1
   2296 	ld	[%i0+8],%l2
   2297 	ld	[%i0+12],%l3
   2298 	ld	[%i0+16],%l4
   2299 	ld	[%i0+20],%l5
   2300 	ld	[%i0+24],%l6
   2301 
   2302 	sllx	%l0,32,%g3
   2303 	ld	[%i0+28],%l7
   2304 	sllx	%l2,32,%g4
   2305 	or	%l1,%g3,%g3
   2306 	or	%l3,%g4,%g4
   2307 	add	%g3,%o0,%o0
   2308 	add	%g4,%o1,%o1
   2309 	stx	%o0,[%i0+0]
   2310 	sllx	%l4,32,%g5
   2311 	stx	%o1,[%i0+8]
   2312 	sllx	%l6,32,%g2
   2313 	or	%l5,%g5,%g5
   2314 	or	%l7,%g2,%g2
   2315 	add	%g5,%o2,%o2
   2316 	stx	%o2,[%i0+16]
   2317 	add	%g2,%o3,%o3
   2318 	stx	%o3,[%i0+24]
   2319 
   2320 	ld	[%i0+32],%l0
   2321 	ld	[%i0+36],%l1
   2322 	ld	[%i0+40],%l2
   2323 	ld	[%i0+44],%l3
   2324 	ld	[%i0+48],%l4
   2325 	ld	[%i0+52],%l5
   2326 	ld	[%i0+56],%l6
   2327 
   2328 	sllx	%l0,32,%g3
   2329 	ld	[%i0+60],%l7
   2330 	sllx	%l2,32,%g4
   2331 	or	%l1,%g3,%g3
   2332 	or	%l3,%g4,%g4
   2333 	add	%g3,%o4,%o4
   2334 	add	%g4,%o5,%o5
   2335 	stx	%o4,[%i0+32]
   2336 	sllx	%l4,32,%g5
   2337 	stx	%o5,[%i0+40]
   2338 	sllx	%l6,32,%g2
   2339 	or	%l5,%g5,%g5
   2340 	or	%l7,%g2,%g2
   2341 	add	%g5,%g1,%g1
   2342 	stx	%g1,[%i0+48]
   2343 	add	%g2,%o7,%o7
   2344 	stx	%o7,[%i0+56]
   2345 	add	%i1,128,%i1		! advance inp
   2346 	cmp	%i1,%i2
   2347 	bne	SIZE_T_CC,.Lloop
   2348 	sub	%i3,512,%i3	! rewind Ktbl
   2349 
   2350 	ret
   2351 	restore
   2352 .type	sha512_block_data_order,#function
   2353 .size	sha512_block_data_order,(.-sha512_block_data_order)
   2354 .asciz	"SHA512 block transform for SPARCv9, CRYPTOGAMS by <appro (at) openssl.org>"
   2355 .align	4
   2356