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