• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1.text
2
3.type	__KeccakF1600,@function
4.align	32
5__KeccakF1600:
6.cfi_startproc
7	movq	60(%rdi),%rax
8	movq	68(%rdi),%rbx
9	movq	76(%rdi),%rcx
10	movq	84(%rdi),%rdx
11	movq	92(%rdi),%rbp
12	jmp	.Loop
13
14.align	32
15.Loop:
16	movq	-100(%rdi),%r8
17	movq	-52(%rdi),%r9
18	movq	-4(%rdi),%r10
19	movq	44(%rdi),%r11
20
21	xorq	-84(%rdi),%rcx
22	xorq	-76(%rdi),%rdx
23	xorq	%r8,%rax
24	xorq	-92(%rdi),%rbx
25	xorq	-44(%rdi),%rcx
26	xorq	-60(%rdi),%rax
27	movq	%rbp,%r12
28	xorq	-68(%rdi),%rbp
29
30	xorq	%r10,%rcx
31	xorq	-20(%rdi),%rax
32	xorq	-36(%rdi),%rdx
33	xorq	%r9,%rbx
34	xorq	-28(%rdi),%rbp
35
36	xorq	36(%rdi),%rcx
37	xorq	20(%rdi),%rax
38	xorq	4(%rdi),%rdx
39	xorq	-12(%rdi),%rbx
40	xorq	12(%rdi),%rbp
41
42	movq	%rcx,%r13
43	rolq	$1,%rcx
44	xorq	%rax,%rcx
45	xorq	%r11,%rdx
46
47	rolq	$1,%rax
48	xorq	%rdx,%rax
49	xorq	28(%rdi),%rbx
50
51	rolq	$1,%rdx
52	xorq	%rbx,%rdx
53	xorq	52(%rdi),%rbp
54
55	rolq	$1,%rbx
56	xorq	%rbp,%rbx
57
58	rolq	$1,%rbp
59	xorq	%r13,%rbp
60	xorq	%rcx,%r9
61	xorq	%rdx,%r10
62	rolq	$44,%r9
63	xorq	%rbp,%r11
64	xorq	%rax,%r12
65	rolq	$43,%r10
66	xorq	%rbx,%r8
67	movq	%r9,%r13
68	rolq	$21,%r11
69	orq	%r10,%r9
70	xorq	%r8,%r9
71	rolq	$14,%r12
72
73	xorq	(%r15),%r9
74	leaq	8(%r15),%r15
75
76	movq	%r12,%r14
77	andq	%r11,%r12
78	movq	%r9,-100(%rsi)
79	xorq	%r10,%r12
80	notq	%r10
81	movq	%r12,-84(%rsi)
82
83	orq	%r11,%r10
84	movq	76(%rdi),%r12
85	xorq	%r13,%r10
86	movq	%r10,-92(%rsi)
87
88	andq	%r8,%r13
89	movq	-28(%rdi),%r9
90	xorq	%r14,%r13
91	movq	-20(%rdi),%r10
92	movq	%r13,-68(%rsi)
93
94	orq	%r8,%r14
95	movq	-76(%rdi),%r8
96	xorq	%r11,%r14
97	movq	28(%rdi),%r11
98	movq	%r14,-76(%rsi)
99
100
101	xorq	%rbp,%r8
102	xorq	%rdx,%r12
103	rolq	$28,%r8
104	xorq	%rcx,%r11
105	xorq	%rax,%r9
106	rolq	$61,%r12
107	rolq	$45,%r11
108	xorq	%rbx,%r10
109	rolq	$20,%r9
110	movq	%r8,%r13
111	orq	%r12,%r8
112	rolq	$3,%r10
113
114	xorq	%r11,%r8
115	movq	%r8,-36(%rsi)
116
117	movq	%r9,%r14
118	andq	%r13,%r9
119	movq	-92(%rdi),%r8
120	xorq	%r12,%r9
121	notq	%r12
122	movq	%r9,-28(%rsi)
123
124	orq	%r11,%r12
125	movq	-44(%rdi),%r9
126	xorq	%r10,%r12
127	movq	%r12,-44(%rsi)
128
129	andq	%r10,%r11
130	movq	60(%rdi),%r12
131	xorq	%r14,%r11
132	movq	%r11,-52(%rsi)
133
134	orq	%r10,%r14
135	movq	4(%rdi),%r10
136	xorq	%r13,%r14
137	movq	52(%rdi),%r11
138	movq	%r14,-60(%rsi)
139
140
141	xorq	%rbp,%r10
142	xorq	%rax,%r11
143	rolq	$25,%r10
144	xorq	%rdx,%r9
145	rolq	$8,%r11
146	xorq	%rbx,%r12
147	rolq	$6,%r9
148	xorq	%rcx,%r8
149	rolq	$18,%r12
150	movq	%r10,%r13
151	andq	%r11,%r10
152	rolq	$1,%r8
153
154	notq	%r11
155	xorq	%r9,%r10
156	movq	%r10,-12(%rsi)
157
158	movq	%r12,%r14
159	andq	%r11,%r12
160	movq	-12(%rdi),%r10
161	xorq	%r13,%r12
162	movq	%r12,-4(%rsi)
163
164	orq	%r9,%r13
165	movq	84(%rdi),%r12
166	xorq	%r8,%r13
167	movq	%r13,-20(%rsi)
168
169	andq	%r8,%r9
170	xorq	%r14,%r9
171	movq	%r9,12(%rsi)
172
173	orq	%r8,%r14
174	movq	-60(%rdi),%r9
175	xorq	%r11,%r14
176	movq	36(%rdi),%r11
177	movq	%r14,4(%rsi)
178
179
180	movq	-68(%rdi),%r8
181
182	xorq	%rcx,%r10
183	xorq	%rdx,%r11
184	rolq	$10,%r10
185	xorq	%rbx,%r9
186	rolq	$15,%r11
187	xorq	%rbp,%r12
188	rolq	$36,%r9
189	xorq	%rax,%r8
190	rolq	$56,%r12
191	movq	%r10,%r13
192	orq	%r11,%r10
193	rolq	$27,%r8
194
195	notq	%r11
196	xorq	%r9,%r10
197	movq	%r10,28(%rsi)
198
199	movq	%r12,%r14
200	orq	%r11,%r12
201	xorq	%r13,%r12
202	movq	%r12,36(%rsi)
203
204	andq	%r9,%r13
205	xorq	%r8,%r13
206	movq	%r13,20(%rsi)
207
208	orq	%r8,%r9
209	xorq	%r14,%r9
210	movq	%r9,52(%rsi)
211
212	andq	%r14,%r8
213	xorq	%r11,%r8
214	movq	%r8,44(%rsi)
215
216
217	xorq	-84(%rdi),%rdx
218	xorq	-36(%rdi),%rbp
219	rolq	$62,%rdx
220	xorq	68(%rdi),%rcx
221	rolq	$55,%rbp
222	xorq	12(%rdi),%rax
223	rolq	$2,%rcx
224	xorq	20(%rdi),%rbx
225	xchgq	%rsi,%rdi
226	rolq	$39,%rax
227	rolq	$41,%rbx
228	movq	%rdx,%r13
229	andq	%rbp,%rdx
230	notq	%rbp
231	xorq	%rcx,%rdx
232	movq	%rdx,92(%rdi)
233
234	movq	%rax,%r14
235	andq	%rbp,%rax
236	xorq	%r13,%rax
237	movq	%rax,60(%rdi)
238
239	orq	%rcx,%r13
240	xorq	%rbx,%r13
241	movq	%r13,84(%rdi)
242
243	andq	%rbx,%rcx
244	xorq	%r14,%rcx
245	movq	%rcx,76(%rdi)
246
247	orq	%r14,%rbx
248	xorq	%rbp,%rbx
249	movq	%rbx,68(%rdi)
250
251	movq	%rdx,%rbp
252	movq	%r13,%rdx
253
254	testq	$255,%r15
255	jnz	.Loop
256
257	leaq	-192(%r15),%r15
258	.byte	0xf3,0xc3
259.cfi_endproc
260.size	__KeccakF1600,.-__KeccakF1600
261
262.type	KeccakF1600,@function
263.align	32
264KeccakF1600:
265.cfi_startproc
266	pushq	%rbx
267.cfi_adjust_cfa_offset	8
268.cfi_offset	%rbx,-16
269	pushq	%rbp
270.cfi_adjust_cfa_offset	8
271.cfi_offset	%rbp,-24
272	pushq	%r12
273.cfi_adjust_cfa_offset	8
274.cfi_offset	%r12,-32
275	pushq	%r13
276.cfi_adjust_cfa_offset	8
277.cfi_offset	%r13,-40
278	pushq	%r14
279.cfi_adjust_cfa_offset	8
280.cfi_offset	%r14,-48
281	pushq	%r15
282.cfi_adjust_cfa_offset	8
283.cfi_offset	%r15,-56
284
285	leaq	100(%rdi),%rdi
286	subq	$200,%rsp
287.cfi_adjust_cfa_offset	200
288
289	notq	-92(%rdi)
290	notq	-84(%rdi)
291	notq	-36(%rdi)
292	notq	-4(%rdi)
293	notq	36(%rdi)
294	notq	60(%rdi)
295
296	leaq	iotas(%rip),%r15
297	leaq	100(%rsp),%rsi
298
299	call	__KeccakF1600
300
301	notq	-92(%rdi)
302	notq	-84(%rdi)
303	notq	-36(%rdi)
304	notq	-4(%rdi)
305	notq	36(%rdi)
306	notq	60(%rdi)
307	leaq	-100(%rdi),%rdi
308
309	addq	$200,%rsp
310.cfi_adjust_cfa_offset	-200
311
312	popq	%r15
313.cfi_adjust_cfa_offset	-8
314.cfi_restore	%r15
315	popq	%r14
316.cfi_adjust_cfa_offset	-8
317.cfi_restore	%r14
318	popq	%r13
319.cfi_adjust_cfa_offset	-8
320.cfi_restore	%r13
321	popq	%r12
322.cfi_adjust_cfa_offset	-8
323.cfi_restore	%r12
324	popq	%rbp
325.cfi_adjust_cfa_offset	-8
326.cfi_restore	%rbp
327	popq	%rbx
328.cfi_adjust_cfa_offset	-8
329.cfi_restore	%rbx
330	.byte	0xf3,0xc3
331.cfi_endproc
332.size	KeccakF1600,.-KeccakF1600
333.globl	SHA3_absorb
334.type	SHA3_absorb,@function
335.align	32
336SHA3_absorb:
337.cfi_startproc
338	pushq	%rbx
339.cfi_adjust_cfa_offset	8
340.cfi_offset	%rbx,-16
341	pushq	%rbp
342.cfi_adjust_cfa_offset	8
343.cfi_offset	%rbp,-24
344	pushq	%r12
345.cfi_adjust_cfa_offset	8
346.cfi_offset	%r12,-32
347	pushq	%r13
348.cfi_adjust_cfa_offset	8
349.cfi_offset	%r13,-40
350	pushq	%r14
351.cfi_adjust_cfa_offset	8
352.cfi_offset	%r14,-48
353	pushq	%r15
354.cfi_adjust_cfa_offset	8
355.cfi_offset	%r15,-56
356
357	leaq	100(%rdi),%rdi
358	subq	$232,%rsp
359.cfi_adjust_cfa_offset	232
360
361	movq	%rsi,%r9
362	leaq	100(%rsp),%rsi
363
364	notq	-92(%rdi)
365	notq	-84(%rdi)
366	notq	-36(%rdi)
367	notq	-4(%rdi)
368	notq	36(%rdi)
369	notq	60(%rdi)
370	leaq	iotas(%rip),%r15
371
372	movq	%rcx,216-100(%rsi)
373
374.Loop_absorb:
375	cmpq	%rcx,%rdx
376	jc	.Ldone_absorb
377
378	shrq	$3,%rcx
379	leaq	-100(%rdi),%r8
380
381.Lblock_absorb:
382	movq	(%r9),%rax
383	leaq	8(%r9),%r9
384	xorq	(%r8),%rax
385	leaq	8(%r8),%r8
386	subq	$8,%rdx
387	movq	%rax,-8(%r8)
388	subq	$1,%rcx
389	jnz	.Lblock_absorb
390
391	movq	%r9,200-100(%rsi)
392	movq	%rdx,208-100(%rsi)
393	call	__KeccakF1600
394	movq	200-100(%rsi),%r9
395	movq	208-100(%rsi),%rdx
396	movq	216-100(%rsi),%rcx
397	jmp	.Loop_absorb
398
399.align	32
400.Ldone_absorb:
401	movq	%rdx,%rax
402
403	notq	-92(%rdi)
404	notq	-84(%rdi)
405	notq	-36(%rdi)
406	notq	-4(%rdi)
407	notq	36(%rdi)
408	notq	60(%rdi)
409
410	addq	$232,%rsp
411.cfi_adjust_cfa_offset	-232
412
413	popq	%r15
414.cfi_adjust_cfa_offset	-8
415.cfi_restore	%r15
416	popq	%r14
417.cfi_adjust_cfa_offset	-8
418.cfi_restore	%r14
419	popq	%r13
420.cfi_adjust_cfa_offset	-8
421.cfi_restore	%r13
422	popq	%r12
423.cfi_adjust_cfa_offset	-8
424.cfi_restore	%r12
425	popq	%rbp
426.cfi_adjust_cfa_offset	-8
427.cfi_restore	%rbp
428	popq	%rbx
429.cfi_adjust_cfa_offset	-8
430.cfi_restore	%rbx
431	.byte	0xf3,0xc3
432.cfi_endproc
433.size	SHA3_absorb,.-SHA3_absorb
434.globl	SHA3_squeeze
435.type	SHA3_squeeze,@function
436.align	32
437SHA3_squeeze:
438.cfi_startproc
439	pushq	%r12
440.cfi_adjust_cfa_offset	8
441.cfi_offset	%r12,-16
442	pushq	%r13
443.cfi_adjust_cfa_offset	8
444.cfi_offset	%r13,-24
445	pushq	%r14
446.cfi_adjust_cfa_offset	8
447.cfi_offset	%r14,-32
448
449	shrq	$3,%rcx
450	movq	%rdi,%r8
451	movq	%rsi,%r12
452	movq	%rdx,%r13
453	movq	%rcx,%r14
454	jmp	.Loop_squeeze
455
456.align	32
457.Loop_squeeze:
458	cmpq	$8,%r13
459	jb	.Ltail_squeeze
460
461	movq	(%r8),%rax
462	leaq	8(%r8),%r8
463	movq	%rax,(%r12)
464	leaq	8(%r12),%r12
465	subq	$8,%r13
466	jz	.Ldone_squeeze
467
468	subq	$1,%rcx
469	jnz	.Loop_squeeze
470
471	call	KeccakF1600
472	movq	%rdi,%r8
473	movq	%r14,%rcx
474	jmp	.Loop_squeeze
475
476.Ltail_squeeze:
477	movq	%r8,%rsi
478	movq	%r12,%rdi
479	movq	%r13,%rcx
480.byte	0xf3,0xa4
481
482.Ldone_squeeze:
483	popq	%r14
484.cfi_adjust_cfa_offset	-8
485.cfi_restore	%r14
486	popq	%r13
487.cfi_adjust_cfa_offset	-8
488.cfi_restore	%r13
489	popq	%r12
490.cfi_adjust_cfa_offset	-8
491.cfi_restore	%r13
492	.byte	0xf3,0xc3
493.cfi_endproc
494.size	SHA3_squeeze,.-SHA3_squeeze
495.align	256
496.quad	0,0,0,0,0,0,0,0
497.type	iotas,@object
498iotas:
499.quad	0x0000000000000001
500.quad	0x0000000000008082
501.quad	0x800000000000808a
502.quad	0x8000000080008000
503.quad	0x000000000000808b
504.quad	0x0000000080000001
505.quad	0x8000000080008081
506.quad	0x8000000000008009
507.quad	0x000000000000008a
508.quad	0x0000000000000088
509.quad	0x0000000080008009
510.quad	0x000000008000000a
511.quad	0x000000008000808b
512.quad	0x800000000000008b
513.quad	0x8000000000008089
514.quad	0x8000000000008003
515.quad	0x8000000000008002
516.quad	0x8000000000000080
517.quad	0x000000000000800a
518.quad	0x800000008000000a
519.quad	0x8000000080008081
520.quad	0x8000000000008080
521.quad	0x0000000080000001
522.quad	0x8000000080008008
523.size	iotas,.-iotas
524.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,120,56,54,95,54,52,44,32,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
525