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