1.machine	"any"
2.text
3
4.globl	poly1305_init_fpu
5.type	poly1305_init_fpu,@function
6.section	".opd","aw"
7.align	3
8poly1305_init_fpu:
9.quad	.poly1305_init_fpu,.TOC.@tocbase,0
10.previous
11.align	6
12.poly1305_init_fpu:
13	stdu	1,-48(1)
14	mflr	6
15	std	6,64(1)
16
17	bl	.LPICmeup
18
19	xor	0,0,0
20	mtlr	6
21
22	lfd	8,8*0(5)
23	lfd	9,8*1(5)
24	lfd	10,8*2(5)
25	lfd	11,8*3(5)
26	lfd	12,8*4(5)
27	lfd	13,8*5(5)
28
29	stfd	8,8*0(3)
30	stfd	9,8*1(3)
31	stfd	10,8*2(3)
32	stfd	11,8*3(3)
33
34	cmpld	4,0
35	beq-	.Lno_key
36
37	lfd	6,8*13(5)
38	mffs	7
39
40	stfd	8,8*4(3)
41	stfd	9,8*5(3)
42	stfd	10,8*6(3)
43	stfd	11,8*7(3)
44
45	li	8,4
46	li	9,8
47	li	10,12
48	lwbrx	7,0,4
49	lwbrx	8,8,4
50	lwbrx	9,9,4
51	lwbrx	10,10,4
52
53	lis	11,0xf000
54	ori	12,11,3
55	andc	7,7,11
56	andc	8,8,12
57	andc	9,9,12
58	andc	10,10,12
59
60	stw	7,36(3)
61	stw	8,44(3)
62	stw	9,52(3)
63	stw	10,60(3)
64
65	mtfsf	255,6
66	stfd	8,8*18(3)
67	stfd	9,8*19(3)
68	stfd	10,8*20(3)
69	stfd	11,8*21(3)
70	stfd	12,8*22(3)
71	stfd	13,8*23(3)
72
73	lfd	0,8*4(3)
74	lfd	2,8*5(3)
75	lfd	4,8*6(3)
76	lfd	6,8*7(3)
77
78	fsub	0,0,8
79	fsub	2,2,9
80	fsub	4,4,10
81	fsub	6,6,11
82
83	lfd	8,8*6(5)
84	lfd	9,8*7(5)
85	lfd	10,8*8(5)
86	lfd	11,8*9(5)
87
88	fmul	3,2,13
89	fmul	5,4,13
90	stfd	7,8*15(3)
91	fmul	7,6,13
92
93	fadd	1,0,8
94	stfd	3,8*12(3)
95	fadd	3,2,9
96	stfd	5,8*13(3)
97	fadd	5,4,10
98	stfd	7,8*14(3)
99	fadd	7,6,11
100
101	fsub	1,1,8
102	fsub	3,3,9
103	fsub	5,5,10
104	fsub	7,7,11
105
106	lfd	8,8*10(5)
107	lfd	9,8*11(5)
108	lfd	10,8*12(5)
109
110	fsub	0,0,1
111	fsub	2,2,3
112	fsub	4,4,5
113	fsub	6,6,7
114
115	stfd	1,8*5(3)
116	stfd	3,8*7(3)
117	stfd	5,8*9(3)
118	stfd	7,8*11(3)
119
120	stfd	0,8*4(3)
121	stfd	2,8*6(3)
122	stfd	4,8*8(3)
123	stfd	6,8*10(3)
124
125	lfd	2,8*12(3)
126	lfd	4,8*13(3)
127	lfd	6,8*14(3)
128	lfd	0,8*15(3)
129
130	fadd	3,2,8
131	fadd	5,4,9
132	fadd	7,6,10
133
134	fsub	3,3,8
135	fsub	5,5,9
136	fsub	7,7,10
137
138	fsub	2,2,3
139	fsub	4,4,5
140	fsub	6,6,7
141
142	stfd	3,8*13(3)
143	stfd	5,8*15(3)
144	stfd	7,8*17(3)
145
146	stfd	2,8*12(3)
147	stfd	4,8*14(3)
148	stfd	6,8*16(3)
149
150	mtfsf	255,0
151.Lno_key:
152	xor	3,3,3
153	addi	1,1,48
154	blr
155.long	0
156.byte	0,12,4,1,0x80,0,2,0
157
158
159.globl	poly1305_blocks_fpu
160.type	poly1305_blocks_fpu,@function
161.section	".opd","aw"
162.align	3
163poly1305_blocks_fpu:
164.quad	.poly1305_blocks_fpu,.TOC.@tocbase,0
165.previous
166.align	4
167.poly1305_blocks_fpu:
168	srwi.	5,5,4
169	beq-	.Labort
170
171	stdu	1,-240(1)
172	mflr	0
173	stfd	14,96(1)
174	stfd	15,104(1)
175	stfd	16,112(1)
176	stfd	17,120(1)
177	stfd	18,128(1)
178	stfd	19,136(1)
179	stfd	20,144(1)
180	stfd	21,152(1)
181	stfd	22,160(1)
182	stfd	23,168(1)
183	stfd	24,176(1)
184	stfd	25,184(1)
185	stfd	26,192(1)
186	stfd	27,200(1)
187	stfd	28,208(1)
188	stfd	29,216(1)
189	stfd	30,224(1)
190	stfd	31,232(1)
191	std	0,256(1)
192
193	xor	0,0,0
194	li	10,1
195	mtctr	5
196	neg	5,5
197	stw	0,80(1)
198	stw	10,84(1)
199
200	lfd	8,8*18(3)
201	lfd	9,8*19(3)
202	lfd	10,8*20(3)
203	lfd	11,8*21(3)
204	lfd	12,8*22(3)
205	lfd	13,8*23(3)
206
207	lfd	0,8*0(3)
208	lfd	2,8*1(3)
209	lfd	4,8*2(3)
210	lfd	6,8*3(3)
211
212	stfd	8,48(1)
213	oris	10,6,18736
214	stfd	9,56(1)
215	stfd	10,64(1)
216	stw	10,72(1)
217
218	li	11,4
219	li	12,8
220	li	6,12
221	lwbrx	7,0,4
222	lwbrx	8,11,4
223	lwbrx	9,12,4
224	lwbrx	10,6,4
225	addi	4,4,16
226
227	stw	7,52(1)
228	stw	8,60(1)
229	stw	9,68(1)
230	stw	10,76(1)
231
232	mffs	28
233	lfd	29,80(1)
234	lfd	14,8*4(3)
235	lfd	15,8*5(3)
236	lfd	16,8*6(3)
237	lfd	17,8*7(3)
238	lfd	18,8*8(3)
239	lfd	19,8*9(3)
240	lfd	24,8*10(3)
241	lfd	25,8*11(3)
242	lfd	26,8*12(3)
243	lfd	27,8*13(3)
244	lfd	20,8*14(3)
245	lfd	21,8*15(3)
246	lfd	22,8*16(3)
247	lfd	23,8*17(3)
248
249	stfd	28,80(1)
250	mtfsf	255,29
251
252	addic	5,5,1
253	addze	0,0
254	slwi.	0,0,4
255	sub	4,4,0
256
257	lfd	28,48(1)
258	lfd	29,56(1)
259	lfd	30,64(1)
260	lfd	31,72(1)
261
262	fsub	0,0,8
263	lwbrx	7,0,4
264	fsub	2,2,9
265	lwbrx	8,11,4
266	fsub	4,4,10
267	lwbrx	9,12,4
268	fsub	6,6,11
269	lwbrx	10,6,4
270
271	fsub	28,28,8
272	addi	4,4,16
273	fsub	29,29,9
274	fsub	30,30,10
275	fsub	31,31,11
276
277	fadd	28,28,0
278	stw	7,52(1)
279	fadd	29,29,2
280	stw	8,60(1)
281	fadd	30,30,4
282	stw	9,68(1)
283	fadd	31,31,6
284	stw	10,76(1)
285
286	b	.Lentry
287
288.align	4
289.Loop:
290	fsub	30,30,8
291	addic	5,5,1
292	fsub	31,31,9
293	addze	0,0
294	fsub	26,26,10
295	slwi.	0,0,4
296	fsub	27,27,11
297	sub	4,4,0
298
299	fadd	0,0,30
300	fadd	1,1,31
301	fadd	4,4,26
302	fadd	5,5,27
303
304
305	fadd	26,2,10
306	lwbrx	7,0,4
307	fadd	27,3,10
308	lwbrx	8,11,4
309	fadd	30,6,12
310	lwbrx	9,12,4
311	fadd	31,7,12
312	lwbrx	10,6,4
313	fadd	24,0,9
314	addi	4,4,16
315	fadd	25,1,9
316	fadd	28,4,11
317	fadd	29,5,11
318
319	fsub	26,26,10
320	stw	7,52(1)
321	fsub	27,27,10
322	stw	8,60(1)
323	fsub	30,30,12
324	stw	9,68(1)
325	fsub	31,31,12
326	stw	10,76(1)
327	fsub	24,24,9
328	fsub	25,25,9
329	fsub	28,28,11
330	fsub	29,29,11
331
332	fsub	2,2,26
333	fsub	3,3,27
334	fsub	6,6,30
335	fsub	7,7,31
336	fsub	4,4,28
337	fsub	5,5,29
338	fsub	0,0,24
339	fsub	1,1,25
340
341	fadd	2,2,24
342	fadd	3,3,25
343	fadd	6,6,28
344	fadd	7,7,29
345	fadd	4,4,26
346	fadd	5,5,27
347	fmadd	0,30,13,0
348	fmadd	1,31,13,1
349
350	fadd	29,2,3
351	lfd	26,8*12(3)
352	fadd	31,6,7
353	lfd	27,8*13(3)
354	fadd	30,4,5
355	lfd	24,8*10(3)
356	fadd	28,0,1
357	lfd	25,8*11(3)
358.Lentry:
359	fmul	0,22,29
360	fmul	1,23,29
361	fmul	4,16,29
362	fmul	5,17,29
363	fmul	2,14,29
364	fmul	3,15,29
365	fmul	6,18,29
366	fmul	7,19,29
367
368	fmadd	0,26,31,0
369	fmadd	1,27,31,1
370	fmadd	4,22,31,4
371	fmadd	5,23,31,5
372	fmadd	2,20,31,2
373	fmadd	3,21,31,3
374	fmadd	6,14,31,6
375	fmadd	7,15,31,7
376
377	fmadd	0,20,30,0
378	fmadd	1,21,30,1
379	fmadd	4,14,30,4
380	fmadd	5,15,30,5
381	fmadd	2,22,30,2
382	fmadd	3,23,30,3
383	fmadd	6,16,30,6
384	fmadd	7,17,30,7
385
386	fmadd	0,14,28,0
387	lfd	30,48(1)
388	fmadd	1,15,28,1
389	lfd	31,56(1)
390	fmadd	4,18,28,4
391	lfd	26,64(1)
392	fmadd	5,19,28,5
393	lfd	27,72(1)
394	fmadd	2,16,28,2
395	fmadd	3,17,28,3
396	fmadd	6,24,28,6
397	fmadd	7,25,28,7
398
399	bc	16,0,.Loop
400
401
402	fadd	24,0,9
403	fadd	25,1,9
404	fadd	28,4,11
405	fadd	29,5,11
406	fadd	26,2,10
407	fadd	27,3,10
408	fadd	30,6,12
409	fadd	31,7,12
410
411	fsub	24,24,9
412	fsub	25,25,9
413	fsub	28,28,11
414	fsub	29,29,11
415	fsub	26,26,10
416	fsub	27,27,10
417	fsub	30,30,12
418	fsub	31,31,12
419
420	fsub	2,2,26
421	fsub	3,3,27
422	fsub	6,6,30
423	fsub	7,7,31
424	fsub	4,4,28
425	fsub	5,5,29
426	fsub	0,0,24
427	fsub	1,1,25
428
429	fadd	2,2,24
430	fadd	3,3,25
431	fadd	6,6,28
432	fadd	7,7,29
433	fadd	4,4,26
434	fadd	5,5,27
435	fmadd	0,30,13,0
436	fmadd	1,31,13,1
437
438	fadd	29,2,3
439	fadd	31,6,7
440	fadd	30,4,5
441	fadd	28,0,1
442
443	lfd	0,80(1)
444	fadd	29,29,9
445	fadd	31,31,11
446	fadd	30,30,10
447	fadd	28,28,8
448
449	stfd	29,8*1(3)
450	stfd	31,8*3(3)
451	stfd	30,8*2(3)
452	stfd	28,8*0(3)
453
454	mtfsf	255,0
455	lfd	14,96(1)
456	lfd	15,104(1)
457	lfd	16,112(1)
458	lfd	17,120(1)
459	lfd	18,128(1)
460	lfd	19,136(1)
461	lfd	20,144(1)
462	lfd	21,152(1)
463	lfd	22,160(1)
464	lfd	23,168(1)
465	lfd	24,176(1)
466	lfd	25,184(1)
467	lfd	26,192(1)
468	lfd	27,200(1)
469	lfd	28,208(1)
470	lfd	29,216(1)
471	lfd	30,224(1)
472	lfd	31,232(1)
473	addi	1,1,240
474.Labort:
475	blr
476.long	0
477.byte	0,12,4,1,0x80,0,4,0
478
479.globl	poly1305_emit_fpu
480.type	poly1305_emit_fpu,@function
481.section	".opd","aw"
482.align	3
483poly1305_emit_fpu:
484.quad	.poly1305_emit_fpu,.TOC.@tocbase,0
485.previous
486.align	4
487.poly1305_emit_fpu:
488	stdu	1,-80(1)
489	mflr	0
490	std	28,48(1)
491	std	29,56(1)
492	std	30,64(1)
493	std	31,72(1)
494	std	0,96(1)
495
496	lwz	28,0(3)
497	lwz	7,4(3)
498	lwz	29,8(3)
499	lwz	8,12(3)
500	lwz	30,16(3)
501	lwz	9,20(3)
502	lwz	31,24(3)
503	lwz	10,28(3)
504
505	lis	0,0xfff0
506	andc	28,28,0
507	andc	29,29,0
508	andc	30,30,0
509	andc	31,31,0
510	li	0,3
511
512	srwi	6,31,2
513	and	11,31,0
514	andc	31,31,0
515	add	31,31,6
516	add	7,7,31
517	add	8,8,28
518	add	9,9,29
519	add	10,10,30
520
521	srdi	28,7,32
522	add	8,8,28
523	srdi	29,8,32
524	add	9,9,29
525	srdi	30,9,32
526	add	10,10,30
527	srdi	31,10,32
528	add	11,11,31
529
530	insrdi	7,8,32,0
531	insrdi	9,10,32,0
532
533	addic	28,7,5
534	addze	29,9
535	addze	30,11
536
537	srdi	0,30,2
538	neg	0,0
539	sradi	0,0,63
540	ld	30,0(5)
541	ld	31,8(5)
542
543	andc	7,7,0
544	and	28,28,0
545	andc	9,9,0
546	and	29,29,0
547	or	7,7,28
548	or	9,9,29
549	rotldi	30,30,32
550	rotldi	31,31,32
551	addc	7,7,30
552	adde	9,9,31
553
554	srdi	8,7,32
555	srdi	10,9,32
556	li	29,4
557	stwbrx	7,0,4
558	li	30,8
559	stwbrx	8,29,4
560	li	31,12
561	stwbrx	9,30,4
562	stwbrx	10,31,4
563	ld	28,48(1)
564	ld	29,56(1)
565	ld	30,64(1)
566	ld	31,72(1)
567	addi	1,1,80
568	blr
569.long	0
570.byte	0,12,4,1,0x80,4,3,0
571
572.align	6
573.LPICmeup:
574	mflr	0
575	bcl	20,31,$+4
576	mflr	5
577	addi	5,5,56
578	mtlr	0
579	blr
580.long	0
581.byte	0,12,0x14,0,0,0,0,0
582.space	28
583
584.long	0x43300000,0x00000000
585.long	0x45300000,0x00000000
586.long	0x47300000,0x00000000
587.long	0x49300000,0x00000000
588.long	0x4b500000,0x00000000
589
590.long	0x37f40000,0x00000000
591
592.long	0x44300000,0x00000000
593.long	0x46300000,0x00000000
594.long	0x48300000,0x00000000
595.long	0x4a300000,0x00000000
596.long	0x3e300000,0x00000000
597.long	0x40300000,0x00000000
598.long	0x42300000,0x00000000
599
600.long	0x00000000,0x00000001
601.byte	80,111,108,121,49,51,48,53,32,102,111,114,32,80,80,67,32,70,80,85,44,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
602.align	2
603.align	4
604