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