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