f24156854c41e804a6fddeb71efdcf9e3bb7d2f6
[trex.git] /
1 #if defined(__amd64) || defined(__amd64__) || defined(__x86_64__)
2
3 .text
4 .p2align 5
5
6 .globl  crypto_stream_salsa20
7 .globl _crypto_stream_salsa20
8 #ifdef __ELF__
9 .type  crypto_stream_salsa20, @function
10 .type _crypto_stream_salsa20, @function
11 #endif
12 crypto_stream_salsa20:
13 _crypto_stream_salsa20:
14 mov %rsp,%r11
15 and $31,%r11
16 add $512,%r11
17 sub %r11,%rsp
18 movq %r11,416(%rsp)
19 movq %r12,424(%rsp)
20 movq %r13,432(%rsp)
21 movq %r14,440(%rsp)
22 movq %r15,448(%rsp)
23 movq %rbx,456(%rsp)
24 movq %rbp,464(%rsp)
25 mov  %rsi,%r9
26 mov  %rdi,%rdi
27 mov  %rdi,%rsi
28 mov  %rdx,%rdx
29 mov  %rcx,%r10
30 cmp  $0,%r9
31 jbe ._done
32 mov  $0,%rax
33 mov  %r9,%rcx
34 rep stosb
35 sub  %r9,%rdi
36 movq $0,472(%rsp)
37 jmp ._start
38
39 .text
40 .p2align 5
41
42 .globl  crypto_stream_salsa20_xor_ic
43 .globl _crypto_stream_salsa20_xor_ic
44 #ifdef __ELF__
45 .type  crypto_stream_salsa20_xor_ic, @function
46 .type _crypto_stream_salsa20_xor_ic, @function
47 #endif
48 crypto_stream_salsa20_xor_ic:
49 _crypto_stream_salsa20_xor_ic:
50
51 mov %rsp,%r11
52 and $31,%r11
53 add $512,%r11
54 sub %r11,%rsp
55 movq %r11,416(%rsp)
56 movq %r12,424(%rsp)
57 movq %r13,432(%rsp)
58 movq %r14,440(%rsp)
59 movq %r15,448(%rsp)
60 movq %rbx,456(%rsp)
61 movq %rbp,464(%rsp)
62 mov  %rdi,%rdi
63 mov  %rsi,%rsi
64 mov  %r9,%r10
65 movq %r8,472(%rsp)
66 mov  %rdx,%r9
67 mov  %rcx,%rdx
68 cmp  $0,%r9
69 jbe ._done
70
71 ._start:
72 movl   20(%r10),%ecx
73 movl   0(%r10),%r8d
74 movl   0(%rdx),%eax
75 movl   16(%r10),%r11d
76 movl %ecx,64(%rsp)
77 movl %r8d,4+64(%rsp)
78 movl %eax,8+64(%rsp)
79 movl %r11d,12+64(%rsp)
80 movl   24(%r10),%r8d
81 movl   4(%r10),%eax
82 movl   4(%rdx),%edx
83 movq 472(%rsp),%rcx
84 movl %ecx,80(%rsp)
85 movl %r8d,4+80(%rsp)
86 movl %eax,8+80(%rsp)
87 movl %edx,12+80(%rsp)
88 movl   12(%r10),%edx
89 shr  $32,%rcx
90 movl   28(%r10),%r8d
91 movl   8(%r10),%eax
92 movl %edx,96(%rsp)
93 movl %ecx,4+96(%rsp)
94 movl %r8d,8+96(%rsp)
95 movl %eax,12+96(%rsp)
96 mov  $1634760805,%rdx
97 mov  $857760878,%rcx
98 mov  $2036477234,%r8
99 mov  $1797285236,%rax
100 movl %edx,112(%rsp)
101 movl %ecx,4+112(%rsp)
102 movl %r8d,8+112(%rsp)
103 movl %eax,12+112(%rsp)
104 cmp  $256,%r9
105 jb ._bytesbetween1and255
106 movdqa 112(%rsp),%xmm0
107 pshufd $0x55,%xmm0,%xmm1
108 pshufd $0xaa,%xmm0,%xmm2
109 pshufd $0xff,%xmm0,%xmm3
110 pshufd $0x00,%xmm0,%xmm0
111 movdqa %xmm1,128(%rsp)
112 movdqa %xmm2,144(%rsp)
113 movdqa %xmm3,160(%rsp)
114 movdqa %xmm0,176(%rsp)
115 movdqa 64(%rsp),%xmm0
116 pshufd $0xaa,%xmm0,%xmm1
117 pshufd $0xff,%xmm0,%xmm2
118 pshufd $0x00,%xmm0,%xmm3
119 pshufd $0x55,%xmm0,%xmm0
120 movdqa %xmm1,192(%rsp)
121 movdqa %xmm2,208(%rsp)
122 movdqa %xmm3,224(%rsp)
123 movdqa %xmm0,240(%rsp)
124 movdqa 80(%rsp),%xmm0
125 pshufd $0xff,%xmm0,%xmm1
126 pshufd $0x55,%xmm0,%xmm2
127 pshufd $0xaa,%xmm0,%xmm0
128 movdqa %xmm1,256(%rsp)
129 movdqa %xmm2,272(%rsp)
130 movdqa %xmm0,288(%rsp)
131 movdqa 96(%rsp),%xmm0
132 pshufd $0x00,%xmm0,%xmm1
133 pshufd $0xaa,%xmm0,%xmm2
134 pshufd $0xff,%xmm0,%xmm0
135 movdqa %xmm1,304(%rsp)
136 movdqa %xmm2,320(%rsp)
137 movdqa %xmm0,336(%rsp)
138
139 ._bytesatleast256:
140 movq 472(%rsp),%rdx
141 mov  %rdx,%rcx
142 shr  $32,%rcx
143 movl %edx,352(%rsp)
144 movl %ecx,368(%rsp)
145 add  $1,%rdx
146 mov  %rdx,%rcx
147 shr  $32,%rcx
148 movl %edx,4+352(%rsp)
149 movl %ecx,4+368(%rsp)
150 add  $1,%rdx
151 mov  %rdx,%rcx
152 shr  $32,%rcx
153 movl %edx,8+352(%rsp)
154 movl %ecx,8+368(%rsp)
155 add  $1,%rdx
156 mov  %rdx,%rcx
157 shr  $32,%rcx
158 movl %edx,12+352(%rsp)
159 movl %ecx,12+368(%rsp)
160 add  $1,%rdx
161 mov  %rdx,%rcx
162 shr  $32,%rcx
163 movl %edx,80(%rsp)
164 movl %ecx,4+96(%rsp)
165 movq %rdx,472(%rsp)
166 movq %r9,480(%rsp)
167 mov  $20,%rdx
168 movdqa 128(%rsp),%xmm0
169 movdqa 144(%rsp),%xmm1
170 movdqa 160(%rsp),%xmm2
171 movdqa 320(%rsp),%xmm3
172 movdqa 336(%rsp),%xmm4
173 movdqa 192(%rsp),%xmm5
174 movdqa 208(%rsp),%xmm6
175 movdqa 240(%rsp),%xmm7
176 movdqa 256(%rsp),%xmm8
177 movdqa 272(%rsp),%xmm9
178 movdqa 288(%rsp),%xmm10
179 movdqa 368(%rsp),%xmm11
180 movdqa 176(%rsp),%xmm12
181 movdqa 224(%rsp),%xmm13
182 movdqa 304(%rsp),%xmm14
183 movdqa 352(%rsp),%xmm15
184
185 ._mainloop1:
186 movdqa %xmm1,384(%rsp)
187 movdqa %xmm2,400(%rsp)
188 movdqa %xmm13,%xmm1
189 paddd %xmm12,%xmm1
190 movdqa %xmm1,%xmm2
191 pslld $7,%xmm1
192 pxor  %xmm1,%xmm14
193 psrld $25,%xmm2
194 pxor  %xmm2,%xmm14
195 movdqa %xmm7,%xmm1
196 paddd %xmm0,%xmm1
197 movdqa %xmm1,%xmm2
198 pslld $7,%xmm1
199 pxor  %xmm1,%xmm11
200 psrld $25,%xmm2
201 pxor  %xmm2,%xmm11
202 movdqa %xmm12,%xmm1
203 paddd %xmm14,%xmm1
204 movdqa %xmm1,%xmm2
205 pslld $9,%xmm1
206 pxor  %xmm1,%xmm15
207 psrld $23,%xmm2
208 pxor  %xmm2,%xmm15
209 movdqa %xmm0,%xmm1
210 paddd %xmm11,%xmm1
211 movdqa %xmm1,%xmm2
212 pslld $9,%xmm1
213 pxor  %xmm1,%xmm9
214 psrld $23,%xmm2
215 pxor  %xmm2,%xmm9
216 movdqa %xmm14,%xmm1
217 paddd %xmm15,%xmm1
218 movdqa %xmm1,%xmm2
219 pslld $13,%xmm1
220 pxor  %xmm1,%xmm13
221 psrld $19,%xmm2
222 pxor  %xmm2,%xmm13
223 movdqa %xmm11,%xmm1
224 paddd %xmm9,%xmm1
225 movdqa %xmm1,%xmm2
226 pslld $13,%xmm1
227 pxor  %xmm1,%xmm7
228 psrld $19,%xmm2
229 pxor  %xmm2,%xmm7
230 movdqa %xmm15,%xmm1
231 paddd %xmm13,%xmm1
232 movdqa %xmm1,%xmm2
233 pslld $18,%xmm1
234 pxor  %xmm1,%xmm12
235 psrld $14,%xmm2
236 pxor  %xmm2,%xmm12
237 movdqa 384(%rsp),%xmm1
238 movdqa %xmm12,384(%rsp)
239 movdqa %xmm9,%xmm2
240 paddd %xmm7,%xmm2
241 movdqa %xmm2,%xmm12
242 pslld $18,%xmm2
243 pxor  %xmm2,%xmm0
244 psrld $14,%xmm12
245 pxor  %xmm12,%xmm0
246 movdqa %xmm5,%xmm2
247 paddd %xmm1,%xmm2
248 movdqa %xmm2,%xmm12
249 pslld $7,%xmm2
250 pxor  %xmm2,%xmm3
251 psrld $25,%xmm12
252 pxor  %xmm12,%xmm3
253 movdqa 400(%rsp),%xmm2
254 movdqa %xmm0,400(%rsp)
255 movdqa %xmm6,%xmm0
256 paddd %xmm2,%xmm0
257 movdqa %xmm0,%xmm12
258 pslld $7,%xmm0
259 pxor  %xmm0,%xmm4
260 psrld $25,%xmm12
261 pxor  %xmm12,%xmm4
262 movdqa %xmm1,%xmm0
263 paddd %xmm3,%xmm0
264 movdqa %xmm0,%xmm12
265 pslld $9,%xmm0
266 pxor  %xmm0,%xmm10
267 psrld $23,%xmm12
268 pxor  %xmm12,%xmm10
269 movdqa %xmm2,%xmm0
270 paddd %xmm4,%xmm0
271 movdqa %xmm0,%xmm12
272 pslld $9,%xmm0
273 pxor  %xmm0,%xmm8
274 psrld $23,%xmm12
275 pxor  %xmm12,%xmm8
276 movdqa %xmm3,%xmm0
277 paddd %xmm10,%xmm0
278 movdqa %xmm0,%xmm12
279 pslld $13,%xmm0
280 pxor  %xmm0,%xmm5
281 psrld $19,%xmm12
282 pxor  %xmm12,%xmm5
283 movdqa %xmm4,%xmm0
284 paddd %xmm8,%xmm0
285 movdqa %xmm0,%xmm12
286 pslld $13,%xmm0
287 pxor  %xmm0,%xmm6
288 psrld $19,%xmm12
289 pxor  %xmm12,%xmm6
290 movdqa %xmm10,%xmm0
291 paddd %xmm5,%xmm0
292 movdqa %xmm0,%xmm12
293 pslld $18,%xmm0
294 pxor  %xmm0,%xmm1
295 psrld $14,%xmm12
296 pxor  %xmm12,%xmm1
297 movdqa 384(%rsp),%xmm0
298 movdqa %xmm1,384(%rsp)
299 movdqa %xmm4,%xmm1
300 paddd %xmm0,%xmm1
301 movdqa %xmm1,%xmm12
302 pslld $7,%xmm1
303 pxor  %xmm1,%xmm7
304 psrld $25,%xmm12
305 pxor  %xmm12,%xmm7
306 movdqa %xmm8,%xmm1
307 paddd %xmm6,%xmm1
308 movdqa %xmm1,%xmm12
309 pslld $18,%xmm1
310 pxor  %xmm1,%xmm2
311 psrld $14,%xmm12
312 pxor  %xmm12,%xmm2
313 movdqa 400(%rsp),%xmm12
314 movdqa %xmm2,400(%rsp)
315 movdqa %xmm14,%xmm1
316 paddd %xmm12,%xmm1
317 movdqa %xmm1,%xmm2
318 pslld $7,%xmm1
319 pxor  %xmm1,%xmm5
320 psrld $25,%xmm2
321 pxor  %xmm2,%xmm5
322 movdqa %xmm0,%xmm1
323 paddd %xmm7,%xmm1
324 movdqa %xmm1,%xmm2
325 pslld $9,%xmm1
326 pxor  %xmm1,%xmm10
327 psrld $23,%xmm2
328 pxor  %xmm2,%xmm10
329 movdqa %xmm12,%xmm1
330 paddd %xmm5,%xmm1
331 movdqa %xmm1,%xmm2
332 pslld $9,%xmm1
333 pxor  %xmm1,%xmm8
334 psrld $23,%xmm2
335 pxor  %xmm2,%xmm8
336 movdqa %xmm7,%xmm1
337 paddd %xmm10,%xmm1
338 movdqa %xmm1,%xmm2
339 pslld $13,%xmm1
340 pxor  %xmm1,%xmm4
341 psrld $19,%xmm2
342 pxor  %xmm2,%xmm4
343 movdqa %xmm5,%xmm1
344 paddd %xmm8,%xmm1
345 movdqa %xmm1,%xmm2
346 pslld $13,%xmm1
347 pxor  %xmm1,%xmm14
348 psrld $19,%xmm2
349 pxor  %xmm2,%xmm14
350 movdqa %xmm10,%xmm1
351 paddd %xmm4,%xmm1
352 movdqa %xmm1,%xmm2
353 pslld $18,%xmm1
354 pxor  %xmm1,%xmm0
355 psrld $14,%xmm2
356 pxor  %xmm2,%xmm0
357 movdqa 384(%rsp),%xmm1
358 movdqa %xmm0,384(%rsp)
359 movdqa %xmm8,%xmm0
360 paddd %xmm14,%xmm0
361 movdqa %xmm0,%xmm2
362 pslld $18,%xmm0
363 pxor  %xmm0,%xmm12
364 psrld $14,%xmm2
365 pxor  %xmm2,%xmm12
366 movdqa %xmm11,%xmm0
367 paddd %xmm1,%xmm0
368 movdqa %xmm0,%xmm2
369 pslld $7,%xmm0
370 pxor  %xmm0,%xmm6
371 psrld $25,%xmm2
372 pxor  %xmm2,%xmm6
373 movdqa 400(%rsp),%xmm2
374 movdqa %xmm12,400(%rsp)
375 movdqa %xmm3,%xmm0
376 paddd %xmm2,%xmm0
377 movdqa %xmm0,%xmm12
378 pslld $7,%xmm0
379 pxor  %xmm0,%xmm13
380 psrld $25,%xmm12
381 pxor  %xmm12,%xmm13
382 movdqa %xmm1,%xmm0
383 paddd %xmm6,%xmm0
384 movdqa %xmm0,%xmm12
385 pslld $9,%xmm0
386 pxor  %xmm0,%xmm15
387 psrld $23,%xmm12
388 pxor  %xmm12,%xmm15
389 movdqa %xmm2,%xmm0
390 paddd %xmm13,%xmm0
391 movdqa %xmm0,%xmm12
392 pslld $9,%xmm0
393 pxor  %xmm0,%xmm9
394 psrld $23,%xmm12
395 pxor  %xmm12,%xmm9
396 movdqa %xmm6,%xmm0
397 paddd %xmm15,%xmm0
398 movdqa %xmm0,%xmm12
399 pslld $13,%xmm0
400 pxor  %xmm0,%xmm11
401 psrld $19,%xmm12
402 pxor  %xmm12,%xmm11
403 movdqa %xmm13,%xmm0
404 paddd %xmm9,%xmm0
405 movdqa %xmm0,%xmm12
406 pslld $13,%xmm0
407 pxor  %xmm0,%xmm3
408 psrld $19,%xmm12
409 pxor  %xmm12,%xmm3
410 movdqa %xmm15,%xmm0
411 paddd %xmm11,%xmm0
412 movdqa %xmm0,%xmm12
413 pslld $18,%xmm0
414 pxor  %xmm0,%xmm1
415 psrld $14,%xmm12
416 pxor  %xmm12,%xmm1
417 movdqa %xmm9,%xmm0
418 paddd %xmm3,%xmm0
419 movdqa %xmm0,%xmm12
420 pslld $18,%xmm0
421 pxor  %xmm0,%xmm2
422 psrld $14,%xmm12
423 pxor  %xmm12,%xmm2
424 movdqa 384(%rsp),%xmm12
425 movdqa 400(%rsp),%xmm0
426 sub  $2,%rdx
427 ja ._mainloop1
428 paddd 176(%rsp),%xmm12
429 paddd 240(%rsp),%xmm7
430 paddd 288(%rsp),%xmm10
431 paddd 336(%rsp),%xmm4
432 movd   %xmm12,%rdx
433 movd   %xmm7,%rcx
434 movd   %xmm10,%r8
435 movd   %xmm4,%r9
436 pshufd $0x39,%xmm12,%xmm12
437 pshufd $0x39,%xmm7,%xmm7
438 pshufd $0x39,%xmm10,%xmm10
439 pshufd $0x39,%xmm4,%xmm4
440 xorl 0(%rsi),%edx
441 xorl 4(%rsi),%ecx
442 xorl 8(%rsi),%r8d
443 xorl 12(%rsi),%r9d
444 movl   %edx,0(%rdi)
445 movl   %ecx,4(%rdi)
446 movl   %r8d,8(%rdi)
447 movl   %r9d,12(%rdi)
448 movd   %xmm12,%rdx
449 movd   %xmm7,%rcx
450 movd   %xmm10,%r8
451 movd   %xmm4,%r9
452 pshufd $0x39,%xmm12,%xmm12
453 pshufd $0x39,%xmm7,%xmm7
454 pshufd $0x39,%xmm10,%xmm10
455 pshufd $0x39,%xmm4,%xmm4
456 xorl 64(%rsi),%edx
457 xorl 68(%rsi),%ecx
458 xorl 72(%rsi),%r8d
459 xorl 76(%rsi),%r9d
460 movl   %edx,64(%rdi)
461 movl   %ecx,68(%rdi)
462 movl   %r8d,72(%rdi)
463 movl   %r9d,76(%rdi)
464 movd   %xmm12,%rdx
465 movd   %xmm7,%rcx
466 movd   %xmm10,%r8
467 movd   %xmm4,%r9
468 pshufd $0x39,%xmm12,%xmm12
469 pshufd $0x39,%xmm7,%xmm7
470 pshufd $0x39,%xmm10,%xmm10
471 pshufd $0x39,%xmm4,%xmm4
472 xorl 128(%rsi),%edx
473 xorl 132(%rsi),%ecx
474 xorl 136(%rsi),%r8d
475 xorl 140(%rsi),%r9d
476 movl   %edx,128(%rdi)
477 movl   %ecx,132(%rdi)
478 movl   %r8d,136(%rdi)
479 movl   %r9d,140(%rdi)
480 movd   %xmm12,%rdx
481 movd   %xmm7,%rcx
482 movd   %xmm10,%r8
483 movd   %xmm4,%r9
484 xorl 192(%rsi),%edx
485 xorl 196(%rsi),%ecx
486 xorl 200(%rsi),%r8d
487 xorl 204(%rsi),%r9d
488 movl   %edx,192(%rdi)
489 movl   %ecx,196(%rdi)
490 movl   %r8d,200(%rdi)
491 movl   %r9d,204(%rdi)
492 paddd 304(%rsp),%xmm14
493 paddd 128(%rsp),%xmm0
494 paddd 192(%rsp),%xmm5
495 paddd 256(%rsp),%xmm8
496 movd   %xmm14,%rdx
497 movd   %xmm0,%rcx
498 movd   %xmm5,%r8
499 movd   %xmm8,%r9
500 pshufd $0x39,%xmm14,%xmm14
501 pshufd $0x39,%xmm0,%xmm0
502 pshufd $0x39,%xmm5,%xmm5
503 pshufd $0x39,%xmm8,%xmm8
504 xorl 16(%rsi),%edx
505 xorl 20(%rsi),%ecx
506 xorl 24(%rsi),%r8d
507 xorl 28(%rsi),%r9d
508 movl   %edx,16(%rdi)
509 movl   %ecx,20(%rdi)
510 movl   %r8d,24(%rdi)
511 movl   %r9d,28(%rdi)
512 movd   %xmm14,%rdx
513 movd   %xmm0,%rcx
514 movd   %xmm5,%r8
515 movd   %xmm8,%r9
516 pshufd $0x39,%xmm14,%xmm14
517 pshufd $0x39,%xmm0,%xmm0
518 pshufd $0x39,%xmm5,%xmm5
519 pshufd $0x39,%xmm8,%xmm8
520 xorl 80(%rsi),%edx
521 xorl 84(%rsi),%ecx
522 xorl 88(%rsi),%r8d
523 xorl 92(%rsi),%r9d
524 movl   %edx,80(%rdi)
525 movl   %ecx,84(%rdi)
526 movl   %r8d,88(%rdi)
527 movl   %r9d,92(%rdi)
528 movd   %xmm14,%rdx
529 movd   %xmm0,%rcx
530 movd   %xmm5,%r8
531 movd   %xmm8,%r9
532 pshufd $0x39,%xmm14,%xmm14
533 pshufd $0x39,%xmm0,%xmm0
534 pshufd $0x39,%xmm5,%xmm5
535 pshufd $0x39,%xmm8,%xmm8
536 xorl 144(%rsi),%edx
537 xorl 148(%rsi),%ecx
538 xorl 152(%rsi),%r8d
539 xorl 156(%rsi),%r9d
540 movl   %edx,144(%rdi)
541 movl   %ecx,148(%rdi)
542 movl   %r8d,152(%rdi)
543 movl   %r9d,156(%rdi)
544 movd   %xmm14,%rdx
545 movd   %xmm0,%rcx
546 movd   %xmm5,%r8
547 movd   %xmm8,%r9
548 xorl 208(%rsi),%edx
549 xorl 212(%rsi),%ecx
550 xorl 216(%rsi),%r8d
551 xorl 220(%rsi),%r9d
552 movl   %edx,208(%rdi)
553 movl   %ecx,212(%rdi)
554 movl   %r8d,216(%rdi)
555 movl   %r9d,220(%rdi)
556 paddd 352(%rsp),%xmm15
557 paddd 368(%rsp),%xmm11
558 paddd 144(%rsp),%xmm1
559 paddd 208(%rsp),%xmm6
560 movd   %xmm15,%rdx
561 movd   %xmm11,%rcx
562 movd   %xmm1,%r8
563 movd   %xmm6,%r9
564 pshufd $0x39,%xmm15,%xmm15
565 pshufd $0x39,%xmm11,%xmm11
566 pshufd $0x39,%xmm1,%xmm1
567 pshufd $0x39,%xmm6,%xmm6
568 xorl 32(%rsi),%edx
569 xorl 36(%rsi),%ecx
570 xorl 40(%rsi),%r8d
571 xorl 44(%rsi),%r9d
572 movl   %edx,32(%rdi)
573 movl   %ecx,36(%rdi)
574 movl   %r8d,40(%rdi)
575 movl   %r9d,44(%rdi)
576 movd   %xmm15,%rdx
577 movd   %xmm11,%rcx
578 movd   %xmm1,%r8
579 movd   %xmm6,%r9
580 pshufd $0x39,%xmm15,%xmm15
581 pshufd $0x39,%xmm11,%xmm11
582 pshufd $0x39,%xmm1,%xmm1
583 pshufd $0x39,%xmm6,%xmm6
584 xorl 96(%rsi),%edx
585 xorl 100(%rsi),%ecx
586 xorl 104(%rsi),%r8d
587 xorl 108(%rsi),%r9d
588 movl   %edx,96(%rdi)
589 movl   %ecx,100(%rdi)
590 movl   %r8d,104(%rdi)
591 movl   %r9d,108(%rdi)
592 movd   %xmm15,%rdx
593 movd   %xmm11,%rcx
594 movd   %xmm1,%r8
595 movd   %xmm6,%r9
596 pshufd $0x39,%xmm15,%xmm15
597 pshufd $0x39,%xmm11,%xmm11
598 pshufd $0x39,%xmm1,%xmm1
599 pshufd $0x39,%xmm6,%xmm6
600 xorl 160(%rsi),%edx
601 xorl 164(%rsi),%ecx
602 xorl 168(%rsi),%r8d
603 xorl 172(%rsi),%r9d
604 movl   %edx,160(%rdi)
605 movl   %ecx,164(%rdi)
606 movl   %r8d,168(%rdi)
607 movl   %r9d,172(%rdi)
608 movd   %xmm15,%rdx
609 movd   %xmm11,%rcx
610 movd   %xmm1,%r8
611 movd   %xmm6,%r9
612 xorl 224(%rsi),%edx
613 xorl 228(%rsi),%ecx
614 xorl 232(%rsi),%r8d
615 xorl 236(%rsi),%r9d
616 movl   %edx,224(%rdi)
617 movl   %ecx,228(%rdi)
618 movl   %r8d,232(%rdi)
619 movl   %r9d,236(%rdi)
620 paddd 224(%rsp),%xmm13
621 paddd 272(%rsp),%xmm9
622 paddd 320(%rsp),%xmm3
623 paddd 160(%rsp),%xmm2
624 movd   %xmm13,%rdx
625 movd   %xmm9,%rcx
626 movd   %xmm3,%r8
627 movd   %xmm2,%r9
628 pshufd $0x39,%xmm13,%xmm13
629 pshufd $0x39,%xmm9,%xmm9
630 pshufd $0x39,%xmm3,%xmm3
631 pshufd $0x39,%xmm2,%xmm2
632 xorl 48(%rsi),%edx
633 xorl 52(%rsi),%ecx
634 xorl 56(%rsi),%r8d
635 xorl 60(%rsi),%r9d
636 movl   %edx,48(%rdi)
637 movl   %ecx,52(%rdi)
638 movl   %r8d,56(%rdi)
639 movl   %r9d,60(%rdi)
640 movd   %xmm13,%rdx
641 movd   %xmm9,%rcx
642 movd   %xmm3,%r8
643 movd   %xmm2,%r9
644 pshufd $0x39,%xmm13,%xmm13
645 pshufd $0x39,%xmm9,%xmm9
646 pshufd $0x39,%xmm3,%xmm3
647 pshufd $0x39,%xmm2,%xmm2
648 xorl 112(%rsi),%edx
649 xorl 116(%rsi),%ecx
650 xorl 120(%rsi),%r8d
651 xorl 124(%rsi),%r9d
652 movl   %edx,112(%rdi)
653 movl   %ecx,116(%rdi)
654 movl   %r8d,120(%rdi)
655 movl   %r9d,124(%rdi)
656 movd   %xmm13,%rdx
657 movd   %xmm9,%rcx
658 movd   %xmm3,%r8
659 movd   %xmm2,%r9
660 pshufd $0x39,%xmm13,%xmm13
661 pshufd $0x39,%xmm9,%xmm9
662 pshufd $0x39,%xmm3,%xmm3
663 pshufd $0x39,%xmm2,%xmm2
664 xorl 176(%rsi),%edx
665 xorl 180(%rsi),%ecx
666 xorl 184(%rsi),%r8d
667 xorl 188(%rsi),%r9d
668 movl   %edx,176(%rdi)
669 movl   %ecx,180(%rdi)
670 movl   %r8d,184(%rdi)
671 movl   %r9d,188(%rdi)
672 movd   %xmm13,%rdx
673 movd   %xmm9,%rcx
674 movd   %xmm3,%r8
675 movd   %xmm2,%r9
676 xorl 240(%rsi),%edx
677 xorl 244(%rsi),%ecx
678 xorl 248(%rsi),%r8d
679 xorl 252(%rsi),%r9d
680 movl   %edx,240(%rdi)
681 movl   %ecx,244(%rdi)
682 movl   %r8d,248(%rdi)
683 movl   %r9d,252(%rdi)
684 movq 480(%rsp),%r9
685 sub  $256,%r9
686 add  $256,%rsi
687 add  $256,%rdi
688 cmp  $256,%r9
689 jae ._bytesatleast256
690 cmp  $0,%r9
691 jbe ._done
692
693 ._bytesbetween1and255:
694 cmp  $64,%r9
695 jae ._nocopy
696 mov  %rdi,%rdx
697 leaq 0(%rsp),%rdi
698 mov  %r9,%rcx
699 rep movsb
700 leaq 0(%rsp),%rdi
701 leaq 0(%rsp),%rsi
702
703 ._nocopy:
704 movq %r9,480(%rsp)
705 movdqa 112(%rsp),%xmm0
706 movdqa 64(%rsp),%xmm1
707 movdqa 80(%rsp),%xmm2
708 movdqa 96(%rsp),%xmm3
709 movdqa %xmm1,%xmm4
710 mov  $20,%rcx
711
712 ._mainloop2:
713 paddd %xmm0,%xmm4
714 movdqa %xmm0,%xmm5
715 movdqa %xmm4,%xmm6
716 pslld $7,%xmm4
717 psrld $25,%xmm6
718 pxor  %xmm4,%xmm3
719 pxor  %xmm6,%xmm3
720 paddd %xmm3,%xmm5
721 movdqa %xmm3,%xmm4
722 movdqa %xmm5,%xmm6
723 pslld $9,%xmm5
724 psrld $23,%xmm6
725 pxor  %xmm5,%xmm2
726 pshufd $0x93,%xmm3,%xmm3
727 pxor  %xmm6,%xmm2
728 paddd %xmm2,%xmm4
729 movdqa %xmm2,%xmm5
730 movdqa %xmm4,%xmm6
731 pslld $13,%xmm4
732 psrld $19,%xmm6
733 pxor  %xmm4,%xmm1
734 pshufd $0x4e,%xmm2,%xmm2
735 pxor  %xmm6,%xmm1
736 paddd %xmm1,%xmm5
737 movdqa %xmm3,%xmm4
738 movdqa %xmm5,%xmm6
739 pslld $18,%xmm5
740 psrld $14,%xmm6
741 pxor  %xmm5,%xmm0
742 pshufd $0x39,%xmm1,%xmm1
743 pxor  %xmm6,%xmm0
744 paddd %xmm0,%xmm4
745 movdqa %xmm0,%xmm5
746 movdqa %xmm4,%xmm6
747 pslld $7,%xmm4
748 psrld $25,%xmm6
749 pxor  %xmm4,%xmm1
750 pxor  %xmm6,%xmm1
751 paddd %xmm1,%xmm5
752 movdqa %xmm1,%xmm4
753 movdqa %xmm5,%xmm6
754 pslld $9,%xmm5
755 psrld $23,%xmm6
756 pxor  %xmm5,%xmm2
757 pshufd $0x93,%xmm1,%xmm1
758 pxor  %xmm6,%xmm2
759 paddd %xmm2,%xmm4
760 movdqa %xmm2,%xmm5
761 movdqa %xmm4,%xmm6
762 pslld $13,%xmm4
763 psrld $19,%xmm6
764 pxor  %xmm4,%xmm3
765 pshufd $0x4e,%xmm2,%xmm2
766 pxor  %xmm6,%xmm3
767 paddd %xmm3,%xmm5
768 movdqa %xmm1,%xmm4
769 movdqa %xmm5,%xmm6
770 pslld $18,%xmm5
771 psrld $14,%xmm6
772 pxor  %xmm5,%xmm0
773 pshufd $0x39,%xmm3,%xmm3
774 pxor  %xmm6,%xmm0
775 paddd %xmm0,%xmm4
776 movdqa %xmm0,%xmm5
777 movdqa %xmm4,%xmm6
778 pslld $7,%xmm4
779 psrld $25,%xmm6
780 pxor  %xmm4,%xmm3
781 pxor  %xmm6,%xmm3
782 paddd %xmm3,%xmm5
783 movdqa %xmm3,%xmm4
784 movdqa %xmm5,%xmm6
785 pslld $9,%xmm5
786 psrld $23,%xmm6
787 pxor  %xmm5,%xmm2
788 pshufd $0x93,%xmm3,%xmm3
789 pxor  %xmm6,%xmm2
790 paddd %xmm2,%xmm4
791 movdqa %xmm2,%xmm5
792 movdqa %xmm4,%xmm6
793 pslld $13,%xmm4
794 psrld $19,%xmm6
795 pxor  %xmm4,%xmm1
796 pshufd $0x4e,%xmm2,%xmm2
797 pxor  %xmm6,%xmm1
798 paddd %xmm1,%xmm5
799 movdqa %xmm3,%xmm4
800 movdqa %xmm5,%xmm6
801 pslld $18,%xmm5
802 psrld $14,%xmm6
803 pxor  %xmm5,%xmm0
804 pshufd $0x39,%xmm1,%xmm1
805 pxor  %xmm6,%xmm0
806 paddd %xmm0,%xmm4
807 movdqa %xmm0,%xmm5
808 movdqa %xmm4,%xmm6
809 pslld $7,%xmm4
810 psrld $25,%xmm6
811 pxor  %xmm4,%xmm1
812 pxor  %xmm6,%xmm1
813 paddd %xmm1,%xmm5
814 movdqa %xmm1,%xmm4
815 movdqa %xmm5,%xmm6
816 pslld $9,%xmm5
817 psrld $23,%xmm6
818 pxor  %xmm5,%xmm2
819 pshufd $0x93,%xmm1,%xmm1
820 pxor  %xmm6,%xmm2
821 paddd %xmm2,%xmm4
822 movdqa %xmm2,%xmm5
823 movdqa %xmm4,%xmm6
824 pslld $13,%xmm4
825 psrld $19,%xmm6
826 pxor  %xmm4,%xmm3
827 pshufd $0x4e,%xmm2,%xmm2
828 pxor  %xmm6,%xmm3
829 sub  $4,%rcx
830 paddd %xmm3,%xmm5
831 movdqa %xmm1,%xmm4
832 movdqa %xmm5,%xmm6
833 pslld $18,%xmm5
834 pxor   %xmm7,%xmm7
835 psrld $14,%xmm6
836 pxor  %xmm5,%xmm0
837 pshufd $0x39,%xmm3,%xmm3
838 pxor  %xmm6,%xmm0
839 ja ._mainloop2
840 paddd 112(%rsp),%xmm0
841 paddd 64(%rsp),%xmm1
842 paddd 80(%rsp),%xmm2
843 paddd 96(%rsp),%xmm3
844 movd   %xmm0,%rcx
845 movd   %xmm1,%r8
846 movd   %xmm2,%r9
847 movd   %xmm3,%rax
848 pshufd $0x39,%xmm0,%xmm0
849 pshufd $0x39,%xmm1,%xmm1
850 pshufd $0x39,%xmm2,%xmm2
851 pshufd $0x39,%xmm3,%xmm3
852 xorl 0(%rsi),%ecx
853 xorl 48(%rsi),%r8d
854 xorl 32(%rsi),%r9d
855 xorl 16(%rsi),%eax
856 movl   %ecx,0(%rdi)
857 movl   %r8d,48(%rdi)
858 movl   %r9d,32(%rdi)
859 movl   %eax,16(%rdi)
860 movd   %xmm0,%rcx
861 movd   %xmm1,%r8
862 movd   %xmm2,%r9
863 movd   %xmm3,%rax
864 pshufd $0x39,%xmm0,%xmm0
865 pshufd $0x39,%xmm1,%xmm1
866 pshufd $0x39,%xmm2,%xmm2
867 pshufd $0x39,%xmm3,%xmm3
868 xorl 20(%rsi),%ecx
869 xorl 4(%rsi),%r8d
870 xorl 52(%rsi),%r9d
871 xorl 36(%rsi),%eax
872 movl   %ecx,20(%rdi)
873 movl   %r8d,4(%rdi)
874 movl   %r9d,52(%rdi)
875 movl   %eax,36(%rdi)
876 movd   %xmm0,%rcx
877 movd   %xmm1,%r8
878 movd   %xmm2,%r9
879 movd   %xmm3,%rax
880 pshufd $0x39,%xmm0,%xmm0
881 pshufd $0x39,%xmm1,%xmm1
882 pshufd $0x39,%xmm2,%xmm2
883 pshufd $0x39,%xmm3,%xmm3
884 xorl 40(%rsi),%ecx
885 xorl 24(%rsi),%r8d
886 xorl 8(%rsi),%r9d
887 xorl 56(%rsi),%eax
888 movl   %ecx,40(%rdi)
889 movl   %r8d,24(%rdi)
890 movl   %r9d,8(%rdi)
891 movl   %eax,56(%rdi)
892 movd   %xmm0,%rcx
893 movd   %xmm1,%r8
894 movd   %xmm2,%r9
895 movd   %xmm3,%rax
896 xorl 60(%rsi),%ecx
897 xorl 44(%rsi),%r8d
898 xorl 28(%rsi),%r9d
899 xorl 12(%rsi),%eax
900 movl   %ecx,60(%rdi)
901 movl   %r8d,44(%rdi)
902 movl   %r9d,28(%rdi)
903 movl   %eax,12(%rdi)
904 movq 480(%rsp),%r9
905 movq 472(%rsp),%rcx
906 add  $1,%rcx
907 mov  %rcx,%r8
908 shr  $32,%r8
909 movl %ecx,80(%rsp)
910 movl %r8d,4+96(%rsp)
911 movq %rcx,472(%rsp)
912 cmp  $64,%r9
913 ja ._bytesatleast65
914 jae ._bytesatleast64
915 mov  %rdi,%rsi
916 mov  %rdx,%rdi
917 mov  %r9,%rcx
918 rep movsb
919
920 ._bytesatleast64:
921 ._done:
922 movq 416(%rsp),%r11
923 movq 424(%rsp),%r12
924 movq 432(%rsp),%r13
925 movq 440(%rsp),%r14
926 movq 448(%rsp),%r15
927 movq 456(%rsp),%rbx
928 movq 464(%rsp),%rbp
929 add %r11,%rsp
930 xor %rax,%rax
931 mov %rsi,%rdx
932 ret
933
934 ._bytesatleast65:
935 sub  $64,%r9
936 add  $64,%rdi
937 add  $64,%rsi
938 jmp ._bytesbetween1and255
939
940 #endif
941
942 #if defined(__linux__) && defined(__ELF__)
943 .section .note.GNU-stack,"",%progbits
944 #endif