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