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