]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/amd64/keccak1600-x86_64.S
MFC: r359060, r359061, r359066
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / amd64 / keccak1600-x86_64.S
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