1// Code generated by command: go run salsa20_amd64_asm.go -out ../salsa20_amd64.s -pkg salsa. DO NOT EDIT.
2
3//go:build amd64 && !purego && gc
4
5// func salsa2020XORKeyStream(out *byte, in *byte, n uint64, nonce *byte, key *byte)
6// Requires: SSE2
7TEXT ·salsa2020XORKeyStream(SB), $456-40
8 // This needs up to 64 bytes at 360(R12); hence the non-obvious frame size.
9 MOVQ out+0(FP), DI
10 MOVQ in+8(FP), SI
11 MOVQ n+16(FP), DX
12 MOVQ nonce+24(FP), CX
13 MOVQ key+32(FP), R8
14 MOVQ SP, R12
15 ADDQ $0x1f, R12
16 ANDQ $-32, R12
17 MOVQ DX, R9
18 MOVQ CX, DX
19 MOVQ R8, R10
20 CMPQ R9, $0x00
21 JBE DONE
22 MOVL 20(R10), CX
23 MOVL (R10), R8
24 MOVL (DX), AX
25 MOVL 16(R10), R11
26 MOVL CX, (R12)
27 MOVL R8, 4(R12)
28 MOVL AX, 8(R12)
29 MOVL R11, 12(R12)
30 MOVL 8(DX), CX
31 MOVL 24(R10), R8
32 MOVL 4(R10), AX
33 MOVL 4(DX), R11
34 MOVL CX, 16(R12)
35 MOVL R8, 20(R12)
36 MOVL AX, 24(R12)
37 MOVL R11, 28(R12)
38 MOVL 12(DX), CX
39 MOVL 12(R10), DX
40 MOVL 28(R10), R8
41 MOVL 8(R10), AX
42 MOVL DX, 32(R12)
43 MOVL CX, 36(R12)
44 MOVL R8, 40(R12)
45 MOVL AX, 44(R12)
46 MOVQ $0x61707865, DX
47 MOVQ $0x3320646e, CX
48 MOVQ $0x79622d32, R8
49 MOVQ $0x6b206574, AX
50 MOVL DX, 48(R12)
51 MOVL CX, 52(R12)
52 MOVL R8, 56(R12)
53 MOVL AX, 60(R12)
54 CMPQ R9, $0x00000100
55 JB BYTESBETWEEN1AND255
56 MOVOA 48(R12), X0
57 PSHUFL $0x55, X0, X1
58 PSHUFL $0xaa, X0, X2
59 PSHUFL $0xff, X0, X3
60 PSHUFL $0x00, X0, X0
61 MOVOA X1, 64(R12)
62 MOVOA X2, 80(R12)
63 MOVOA X3, 96(R12)
64 MOVOA X0, 112(R12)
65 MOVOA (R12), X0
66 PSHUFL $0xaa, X0, X1
67 PSHUFL $0xff, X0, X2
68 PSHUFL $0x00, X0, X3
69 PSHUFL $0x55, X0, X0
70 MOVOA X1, 128(R12)
71 MOVOA X2, 144(R12)
72 MOVOA X3, 160(R12)
73 MOVOA X0, 176(R12)
74 MOVOA 16(R12), X0
75 PSHUFL $0xff, X0, X1
76 PSHUFL $0x55, X0, X2
77 PSHUFL $0xaa, X0, X0
78 MOVOA X1, 192(R12)
79 MOVOA X2, 208(R12)
80 MOVOA X0, 224(R12)
81 MOVOA 32(R12), X0
82 PSHUFL $0x00, X0, X1
83 PSHUFL $0xaa, X0, X2
84 PSHUFL $0xff, X0, X0
85 MOVOA X1, 240(R12)
86 MOVOA X2, 256(R12)
87 MOVOA X0, 272(R12)
88
89BYTESATLEAST256:
90 MOVL 16(R12), DX
91 MOVL 36(R12), CX
92 MOVL DX, 288(R12)
93 MOVL CX, 304(R12)
94 SHLQ $0x20, CX
95 ADDQ CX, DX
96 ADDQ $0x01, DX
97 MOVQ DX, CX
98 SHRQ $0x20, CX
99 MOVL DX, 292(R12)
100 MOVL CX, 308(R12)
101 ADDQ $0x01, DX
102 MOVQ DX, CX
103 SHRQ $0x20, CX
104 MOVL DX, 296(R12)
105 MOVL CX, 312(R12)
106 ADDQ $0x01, DX
107 MOVQ DX, CX
108 SHRQ $0x20, CX
109 MOVL DX, 300(R12)
110 MOVL CX, 316(R12)
111 ADDQ $0x01, DX
112 MOVQ DX, CX
113 SHRQ $0x20, CX
114 MOVL DX, 16(R12)
115 MOVL CX, 36(R12)
116 MOVQ R9, 352(R12)
117 MOVQ $0x00000014, DX
118 MOVOA 64(R12), X0
119 MOVOA 80(R12), X1
120 MOVOA 96(R12), X2
121 MOVOA 256(R12), X3
122 MOVOA 272(R12), X4
123 MOVOA 128(R12), X5
124 MOVOA 144(R12), X6
125 MOVOA 176(R12), X7
126 MOVOA 192(R12), X8
127 MOVOA 208(R12), X9
128 MOVOA 224(R12), X10
129 MOVOA 304(R12), X11
130 MOVOA 112(R12), X12
131 MOVOA 160(R12), X13
132 MOVOA 240(R12), X14
133 MOVOA 288(R12), X15
134
135MAINLOOP1:
136 MOVOA X1, 320(R12)
137 MOVOA X2, 336(R12)
138 MOVOA X13, X1
139 PADDL X12, X1
140 MOVOA X1, X2
141 PSLLL $0x07, X1
142 PXOR X1, X14
143 PSRLL $0x19, X2
144 PXOR X2, X14
145 MOVOA X7, X1
146 PADDL X0, X1
147 MOVOA X1, X2
148 PSLLL $0x07, X1
149 PXOR X1, X11
150 PSRLL $0x19, X2
151 PXOR X2, X11
152 MOVOA X12, X1
153 PADDL X14, X1
154 MOVOA X1, X2
155 PSLLL $0x09, X1
156 PXOR X1, X15
157 PSRLL $0x17, X2
158 PXOR X2, X15
159 MOVOA X0, X1
160 PADDL X11, X1
161 MOVOA X1, X2
162 PSLLL $0x09, X1
163 PXOR X1, X9
164 PSRLL $0x17, X2
165 PXOR X2, X9
166 MOVOA X14, X1
167 PADDL X15, X1
168 MOVOA X1, X2
169 PSLLL $0x0d, X1
170 PXOR X1, X13
171 PSRLL $0x13, X2
172 PXOR X2, X13
173 MOVOA X11, X1
174 PADDL X9, X1
175 MOVOA X1, X2
176 PSLLL $0x0d, X1
177 PXOR X1, X7
178 PSRLL $0x13, X2
179 PXOR X2, X7
180 MOVOA X15, X1
181 PADDL X13, X1
182 MOVOA X1, X2
183 PSLLL $0x12, X1
184 PXOR X1, X12
185 PSRLL $0x0e, X2
186 PXOR X2, X12
187 MOVOA 320(R12), X1
188 MOVOA X12, 320(R12)
189 MOVOA X9, X2
190 PADDL X7, X2
191 MOVOA X2, X12
192 PSLLL $0x12, X2
193 PXOR X2, X0
194 PSRLL $0x0e, X12
195 PXOR X12, X0
196 MOVOA X5, X2
197 PADDL X1, X2
198 MOVOA X2, X12
199 PSLLL $0x07, X2
200 PXOR X2, X3
201 PSRLL $0x19, X12
202 PXOR X12, X3
203 MOVOA 336(R12), X2
204 MOVOA X0, 336(R12)
205 MOVOA X6, X0
206 PADDL X2, X0
207 MOVOA X0, X12
208 PSLLL $0x07, X0
209 PXOR X0, X4
210 PSRLL $0x19, X12
211 PXOR X12, X4
212 MOVOA X1, X0
213 PADDL X3, X0
214 MOVOA X0, X12
215 PSLLL $0x09, X0
216 PXOR X0, X10
217 PSRLL $0x17, X12
218 PXOR X12, X10
219 MOVOA X2, X0
220 PADDL X4, X0
221 MOVOA X0, X12
222 PSLLL $0x09, X0
223 PXOR X0, X8
224 PSRLL $0x17, X12
225 PXOR X12, X8
226 MOVOA X3, X0
227 PADDL X10, X0
228 MOVOA X0, X12
229 PSLLL $0x0d, X0
230 PXOR X0, X5
231 PSRLL $0x13, X12
232 PXOR X12, X5
233 MOVOA X4, X0
234 PADDL X8, X0
235 MOVOA X0, X12
236 PSLLL $0x0d, X0
237 PXOR X0, X6
238 PSRLL $0x13, X12
239 PXOR X12, X6
240 MOVOA X10, X0
241 PADDL X5, X0
242 MOVOA X0, X12
243 PSLLL $0x12, X0
244 PXOR X0, X1
245 PSRLL $0x0e, X12
246 PXOR X12, X1
247 MOVOA 320(R12), X0
248 MOVOA X1, 320(R12)
249 MOVOA X4, X1
250 PADDL X0, X1
251 MOVOA X1, X12
252 PSLLL $0x07, X1
253 PXOR X1, X7
254 PSRLL $0x19, X12
255 PXOR X12, X7
256 MOVOA X8, X1
257 PADDL X6, X1
258 MOVOA X1, X12
259 PSLLL $0x12, X1
260 PXOR X1, X2
261 PSRLL $0x0e, X12
262 PXOR X12, X2
263 MOVOA 336(R12), X12
264 MOVOA X2, 336(R12)
265 MOVOA X14, X1
266 PADDL X12, X1
267 MOVOA X1, X2
268 PSLLL $0x07, X1
269 PXOR X1, X5
270 PSRLL $0x19, X2
271 PXOR X2, X5
272 MOVOA X0, X1
273 PADDL X7, X1
274 MOVOA X1, X2
275 PSLLL $0x09, X1
276 PXOR X1, X10
277 PSRLL $0x17, X2
278 PXOR X2, X10
279 MOVOA X12, X1
280 PADDL X5, X1
281 MOVOA X1, X2
282 PSLLL $0x09, X1
283 PXOR X1, X8
284 PSRLL $0x17, X2
285 PXOR X2, X8
286 MOVOA X7, X1
287 PADDL X10, X1
288 MOVOA X1, X2
289 PSLLL $0x0d, X1
290 PXOR X1, X4
291 PSRLL $0x13, X2
292 PXOR X2, X4
293 MOVOA X5, X1
294 PADDL X8, X1
295 MOVOA X1, X2
296 PSLLL $0x0d, X1
297 PXOR X1, X14
298 PSRLL $0x13, X2
299 PXOR X2, X14
300 MOVOA X10, X1
301 PADDL X4, X1
302 MOVOA X1, X2
303 PSLLL $0x12, X1
304 PXOR X1, X0
305 PSRLL $0x0e, X2
306 PXOR X2, X0
307 MOVOA 320(R12), X1
308 MOVOA X0, 320(R12)
309 MOVOA X8, X0
310 PADDL X14, X0
311 MOVOA X0, X2
312 PSLLL $0x12, X0
313 PXOR X0, X12
314 PSRLL $0x0e, X2
315 PXOR X2, X12
316 MOVOA X11, X0
317 PADDL X1, X0
318 MOVOA X0, X2
319 PSLLL $0x07, X0
320 PXOR X0, X6
321 PSRLL $0x19, X2
322 PXOR X2, X6
323 MOVOA 336(R12), X2
324 MOVOA X12, 336(R12)
325 MOVOA X3, X0
326 PADDL X2, X0
327 MOVOA X0, X12
328 PSLLL $0x07, X0
329 PXOR X0, X13
330 PSRLL $0x19, X12
331 PXOR X12, X13
332 MOVOA X1, X0
333 PADDL X6, X0
334 MOVOA X0, X12
335 PSLLL $0x09, X0
336 PXOR X0, X15
337 PSRLL $0x17, X12
338 PXOR X12, X15
339 MOVOA X2, X0
340 PADDL X13, X0
341 MOVOA X0, X12
342 PSLLL $0x09, X0
343 PXOR X0, X9
344 PSRLL $0x17, X12
345 PXOR X12, X9
346 MOVOA X6, X0
347 PADDL X15, X0
348 MOVOA X0, X12
349 PSLLL $0x0d, X0
350 PXOR X0, X11
351 PSRLL $0x13, X12
352 PXOR X12, X11
353 MOVOA X13, X0
354 PADDL X9, X0
355 MOVOA X0, X12
356 PSLLL $0x0d, X0
357 PXOR X0, X3
358 PSRLL $0x13, X12
359 PXOR X12, X3
360 MOVOA X15, X0
361 PADDL X11, X0
362 MOVOA X0, X12
363 PSLLL $0x12, X0
364 PXOR X0, X1
365 PSRLL $0x0e, X12
366 PXOR X12, X1
367 MOVOA X9, X0
368 PADDL X3, X0
369 MOVOA X0, X12
370 PSLLL $0x12, X0
371 PXOR X0, X2
372 PSRLL $0x0e, X12
373 PXOR X12, X2
374 MOVOA 320(R12), X12
375 MOVOA 336(R12), X0
376 SUBQ $0x02, DX
377 JA MAINLOOP1
378 PADDL 112(R12), X12
379 PADDL 176(R12), X7
380 PADDL 224(R12), X10
381 PADDL 272(R12), X4
382 MOVD X12, DX
383 MOVD X7, CX
384 MOVD X10, R8
385 MOVD X4, R9
386 PSHUFL $0x39, X12, X12
387 PSHUFL $0x39, X7, X7
388 PSHUFL $0x39, X10, X10
389 PSHUFL $0x39, X4, X4
390 XORL (SI), DX
391 XORL 4(SI), CX
392 XORL 8(SI), R8
393 XORL 12(SI), R9
394 MOVL DX, (DI)
395 MOVL CX, 4(DI)
396 MOVL R8, 8(DI)
397 MOVL R9, 12(DI)
398 MOVD X12, DX
399 MOVD X7, CX
400 MOVD X10, R8
401 MOVD X4, R9
402 PSHUFL $0x39, X12, X12
403 PSHUFL $0x39, X7, X7
404 PSHUFL $0x39, X10, X10
405 PSHUFL $0x39, X4, X4
406 XORL 64(SI), DX
407 XORL 68(SI), CX
408 XORL 72(SI), R8
409 XORL 76(SI), R9
410 MOVL DX, 64(DI)
411 MOVL CX, 68(DI)
412 MOVL R8, 72(DI)
413 MOVL R9, 76(DI)
414 MOVD X12, DX
415 MOVD X7, CX
416 MOVD X10, R8
417 MOVD X4, R9
418 PSHUFL $0x39, X12, X12
419 PSHUFL $0x39, X7, X7
420 PSHUFL $0x39, X10, X10
421 PSHUFL $0x39, X4, X4
422 XORL 128(SI), DX
423 XORL 132(SI), CX
424 XORL 136(SI), R8
425 XORL 140(SI), R9
426 MOVL DX, 128(DI)
427 MOVL CX, 132(DI)
428 MOVL R8, 136(DI)
429 MOVL R9, 140(DI)
430 MOVD X12, DX
431 MOVD X7, CX
432 MOVD X10, R8
433 MOVD X4, R9
434 XORL 192(SI), DX
435 XORL 196(SI), CX
436 XORL 200(SI), R8
437 XORL 204(SI), R9
438 MOVL DX, 192(DI)
439 MOVL CX, 196(DI)
440 MOVL R8, 200(DI)
441 MOVL R9, 204(DI)
442 PADDL 240(R12), X14
443 PADDL 64(R12), X0
444 PADDL 128(R12), X5
445 PADDL 192(R12), X8
446 MOVD X14, DX
447 MOVD X0, CX
448 MOVD X5, R8
449 MOVD X8, R9
450 PSHUFL $0x39, X14, X14
451 PSHUFL $0x39, X0, X0
452 PSHUFL $0x39, X5, X5
453 PSHUFL $0x39, X8, X8
454 XORL 16(SI), DX
455 XORL 20(SI), CX
456 XORL 24(SI), R8
457 XORL 28(SI), R9
458 MOVL DX, 16(DI)
459 MOVL CX, 20(DI)
460 MOVL R8, 24(DI)
461 MOVL R9, 28(DI)
462 MOVD X14, DX
463 MOVD X0, CX
464 MOVD X5, R8
465 MOVD X8, R9
466 PSHUFL $0x39, X14, X14
467 PSHUFL $0x39, X0, X0
468 PSHUFL $0x39, X5, X5
469 PSHUFL $0x39, X8, X8
470 XORL 80(SI), DX
471 XORL 84(SI), CX
472 XORL 88(SI), R8
473 XORL 92(SI), R9
474 MOVL DX, 80(DI)
475 MOVL CX, 84(DI)
476 MOVL R8, 88(DI)
477 MOVL R9, 92(DI)
478 MOVD X14, DX
479 MOVD X0, CX
480 MOVD X5, R8
481 MOVD X8, R9
482 PSHUFL $0x39, X14, X14
483 PSHUFL $0x39, X0, X0
484 PSHUFL $0x39, X5, X5
485 PSHUFL $0x39, X8, X8
486 XORL 144(SI), DX
487 XORL 148(SI), CX
488 XORL 152(SI), R8
489 XORL 156(SI), R9
490 MOVL DX, 144(DI)
491 MOVL CX, 148(DI)
492 MOVL R8, 152(DI)
493 MOVL R9, 156(DI)
494 MOVD X14, DX
495 MOVD X0, CX
496 MOVD X5, R8
497 MOVD X8, R9
498 XORL 208(SI), DX
499 XORL 212(SI), CX
500 XORL 216(SI), R8
501 XORL 220(SI), R9
502 MOVL DX, 208(DI)
503 MOVL CX, 212(DI)
504 MOVL R8, 216(DI)
505 MOVL R9, 220(DI)
506 PADDL 288(R12), X15
507 PADDL 304(R12), X11
508 PADDL 80(R12), X1
509 PADDL 144(R12), X6
510 MOVD X15, DX
511 MOVD X11, CX
512 MOVD X1, R8
513 MOVD X6, R9
514 PSHUFL $0x39, X15, X15
515 PSHUFL $0x39, X11, X11
516 PSHUFL $0x39, X1, X1
517 PSHUFL $0x39, X6, X6
518 XORL 32(SI), DX
519 XORL 36(SI), CX
520 XORL 40(SI), R8
521 XORL 44(SI), R9
522 MOVL DX, 32(DI)
523 MOVL CX, 36(DI)
524 MOVL R8, 40(DI)
525 MOVL R9, 44(DI)
526 MOVD X15, DX
527 MOVD X11, CX
528 MOVD X1, R8
529 MOVD X6, R9
530 PSHUFL $0x39, X15, X15
531 PSHUFL $0x39, X11, X11
532 PSHUFL $0x39, X1, X1
533 PSHUFL $0x39, X6, X6
534 XORL 96(SI), DX
535 XORL 100(SI), CX
536 XORL 104(SI), R8
537 XORL 108(SI), R9
538 MOVL DX, 96(DI)
539 MOVL CX, 100(DI)
540 MOVL R8, 104(DI)
541 MOVL R9, 108(DI)
542 MOVD X15, DX
543 MOVD X11, CX
544 MOVD X1, R8
545 MOVD X6, R9
546 PSHUFL $0x39, X15, X15
547 PSHUFL $0x39, X11, X11
548 PSHUFL $0x39, X1, X1
549 PSHUFL $0x39, X6, X6
550 XORL 160(SI), DX
551 XORL 164(SI), CX
552 XORL 168(SI), R8
553 XORL 172(SI), R9
554 MOVL DX, 160(DI)
555 MOVL CX, 164(DI)
556 MOVL R8, 168(DI)
557 MOVL R9, 172(DI)
558 MOVD X15, DX
559 MOVD X11, CX
560 MOVD X1, R8
561 MOVD X6, R9
562 XORL 224(SI), DX
563 XORL 228(SI), CX
564 XORL 232(SI), R8
565 XORL 236(SI), R9
566 MOVL DX, 224(DI)
567 MOVL CX, 228(DI)
568 MOVL R8, 232(DI)
569 MOVL R9, 236(DI)
570 PADDL 160(R12), X13
571 PADDL 208(R12), X9
572 PADDL 256(R12), X3
573 PADDL 96(R12), X2
574 MOVD X13, DX
575 MOVD X9, CX
576 MOVD X3, R8
577 MOVD X2, R9
578 PSHUFL $0x39, X13, X13
579 PSHUFL $0x39, X9, X9
580 PSHUFL $0x39, X3, X3
581 PSHUFL $0x39, X2, X2
582 XORL 48(SI), DX
583 XORL 52(SI), CX
584 XORL 56(SI), R8
585 XORL 60(SI), R9
586 MOVL DX, 48(DI)
587 MOVL CX, 52(DI)
588 MOVL R8, 56(DI)
589 MOVL R9, 60(DI)
590 MOVD X13, DX
591 MOVD X9, CX
592 MOVD X3, R8
593 MOVD X2, R9
594 PSHUFL $0x39, X13, X13
595 PSHUFL $0x39, X9, X9
596 PSHUFL $0x39, X3, X3
597 PSHUFL $0x39, X2, X2
598 XORL 112(SI), DX
599 XORL 116(SI), CX
600 XORL 120(SI), R8
601 XORL 124(SI), R9
602 MOVL DX, 112(DI)
603 MOVL CX, 116(DI)
604 MOVL R8, 120(DI)
605 MOVL R9, 124(DI)
606 MOVD X13, DX
607 MOVD X9, CX
608 MOVD X3, R8
609 MOVD X2, R9
610 PSHUFL $0x39, X13, X13
611 PSHUFL $0x39, X9, X9
612 PSHUFL $0x39, X3, X3
613 PSHUFL $0x39, X2, X2
614 XORL 176(SI), DX
615 XORL 180(SI), CX
616 XORL 184(SI), R8
617 XORL 188(SI), R9
618 MOVL DX, 176(DI)
619 MOVL CX, 180(DI)
620 MOVL R8, 184(DI)
621 MOVL R9, 188(DI)
622 MOVD X13, DX
623 MOVD X9, CX
624 MOVD X3, R8
625 MOVD X2, R9
626 XORL 240(SI), DX
627 XORL 244(SI), CX
628 XORL 248(SI), R8
629 XORL 252(SI), R9
630 MOVL DX, 240(DI)
631 MOVL CX, 244(DI)
632 MOVL R8, 248(DI)
633 MOVL R9, 252(DI)
634 MOVQ 352(R12), R9
635 SUBQ $0x00000100, R9
636 ADDQ $0x00000100, SI
637 ADDQ $0x00000100, DI
638 CMPQ R9, $0x00000100
639 JAE BYTESATLEAST256
640 CMPQ R9, $0x00
641 JBE DONE
642
643BYTESBETWEEN1AND255:
644 CMPQ R9, $0x40
645 JAE NOCOPY
646 MOVQ DI, DX
647 LEAQ 360(R12), DI
648 MOVQ R9, CX
649 REP; MOVSB
650 LEAQ 360(R12), DI
651 LEAQ 360(R12), SI
652
653NOCOPY:
654 MOVQ R9, 352(R12)
655 MOVOA 48(R12), X0
656 MOVOA (R12), X1
657 MOVOA 16(R12), X2
658 MOVOA 32(R12), X3
659 MOVOA X1, X4
660 MOVQ $0x00000014, CX
661
662MAINLOOP2:
663 PADDL X0, X4
664 MOVOA X0, X5
665 MOVOA X4, X6
666 PSLLL $0x07, X4
667 PSRLL $0x19, X6
668 PXOR X4, X3
669 PXOR X6, X3
670 PADDL X3, X5
671 MOVOA X3, X4
672 MOVOA X5, X6
673 PSLLL $0x09, X5
674 PSRLL $0x17, X6
675 PXOR X5, X2
676 PSHUFL $0x93, X3, X3
677 PXOR X6, X2
678 PADDL X2, X4
679 MOVOA X2, X5
680 MOVOA X4, X6
681 PSLLL $0x0d, X4
682 PSRLL $0x13, X6
683 PXOR X4, X1
684 PSHUFL $0x4e, X2, X2
685 PXOR X6, X1
686 PADDL X1, X5
687 MOVOA X3, X4
688 MOVOA X5, X6
689 PSLLL $0x12, X5
690 PSRLL $0x0e, X6
691 PXOR X5, X0
692 PSHUFL $0x39, X1, X1
693 PXOR X6, X0
694 PADDL X0, X4
695 MOVOA X0, X5
696 MOVOA X4, X6
697 PSLLL $0x07, X4
698 PSRLL $0x19, X6
699 PXOR X4, X1
700 PXOR X6, X1
701 PADDL X1, X5
702 MOVOA X1, X4
703 MOVOA X5, X6
704 PSLLL $0x09, X5
705 PSRLL $0x17, X6
706 PXOR X5, X2
707 PSHUFL $0x93, X1, X1
708 PXOR X6, X2
709 PADDL X2, X4
710 MOVOA X2, X5
711 MOVOA X4, X6
712 PSLLL $0x0d, X4
713 PSRLL $0x13, X6
714 PXOR X4, X3
715 PSHUFL $0x4e, X2, X2
716 PXOR X6, X3
717 PADDL X3, X5
718 MOVOA X1, X4
719 MOVOA X5, X6
720 PSLLL $0x12, X5
721 PSRLL $0x0e, X6
722 PXOR X5, X0
723 PSHUFL $0x39, X3, X3
724 PXOR X6, X0
725 PADDL X0, X4
726 MOVOA X0, X5
727 MOVOA X4, X6
728 PSLLL $0x07, X4
729 PSRLL $0x19, X6
730 PXOR X4, X3
731 PXOR X6, X3
732 PADDL X3, X5
733 MOVOA X3, X4
734 MOVOA X5, X6
735 PSLLL $0x09, X5
736 PSRLL $0x17, X6
737 PXOR X5, X2
738 PSHUFL $0x93, X3, X3
739 PXOR X6, X2
740 PADDL X2, X4
741 MOVOA X2, X5
742 MOVOA X4, X6
743 PSLLL $0x0d, X4
744 PSRLL $0x13, X6
745 PXOR X4, X1
746 PSHUFL $0x4e, X2, X2
747 PXOR X6, X1
748 PADDL X1, X5
749 MOVOA X3, X4
750 MOVOA X5, X6
751 PSLLL $0x12, X5
752 PSRLL $0x0e, X6
753 PXOR X5, X0
754 PSHUFL $0x39, X1, X1
755 PXOR X6, X0
756 PADDL X0, X4
757 MOVOA X0, X5
758 MOVOA X4, X6
759 PSLLL $0x07, X4
760 PSRLL $0x19, X6
761 PXOR X4, X1
762 PXOR X6, X1
763 PADDL X1, X5
764 MOVOA X1, X4
765 MOVOA X5, X6
766 PSLLL $0x09, X5
767 PSRLL $0x17, X6
768 PXOR X5, X2
769 PSHUFL $0x93, X1, X1
770 PXOR X6, X2
771 PADDL X2, X4
772 MOVOA X2, X5
773 MOVOA X4, X6
774 PSLLL $0x0d, X4
775 PSRLL $0x13, X6
776 PXOR X4, X3
777 PSHUFL $0x4e, X2, X2
778 PXOR X6, X3
779 SUBQ $0x04, CX
780 PADDL X3, X5
781 MOVOA X1, X4
782 MOVOA X5, X6
783 PSLLL $0x12, X5
784 PXOR X7, X7
785 PSRLL $0x0e, X6
786 PXOR X5, X0
787 PSHUFL $0x39, X3, X3
788 PXOR X6, X0
789 JA MAINLOOP2
790 PADDL 48(R12), X0
791 PADDL (R12), X1
792 PADDL 16(R12), X2
793 PADDL 32(R12), X3
794 MOVD X0, CX
795 MOVD X1, R8
796 MOVD X2, R9
797 MOVD X3, AX
798 PSHUFL $0x39, X0, X0
799 PSHUFL $0x39, X1, X1
800 PSHUFL $0x39, X2, X2
801 PSHUFL $0x39, X3, X3
802 XORL (SI), CX
803 XORL 48(SI), R8
804 XORL 32(SI), R9
805 XORL 16(SI), AX
806 MOVL CX, (DI)
807 MOVL R8, 48(DI)
808 MOVL R9, 32(DI)
809 MOVL AX, 16(DI)
810 MOVD X0, CX
811 MOVD X1, R8
812 MOVD X2, R9
813 MOVD X3, AX
814 PSHUFL $0x39, X0, X0
815 PSHUFL $0x39, X1, X1
816 PSHUFL $0x39, X2, X2
817 PSHUFL $0x39, X3, X3
818 XORL 20(SI), CX
819 XORL 4(SI), R8
820 XORL 52(SI), R9
821 XORL 36(SI), AX
822 MOVL CX, 20(DI)
823 MOVL R8, 4(DI)
824 MOVL R9, 52(DI)
825 MOVL AX, 36(DI)
826 MOVD X0, CX
827 MOVD X1, R8
828 MOVD X2, R9
829 MOVD X3, AX
830 PSHUFL $0x39, X0, X0
831 PSHUFL $0x39, X1, X1
832 PSHUFL $0x39, X2, X2
833 PSHUFL $0x39, X3, X3
834 XORL 40(SI), CX
835 XORL 24(SI), R8
836 XORL 8(SI), R9
837 XORL 56(SI), AX
838 MOVL CX, 40(DI)
839 MOVL R8, 24(DI)
840 MOVL R9, 8(DI)
841 MOVL AX, 56(DI)
842 MOVD X0, CX
843 MOVD X1, R8
844 MOVD X2, R9
845 MOVD X3, AX
846 XORL 60(SI), CX
847 XORL 44(SI), R8
848 XORL 28(SI), R9
849 XORL 12(SI), AX
850 MOVL CX, 60(DI)
851 MOVL R8, 44(DI)
852 MOVL R9, 28(DI)
853 MOVL AX, 12(DI)
854 MOVQ 352(R12), R9
855 MOVL 16(R12), CX
856 MOVL 36(R12), R8
857 ADDQ $0x01, CX
858 SHLQ $0x20, R8
859 ADDQ R8, CX
860 MOVQ CX, R8
861 SHRQ $0x20, R8
862 MOVL CX, 16(R12)
863 MOVL R8, 36(R12)
864 CMPQ R9, $0x40
865 JA BYTESATLEAST65
866 JAE BYTESATLEAST64
867 MOVQ DI, SI
868 MOVQ DX, DI
869 MOVQ R9, CX
870 REP; MOVSB
871
872BYTESATLEAST64:
873DONE:
874 RET
875
876BYTESATLEAST65:
877 SUBQ $0x40, R9
878 ADDQ $0x40, DI
879 ADDQ $0x40, SI
880 JMP BYTESBETWEEN1AND255
View as plain text