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