VirtualBox

source: vbox/trunk/src/libs/openssl-3.1.7/crypto/genasm-elf/rc4-x86_64.S@ 105945

最後變更 在這個檔案從105945是 94096,由 vboxsync 提交於 3 年 前

libs/openssl-3.0.1: Fix for gnu assemblers and recreate asm files, ​bugref:10128

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

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