• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1.abiversion	2
2.text
3
4.type	KeccakF1600_int,@function
5.align	5
6KeccakF1600_int:
7.localentry	KeccakF1600_int,0
8
9	li	0,24
10	mtctr	0
11	b	.Loop
12.align	4
13.Loop:
14	xor	0,7,12
15	std	11,96(1)
16	xor	3,8,6
17	std	16,104(1)
18	xor	4,9,14
19	std	21,112(1)
20	xor	5,10,15
21	std	26,120(1)
22	xor	11,11,16
23	xor	0,0,17
24	xor	3,3,18
25	xor	4,4,19
26	xor	5,5,20
27	xor	11,11,21
28	xor	0,0,22
29	xor	3,3,23
30	xor	4,4,24
31	xor	5,5,25
32	xor	11,11,26
33	xor	0,0,27
34	xor	4,4,29
35	xor	3,3,28
36	xor	5,5,30
37	rotldi	16,4,1
38	xor	11,11,31
39	rotldi	21,5,1
40	xor	16,16,0
41	rotldi	26,11,1
42
43	xor	8,8,16
44	xor	6,6,16
45	xor	18,18,16
46	xor	23,23,16
47	xor	28,28,16
48
49	rotldi	16,0,1
50	xor	21,21,3
51	xor	4,4,26
52	rotldi	26,3,1
53	xor	5,5,16
54	xor	11,11,26
55
56	xor	3,   9,21
57	xor	14,14,21
58	xor	19,19,21
59	xor	24,24,21
60	xor	29,29,21
61
62	xor	7,7,11
63	xor	12,12,11
64	xor	17,17,11
65	xor	22,22,11
66	xor	27,27,11
67	ld	11,96(1)
68	xor	0,   10,4
69	ld	16,104(1)
70	xor	15,15,4
71	ld	21,112(1)
72	xor	20,20,4
73	ld	26,120(1)
74	xor	25,25,4
75	xor	30,30,4
76
77	xor	4,   11,5
78	xor	16,16,5
79	xor	21,21,5
80	xor	26,26,5
81	xor	31,31,5
82
83	mr	5,8
84	rotldi	8,6,44
85
86	rotldi	9,19,43
87
88	rotldi	10,25,21
89
90	rotldi	11,31,14
91
92	rotldi	6,16,20
93	rotldi	19,20,25
94	rotldi	25,24,15
95	rotldi	31,28,2
96
97	rotldi	16,29,61
98	rotldi	20,26,8
99	rotldi	24,18,10
100	rotldi	28,15,55
101
102	rotldi	29,21,39
103	rotldi	26,30,56
104	rotldi	18,14,6
105	rotldi	15,23,45
106
107	rotldi	21,27,18
108	rotldi	30,22,41
109	rotldi	14,17,3
110	rotldi	23,12,36
111
112	rotldi	12,0,28
113	rotldi	17,5,1
114	rotldi	22,4,27
115	rotldi	27,3,62
116
117	andc	0,9,8
118	andc	3,10,9
119	andc	4,7,11
120	andc	5,8,7
121	xor	7,7,0
122	andc	0,11,10
123	xor	8,8,3
124	ld	3,80(1)
125	xor	10,10,4
126	xor	11,11,5
127	xor	9,9,0
128	ldu	5,8(3)
129
130	andc	0,14,6
131	std	3,80(1)
132	andc	3,15,14
133	andc	4,12,16
134	xor	7,7,5
135	andc	5,6,12
136	xor	12,12,0
137	andc	0,16,15
138	xor	6,6,3
139	xor	15,15,4
140	xor	16,16,5
141	xor	14,14,0
142
143	andc	0,19,18
144	andc	3,20,19
145	andc	4,17,21
146	andc	5,18,17
147	xor	17,17,0
148	andc	0,21,20
149	xor	18,18,3
150	xor	20,20,4
151	xor	21,21,5
152	xor	19,19,0
153
154	andc	0,24,23
155	andc	3,25,24
156	andc	4,22,26
157	andc	5,23,22
158	xor	22,22,0
159	andc	0,26,25
160	xor	23,23,3
161	xor	25,25,4
162	xor	26,26,5
163	xor	24,24,0
164
165	andc	0,29,28
166	andc	3,30,29
167	andc	4,27,31
168	andc	5,28,27
169	xor	27,27,0
170	andc	0,31,30
171	xor	28,28,3
172	xor	30,30,4
173	xor	31,31,5
174	xor	29,29,0
175
176	bdnz	.Loop
177
178	blr
179.long	0
180.byte	0,12,0x14,0,0,0,0,0
181.size	KeccakF1600_int,.-KeccakF1600_int
182
183.type	KeccakF1600,@function
184.align	5
185KeccakF1600:
186.localentry	KeccakF1600,0
187
188	stdu	1,-272(1)
189	mflr	0
190	std	14,128(1)
191	std	15,136(1)
192	std	16,144(1)
193	std	17,152(1)
194	std	18,160(1)
195	std	19,168(1)
196	std	20,176(1)
197	std	21,184(1)
198	std	22,192(1)
199	std	23,200(1)
200	std	24,208(1)
201	std	25,216(1)
202	std	26,224(1)
203	std	27,232(1)
204	std	28,240(1)
205	std	29,248(1)
206	std	30,256(1)
207	std	31,264(1)
208	std	0,288(1)
209
210	bl	PICmeup
211	subi	12,12,8
212
213	std	3,48(1)
214
215
216
217	std	12,80(1)
218
219	ld	7,0(3)
220	ld	8,8(3)
221	ld	9,16(3)
222	ld	10,24(3)
223	ld	11,32(3)
224	ld	12,40(3)
225	ld	6,48(3)
226	ld	14,56(3)
227	ld	15,64(3)
228	ld	16,72(3)
229	ld	17,80(3)
230	ld	18,88(3)
231	ld	19,96(3)
232	ld	20,104(3)
233	ld	21,112(3)
234	ld	22,120(3)
235	ld	23,128(3)
236	ld	24,136(3)
237	ld	25,144(3)
238	ld	26,152(3)
239	ld	27,160(3)
240	ld	28,168(3)
241	ld	29,176(3)
242	ld	30,184(3)
243	ld	31,192(3)
244
245	bl	KeccakF1600_int
246
247	ld	3,48(1)
248	std	7,0(3)
249	std	8,8(3)
250	std	9,16(3)
251	std	10,24(3)
252	std	11,32(3)
253	std	12,40(3)
254	std	6,48(3)
255	std	14,56(3)
256	std	15,64(3)
257	std	16,72(3)
258	std	17,80(3)
259	std	18,88(3)
260	std	19,96(3)
261	std	20,104(3)
262	std	21,112(3)
263	std	22,120(3)
264	std	23,128(3)
265	std	24,136(3)
266	std	25,144(3)
267	std	26,152(3)
268	std	27,160(3)
269	std	28,168(3)
270	std	29,176(3)
271	std	30,184(3)
272	std	31,192(3)
273
274	ld	0,288(1)
275	ld	14,128(1)
276	ld	15,136(1)
277	ld	16,144(1)
278	ld	17,152(1)
279	ld	18,160(1)
280	ld	19,168(1)
281	ld	20,176(1)
282	ld	21,184(1)
283	ld	22,192(1)
284	ld	23,200(1)
285	ld	24,208(1)
286	ld	25,216(1)
287	ld	26,224(1)
288	ld	27,232(1)
289	ld	28,240(1)
290	ld	29,248(1)
291	ld	30,256(1)
292	ld	31,264(1)
293	mtlr	0
294	addi	1,1,272
295	blr
296.long	0
297.byte	0,12,4,1,0x80,18,1,0
298.long	0
299.size	KeccakF1600,.-KeccakF1600
300
301.type	dword_le_load,@function
302.align	5
303dword_le_load:
304.localentry	dword_le_load,0
305
306	lbz	0,1(3)
307	lbz	4,2(3)
308	lbz	5,3(3)
309	insrdi	0,4,8,48
310	lbz	4,4(3)
311	insrdi	0,5,8,40
312	lbz	5,5(3)
313	insrdi	0,4,8,32
314	lbz	4,6(3)
315	insrdi	0,5,8,24
316	lbz	5,7(3)
317	insrdi	0,4,8,16
318	lbzu	4,8(3)
319	insrdi	0,5,8,8
320	insrdi	0,4,8,0
321	blr
322.long	0
323.byte	0,12,0x14,0,0,0,1,0
324.long	0
325.size	dword_le_load,.-dword_le_load
326
327.globl	SHA3_absorb
328.type	SHA3_absorb,@function
329.type	SHA3_absorb,@function
330.align	5
331SHA3_absorb:
332.localentry	SHA3_absorb,0
333
334	stdu	1,-272(1)
335	mflr	0
336	std	14,128(1)
337	std	15,136(1)
338	std	16,144(1)
339	std	17,152(1)
340	std	18,160(1)
341	std	19,168(1)
342	std	20,176(1)
343	std	21,184(1)
344	std	22,192(1)
345	std	23,200(1)
346	std	24,208(1)
347	std	25,216(1)
348	std	26,224(1)
349	std	27,232(1)
350	std	28,240(1)
351	std	29,248(1)
352	std	30,256(1)
353	std	31,264(1)
354	std	0,288(1)
355
356	bl	PICmeup
357	subi	4,4,1
358	subi	12,12,8
359
360	std	3,48(1)
361	std	4,56(1)
362	std	5,64(1)
363	std	6,72(1)
364	mr	0,6
365	std	12,80(1)
366
367	ld	7,0(3)
368	ld	8,8(3)
369	ld	9,16(3)
370	ld	10,24(3)
371	ld	11,32(3)
372	ld	12,40(3)
373	ld	6,48(3)
374	ld	14,56(3)
375	ld	15,64(3)
376	ld	16,72(3)
377	ld	17,80(3)
378	ld	18,88(3)
379	ld	19,96(3)
380	ld	20,104(3)
381	ld	21,112(3)
382	ld	22,120(3)
383	ld	23,128(3)
384	ld	24,136(3)
385	ld	25,144(3)
386	ld	26,152(3)
387	ld	27,160(3)
388	ld	28,168(3)
389	ld	29,176(3)
390	ld	30,184(3)
391	ld	31,192(3)
392
393	mr	3,4
394	mr	4,5
395	mr	5,0
396
397	b	.Loop_absorb
398
399.align	4
400.Loop_absorb:
401	cmpld	4,5
402	blt	.Labsorbed
403
404	sub	4,4,5
405	srwi	5,5,3
406	std	4,64(1)
407	mtctr	5
408	bl	dword_le_load
409	xor	7,7,0
410	bdz	.Lprocess_block
411	bl	dword_le_load
412	xor	8,8,0
413	bdz	.Lprocess_block
414	bl	dword_le_load
415	xor	9,9,0
416	bdz	.Lprocess_block
417	bl	dword_le_load
418	xor	10,10,0
419	bdz	.Lprocess_block
420	bl	dword_le_load
421	xor	11,11,0
422	bdz	.Lprocess_block
423	bl	dword_le_load
424	xor	12,12,0
425	bdz	.Lprocess_block
426	bl	dword_le_load
427	xor	6,6,0
428	bdz	.Lprocess_block
429	bl	dword_le_load
430	xor	14,14,0
431	bdz	.Lprocess_block
432	bl	dword_le_load
433	xor	15,15,0
434	bdz	.Lprocess_block
435	bl	dword_le_load
436	xor	16,16,0
437	bdz	.Lprocess_block
438	bl	dword_le_load
439	xor	17,17,0
440	bdz	.Lprocess_block
441	bl	dword_le_load
442	xor	18,18,0
443	bdz	.Lprocess_block
444	bl	dword_le_load
445	xor	19,19,0
446	bdz	.Lprocess_block
447	bl	dword_le_load
448	xor	20,20,0
449	bdz	.Lprocess_block
450	bl	dword_le_load
451	xor	21,21,0
452	bdz	.Lprocess_block
453	bl	dword_le_load
454	xor	22,22,0
455	bdz	.Lprocess_block
456	bl	dword_le_load
457	xor	23,23,0
458	bdz	.Lprocess_block
459	bl	dword_le_load
460	xor	24,24,0
461	bdz	.Lprocess_block
462	bl	dword_le_load
463	xor	25,25,0
464	bdz	.Lprocess_block
465	bl	dword_le_load
466	xor	26,26,0
467	bdz	.Lprocess_block
468	bl	dword_le_load
469	xor	27,27,0
470	bdz	.Lprocess_block
471	bl	dword_le_load
472	xor	28,28,0
473	bdz	.Lprocess_block
474	bl	dword_le_load
475	xor	29,29,0
476	bdz	.Lprocess_block
477	bl	dword_le_load
478	xor	30,30,0
479	bdz	.Lprocess_block
480	bl	dword_le_load
481	xor	31,31,0
482
483.Lprocess_block:
484	std	3,56(1)
485
486	bl	KeccakF1600_int
487
488	ld	0,80(1)
489	ld	5,72(1)
490	ld	4,64(1)
491	ld	3,56(1)
492	addic	0,0,-192
493	std	0,80(1)
494
495	b	.Loop_absorb
496
497.align	4
498.Labsorbed:
499	ld	3,48(1)
500	std	7,0(3)
501	std	8,8(3)
502	std	9,16(3)
503	std	10,24(3)
504	std	11,32(3)
505	std	12,40(3)
506	std	6,48(3)
507	std	14,56(3)
508	std	15,64(3)
509	std	16,72(3)
510	std	17,80(3)
511	std	18,88(3)
512	std	19,96(3)
513	std	20,104(3)
514	std	21,112(3)
515	std	22,120(3)
516	std	23,128(3)
517	std	24,136(3)
518	std	25,144(3)
519	std	26,152(3)
520	std	27,160(3)
521	std	28,168(3)
522	std	29,176(3)
523	std	30,184(3)
524	std	31,192(3)
525
526	mr	3,4
527	ld	0,288(1)
528	ld	14,128(1)
529	ld	15,136(1)
530	ld	16,144(1)
531	ld	17,152(1)
532	ld	18,160(1)
533	ld	19,168(1)
534	ld	20,176(1)
535	ld	21,184(1)
536	ld	22,192(1)
537	ld	23,200(1)
538	ld	24,208(1)
539	ld	25,216(1)
540	ld	26,224(1)
541	ld	27,232(1)
542	ld	28,240(1)
543	ld	29,248(1)
544	ld	30,256(1)
545	ld	31,264(1)
546	mtlr	0
547	addi	1,1,272
548	blr
549.long	0
550.byte	0,12,4,1,0x80,18,4,0
551.long	0
552.size	SHA3_absorb,.-SHA3_absorb
553.globl	SHA3_squeeze
554.type	SHA3_squeeze,@function
555.type	SHA3_squeeze,@function
556.align	5
557SHA3_squeeze:
558.localentry	SHA3_squeeze,0
559
560	stdu	1,-80(1)
561	mflr	0
562	std	28,48(1)
563	std	29,56(1)
564	std	30,64(1)
565	std	31,72(1)
566	std	0,96(1)
567
568	mr	28,3
569	subi	3,3,8
570	subi	29,4,1
571	mr	30,5
572	mr	31,6
573	b	.Loop_squeeze
574
575.align	4
576.Loop_squeeze:
577	ldu	0,8(3)
578	cmpldi	30,8
579	blt	.Lsqueeze_tail
580
581	stb	0,1(29)
582	srdi	0,0,8
583	stb	0,2(29)
584	srdi	0,0,8
585	stb	0,3(29)
586	srdi	0,0,8
587	stb	0,4(29)
588	srdi	0,0,8
589	stb	0,5(29)
590	srdi	0,0,8
591	stb	0,6(29)
592	srdi	0,0,8
593	stb	0,7(29)
594	srdi	0,0,8
595	stbu	0,8(29)
596
597	subic.	30,30,8
598	beq	.Lsqueeze_done
599
600	subic.	6,6,8
601	bgt	.Loop_squeeze
602
603	mr	3,28
604	bl	KeccakF1600
605	subi	3,28,8
606	mr	6,31
607	b	.Loop_squeeze
608
609.align	4
610.Lsqueeze_tail:
611	mtctr	30
612.Loop_tail:
613	stbu	0,1(29)
614	srdi	0,0,8
615	bdnz	.Loop_tail
616
617.Lsqueeze_done:
618	ld	0,96(1)
619	ld	28,48(1)
620	ld	29,56(1)
621	ld	30,64(1)
622	ld	31,72(1)
623	mtlr	0
624	addi	1,1,80
625	blr
626.long	0
627.byte	0,12,4,1,0x80,4,4,0
628.long	0
629.size	SHA3_squeeze,.-SHA3_squeeze
630.align	6
631PICmeup:
632	mflr	0
633	bcl	20,31,$+4
634	mflr	12
635	addi	12,12,56
636	mtlr	0
637	blr
638.long	0
639.byte	0,12,0x14,0,0,0,0,0
640.space	28
641.type	iotas,@object
642iotas:
643.long	0x00000001,0x00000000
644.long	0x00008082,0x00000000
645.long	0x0000808a,0x80000000
646.long	0x80008000,0x80000000
647.long	0x0000808b,0x00000000
648.long	0x80000001,0x00000000
649.long	0x80008081,0x80000000
650.long	0x00008009,0x80000000
651.long	0x0000008a,0x00000000
652.long	0x00000088,0x00000000
653.long	0x80008009,0x00000000
654.long	0x8000000a,0x00000000
655.long	0x8000808b,0x00000000
656.long	0x0000008b,0x80000000
657.long	0x00008089,0x80000000
658.long	0x00008003,0x80000000
659.long	0x00008002,0x80000000
660.long	0x00000080,0x80000000
661.long	0x0000800a,0x00000000
662.long	0x8000000a,0x80000000
663.long	0x80008081,0x80000000
664.long	0x00008080,0x80000000
665.long	0x80000001,0x00000000
666.long	0x80008008,0x80000000
667.size	iotas,.-iotas
668.byte	75,101,99,99,97,107,45,49,54,48,48,32,97,98,115,111,114,98,32,97,110,100,32,115,113,117,101,101,122,101,32,102,111,114,32,80,80,67,54,52,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
669.align	2
670