xref: /netbsd-src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/sha512-ppc.S (revision 1b3d6f93806f8821fe459e13ad13e605b37c6d43)
1a4199014Schristos.machine	"any"
2a4199014Schristos.text
3a4199014Schristos
4*1b3d6f93Schristos.globl	sha256_block_ppc
5a4199014Schristos.align	6
6*1b3d6f93Schristossha256_block_ppc:
7*1b3d6f93Schristos	stdu	1,-320(1)
8a4199014Schristos	mflr	0
9*1b3d6f93Schristos	sldi	5,5,6
10a4199014Schristos
11*1b3d6f93Schristos	std	3,144(1)
12a4199014Schristos
13*1b3d6f93Schristos	std	14,176(1)
14*1b3d6f93Schristos	std	15,184(1)
15*1b3d6f93Schristos	std	16,192(1)
16*1b3d6f93Schristos	std	17,200(1)
17*1b3d6f93Schristos	std	18,208(1)
18*1b3d6f93Schristos	std	19,216(1)
19*1b3d6f93Schristos	std	20,224(1)
20*1b3d6f93Schristos	std	21,232(1)
21*1b3d6f93Schristos	std	22,240(1)
22*1b3d6f93Schristos	std	23,248(1)
23*1b3d6f93Schristos	std	24,256(1)
24*1b3d6f93Schristos	std	25,264(1)
25*1b3d6f93Schristos	std	26,272(1)
26*1b3d6f93Schristos	std	27,280(1)
27*1b3d6f93Schristos	std	28,288(1)
28*1b3d6f93Schristos	std	29,296(1)
29*1b3d6f93Schristos	std	30,304(1)
30*1b3d6f93Schristos	std	31,312(1)
31*1b3d6f93Schristos	std	0,336(1)
32*1b3d6f93Schristos	lwz	8,0(3)
33a4199014Schristos	mr	31,4
34*1b3d6f93Schristos	lwz	9,4(3)
35*1b3d6f93Schristos	lwz	10,8(3)
36*1b3d6f93Schristos	lwz	11,12(3)
37*1b3d6f93Schristos	lwz	12,16(3)
38*1b3d6f93Schristos	lwz	6,20(3)
39*1b3d6f93Schristos	lwz	14,24(3)
40*1b3d6f93Schristos	lwz	15,28(3)
41a4199014Schristos	bl	LPICmeup
42a4199014SchristosLPICedup:
43a4199014Schristos	andi.	0,31,3
44a4199014Schristos	bne	Lunaligned
45a4199014SchristosLaligned:
46a4199014Schristos	add	5,31,5
47*1b3d6f93Schristos	std	5,128(1)
48*1b3d6f93Schristos	std	31,136(1)
49a4199014Schristos	bl	Lsha2_block_private
50a4199014Schristos	b	Ldone
51a4199014Schristos
52a4199014Schristos
53a4199014Schristos
54a4199014Schristos
55a4199014Schristos
56a4199014Schristos
57a4199014Schristos
58a4199014Schristos.align	4
59a4199014SchristosLunaligned:
60a4199014Schristos	subfic	0,31,4096
61*1b3d6f93Schristos	andi.	0,0,4032
62a4199014Schristos	beq	Lcross_page
63a4199014Schristos	cmpld	5,0
64a4199014Schristos	ble	Laligned
65a4199014Schristos	subfc	5,0,5
66a4199014Schristos	add	0,31,0
67*1b3d6f93Schristos	std	5,120(1)
68*1b3d6f93Schristos	std	0,128(1)
69*1b3d6f93Schristos	std	31,136(1)
70a4199014Schristos	bl	Lsha2_block_private
71a4199014Schristos
72*1b3d6f93Schristos	ld	5,120(1)
73a4199014SchristosLcross_page:
74*1b3d6f93Schristos	li	0,16
75a4199014Schristos	mtctr	0
76a4199014Schristos	addi	20,1,48
77a4199014SchristosLmemcpy:
78a4199014Schristos	lbz	16,0(31)
79a4199014Schristos	lbz	17,1(31)
80a4199014Schristos	lbz	18,2(31)
81a4199014Schristos	lbz	19,3(31)
82a4199014Schristos	addi	31,31,4
83a4199014Schristos	stb	16,0(20)
84a4199014Schristos	stb	17,1(20)
85a4199014Schristos	stb	18,2(20)
86a4199014Schristos	stb	19,3(20)
87a4199014Schristos	addi	20,20,4
88a4199014Schristos	bc	16,0,Lmemcpy
89*1b3d6f93Schristos	std	31,112(1)
90*1b3d6f93Schristos	addi	0,1,112
91a4199014Schristos	addi	31,1,48
92*1b3d6f93Schristos	std	5,120(1)
93*1b3d6f93Schristos	std	0,128(1)
94*1b3d6f93Schristos	std	31,136(1)
95a4199014Schristos	bl	Lsha2_block_private
96*1b3d6f93Schristos	ld	31,112(1)
97*1b3d6f93Schristos	ld	5,120(1)
98*1b3d6f93Schristos	addic.	5,5,-64
99a4199014Schristos	bne	Lunaligned
100a4199014Schristos
101a4199014SchristosLdone:
102*1b3d6f93Schristos	ld	0,336(1)
103*1b3d6f93Schristos	ld	14,176(1)
104*1b3d6f93Schristos	ld	15,184(1)
105*1b3d6f93Schristos	ld	16,192(1)
106*1b3d6f93Schristos	ld	17,200(1)
107*1b3d6f93Schristos	ld	18,208(1)
108*1b3d6f93Schristos	ld	19,216(1)
109*1b3d6f93Schristos	ld	20,224(1)
110*1b3d6f93Schristos	ld	21,232(1)
111*1b3d6f93Schristos	ld	22,240(1)
112*1b3d6f93Schristos	ld	23,248(1)
113*1b3d6f93Schristos	ld	24,256(1)
114*1b3d6f93Schristos	ld	25,264(1)
115*1b3d6f93Schristos	ld	26,272(1)
116*1b3d6f93Schristos	ld	27,280(1)
117*1b3d6f93Schristos	ld	28,288(1)
118*1b3d6f93Schristos	ld	29,296(1)
119*1b3d6f93Schristos	ld	30,304(1)
120*1b3d6f93Schristos	ld	31,312(1)
121a4199014Schristos	mtlr	0
122*1b3d6f93Schristos	addi	1,1,320
123a4199014Schristos	blr
124a4199014Schristos.long	0
125a4199014Schristos.byte	0,12,4,1,0x80,18,3,0
126a4199014Schristos.long	0
127a4199014Schristos.align	4
128a4199014SchristosLsha2_block_private:
129*1b3d6f93Schristos	lwz	0,0(7)
130*1b3d6f93Schristos	lwz	16,0(31)
131*1b3d6f93Schristos	rotrwi	3,12,6
132*1b3d6f93Schristos	rotrwi	4,12,11
133a4199014Schristos	and	5,6,12
134a4199014Schristos	xor	3,3,4
135a4199014Schristos	add	15,15,0
136a4199014Schristos	andc	0,14,12
137*1b3d6f93Schristos	rotrwi	4,4,14
138a4199014Schristos	or	5,5,0
139a4199014Schristos	add	15,15,16
140a4199014Schristos	xor	3,3,4
141a4199014Schristos	add	15,15,5
142a4199014Schristos	add	15,15,3
143a4199014Schristos
144*1b3d6f93Schristos	rotrwi	3,8,2
145*1b3d6f93Schristos	rotrwi	4,8,13
146a4199014Schristos	and	5,8,9
147a4199014Schristos	and	0,8,10
148a4199014Schristos	xor	3,3,4
149*1b3d6f93Schristos	rotrwi	4,4,9
150a4199014Schristos	xor	5,5,0
151a4199014Schristos	and	0,9,10
152a4199014Schristos	xor	3,3,4
153a4199014Schristos	add	11,11,15
154a4199014Schristos	xor	5,5,0
155*1b3d6f93Schristos	lwz	0,4(7)
156a4199014Schristos	add	15,15,3
157a4199014Schristos	add	15,15,5
158a4199014Schristos
159*1b3d6f93Schristos	lwz	17,4(31)
160*1b3d6f93Schristos	rotrwi	3,11,6
161*1b3d6f93Schristos	rotrwi	4,11,11
162a4199014Schristos	and	5,12,11
163a4199014Schristos	xor	3,3,4
164a4199014Schristos	add	14,14,0
165a4199014Schristos	andc	0,6,11
166*1b3d6f93Schristos	rotrwi	4,4,14
167a4199014Schristos	or	5,5,0
168a4199014Schristos	add	14,14,17
169a4199014Schristos	xor	3,3,4
170a4199014Schristos	add	14,14,5
171a4199014Schristos	add	14,14,3
172a4199014Schristos
173*1b3d6f93Schristos	rotrwi	3,15,2
174*1b3d6f93Schristos	rotrwi	4,15,13
175a4199014Schristos	and	5,15,8
176a4199014Schristos	and	0,15,9
177a4199014Schristos	xor	3,3,4
178*1b3d6f93Schristos	rotrwi	4,4,9
179a4199014Schristos	xor	5,5,0
180a4199014Schristos	and	0,8,9
181a4199014Schristos	xor	3,3,4
182a4199014Schristos	add	10,10,14
183a4199014Schristos	xor	5,5,0
184*1b3d6f93Schristos	lwz	0,8(7)
185a4199014Schristos	add	14,14,3
186a4199014Schristos	add	14,14,5
187a4199014Schristos
188*1b3d6f93Schristos	lwz	18,8(31)
189*1b3d6f93Schristos	rotrwi	3,10,6
190*1b3d6f93Schristos	rotrwi	4,10,11
191a4199014Schristos	and	5,11,10
192a4199014Schristos	xor	3,3,4
193a4199014Schristos	add	6,6,0
194a4199014Schristos	andc	0,12,10
195*1b3d6f93Schristos	rotrwi	4,4,14
196a4199014Schristos	or	5,5,0
197a4199014Schristos	add	6,6,18
198a4199014Schristos	xor	3,3,4
199a4199014Schristos	add	6,6,5
200a4199014Schristos	add	6,6,3
201a4199014Schristos
202*1b3d6f93Schristos	rotrwi	3,14,2
203*1b3d6f93Schristos	rotrwi	4,14,13
204a4199014Schristos	and	5,14,15
205a4199014Schristos	and	0,14,8
206a4199014Schristos	xor	3,3,4
207*1b3d6f93Schristos	rotrwi	4,4,9
208a4199014Schristos	xor	5,5,0
209a4199014Schristos	and	0,15,8
210a4199014Schristos	xor	3,3,4
211a4199014Schristos	add	9,9,6
212a4199014Schristos	xor	5,5,0
213*1b3d6f93Schristos	lwz	0,12(7)
214a4199014Schristos	add	6,6,3
215a4199014Schristos	add	6,6,5
216a4199014Schristos
217*1b3d6f93Schristos	lwz	19,12(31)
218*1b3d6f93Schristos	rotrwi	3,9,6
219*1b3d6f93Schristos	rotrwi	4,9,11
220a4199014Schristos	and	5,10,9
221a4199014Schristos	xor	3,3,4
222a4199014Schristos	add	12,12,0
223a4199014Schristos	andc	0,11,9
224*1b3d6f93Schristos	rotrwi	4,4,14
225a4199014Schristos	or	5,5,0
226a4199014Schristos	add	12,12,19
227a4199014Schristos	xor	3,3,4
228a4199014Schristos	add	12,12,5
229a4199014Schristos	add	12,12,3
230a4199014Schristos
231*1b3d6f93Schristos	rotrwi	3,6,2
232*1b3d6f93Schristos	rotrwi	4,6,13
233a4199014Schristos	and	5,6,14
234a4199014Schristos	and	0,6,15
235a4199014Schristos	xor	3,3,4
236*1b3d6f93Schristos	rotrwi	4,4,9
237a4199014Schristos	xor	5,5,0
238a4199014Schristos	and	0,14,15
239a4199014Schristos	xor	3,3,4
240a4199014Schristos	add	8,8,12
241a4199014Schristos	xor	5,5,0
242*1b3d6f93Schristos	lwz	0,16(7)
243a4199014Schristos	add	12,12,3
244a4199014Schristos	add	12,12,5
245a4199014Schristos
246*1b3d6f93Schristos	lwz	20,16(31)
247*1b3d6f93Schristos	rotrwi	3,8,6
248*1b3d6f93Schristos	rotrwi	4,8,11
249a4199014Schristos	and	5,9,8
250a4199014Schristos	xor	3,3,4
251a4199014Schristos	add	11,11,0
252a4199014Schristos	andc	0,10,8
253*1b3d6f93Schristos	rotrwi	4,4,14
254a4199014Schristos	or	5,5,0
255a4199014Schristos	add	11,11,20
256a4199014Schristos	xor	3,3,4
257a4199014Schristos	add	11,11,5
258a4199014Schristos	add	11,11,3
259a4199014Schristos
260*1b3d6f93Schristos	rotrwi	3,12,2
261*1b3d6f93Schristos	rotrwi	4,12,13
262a4199014Schristos	and	5,12,6
263a4199014Schristos	and	0,12,14
264a4199014Schristos	xor	3,3,4
265*1b3d6f93Schristos	rotrwi	4,4,9
266a4199014Schristos	xor	5,5,0
267a4199014Schristos	and	0,6,14
268a4199014Schristos	xor	3,3,4
269a4199014Schristos	add	15,15,11
270a4199014Schristos	xor	5,5,0
271*1b3d6f93Schristos	lwz	0,20(7)
272a4199014Schristos	add	11,11,3
273a4199014Schristos	add	11,11,5
274a4199014Schristos
275*1b3d6f93Schristos	lwz	21,20(31)
276*1b3d6f93Schristos	rotrwi	3,15,6
277*1b3d6f93Schristos	rotrwi	4,15,11
278a4199014Schristos	and	5,8,15
279a4199014Schristos	xor	3,3,4
280a4199014Schristos	add	10,10,0
281a4199014Schristos	andc	0,9,15
282*1b3d6f93Schristos	rotrwi	4,4,14
283a4199014Schristos	or	5,5,0
284a4199014Schristos	add	10,10,21
285a4199014Schristos	xor	3,3,4
286a4199014Schristos	add	10,10,5
287a4199014Schristos	add	10,10,3
288a4199014Schristos
289*1b3d6f93Schristos	rotrwi	3,11,2
290*1b3d6f93Schristos	rotrwi	4,11,13
291a4199014Schristos	and	5,11,12
292a4199014Schristos	and	0,11,6
293a4199014Schristos	xor	3,3,4
294*1b3d6f93Schristos	rotrwi	4,4,9
295a4199014Schristos	xor	5,5,0
296a4199014Schristos	and	0,12,6
297a4199014Schristos	xor	3,3,4
298a4199014Schristos	add	14,14,10
299a4199014Schristos	xor	5,5,0
300*1b3d6f93Schristos	lwz	0,24(7)
301a4199014Schristos	add	10,10,3
302a4199014Schristos	add	10,10,5
303a4199014Schristos
304*1b3d6f93Schristos	lwz	22,24(31)
305*1b3d6f93Schristos	rotrwi	3,14,6
306*1b3d6f93Schristos	rotrwi	4,14,11
307a4199014Schristos	and	5,15,14
308a4199014Schristos	xor	3,3,4
309a4199014Schristos	add	9,9,0
310a4199014Schristos	andc	0,8,14
311*1b3d6f93Schristos	rotrwi	4,4,14
312a4199014Schristos	or	5,5,0
313a4199014Schristos	add	9,9,22
314a4199014Schristos	xor	3,3,4
315a4199014Schristos	add	9,9,5
316a4199014Schristos	add	9,9,3
317a4199014Schristos
318*1b3d6f93Schristos	rotrwi	3,10,2
319*1b3d6f93Schristos	rotrwi	4,10,13
320a4199014Schristos	and	5,10,11
321a4199014Schristos	and	0,10,12
322a4199014Schristos	xor	3,3,4
323*1b3d6f93Schristos	rotrwi	4,4,9
324a4199014Schristos	xor	5,5,0
325a4199014Schristos	and	0,11,12
326a4199014Schristos	xor	3,3,4
327a4199014Schristos	add	6,6,9
328a4199014Schristos	xor	5,5,0
329*1b3d6f93Schristos	lwz	0,28(7)
330a4199014Schristos	add	9,9,3
331a4199014Schristos	add	9,9,5
332a4199014Schristos
333*1b3d6f93Schristos	lwz	23,28(31)
334*1b3d6f93Schristos	rotrwi	3,6,6
335*1b3d6f93Schristos	rotrwi	4,6,11
336a4199014Schristos	and	5,14,6
337a4199014Schristos	xor	3,3,4
338a4199014Schristos	add	8,8,0
339a4199014Schristos	andc	0,15,6
340*1b3d6f93Schristos	rotrwi	4,4,14
341a4199014Schristos	or	5,5,0
342a4199014Schristos	add	8,8,23
343a4199014Schristos	xor	3,3,4
344a4199014Schristos	add	8,8,5
345a4199014Schristos	add	8,8,3
346a4199014Schristos
347*1b3d6f93Schristos	rotrwi	3,9,2
348*1b3d6f93Schristos	rotrwi	4,9,13
349a4199014Schristos	and	5,9,10
350a4199014Schristos	and	0,9,11
351a4199014Schristos	xor	3,3,4
352*1b3d6f93Schristos	rotrwi	4,4,9
353a4199014Schristos	xor	5,5,0
354a4199014Schristos	and	0,10,11
355a4199014Schristos	xor	3,3,4
356a4199014Schristos	add	12,12,8
357a4199014Schristos	xor	5,5,0
358*1b3d6f93Schristos	lwz	0,32(7)
359a4199014Schristos	add	8,8,3
360a4199014Schristos	add	8,8,5
361a4199014Schristos
362*1b3d6f93Schristos	lwz	24,32(31)
363*1b3d6f93Schristos	rotrwi	3,12,6
364*1b3d6f93Schristos	rotrwi	4,12,11
365a4199014Schristos	and	5,6,12
366a4199014Schristos	xor	3,3,4
367a4199014Schristos	add	15,15,0
368a4199014Schristos	andc	0,14,12
369*1b3d6f93Schristos	rotrwi	4,4,14
370a4199014Schristos	or	5,5,0
371a4199014Schristos	add	15,15,24
372a4199014Schristos	xor	3,3,4
373a4199014Schristos	add	15,15,5
374a4199014Schristos	add	15,15,3
375a4199014Schristos
376*1b3d6f93Schristos	rotrwi	3,8,2
377*1b3d6f93Schristos	rotrwi	4,8,13
378a4199014Schristos	and	5,8,9
379a4199014Schristos	and	0,8,10
380a4199014Schristos	xor	3,3,4
381*1b3d6f93Schristos	rotrwi	4,4,9
382a4199014Schristos	xor	5,5,0
383a4199014Schristos	and	0,9,10
384a4199014Schristos	xor	3,3,4
385a4199014Schristos	add	11,11,15
386a4199014Schristos	xor	5,5,0
387*1b3d6f93Schristos	lwz	0,36(7)
388a4199014Schristos	add	15,15,3
389a4199014Schristos	add	15,15,5
390a4199014Schristos
391*1b3d6f93Schristos	lwz	25,36(31)
392*1b3d6f93Schristos	rotrwi	3,11,6
393*1b3d6f93Schristos	rotrwi	4,11,11
394a4199014Schristos	and	5,12,11
395a4199014Schristos	xor	3,3,4
396a4199014Schristos	add	14,14,0
397a4199014Schristos	andc	0,6,11
398*1b3d6f93Schristos	rotrwi	4,4,14
399a4199014Schristos	or	5,5,0
400a4199014Schristos	add	14,14,25
401a4199014Schristos	xor	3,3,4
402a4199014Schristos	add	14,14,5
403a4199014Schristos	add	14,14,3
404a4199014Schristos
405*1b3d6f93Schristos	rotrwi	3,15,2
406*1b3d6f93Schristos	rotrwi	4,15,13
407a4199014Schristos	and	5,15,8
408a4199014Schristos	and	0,15,9
409a4199014Schristos	xor	3,3,4
410*1b3d6f93Schristos	rotrwi	4,4,9
411a4199014Schristos	xor	5,5,0
412a4199014Schristos	and	0,8,9
413a4199014Schristos	xor	3,3,4
414a4199014Schristos	add	10,10,14
415a4199014Schristos	xor	5,5,0
416*1b3d6f93Schristos	lwz	0,40(7)
417a4199014Schristos	add	14,14,3
418a4199014Schristos	add	14,14,5
419a4199014Schristos
420*1b3d6f93Schristos	lwz	26,40(31)
421*1b3d6f93Schristos	rotrwi	3,10,6
422*1b3d6f93Schristos	rotrwi	4,10,11
423a4199014Schristos	and	5,11,10
424a4199014Schristos	xor	3,3,4
425a4199014Schristos	add	6,6,0
426a4199014Schristos	andc	0,12,10
427*1b3d6f93Schristos	rotrwi	4,4,14
428a4199014Schristos	or	5,5,0
429a4199014Schristos	add	6,6,26
430a4199014Schristos	xor	3,3,4
431a4199014Schristos	add	6,6,5
432a4199014Schristos	add	6,6,3
433a4199014Schristos
434*1b3d6f93Schristos	rotrwi	3,14,2
435*1b3d6f93Schristos	rotrwi	4,14,13
436a4199014Schristos	and	5,14,15
437a4199014Schristos	and	0,14,8
438a4199014Schristos	xor	3,3,4
439*1b3d6f93Schristos	rotrwi	4,4,9
440a4199014Schristos	xor	5,5,0
441a4199014Schristos	and	0,15,8
442a4199014Schristos	xor	3,3,4
443a4199014Schristos	add	9,9,6
444a4199014Schristos	xor	5,5,0
445*1b3d6f93Schristos	lwz	0,44(7)
446a4199014Schristos	add	6,6,3
447a4199014Schristos	add	6,6,5
448a4199014Schristos
449*1b3d6f93Schristos	lwz	27,44(31)
450*1b3d6f93Schristos	rotrwi	3,9,6
451*1b3d6f93Schristos	rotrwi	4,9,11
452a4199014Schristos	and	5,10,9
453a4199014Schristos	xor	3,3,4
454a4199014Schristos	add	12,12,0
455a4199014Schristos	andc	0,11,9
456*1b3d6f93Schristos	rotrwi	4,4,14
457a4199014Schristos	or	5,5,0
458a4199014Schristos	add	12,12,27
459a4199014Schristos	xor	3,3,4
460a4199014Schristos	add	12,12,5
461a4199014Schristos	add	12,12,3
462a4199014Schristos
463*1b3d6f93Schristos	rotrwi	3,6,2
464*1b3d6f93Schristos	rotrwi	4,6,13
465a4199014Schristos	and	5,6,14
466a4199014Schristos	and	0,6,15
467a4199014Schristos	xor	3,3,4
468*1b3d6f93Schristos	rotrwi	4,4,9
469a4199014Schristos	xor	5,5,0
470a4199014Schristos	and	0,14,15
471a4199014Schristos	xor	3,3,4
472a4199014Schristos	add	8,8,12
473a4199014Schristos	xor	5,5,0
474*1b3d6f93Schristos	lwz	0,48(7)
475a4199014Schristos	add	12,12,3
476a4199014Schristos	add	12,12,5
477a4199014Schristos
478*1b3d6f93Schristos	lwz	28,48(31)
479*1b3d6f93Schristos	rotrwi	3,8,6
480*1b3d6f93Schristos	rotrwi	4,8,11
481a4199014Schristos	and	5,9,8
482a4199014Schristos	xor	3,3,4
483a4199014Schristos	add	11,11,0
484a4199014Schristos	andc	0,10,8
485*1b3d6f93Schristos	rotrwi	4,4,14
486a4199014Schristos	or	5,5,0
487a4199014Schristos	add	11,11,28
488a4199014Schristos	xor	3,3,4
489a4199014Schristos	add	11,11,5
490a4199014Schristos	add	11,11,3
491a4199014Schristos
492*1b3d6f93Schristos	rotrwi	3,12,2
493*1b3d6f93Schristos	rotrwi	4,12,13
494a4199014Schristos	and	5,12,6
495a4199014Schristos	and	0,12,14
496a4199014Schristos	xor	3,3,4
497*1b3d6f93Schristos	rotrwi	4,4,9
498a4199014Schristos	xor	5,5,0
499a4199014Schristos	and	0,6,14
500a4199014Schristos	xor	3,3,4
501a4199014Schristos	add	15,15,11
502a4199014Schristos	xor	5,5,0
503*1b3d6f93Schristos	lwz	0,52(7)
504a4199014Schristos	add	11,11,3
505a4199014Schristos	add	11,11,5
506a4199014Schristos
507*1b3d6f93Schristos	lwz	29,52(31)
508*1b3d6f93Schristos	rotrwi	3,15,6
509*1b3d6f93Schristos	rotrwi	4,15,11
510a4199014Schristos	and	5,8,15
511a4199014Schristos	xor	3,3,4
512a4199014Schristos	add	10,10,0
513a4199014Schristos	andc	0,9,15
514*1b3d6f93Schristos	rotrwi	4,4,14
515a4199014Schristos	or	5,5,0
516a4199014Schristos	add	10,10,29
517a4199014Schristos	xor	3,3,4
518a4199014Schristos	add	10,10,5
519a4199014Schristos	add	10,10,3
520a4199014Schristos
521*1b3d6f93Schristos	rotrwi	3,11,2
522*1b3d6f93Schristos	rotrwi	4,11,13
523a4199014Schristos	and	5,11,12
524a4199014Schristos	and	0,11,6
525a4199014Schristos	xor	3,3,4
526*1b3d6f93Schristos	rotrwi	4,4,9
527a4199014Schristos	xor	5,5,0
528a4199014Schristos	and	0,12,6
529a4199014Schristos	xor	3,3,4
530a4199014Schristos	add	14,14,10
531a4199014Schristos	xor	5,5,0
532*1b3d6f93Schristos	lwz	0,56(7)
533a4199014Schristos	add	10,10,3
534a4199014Schristos	add	10,10,5
535a4199014Schristos
536*1b3d6f93Schristos	lwz	30,56(31)
537*1b3d6f93Schristos	rotrwi	3,14,6
538*1b3d6f93Schristos	rotrwi	4,14,11
539a4199014Schristos	and	5,15,14
540a4199014Schristos	xor	3,3,4
541a4199014Schristos	add	9,9,0
542a4199014Schristos	andc	0,8,14
543*1b3d6f93Schristos	rotrwi	4,4,14
544a4199014Schristos	or	5,5,0
545a4199014Schristos	add	9,9,30
546a4199014Schristos	xor	3,3,4
547a4199014Schristos	add	9,9,5
548a4199014Schristos	add	9,9,3
549a4199014Schristos
550*1b3d6f93Schristos	rotrwi	3,10,2
551*1b3d6f93Schristos	rotrwi	4,10,13
552a4199014Schristos	and	5,10,11
553a4199014Schristos	and	0,10,12
554a4199014Schristos	xor	3,3,4
555*1b3d6f93Schristos	rotrwi	4,4,9
556a4199014Schristos	xor	5,5,0
557a4199014Schristos	and	0,11,12
558a4199014Schristos	xor	3,3,4
559a4199014Schristos	add	6,6,9
560a4199014Schristos	xor	5,5,0
561*1b3d6f93Schristos	lwz	0,60(7)
562a4199014Schristos	add	9,9,3
563a4199014Schristos	add	9,9,5
564a4199014Schristos
565*1b3d6f93Schristos	lwz	31,60(31)
566*1b3d6f93Schristos	rotrwi	3,6,6
567*1b3d6f93Schristos	rotrwi	4,6,11
568a4199014Schristos	and	5,14,6
569a4199014Schristos	xor	3,3,4
570a4199014Schristos	add	8,8,0
571a4199014Schristos	andc	0,15,6
572*1b3d6f93Schristos	rotrwi	4,4,14
573a4199014Schristos	or	5,5,0
574a4199014Schristos	add	8,8,31
575a4199014Schristos	xor	3,3,4
576a4199014Schristos	add	8,8,5
577a4199014Schristos	add	8,8,3
578a4199014Schristos
579*1b3d6f93Schristos	rotrwi	3,9,2
580*1b3d6f93Schristos	rotrwi	4,9,13
581a4199014Schristos	and	5,9,10
582a4199014Schristos	and	0,9,11
583a4199014Schristos	xor	3,3,4
584*1b3d6f93Schristos	rotrwi	4,4,9
585a4199014Schristos	xor	5,5,0
586a4199014Schristos	and	0,10,11
587a4199014Schristos	xor	3,3,4
588a4199014Schristos	add	12,12,8
589a4199014Schristos	xor	5,5,0
590a4199014Schristos	add	8,8,3
591a4199014Schristos	add	8,8,5
592a4199014Schristos
593*1b3d6f93Schristos	li	5,3
594a4199014Schristos	mtctr	5
595a4199014Schristos.align	4
596a4199014SchristosLrounds:
597*1b3d6f93Schristos	addi	7,7,64
598*1b3d6f93Schristos	rotrwi	3,17,7
599*1b3d6f93Schristos	rotrwi	4,17,18
600*1b3d6f93Schristos	rotrwi	5,30,17
601*1b3d6f93Schristos	rotrwi	0,30,19
602a4199014Schristos	xor	3,3,4
603*1b3d6f93Schristos	srwi	4,17,3
604a4199014Schristos	xor	5,5,0
605*1b3d6f93Schristos	srwi	0,30,10
606a4199014Schristos	add	16,16,25
607a4199014Schristos	xor	3,3,4
608a4199014Schristos	xor	5,5,0
609*1b3d6f93Schristos	lwz	0,0(7)
610a4199014Schristos	add	16,16,3
611a4199014Schristos	add	16,16,5
612*1b3d6f93Schristos	rotrwi	3,12,6
613*1b3d6f93Schristos	rotrwi	4,12,11
614a4199014Schristos	and	5,6,12
615a4199014Schristos	xor	3,3,4
616a4199014Schristos	add	15,15,0
617a4199014Schristos	andc	0,14,12
618*1b3d6f93Schristos	rotrwi	4,4,14
619a4199014Schristos	or	5,5,0
620a4199014Schristos	add	15,15,16
621a4199014Schristos	xor	3,3,4
622a4199014Schristos	add	15,15,5
623a4199014Schristos	add	15,15,3
624a4199014Schristos
625*1b3d6f93Schristos	rotrwi	3,8,2
626*1b3d6f93Schristos	rotrwi	4,8,13
627a4199014Schristos	and	5,8,9
628a4199014Schristos	and	0,8,10
629a4199014Schristos	xor	3,3,4
630*1b3d6f93Schristos	rotrwi	4,4,9
631a4199014Schristos	xor	5,5,0
632a4199014Schristos	and	0,9,10
633a4199014Schristos	xor	3,3,4
634a4199014Schristos	add	11,11,15
635a4199014Schristos	xor	5,5,0
636a4199014Schristos	add	15,15,3
637a4199014Schristos	add	15,15,5
638a4199014Schristos
639*1b3d6f93Schristos	rotrwi	3,18,7
640*1b3d6f93Schristos	rotrwi	4,18,18
641*1b3d6f93Schristos	rotrwi	5,31,17
642*1b3d6f93Schristos	rotrwi	0,31,19
643a4199014Schristos	xor	3,3,4
644*1b3d6f93Schristos	srwi	4,18,3
645a4199014Schristos	xor	5,5,0
646*1b3d6f93Schristos	srwi	0,31,10
647a4199014Schristos	add	17,17,26
648a4199014Schristos	xor	3,3,4
649a4199014Schristos	xor	5,5,0
650*1b3d6f93Schristos	lwz	0,4(7)
651a4199014Schristos	add	17,17,3
652a4199014Schristos	add	17,17,5
653*1b3d6f93Schristos	rotrwi	3,11,6
654*1b3d6f93Schristos	rotrwi	4,11,11
655a4199014Schristos	and	5,12,11
656a4199014Schristos	xor	3,3,4
657a4199014Schristos	add	14,14,0
658a4199014Schristos	andc	0,6,11
659*1b3d6f93Schristos	rotrwi	4,4,14
660a4199014Schristos	or	5,5,0
661a4199014Schristos	add	14,14,17
662a4199014Schristos	xor	3,3,4
663a4199014Schristos	add	14,14,5
664a4199014Schristos	add	14,14,3
665a4199014Schristos
666*1b3d6f93Schristos	rotrwi	3,15,2
667*1b3d6f93Schristos	rotrwi	4,15,13
668a4199014Schristos	and	5,15,8
669a4199014Schristos	and	0,15,9
670a4199014Schristos	xor	3,3,4
671*1b3d6f93Schristos	rotrwi	4,4,9
672a4199014Schristos	xor	5,5,0
673a4199014Schristos	and	0,8,9
674a4199014Schristos	xor	3,3,4
675a4199014Schristos	add	10,10,14
676a4199014Schristos	xor	5,5,0
677a4199014Schristos	add	14,14,3
678a4199014Schristos	add	14,14,5
679a4199014Schristos
680*1b3d6f93Schristos	rotrwi	3,19,7
681*1b3d6f93Schristos	rotrwi	4,19,18
682*1b3d6f93Schristos	rotrwi	5,16,17
683*1b3d6f93Schristos	rotrwi	0,16,19
684a4199014Schristos	xor	3,3,4
685*1b3d6f93Schristos	srwi	4,19,3
686a4199014Schristos	xor	5,5,0
687*1b3d6f93Schristos	srwi	0,16,10
688a4199014Schristos	add	18,18,27
689a4199014Schristos	xor	3,3,4
690a4199014Schristos	xor	5,5,0
691*1b3d6f93Schristos	lwz	0,8(7)
692a4199014Schristos	add	18,18,3
693a4199014Schristos	add	18,18,5
694*1b3d6f93Schristos	rotrwi	3,10,6
695*1b3d6f93Schristos	rotrwi	4,10,11
696a4199014Schristos	and	5,11,10
697a4199014Schristos	xor	3,3,4
698a4199014Schristos	add	6,6,0
699a4199014Schristos	andc	0,12,10
700*1b3d6f93Schristos	rotrwi	4,4,14
701a4199014Schristos	or	5,5,0
702a4199014Schristos	add	6,6,18
703a4199014Schristos	xor	3,3,4
704a4199014Schristos	add	6,6,5
705a4199014Schristos	add	6,6,3
706a4199014Schristos
707*1b3d6f93Schristos	rotrwi	3,14,2
708*1b3d6f93Schristos	rotrwi	4,14,13
709a4199014Schristos	and	5,14,15
710a4199014Schristos	and	0,14,8
711a4199014Schristos	xor	3,3,4
712*1b3d6f93Schristos	rotrwi	4,4,9
713a4199014Schristos	xor	5,5,0
714a4199014Schristos	and	0,15,8
715a4199014Schristos	xor	3,3,4
716a4199014Schristos	add	9,9,6
717a4199014Schristos	xor	5,5,0
718a4199014Schristos	add	6,6,3
719a4199014Schristos	add	6,6,5
720a4199014Schristos
721*1b3d6f93Schristos	rotrwi	3,20,7
722*1b3d6f93Schristos	rotrwi	4,20,18
723*1b3d6f93Schristos	rotrwi	5,17,17
724*1b3d6f93Schristos	rotrwi	0,17,19
725a4199014Schristos	xor	3,3,4
726*1b3d6f93Schristos	srwi	4,20,3
727a4199014Schristos	xor	5,5,0
728*1b3d6f93Schristos	srwi	0,17,10
729a4199014Schristos	add	19,19,28
730a4199014Schristos	xor	3,3,4
731a4199014Schristos	xor	5,5,0
732*1b3d6f93Schristos	lwz	0,12(7)
733a4199014Schristos	add	19,19,3
734a4199014Schristos	add	19,19,5
735*1b3d6f93Schristos	rotrwi	3,9,6
736*1b3d6f93Schristos	rotrwi	4,9,11
737a4199014Schristos	and	5,10,9
738a4199014Schristos	xor	3,3,4
739a4199014Schristos	add	12,12,0
740a4199014Schristos	andc	0,11,9
741*1b3d6f93Schristos	rotrwi	4,4,14
742a4199014Schristos	or	5,5,0
743a4199014Schristos	add	12,12,19
744a4199014Schristos	xor	3,3,4
745a4199014Schristos	add	12,12,5
746a4199014Schristos	add	12,12,3
747a4199014Schristos
748*1b3d6f93Schristos	rotrwi	3,6,2
749*1b3d6f93Schristos	rotrwi	4,6,13
750a4199014Schristos	and	5,6,14
751a4199014Schristos	and	0,6,15
752a4199014Schristos	xor	3,3,4
753*1b3d6f93Schristos	rotrwi	4,4,9
754a4199014Schristos	xor	5,5,0
755a4199014Schristos	and	0,14,15
756a4199014Schristos	xor	3,3,4
757a4199014Schristos	add	8,8,12
758a4199014Schristos	xor	5,5,0
759a4199014Schristos	add	12,12,3
760a4199014Schristos	add	12,12,5
761a4199014Schristos
762*1b3d6f93Schristos	rotrwi	3,21,7
763*1b3d6f93Schristos	rotrwi	4,21,18
764*1b3d6f93Schristos	rotrwi	5,18,17
765*1b3d6f93Schristos	rotrwi	0,18,19
766a4199014Schristos	xor	3,3,4
767*1b3d6f93Schristos	srwi	4,21,3
768a4199014Schristos	xor	5,5,0
769*1b3d6f93Schristos	srwi	0,18,10
770a4199014Schristos	add	20,20,29
771a4199014Schristos	xor	3,3,4
772a4199014Schristos	xor	5,5,0
773*1b3d6f93Schristos	lwz	0,16(7)
774a4199014Schristos	add	20,20,3
775a4199014Schristos	add	20,20,5
776*1b3d6f93Schristos	rotrwi	3,8,6
777*1b3d6f93Schristos	rotrwi	4,8,11
778a4199014Schristos	and	5,9,8
779a4199014Schristos	xor	3,3,4
780a4199014Schristos	add	11,11,0
781a4199014Schristos	andc	0,10,8
782*1b3d6f93Schristos	rotrwi	4,4,14
783a4199014Schristos	or	5,5,0
784a4199014Schristos	add	11,11,20
785a4199014Schristos	xor	3,3,4
786a4199014Schristos	add	11,11,5
787a4199014Schristos	add	11,11,3
788a4199014Schristos
789*1b3d6f93Schristos	rotrwi	3,12,2
790*1b3d6f93Schristos	rotrwi	4,12,13
791a4199014Schristos	and	5,12,6
792a4199014Schristos	and	0,12,14
793a4199014Schristos	xor	3,3,4
794*1b3d6f93Schristos	rotrwi	4,4,9
795a4199014Schristos	xor	5,5,0
796a4199014Schristos	and	0,6,14
797a4199014Schristos	xor	3,3,4
798a4199014Schristos	add	15,15,11
799a4199014Schristos	xor	5,5,0
800a4199014Schristos	add	11,11,3
801a4199014Schristos	add	11,11,5
802a4199014Schristos
803*1b3d6f93Schristos	rotrwi	3,22,7
804*1b3d6f93Schristos	rotrwi	4,22,18
805*1b3d6f93Schristos	rotrwi	5,19,17
806*1b3d6f93Schristos	rotrwi	0,19,19
807a4199014Schristos	xor	3,3,4
808*1b3d6f93Schristos	srwi	4,22,3
809a4199014Schristos	xor	5,5,0
810*1b3d6f93Schristos	srwi	0,19,10
811a4199014Schristos	add	21,21,30
812a4199014Schristos	xor	3,3,4
813a4199014Schristos	xor	5,5,0
814*1b3d6f93Schristos	lwz	0,20(7)
815a4199014Schristos	add	21,21,3
816a4199014Schristos	add	21,21,5
817*1b3d6f93Schristos	rotrwi	3,15,6
818*1b3d6f93Schristos	rotrwi	4,15,11
819a4199014Schristos	and	5,8,15
820a4199014Schristos	xor	3,3,4
821a4199014Schristos	add	10,10,0
822a4199014Schristos	andc	0,9,15
823*1b3d6f93Schristos	rotrwi	4,4,14
824a4199014Schristos	or	5,5,0
825a4199014Schristos	add	10,10,21
826a4199014Schristos	xor	3,3,4
827a4199014Schristos	add	10,10,5
828a4199014Schristos	add	10,10,3
829a4199014Schristos
830*1b3d6f93Schristos	rotrwi	3,11,2
831*1b3d6f93Schristos	rotrwi	4,11,13
832a4199014Schristos	and	5,11,12
833a4199014Schristos	and	0,11,6
834a4199014Schristos	xor	3,3,4
835*1b3d6f93Schristos	rotrwi	4,4,9
836a4199014Schristos	xor	5,5,0
837a4199014Schristos	and	0,12,6
838a4199014Schristos	xor	3,3,4
839a4199014Schristos	add	14,14,10
840a4199014Schristos	xor	5,5,0
841a4199014Schristos	add	10,10,3
842a4199014Schristos	add	10,10,5
843a4199014Schristos
844*1b3d6f93Schristos	rotrwi	3,23,7
845*1b3d6f93Schristos	rotrwi	4,23,18
846*1b3d6f93Schristos	rotrwi	5,20,17
847*1b3d6f93Schristos	rotrwi	0,20,19
848a4199014Schristos	xor	3,3,4
849*1b3d6f93Schristos	srwi	4,23,3
850a4199014Schristos	xor	5,5,0
851*1b3d6f93Schristos	srwi	0,20,10
852a4199014Schristos	add	22,22,31
853a4199014Schristos	xor	3,3,4
854a4199014Schristos	xor	5,5,0
855*1b3d6f93Schristos	lwz	0,24(7)
856a4199014Schristos	add	22,22,3
857a4199014Schristos	add	22,22,5
858*1b3d6f93Schristos	rotrwi	3,14,6
859*1b3d6f93Schristos	rotrwi	4,14,11
860a4199014Schristos	and	5,15,14
861a4199014Schristos	xor	3,3,4
862a4199014Schristos	add	9,9,0
863a4199014Schristos	andc	0,8,14
864*1b3d6f93Schristos	rotrwi	4,4,14
865a4199014Schristos	or	5,5,0
866a4199014Schristos	add	9,9,22
867a4199014Schristos	xor	3,3,4
868a4199014Schristos	add	9,9,5
869a4199014Schristos	add	9,9,3
870a4199014Schristos
871*1b3d6f93Schristos	rotrwi	3,10,2
872*1b3d6f93Schristos	rotrwi	4,10,13
873a4199014Schristos	and	5,10,11
874a4199014Schristos	and	0,10,12
875a4199014Schristos	xor	3,3,4
876*1b3d6f93Schristos	rotrwi	4,4,9
877a4199014Schristos	xor	5,5,0
878a4199014Schristos	and	0,11,12
879a4199014Schristos	xor	3,3,4
880a4199014Schristos	add	6,6,9
881a4199014Schristos	xor	5,5,0
882a4199014Schristos	add	9,9,3
883a4199014Schristos	add	9,9,5
884a4199014Schristos
885*1b3d6f93Schristos	rotrwi	3,24,7
886*1b3d6f93Schristos	rotrwi	4,24,18
887*1b3d6f93Schristos	rotrwi	5,21,17
888*1b3d6f93Schristos	rotrwi	0,21,19
889a4199014Schristos	xor	3,3,4
890*1b3d6f93Schristos	srwi	4,24,3
891a4199014Schristos	xor	5,5,0
892*1b3d6f93Schristos	srwi	0,21,10
893a4199014Schristos	add	23,23,16
894a4199014Schristos	xor	3,3,4
895a4199014Schristos	xor	5,5,0
896*1b3d6f93Schristos	lwz	0,28(7)
897a4199014Schristos	add	23,23,3
898a4199014Schristos	add	23,23,5
899*1b3d6f93Schristos	rotrwi	3,6,6
900*1b3d6f93Schristos	rotrwi	4,6,11
901a4199014Schristos	and	5,14,6
902a4199014Schristos	xor	3,3,4
903a4199014Schristos	add	8,8,0
904a4199014Schristos	andc	0,15,6
905*1b3d6f93Schristos	rotrwi	4,4,14
906a4199014Schristos	or	5,5,0
907a4199014Schristos	add	8,8,23
908a4199014Schristos	xor	3,3,4
909a4199014Schristos	add	8,8,5
910a4199014Schristos	add	8,8,3
911a4199014Schristos
912*1b3d6f93Schristos	rotrwi	3,9,2
913*1b3d6f93Schristos	rotrwi	4,9,13
914a4199014Schristos	and	5,9,10
915a4199014Schristos	and	0,9,11
916a4199014Schristos	xor	3,3,4
917*1b3d6f93Schristos	rotrwi	4,4,9
918a4199014Schristos	xor	5,5,0
919a4199014Schristos	and	0,10,11
920a4199014Schristos	xor	3,3,4
921a4199014Schristos	add	12,12,8
922a4199014Schristos	xor	5,5,0
923a4199014Schristos	add	8,8,3
924a4199014Schristos	add	8,8,5
925a4199014Schristos
926*1b3d6f93Schristos	rotrwi	3,25,7
927*1b3d6f93Schristos	rotrwi	4,25,18
928*1b3d6f93Schristos	rotrwi	5,22,17
929*1b3d6f93Schristos	rotrwi	0,22,19
930a4199014Schristos	xor	3,3,4
931*1b3d6f93Schristos	srwi	4,25,3
932a4199014Schristos	xor	5,5,0
933*1b3d6f93Schristos	srwi	0,22,10
934a4199014Schristos	add	24,24,17
935a4199014Schristos	xor	3,3,4
936a4199014Schristos	xor	5,5,0
937*1b3d6f93Schristos	lwz	0,32(7)
938a4199014Schristos	add	24,24,3
939a4199014Schristos	add	24,24,5
940*1b3d6f93Schristos	rotrwi	3,12,6
941*1b3d6f93Schristos	rotrwi	4,12,11
942a4199014Schristos	and	5,6,12
943a4199014Schristos	xor	3,3,4
944a4199014Schristos	add	15,15,0
945a4199014Schristos	andc	0,14,12
946*1b3d6f93Schristos	rotrwi	4,4,14
947a4199014Schristos	or	5,5,0
948a4199014Schristos	add	15,15,24
949a4199014Schristos	xor	3,3,4
950a4199014Schristos	add	15,15,5
951a4199014Schristos	add	15,15,3
952a4199014Schristos
953*1b3d6f93Schristos	rotrwi	3,8,2
954*1b3d6f93Schristos	rotrwi	4,8,13
955a4199014Schristos	and	5,8,9
956a4199014Schristos	and	0,8,10
957a4199014Schristos	xor	3,3,4
958*1b3d6f93Schristos	rotrwi	4,4,9
959a4199014Schristos	xor	5,5,0
960a4199014Schristos	and	0,9,10
961a4199014Schristos	xor	3,3,4
962a4199014Schristos	add	11,11,15
963a4199014Schristos	xor	5,5,0
964a4199014Schristos	add	15,15,3
965a4199014Schristos	add	15,15,5
966a4199014Schristos
967*1b3d6f93Schristos	rotrwi	3,26,7
968*1b3d6f93Schristos	rotrwi	4,26,18
969*1b3d6f93Schristos	rotrwi	5,23,17
970*1b3d6f93Schristos	rotrwi	0,23,19
971a4199014Schristos	xor	3,3,4
972*1b3d6f93Schristos	srwi	4,26,3
973a4199014Schristos	xor	5,5,0
974*1b3d6f93Schristos	srwi	0,23,10
975a4199014Schristos	add	25,25,18
976a4199014Schristos	xor	3,3,4
977a4199014Schristos	xor	5,5,0
978*1b3d6f93Schristos	lwz	0,36(7)
979a4199014Schristos	add	25,25,3
980a4199014Schristos	add	25,25,5
981*1b3d6f93Schristos	rotrwi	3,11,6
982*1b3d6f93Schristos	rotrwi	4,11,11
983a4199014Schristos	and	5,12,11
984a4199014Schristos	xor	3,3,4
985a4199014Schristos	add	14,14,0
986a4199014Schristos	andc	0,6,11
987*1b3d6f93Schristos	rotrwi	4,4,14
988a4199014Schristos	or	5,5,0
989a4199014Schristos	add	14,14,25
990a4199014Schristos	xor	3,3,4
991a4199014Schristos	add	14,14,5
992a4199014Schristos	add	14,14,3
993a4199014Schristos
994*1b3d6f93Schristos	rotrwi	3,15,2
995*1b3d6f93Schristos	rotrwi	4,15,13
996a4199014Schristos	and	5,15,8
997a4199014Schristos	and	0,15,9
998a4199014Schristos	xor	3,3,4
999*1b3d6f93Schristos	rotrwi	4,4,9
1000a4199014Schristos	xor	5,5,0
1001a4199014Schristos	and	0,8,9
1002a4199014Schristos	xor	3,3,4
1003a4199014Schristos	add	10,10,14
1004a4199014Schristos	xor	5,5,0
1005a4199014Schristos	add	14,14,3
1006a4199014Schristos	add	14,14,5
1007a4199014Schristos
1008*1b3d6f93Schristos	rotrwi	3,27,7
1009*1b3d6f93Schristos	rotrwi	4,27,18
1010*1b3d6f93Schristos	rotrwi	5,24,17
1011*1b3d6f93Schristos	rotrwi	0,24,19
1012a4199014Schristos	xor	3,3,4
1013*1b3d6f93Schristos	srwi	4,27,3
1014a4199014Schristos	xor	5,5,0
1015*1b3d6f93Schristos	srwi	0,24,10
1016a4199014Schristos	add	26,26,19
1017a4199014Schristos	xor	3,3,4
1018a4199014Schristos	xor	5,5,0
1019*1b3d6f93Schristos	lwz	0,40(7)
1020a4199014Schristos	add	26,26,3
1021a4199014Schristos	add	26,26,5
1022*1b3d6f93Schristos	rotrwi	3,10,6
1023*1b3d6f93Schristos	rotrwi	4,10,11
1024a4199014Schristos	and	5,11,10
1025a4199014Schristos	xor	3,3,4
1026a4199014Schristos	add	6,6,0
1027a4199014Schristos	andc	0,12,10
1028*1b3d6f93Schristos	rotrwi	4,4,14
1029a4199014Schristos	or	5,5,0
1030a4199014Schristos	add	6,6,26
1031a4199014Schristos	xor	3,3,4
1032a4199014Schristos	add	6,6,5
1033a4199014Schristos	add	6,6,3
1034a4199014Schristos
1035*1b3d6f93Schristos	rotrwi	3,14,2
1036*1b3d6f93Schristos	rotrwi	4,14,13
1037a4199014Schristos	and	5,14,15
1038a4199014Schristos	and	0,14,8
1039a4199014Schristos	xor	3,3,4
1040*1b3d6f93Schristos	rotrwi	4,4,9
1041a4199014Schristos	xor	5,5,0
1042a4199014Schristos	and	0,15,8
1043a4199014Schristos	xor	3,3,4
1044a4199014Schristos	add	9,9,6
1045a4199014Schristos	xor	5,5,0
1046a4199014Schristos	add	6,6,3
1047a4199014Schristos	add	6,6,5
1048a4199014Schristos
1049*1b3d6f93Schristos	rotrwi	3,28,7
1050*1b3d6f93Schristos	rotrwi	4,28,18
1051*1b3d6f93Schristos	rotrwi	5,25,17
1052*1b3d6f93Schristos	rotrwi	0,25,19
1053a4199014Schristos	xor	3,3,4
1054*1b3d6f93Schristos	srwi	4,28,3
1055a4199014Schristos	xor	5,5,0
1056*1b3d6f93Schristos	srwi	0,25,10
1057a4199014Schristos	add	27,27,20
1058a4199014Schristos	xor	3,3,4
1059a4199014Schristos	xor	5,5,0
1060*1b3d6f93Schristos	lwz	0,44(7)
1061a4199014Schristos	add	27,27,3
1062a4199014Schristos	add	27,27,5
1063*1b3d6f93Schristos	rotrwi	3,9,6
1064*1b3d6f93Schristos	rotrwi	4,9,11
1065a4199014Schristos	and	5,10,9
1066a4199014Schristos	xor	3,3,4
1067a4199014Schristos	add	12,12,0
1068a4199014Schristos	andc	0,11,9
1069*1b3d6f93Schristos	rotrwi	4,4,14
1070a4199014Schristos	or	5,5,0
1071a4199014Schristos	add	12,12,27
1072a4199014Schristos	xor	3,3,4
1073a4199014Schristos	add	12,12,5
1074a4199014Schristos	add	12,12,3
1075a4199014Schristos
1076*1b3d6f93Schristos	rotrwi	3,6,2
1077*1b3d6f93Schristos	rotrwi	4,6,13
1078a4199014Schristos	and	5,6,14
1079a4199014Schristos	and	0,6,15
1080a4199014Schristos	xor	3,3,4
1081*1b3d6f93Schristos	rotrwi	4,4,9
1082a4199014Schristos	xor	5,5,0
1083a4199014Schristos	and	0,14,15
1084a4199014Schristos	xor	3,3,4
1085a4199014Schristos	add	8,8,12
1086a4199014Schristos	xor	5,5,0
1087a4199014Schristos	add	12,12,3
1088a4199014Schristos	add	12,12,5
1089a4199014Schristos
1090*1b3d6f93Schristos	rotrwi	3,29,7
1091*1b3d6f93Schristos	rotrwi	4,29,18
1092*1b3d6f93Schristos	rotrwi	5,26,17
1093*1b3d6f93Schristos	rotrwi	0,26,19
1094a4199014Schristos	xor	3,3,4
1095*1b3d6f93Schristos	srwi	4,29,3
1096a4199014Schristos	xor	5,5,0
1097*1b3d6f93Schristos	srwi	0,26,10
1098a4199014Schristos	add	28,28,21
1099a4199014Schristos	xor	3,3,4
1100a4199014Schristos	xor	5,5,0
1101*1b3d6f93Schristos	lwz	0,48(7)
1102a4199014Schristos	add	28,28,3
1103a4199014Schristos	add	28,28,5
1104*1b3d6f93Schristos	rotrwi	3,8,6
1105*1b3d6f93Schristos	rotrwi	4,8,11
1106a4199014Schristos	and	5,9,8
1107a4199014Schristos	xor	3,3,4
1108a4199014Schristos	add	11,11,0
1109a4199014Schristos	andc	0,10,8
1110*1b3d6f93Schristos	rotrwi	4,4,14
1111a4199014Schristos	or	5,5,0
1112a4199014Schristos	add	11,11,28
1113a4199014Schristos	xor	3,3,4
1114a4199014Schristos	add	11,11,5
1115a4199014Schristos	add	11,11,3
1116a4199014Schristos
1117*1b3d6f93Schristos	rotrwi	3,12,2
1118*1b3d6f93Schristos	rotrwi	4,12,13
1119a4199014Schristos	and	5,12,6
1120a4199014Schristos	and	0,12,14
1121a4199014Schristos	xor	3,3,4
1122*1b3d6f93Schristos	rotrwi	4,4,9
1123a4199014Schristos	xor	5,5,0
1124a4199014Schristos	and	0,6,14
1125a4199014Schristos	xor	3,3,4
1126a4199014Schristos	add	15,15,11
1127a4199014Schristos	xor	5,5,0
1128a4199014Schristos	add	11,11,3
1129a4199014Schristos	add	11,11,5
1130a4199014Schristos
1131*1b3d6f93Schristos	rotrwi	3,30,7
1132*1b3d6f93Schristos	rotrwi	4,30,18
1133*1b3d6f93Schristos	rotrwi	5,27,17
1134*1b3d6f93Schristos	rotrwi	0,27,19
1135a4199014Schristos	xor	3,3,4
1136*1b3d6f93Schristos	srwi	4,30,3
1137a4199014Schristos	xor	5,5,0
1138*1b3d6f93Schristos	srwi	0,27,10
1139a4199014Schristos	add	29,29,22
1140a4199014Schristos	xor	3,3,4
1141a4199014Schristos	xor	5,5,0
1142*1b3d6f93Schristos	lwz	0,52(7)
1143a4199014Schristos	add	29,29,3
1144a4199014Schristos	add	29,29,5
1145*1b3d6f93Schristos	rotrwi	3,15,6
1146*1b3d6f93Schristos	rotrwi	4,15,11
1147a4199014Schristos	and	5,8,15
1148a4199014Schristos	xor	3,3,4
1149a4199014Schristos	add	10,10,0
1150a4199014Schristos	andc	0,9,15
1151*1b3d6f93Schristos	rotrwi	4,4,14
1152a4199014Schristos	or	5,5,0
1153a4199014Schristos	add	10,10,29
1154a4199014Schristos	xor	3,3,4
1155a4199014Schristos	add	10,10,5
1156a4199014Schristos	add	10,10,3
1157a4199014Schristos
1158*1b3d6f93Schristos	rotrwi	3,11,2
1159*1b3d6f93Schristos	rotrwi	4,11,13
1160a4199014Schristos	and	5,11,12
1161a4199014Schristos	and	0,11,6
1162a4199014Schristos	xor	3,3,4
1163*1b3d6f93Schristos	rotrwi	4,4,9
1164a4199014Schristos	xor	5,5,0
1165a4199014Schristos	and	0,12,6
1166a4199014Schristos	xor	3,3,4
1167a4199014Schristos	add	14,14,10
1168a4199014Schristos	xor	5,5,0
1169a4199014Schristos	add	10,10,3
1170a4199014Schristos	add	10,10,5
1171a4199014Schristos
1172*1b3d6f93Schristos	rotrwi	3,31,7
1173*1b3d6f93Schristos	rotrwi	4,31,18
1174*1b3d6f93Schristos	rotrwi	5,28,17
1175*1b3d6f93Schristos	rotrwi	0,28,19
1176a4199014Schristos	xor	3,3,4
1177*1b3d6f93Schristos	srwi	4,31,3
1178a4199014Schristos	xor	5,5,0
1179*1b3d6f93Schristos	srwi	0,28,10
1180a4199014Schristos	add	30,30,23
1181a4199014Schristos	xor	3,3,4
1182a4199014Schristos	xor	5,5,0
1183*1b3d6f93Schristos	lwz	0,56(7)
1184a4199014Schristos	add	30,30,3
1185a4199014Schristos	add	30,30,5
1186*1b3d6f93Schristos	rotrwi	3,14,6
1187*1b3d6f93Schristos	rotrwi	4,14,11
1188a4199014Schristos	and	5,15,14
1189a4199014Schristos	xor	3,3,4
1190a4199014Schristos	add	9,9,0
1191a4199014Schristos	andc	0,8,14
1192*1b3d6f93Schristos	rotrwi	4,4,14
1193a4199014Schristos	or	5,5,0
1194a4199014Schristos	add	9,9,30
1195a4199014Schristos	xor	3,3,4
1196a4199014Schristos	add	9,9,5
1197a4199014Schristos	add	9,9,3
1198a4199014Schristos
1199*1b3d6f93Schristos	rotrwi	3,10,2
1200*1b3d6f93Schristos	rotrwi	4,10,13
1201a4199014Schristos	and	5,10,11
1202a4199014Schristos	and	0,10,12
1203a4199014Schristos	xor	3,3,4
1204*1b3d6f93Schristos	rotrwi	4,4,9
1205a4199014Schristos	xor	5,5,0
1206a4199014Schristos	and	0,11,12
1207a4199014Schristos	xor	3,3,4
1208a4199014Schristos	add	6,6,9
1209a4199014Schristos	xor	5,5,0
1210a4199014Schristos	add	9,9,3
1211a4199014Schristos	add	9,9,5
1212a4199014Schristos
1213*1b3d6f93Schristos	rotrwi	3,16,7
1214*1b3d6f93Schristos	rotrwi	4,16,18
1215*1b3d6f93Schristos	rotrwi	5,29,17
1216*1b3d6f93Schristos	rotrwi	0,29,19
1217a4199014Schristos	xor	3,3,4
1218*1b3d6f93Schristos	srwi	4,16,3
1219a4199014Schristos	xor	5,5,0
1220*1b3d6f93Schristos	srwi	0,29,10
1221a4199014Schristos	add	31,31,24
1222a4199014Schristos	xor	3,3,4
1223a4199014Schristos	xor	5,5,0
1224*1b3d6f93Schristos	lwz	0,60(7)
1225a4199014Schristos	add	31,31,3
1226a4199014Schristos	add	31,31,5
1227*1b3d6f93Schristos	rotrwi	3,6,6
1228*1b3d6f93Schristos	rotrwi	4,6,11
1229a4199014Schristos	and	5,14,6
1230a4199014Schristos	xor	3,3,4
1231a4199014Schristos	add	8,8,0
1232a4199014Schristos	andc	0,15,6
1233*1b3d6f93Schristos	rotrwi	4,4,14
1234a4199014Schristos	or	5,5,0
1235a4199014Schristos	add	8,8,31
1236a4199014Schristos	xor	3,3,4
1237a4199014Schristos	add	8,8,5
1238a4199014Schristos	add	8,8,3
1239a4199014Schristos
1240*1b3d6f93Schristos	rotrwi	3,9,2
1241*1b3d6f93Schristos	rotrwi	4,9,13
1242a4199014Schristos	and	5,9,10
1243a4199014Schristos	and	0,9,11
1244a4199014Schristos	xor	3,3,4
1245*1b3d6f93Schristos	rotrwi	4,4,9
1246a4199014Schristos	xor	5,5,0
1247a4199014Schristos	and	0,10,11
1248a4199014Schristos	xor	3,3,4
1249a4199014Schristos	add	12,12,8
1250a4199014Schristos	xor	5,5,0
1251a4199014Schristos	add	8,8,3
1252a4199014Schristos	add	8,8,5
1253a4199014Schristos
1254a4199014Schristos	bc	16,0,Lrounds
1255a4199014Schristos
1256*1b3d6f93Schristos	ld	3,144(1)
1257*1b3d6f93Schristos	ld	31,136(1)
1258*1b3d6f93Schristos	ld	5,128(1)
1259*1b3d6f93Schristos	subi	7,7,192
1260a4199014Schristos
1261*1b3d6f93Schristos	lwz	16,0(3)
1262*1b3d6f93Schristos	lwz	17,4(3)
1263*1b3d6f93Schristos	lwz	18,8(3)
1264*1b3d6f93Schristos	lwz	19,12(3)
1265*1b3d6f93Schristos	lwz	20,16(3)
1266*1b3d6f93Schristos	lwz	21,20(3)
1267*1b3d6f93Schristos	lwz	22,24(3)
1268*1b3d6f93Schristos	addi	31,31,64
1269*1b3d6f93Schristos	lwz	23,28(3)
1270a4199014Schristos	add	8,8,16
1271a4199014Schristos	add	9,9,17
1272*1b3d6f93Schristos	std	31,136(1)
1273a4199014Schristos	add	10,10,18
1274*1b3d6f93Schristos	stw	8,0(3)
1275a4199014Schristos	add	11,11,19
1276*1b3d6f93Schristos	stw	9,4(3)
1277a4199014Schristos	add	12,12,20
1278*1b3d6f93Schristos	stw	10,8(3)
1279a4199014Schristos	add	6,6,21
1280*1b3d6f93Schristos	stw	11,12(3)
1281a4199014Schristos	add	14,14,22
1282*1b3d6f93Schristos	stw	12,16(3)
1283a4199014Schristos	add	15,15,23
1284*1b3d6f93Schristos	stw	6,20(3)
1285*1b3d6f93Schristos	stw	14,24(3)
1286a4199014Schristos	cmpld	31,5
1287*1b3d6f93Schristos	stw	15,28(3)
1288a4199014Schristos	bne	Lsha2_block_private
1289a4199014Schristos	blr
1290a4199014Schristos.long	0
1291a4199014Schristos.byte	0,12,0x14,0,0,0,0,0
1292a4199014Schristos
1293a4199014Schristos.align	6
1294a4199014SchristosLPICmeup:
1295a4199014Schristos	mflr	0
1296a4199014Schristos	bcl	20,31,$+4
1297a4199014Schristos	mflr	7
1298a4199014Schristos	addi	7,7,56
1299a4199014Schristos	mtlr	0
1300a4199014Schristos	blr
1301a4199014Schristos.long	0
1302a4199014Schristos.byte	0,12,0x14,0,0,0,0,0
1303a4199014Schristos.space	28
1304*1b3d6f93Schristos.long	0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
1305*1b3d6f93Schristos.long	0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
1306*1b3d6f93Schristos.long	0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
1307*1b3d6f93Schristos.long	0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
1308*1b3d6f93Schristos.long	0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
1309*1b3d6f93Schristos.long	0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
1310*1b3d6f93Schristos.long	0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
1311*1b3d6f93Schristos.long	0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
1312*1b3d6f93Schristos.long	0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
1313*1b3d6f93Schristos.long	0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
1314*1b3d6f93Schristos.long	0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
1315*1b3d6f93Schristos.long	0xd192e819,0xd6990624,0xf40e3585,0x106aa070
1316*1b3d6f93Schristos.long	0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
1317*1b3d6f93Schristos.long	0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
1318*1b3d6f93Schristos.long	0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
1319*1b3d6f93Schristos.long	0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
1320