VirtualBox

source: vbox/trunk/src/libs/openssl-3.1.3/crypto/genasm-macosx/rc4-x86_64.S@ 102427

Last change on this file since 102427 was 94083, checked in by vboxsync, 3 years ago

libs/openssl-3.0.1: Recreate asm files, bugref:10128

File size: 10.9 KB
Line 
1.text
2
3
4.globl _RC4
5
6.p2align 4
7_RC4:
8
9.byte 243,15,30,250
10 orq %rsi,%rsi
11 jne L$entry
12 .byte 0xf3,0xc3
13L$entry:
14 pushq %rbx
15
16 pushq %r12
17
18 pushq %r13
19
20L$prologue:
21 movq %rsi,%r11
22 movq %rdx,%r12
23 movq %rcx,%r13
24 xorq %r10,%r10
25 xorq %rcx,%rcx
26
27 leaq 8(%rdi),%rdi
28 movb -8(%rdi),%r10b
29 movb -4(%rdi),%cl
30 cmpl $-1,256(%rdi)
31 je L$RC4_CHAR
32 movl _OPENSSL_ia32cap_P(%rip),%r8d
33 xorq %rbx,%rbx
34 incb %r10b
35 subq %r10,%rbx
36 subq %r12,%r13
37 movl (%rdi,%r10,4),%eax
38 testq $-16,%r11
39 jz L$loop1
40 btl $30,%r8d
41 jc L$intel
42 andq $7,%rbx
43 leaq 1(%r10),%rsi
44 jz L$oop8
45 subq %rbx,%r11
46L$oop8_warmup:
47 addb %al,%cl
48 movl (%rdi,%rcx,4),%edx
49 movl %eax,(%rdi,%rcx,4)
50 movl %edx,(%rdi,%r10,4)
51 addb %dl,%al
52 incb %r10b
53 movl (%rdi,%rax,4),%edx
54 movl (%rdi,%r10,4),%eax
55 xorb (%r12),%dl
56 movb %dl,(%r12,%r13,1)
57 leaq 1(%r12),%r12
58 decq %rbx
59 jnz L$oop8_warmup
60
61 leaq 1(%r10),%rsi
62 jmp L$oop8
63.p2align 4
64L$oop8:
65 addb %al,%cl
66 movl (%rdi,%rcx,4),%edx
67 movl %eax,(%rdi,%rcx,4)
68 movl 0(%rdi,%rsi,4),%ebx
69 rorq $8,%r8
70 movl %edx,0(%rdi,%r10,4)
71 addb %al,%dl
72 movb (%rdi,%rdx,4),%r8b
73 addb %bl,%cl
74 movl (%rdi,%rcx,4),%edx
75 movl %ebx,(%rdi,%rcx,4)
76 movl 4(%rdi,%rsi,4),%eax
77 rorq $8,%r8
78 movl %edx,4(%rdi,%r10,4)
79 addb %bl,%dl
80 movb (%rdi,%rdx,4),%r8b
81 addb %al,%cl
82 movl (%rdi,%rcx,4),%edx
83 movl %eax,(%rdi,%rcx,4)
84 movl 8(%rdi,%rsi,4),%ebx
85 rorq $8,%r8
86 movl %edx,8(%rdi,%r10,4)
87 addb %al,%dl
88 movb (%rdi,%rdx,4),%r8b
89 addb %bl,%cl
90 movl (%rdi,%rcx,4),%edx
91 movl %ebx,(%rdi,%rcx,4)
92 movl 12(%rdi,%rsi,4),%eax
93 rorq $8,%r8
94 movl %edx,12(%rdi,%r10,4)
95 addb %bl,%dl
96 movb (%rdi,%rdx,4),%r8b
97 addb %al,%cl
98 movl (%rdi,%rcx,4),%edx
99 movl %eax,(%rdi,%rcx,4)
100 movl 16(%rdi,%rsi,4),%ebx
101 rorq $8,%r8
102 movl %edx,16(%rdi,%r10,4)
103 addb %al,%dl
104 movb (%rdi,%rdx,4),%r8b
105 addb %bl,%cl
106 movl (%rdi,%rcx,4),%edx
107 movl %ebx,(%rdi,%rcx,4)
108 movl 20(%rdi,%rsi,4),%eax
109 rorq $8,%r8
110 movl %edx,20(%rdi,%r10,4)
111 addb %bl,%dl
112 movb (%rdi,%rdx,4),%r8b
113 addb %al,%cl
114 movl (%rdi,%rcx,4),%edx
115 movl %eax,(%rdi,%rcx,4)
116 movl 24(%rdi,%rsi,4),%ebx
117 rorq $8,%r8
118 movl %edx,24(%rdi,%r10,4)
119 addb %al,%dl
120 movb (%rdi,%rdx,4),%r8b
121 addb $8,%sil
122 addb %bl,%cl
123 movl (%rdi,%rcx,4),%edx
124 movl %ebx,(%rdi,%rcx,4)
125 movl -4(%rdi,%rsi,4),%eax
126 rorq $8,%r8
127 movl %edx,28(%rdi,%r10,4)
128 addb %bl,%dl
129 movb (%rdi,%rdx,4),%r8b
130 addb $8,%r10b
131 rorq $8,%r8
132 subq $8,%r11
133
134 xorq (%r12),%r8
135 movq %r8,(%r12,%r13,1)
136 leaq 8(%r12),%r12
137
138 testq $-8,%r11
139 jnz L$oop8
140 cmpq $0,%r11
141 jne L$loop1
142 jmp L$exit
143
144.p2align 4
145L$intel:
146 testq $-32,%r11
147 jz L$loop1
148 andq $15,%rbx
149 jz L$oop16_is_hot
150 subq %rbx,%r11
151L$oop16_warmup:
152 addb %al,%cl
153 movl (%rdi,%rcx,4),%edx
154 movl %eax,(%rdi,%rcx,4)
155 movl %edx,(%rdi,%r10,4)
156 addb %dl,%al
157 incb %r10b
158 movl (%rdi,%rax,4),%edx
159 movl (%rdi,%r10,4),%eax
160 xorb (%r12),%dl
161 movb %dl,(%r12,%r13,1)
162 leaq 1(%r12),%r12
163 decq %rbx
164 jnz L$oop16_warmup
165
166 movq %rcx,%rbx
167 xorq %rcx,%rcx
168 movb %bl,%cl
169
170L$oop16_is_hot:
171 leaq (%rdi,%r10,4),%rsi
172 addb %al,%cl
173 movl (%rdi,%rcx,4),%edx
174 pxor %xmm0,%xmm0
175 movl %eax,(%rdi,%rcx,4)
176 addb %dl,%al
177 movl 4(%rsi),%ebx
178 movzbl %al,%eax
179 movl %edx,0(%rsi)
180 addb %bl,%cl
181 pinsrw $0,(%rdi,%rax,4),%xmm0
182 jmp L$oop16_enter
183.p2align 4
184L$oop16:
185 addb %al,%cl
186 movl (%rdi,%rcx,4),%edx
187 pxor %xmm0,%xmm2
188 psllq $8,%xmm1
189 pxor %xmm0,%xmm0
190 movl %eax,(%rdi,%rcx,4)
191 addb %dl,%al
192 movl 4(%rsi),%ebx
193 movzbl %al,%eax
194 movl %edx,0(%rsi)
195 pxor %xmm1,%xmm2
196 addb %bl,%cl
197 pinsrw $0,(%rdi,%rax,4),%xmm0
198 movdqu %xmm2,(%r12,%r13,1)
199 leaq 16(%r12),%r12
200L$oop16_enter:
201 movl (%rdi,%rcx,4),%edx
202 pxor %xmm1,%xmm1
203 movl %ebx,(%rdi,%rcx,4)
204 addb %dl,%bl
205 movl 8(%rsi),%eax
206 movzbl %bl,%ebx
207 movl %edx,4(%rsi)
208 addb %al,%cl
209 pinsrw $0,(%rdi,%rbx,4),%xmm1
210 movl (%rdi,%rcx,4),%edx
211 movl %eax,(%rdi,%rcx,4)
212 addb %dl,%al
213 movl 12(%rsi),%ebx
214 movzbl %al,%eax
215 movl %edx,8(%rsi)
216 addb %bl,%cl
217 pinsrw $1,(%rdi,%rax,4),%xmm0
218 movl (%rdi,%rcx,4),%edx
219 movl %ebx,(%rdi,%rcx,4)
220 addb %dl,%bl
221 movl 16(%rsi),%eax
222 movzbl %bl,%ebx
223 movl %edx,12(%rsi)
224 addb %al,%cl
225 pinsrw $1,(%rdi,%rbx,4),%xmm1
226 movl (%rdi,%rcx,4),%edx
227 movl %eax,(%rdi,%rcx,4)
228 addb %dl,%al
229 movl 20(%rsi),%ebx
230 movzbl %al,%eax
231 movl %edx,16(%rsi)
232 addb %bl,%cl
233 pinsrw $2,(%rdi,%rax,4),%xmm0
234 movl (%rdi,%rcx,4),%edx
235 movl %ebx,(%rdi,%rcx,4)
236 addb %dl,%bl
237 movl 24(%rsi),%eax
238 movzbl %bl,%ebx
239 movl %edx,20(%rsi)
240 addb %al,%cl
241 pinsrw $2,(%rdi,%rbx,4),%xmm1
242 movl (%rdi,%rcx,4),%edx
243 movl %eax,(%rdi,%rcx,4)
244 addb %dl,%al
245 movl 28(%rsi),%ebx
246 movzbl %al,%eax
247 movl %edx,24(%rsi)
248 addb %bl,%cl
249 pinsrw $3,(%rdi,%rax,4),%xmm0
250 movl (%rdi,%rcx,4),%edx
251 movl %ebx,(%rdi,%rcx,4)
252 addb %dl,%bl
253 movl 32(%rsi),%eax
254 movzbl %bl,%ebx
255 movl %edx,28(%rsi)
256 addb %al,%cl
257 pinsrw $3,(%rdi,%rbx,4),%xmm1
258 movl (%rdi,%rcx,4),%edx
259 movl %eax,(%rdi,%rcx,4)
260 addb %dl,%al
261 movl 36(%rsi),%ebx
262 movzbl %al,%eax
263 movl %edx,32(%rsi)
264 addb %bl,%cl
265 pinsrw $4,(%rdi,%rax,4),%xmm0
266 movl (%rdi,%rcx,4),%edx
267 movl %ebx,(%rdi,%rcx,4)
268 addb %dl,%bl
269 movl 40(%rsi),%eax
270 movzbl %bl,%ebx
271 movl %edx,36(%rsi)
272 addb %al,%cl
273 pinsrw $4,(%rdi,%rbx,4),%xmm1
274 movl (%rdi,%rcx,4),%edx
275 movl %eax,(%rdi,%rcx,4)
276 addb %dl,%al
277 movl 44(%rsi),%ebx
278 movzbl %al,%eax
279 movl %edx,40(%rsi)
280 addb %bl,%cl
281 pinsrw $5,(%rdi,%rax,4),%xmm0
282 movl (%rdi,%rcx,4),%edx
283 movl %ebx,(%rdi,%rcx,4)
284 addb %dl,%bl
285 movl 48(%rsi),%eax
286 movzbl %bl,%ebx
287 movl %edx,44(%rsi)
288 addb %al,%cl
289 pinsrw $5,(%rdi,%rbx,4),%xmm1
290 movl (%rdi,%rcx,4),%edx
291 movl %eax,(%rdi,%rcx,4)
292 addb %dl,%al
293 movl 52(%rsi),%ebx
294 movzbl %al,%eax
295 movl %edx,48(%rsi)
296 addb %bl,%cl
297 pinsrw $6,(%rdi,%rax,4),%xmm0
298 movl (%rdi,%rcx,4),%edx
299 movl %ebx,(%rdi,%rcx,4)
300 addb %dl,%bl
301 movl 56(%rsi),%eax
302 movzbl %bl,%ebx
303 movl %edx,52(%rsi)
304 addb %al,%cl
305 pinsrw $6,(%rdi,%rbx,4),%xmm1
306 movl (%rdi,%rcx,4),%edx
307 movl %eax,(%rdi,%rcx,4)
308 addb %dl,%al
309 movl 60(%rsi),%ebx
310 movzbl %al,%eax
311 movl %edx,56(%rsi)
312 addb %bl,%cl
313 pinsrw $7,(%rdi,%rax,4),%xmm0
314 addb $16,%r10b
315 movdqu (%r12),%xmm2
316 movl (%rdi,%rcx,4),%edx
317 movl %ebx,(%rdi,%rcx,4)
318 addb %dl,%bl
319 movzbl %bl,%ebx
320 movl %edx,60(%rsi)
321 leaq (%rdi,%r10,4),%rsi
322 pinsrw $7,(%rdi,%rbx,4),%xmm1
323 movl (%rsi),%eax
324 movq %rcx,%rbx
325 xorq %rcx,%rcx
326 subq $16,%r11
327 movb %bl,%cl
328 testq $-16,%r11
329 jnz L$oop16
330
331 psllq $8,%xmm1
332 pxor %xmm0,%xmm2
333 pxor %xmm1,%xmm2
334 movdqu %xmm2,(%r12,%r13,1)
335 leaq 16(%r12),%r12
336
337 cmpq $0,%r11
338 jne L$loop1
339 jmp L$exit
340
341.p2align 4
342L$loop1:
343 addb %al,%cl
344 movl (%rdi,%rcx,4),%edx
345 movl %eax,(%rdi,%rcx,4)
346 movl %edx,(%rdi,%r10,4)
347 addb %dl,%al
348 incb %r10b
349 movl (%rdi,%rax,4),%edx
350 movl (%rdi,%r10,4),%eax
351 xorb (%r12),%dl
352 movb %dl,(%r12,%r13,1)
353 leaq 1(%r12),%r12
354 decq %r11
355 jnz L$loop1
356 jmp L$exit
357
358.p2align 4
359L$RC4_CHAR:
360 addb $1,%r10b
361 movzbl (%rdi,%r10,1),%eax
362 testq $-8,%r11
363 jz L$cloop1
364 jmp L$cloop8
365.p2align 4
366L$cloop8:
367 movl (%r12),%r8d
368 movl 4(%r12),%r9d
369 addb %al,%cl
370 leaq 1(%r10),%rsi
371 movzbl (%rdi,%rcx,1),%edx
372 movzbl %sil,%esi
373 movzbl (%rdi,%rsi,1),%ebx
374 movb %al,(%rdi,%rcx,1)
375 cmpq %rsi,%rcx
376 movb %dl,(%rdi,%r10,1)
377 jne L$cmov0
378 movq %rax,%rbx
379L$cmov0:
380 addb %al,%dl
381 xorb (%rdi,%rdx,1),%r8b
382 rorl $8,%r8d
383 addb %bl,%cl
384 leaq 1(%rsi),%r10
385 movzbl (%rdi,%rcx,1),%edx
386 movzbl %r10b,%r10d
387 movzbl (%rdi,%r10,1),%eax
388 movb %bl,(%rdi,%rcx,1)
389 cmpq %r10,%rcx
390 movb %dl,(%rdi,%rsi,1)
391 jne L$cmov1
392 movq %rbx,%rax
393L$cmov1:
394 addb %bl,%dl
395 xorb (%rdi,%rdx,1),%r8b
396 rorl $8,%r8d
397 addb %al,%cl
398 leaq 1(%r10),%rsi
399 movzbl (%rdi,%rcx,1),%edx
400 movzbl %sil,%esi
401 movzbl (%rdi,%rsi,1),%ebx
402 movb %al,(%rdi,%rcx,1)
403 cmpq %rsi,%rcx
404 movb %dl,(%rdi,%r10,1)
405 jne L$cmov2
406 movq %rax,%rbx
407L$cmov2:
408 addb %al,%dl
409 xorb (%rdi,%rdx,1),%r8b
410 rorl $8,%r8d
411 addb %bl,%cl
412 leaq 1(%rsi),%r10
413 movzbl (%rdi,%rcx,1),%edx
414 movzbl %r10b,%r10d
415 movzbl (%rdi,%r10,1),%eax
416 movb %bl,(%rdi,%rcx,1)
417 cmpq %r10,%rcx
418 movb %dl,(%rdi,%rsi,1)
419 jne L$cmov3
420 movq %rbx,%rax
421L$cmov3:
422 addb %bl,%dl
423 xorb (%rdi,%rdx,1),%r8b
424 rorl $8,%r8d
425 addb %al,%cl
426 leaq 1(%r10),%rsi
427 movzbl (%rdi,%rcx,1),%edx
428 movzbl %sil,%esi
429 movzbl (%rdi,%rsi,1),%ebx
430 movb %al,(%rdi,%rcx,1)
431 cmpq %rsi,%rcx
432 movb %dl,(%rdi,%r10,1)
433 jne L$cmov4
434 movq %rax,%rbx
435L$cmov4:
436 addb %al,%dl
437 xorb (%rdi,%rdx,1),%r9b
438 rorl $8,%r9d
439 addb %bl,%cl
440 leaq 1(%rsi),%r10
441 movzbl (%rdi,%rcx,1),%edx
442 movzbl %r10b,%r10d
443 movzbl (%rdi,%r10,1),%eax
444 movb %bl,(%rdi,%rcx,1)
445 cmpq %r10,%rcx
446 movb %dl,(%rdi,%rsi,1)
447 jne L$cmov5
448 movq %rbx,%rax
449L$cmov5:
450 addb %bl,%dl
451 xorb (%rdi,%rdx,1),%r9b
452 rorl $8,%r9d
453 addb %al,%cl
454 leaq 1(%r10),%rsi
455 movzbl (%rdi,%rcx,1),%edx
456 movzbl %sil,%esi
457 movzbl (%rdi,%rsi,1),%ebx
458 movb %al,(%rdi,%rcx,1)
459 cmpq %rsi,%rcx
460 movb %dl,(%rdi,%r10,1)
461 jne L$cmov6
462 movq %rax,%rbx
463L$cmov6:
464 addb %al,%dl
465 xorb (%rdi,%rdx,1),%r9b
466 rorl $8,%r9d
467 addb %bl,%cl
468 leaq 1(%rsi),%r10
469 movzbl (%rdi,%rcx,1),%edx
470 movzbl %r10b,%r10d
471 movzbl (%rdi,%r10,1),%eax
472 movb %bl,(%rdi,%rcx,1)
473 cmpq %r10,%rcx
474 movb %dl,(%rdi,%rsi,1)
475 jne L$cmov7
476 movq %rbx,%rax
477L$cmov7:
478 addb %bl,%dl
479 xorb (%rdi,%rdx,1),%r9b
480 rorl $8,%r9d
481 leaq -8(%r11),%r11
482 movl %r8d,(%r13)
483 leaq 8(%r12),%r12
484 movl %r9d,4(%r13)
485 leaq 8(%r13),%r13
486
487 testq $-8,%r11
488 jnz L$cloop8
489 cmpq $0,%r11
490 jne L$cloop1
491 jmp L$exit
492.p2align 4
493L$cloop1:
494 addb %al,%cl
495 movzbl %cl,%ecx
496 movzbl (%rdi,%rcx,1),%edx
497 movb %al,(%rdi,%rcx,1)
498 movb %dl,(%rdi,%r10,1)
499 addb %al,%dl
500 addb $1,%r10b
501 movzbl %dl,%edx
502 movzbl %r10b,%r10d
503 movzbl (%rdi,%rdx,1),%edx
504 movzbl (%rdi,%r10,1),%eax
505 xorb (%r12),%dl
506 leaq 1(%r12),%r12
507 movb %dl,(%r13)
508 leaq 1(%r13),%r13
509 subq $1,%r11
510 jnz L$cloop1
511 jmp L$exit
512
513.p2align 4
514L$exit:
515 subb $1,%r10b
516 movl %r10d,-8(%rdi)
517 movl %ecx,-4(%rdi)
518
519 movq (%rsp),%r13
520
521 movq 8(%rsp),%r12
522
523 movq 16(%rsp),%rbx
524
525 addq $24,%rsp
526
527L$epilogue:
528 .byte 0xf3,0xc3
529
530
531.globl _RC4_set_key
532
533.p2align 4
534_RC4_set_key:
535
536.byte 243,15,30,250
537 leaq 8(%rdi),%rdi
538 leaq (%rdx,%rsi,1),%rdx
539 negq %rsi
540 movq %rsi,%rcx
541 xorl %eax,%eax
542 xorq %r9,%r9
543 xorq %r10,%r10
544 xorq %r11,%r11
545
546 movl _OPENSSL_ia32cap_P(%rip),%r8d
547 btl $20,%r8d
548 jc L$c1stloop
549 jmp L$w1stloop
550
551.p2align 4
552L$w1stloop:
553 movl %eax,(%rdi,%rax,4)
554 addb $1,%al
555 jnc L$w1stloop
556
557 xorq %r9,%r9
558 xorq %r8,%r8
559.p2align 4
560L$w2ndloop:
561 movl (%rdi,%r9,4),%r10d
562 addb (%rdx,%rsi,1),%r8b
563 addb %r10b,%r8b
564 addq $1,%rsi
565 movl (%rdi,%r8,4),%r11d
566 cmovzq %rcx,%rsi
567 movl %r10d,(%rdi,%r8,4)
568 movl %r11d,(%rdi,%r9,4)
569 addb $1,%r9b
570 jnc L$w2ndloop
571 jmp L$exit_key
572
573.p2align 4
574L$c1stloop:
575 movb %al,(%rdi,%rax,1)
576 addb $1,%al
577 jnc L$c1stloop
578
579 xorq %r9,%r9
580 xorq %r8,%r8
581.p2align 4
582L$c2ndloop:
583 movb (%rdi,%r9,1),%r10b
584 addb (%rdx,%rsi,1),%r8b
585 addb %r10b,%r8b
586 addq $1,%rsi
587 movb (%rdi,%r8,1),%r11b
588 jnz L$cnowrap
589 movq %rcx,%rsi
590L$cnowrap:
591 movb %r10b,(%rdi,%r8,1)
592 movb %r11b,(%rdi,%r9,1)
593 addb $1,%r9b
594 jnc L$c2ndloop
595 movl $-1,256(%rdi)
596
597.p2align 4
598L$exit_key:
599 xorl %eax,%eax
600 movl %eax,-8(%rdi)
601 movl %eax,-4(%rdi)
602 .byte 0xf3,0xc3
603
604
605
606.globl _RC4_options
607
608.p2align 4
609_RC4_options:
610
611.byte 243,15,30,250
612 leaq L$opts(%rip),%rax
613 movl _OPENSSL_ia32cap_P(%rip),%edx
614 btl $20,%edx
615 jc L$8xchar
616 btl $30,%edx
617 jnc L$done
618 addq $25,%rax
619 .byte 0xf3,0xc3
620L$8xchar:
621 addq $12,%rax
622L$done:
623 .byte 0xf3,0xc3
624
625.p2align 6
626L$opts:
627.byte 114,99,52,40,56,120,44,105,110,116,41,0
628.byte 114,99,52,40,56,120,44,99,104,97,114,41,0
629.byte 114,99,52,40,49,54,120,44,105,110,116,41,0
630.byte 82,67,52,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
631.p2align 6
632
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette