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