1 /* $FreeBSD$ */
2 /* Do not modify. This file is auto-generated from e_padlock-x86.pl. */
3 #ifdef PIC
4 .text
5 .globl padlock_capability
6 .type padlock_capability,@function
7 .align 16
8 padlock_capability:
9 .L_padlock_capability_begin:
10 pushl %ebx
11 pushfl
12 popl %eax
13 movl %eax,%ecx
14 xorl $2097152,%eax
15 pushl %eax
16 popfl
17 pushfl
18 popl %eax
19 xorl %eax,%ecx
20 xorl %eax,%eax
21 btl $21,%ecx
22 jnc .L000noluck
23 .byte 0x0f,0xa2
24 xorl %eax,%eax
25 cmpl $0x746e6543,%ebx
26 jne .L001zhaoxin
27 cmpl $0x48727561,%edx
28 jne .L000noluck
29 cmpl $0x736c7561,%ecx
30 jne .L000noluck
31 jmp .L002zhaoxinEnd
32 .L001zhaoxin:
33 cmpl $0x68532020,%ebx
34 jne .L000noluck
35 cmpl $0x68676e61,%edx
36 jne .L000noluck
37 cmpl $0x20206961,%ecx
38 jne .L000noluck
39 .L002zhaoxinEnd:
40 movl $3221225472,%eax
41 .byte 0x0f,0xa2
42 movl %eax,%edx
43 xorl %eax,%eax
44 cmpl $3221225473,%edx
45 jb .L000noluck
46 movl $1,%eax
47 .byte 0x0f,0xa2
48 orl $15,%eax
49 xorl %ebx,%ebx
50 andl $4095,%eax
51 cmpl $1791,%eax
52 sete %bl
53 movl $3221225473,%eax
54 pushl %ebx
55 .byte 0x0f,0xa2
56 popl %ebx
57 movl %edx,%eax
58 shll $4,%ebx
59 andl $4294967279,%eax
60 orl %ebx,%eax
61 .L000noluck:
62 popl %ebx
63 ret
64 .size padlock_capability,.-.L_padlock_capability_begin
65 .globl padlock_key_bswap
66 .type padlock_key_bswap,@function
67 .align 16
68 padlock_key_bswap:
69 .L_padlock_key_bswap_begin:
70 movl 4(%esp),%edx
71 movl 240(%edx),%ecx
72 .L003bswap_loop:
73 movl (%edx),%eax
74 bswap %eax
75 movl %eax,(%edx)
76 leal 4(%edx),%edx
77 subl $1,%ecx
78 jnz .L003bswap_loop
79 ret
80 .size padlock_key_bswap,.-.L_padlock_key_bswap_begin
81 .globl padlock_verify_context
82 .type padlock_verify_context,@function
83 .align 16
84 padlock_verify_context:
85 .L_padlock_verify_context_begin:
86 movl 4(%esp),%edx
87 leal .Lpadlock_saved_context-.L004verify_pic_point,%eax
88 pushfl
89 call _padlock_verify_ctx
90 .L004verify_pic_point:
91 leal 4(%esp),%esp
92 ret
93 .size padlock_verify_context,.-.L_padlock_verify_context_begin
94 .type _padlock_verify_ctx,@function
95 .align 16
96 _padlock_verify_ctx:
97 addl (%esp),%eax
98 btl $30,4(%esp)
99 jnc .L005verified
100 cmpl (%eax),%edx
101 je .L005verified
102 pushfl
103 popfl
104 .L005verified:
105 movl %edx,(%eax)
106 ret
107 .size _padlock_verify_ctx,.-_padlock_verify_ctx
108 .globl padlock_reload_key
109 .type padlock_reload_key,@function
110 .align 16
111 padlock_reload_key:
112 .L_padlock_reload_key_begin:
113 pushfl
114 popfl
115 ret
116 .size padlock_reload_key,.-.L_padlock_reload_key_begin
117 .globl padlock_aes_block
118 .type padlock_aes_block,@function
119 .align 16
120 padlock_aes_block:
121 .L_padlock_aes_block_begin:
122 pushl %edi
123 pushl %esi
124 pushl %ebx
125 movl 16(%esp),%edi
126 movl 20(%esp),%esi
127 movl 24(%esp),%edx
128 movl $1,%ecx
129 leal 32(%edx),%ebx
130 leal 16(%edx),%edx
131 .byte 243,15,167,200
132 popl %ebx
133 popl %esi
134 popl %edi
135 ret
136 .size padlock_aes_block,.-.L_padlock_aes_block_begin
137 .globl padlock_ecb_encrypt
138 .type padlock_ecb_encrypt,@function
139 .align 16
140 padlock_ecb_encrypt:
141 .L_padlock_ecb_encrypt_begin:
142 pushl %ebp
143 pushl %ebx
144 pushl %esi
145 pushl %edi
146 movl 20(%esp),%edi
147 movl 24(%esp),%esi
148 movl 28(%esp),%edx
149 movl 32(%esp),%ecx
150 testl $15,%edx
151 jnz .L006ecb_abort
152 testl $15,%ecx
153 jnz .L006ecb_abort
154 leal .Lpadlock_saved_context-.L007ecb_pic_point,%eax
155 pushfl
156 cld
157 call _padlock_verify_ctx
158 .L007ecb_pic_point:
159 leal 16(%edx),%edx
160 xorl %eax,%eax
161 xorl %ebx,%ebx
162 testl $32,(%edx)
163 jnz .L008ecb_aligned
164 testl $15,%edi
165 setz %al
166 testl $15,%esi
167 setz %bl
168 testl %ebx,%eax
169 jnz .L008ecb_aligned
170 negl %eax
171 movl $512,%ebx
172 notl %eax
173 leal -24(%esp),%ebp
174 cmpl %ebx,%ecx
175 cmovcl %ecx,%ebx
176 andl %ebx,%eax
177 movl %ecx,%ebx
178 negl %eax
179 andl $511,%ebx
180 leal (%eax,%ebp,1),%esp
181 movl $512,%eax
182 cmovzl %eax,%ebx
183 movl %ebp,%eax
184 andl $-16,%ebp
185 andl $-16,%esp
186 movl %eax,16(%ebp)
187 cmpl %ebx,%ecx
188 ja .L009ecb_loop
189 movl %esi,%eax
190 cmpl %esp,%ebp
191 cmovel %edi,%eax
192 addl %ecx,%eax
193 negl %eax
194 andl $4095,%eax
195 cmpl $128,%eax
196 movl $-128,%eax
197 cmovael %ebx,%eax
198 andl %eax,%ebx
199 jz .L010ecb_unaligned_tail
200 jmp .L009ecb_loop
201 .align 16
202 .L009ecb_loop:
203 movl %edi,(%ebp)
204 movl %esi,4(%ebp)
205 movl %ecx,8(%ebp)
206 movl %ebx,%ecx
207 movl %ebx,12(%ebp)
208 testl $15,%edi
209 cmovnzl %esp,%edi
210 testl $15,%esi
211 jz .L011ecb_inp_aligned
212 shrl $2,%ecx
213 .byte 243,165
214 subl %ebx,%edi
215 movl %ebx,%ecx
216 movl %edi,%esi
217 .L011ecb_inp_aligned:
218 leal -16(%edx),%eax
219 leal 16(%edx),%ebx
220 shrl $4,%ecx
221 .byte 243,15,167,200
222 movl (%ebp),%edi
223 movl 12(%ebp),%ebx
224 testl $15,%edi
225 jz .L012ecb_out_aligned
226 movl %ebx,%ecx
227 leal (%esp),%esi
228 shrl $2,%ecx
229 .byte 243,165
230 subl %ebx,%edi
231 .L012ecb_out_aligned:
232 movl 4(%ebp),%esi
233 movl 8(%ebp),%ecx
234 addl %ebx,%edi
235 addl %ebx,%esi
236 subl %ebx,%ecx
237 movl $512,%ebx
238 jz .L013ecb_break
239 cmpl %ebx,%ecx
240 jae .L009ecb_loop
241 .L010ecb_unaligned_tail:
242 xorl %eax,%eax
243 cmpl %ebp,%esp
244 cmovel %ecx,%eax
245 subl %eax,%esp
246 movl %edi,%eax
247 movl %ecx,%ebx
248 shrl $2,%ecx
249 leal (%esp),%edi
250 .byte 243,165
251 movl %esp,%esi
252 movl %eax,%edi
253 movl %ebx,%ecx
254 jmp .L009ecb_loop
255 .align 16
256 .L013ecb_break:
257 cmpl %ebp,%esp
258 je .L014ecb_done
259 pxor %xmm0,%xmm0
260 leal (%esp),%eax
261 .L015ecb_bzero:
262 movaps %xmm0,(%eax)
263 leal 16(%eax),%eax
264 cmpl %eax,%ebp
265 ja .L015ecb_bzero
266 .L014ecb_done:
267 movl 16(%ebp),%ebp
268 leal 24(%ebp),%esp
269 jmp .L016ecb_exit
270 .align 16
271 .L008ecb_aligned:
272 leal (%esi,%ecx,1),%ebp
273 negl %ebp
274 andl $4095,%ebp
275 xorl %eax,%eax
276 cmpl $128,%ebp
277 movl $127,%ebp
278 cmovael %eax,%ebp
279 andl %ecx,%ebp
280 subl %ebp,%ecx
281 jz .L017ecb_aligned_tail
282 leal -16(%edx),%eax
283 leal 16(%edx),%ebx
284 shrl $4,%ecx
285 .byte 243,15,167,200
286 testl %ebp,%ebp
287 jz .L016ecb_exit
288 .L017ecb_aligned_tail:
289 movl %ebp,%ecx
290 leal -24(%esp),%ebp
291 movl %ebp,%esp
292 movl %ebp,%eax
293 subl %ecx,%esp
294 andl $-16,%ebp
295 andl $-16,%esp
296 movl %eax,16(%ebp)
297 movl %edi,%eax
298 movl %ecx,%ebx
299 shrl $2,%ecx
300 leal (%esp),%edi
301 .byte 243,165
302 movl %esp,%esi
303 movl %eax,%edi
304 movl %ebx,%ecx
305 jmp .L009ecb_loop
306 .L016ecb_exit:
307 movl $1,%eax
308 leal 4(%esp),%esp
309 .L006ecb_abort:
310 popl %edi
311 popl %esi
312 popl %ebx
313 popl %ebp
314 ret
315 .size padlock_ecb_encrypt,.-.L_padlock_ecb_encrypt_begin
316 .globl padlock_cbc_encrypt
317 .type padlock_cbc_encrypt,@function
318 .align 16
319 padlock_cbc_encrypt:
320 .L_padlock_cbc_encrypt_begin:
321 pushl %ebp
322 pushl %ebx
323 pushl %esi
324 pushl %edi
325 movl 20(%esp),%edi
326 movl 24(%esp),%esi
327 movl 28(%esp),%edx
328 movl 32(%esp),%ecx
329 testl $15,%edx
330 jnz .L018cbc_abort
331 testl $15,%ecx
332 jnz .L018cbc_abort
333 leal .Lpadlock_saved_context-.L019cbc_pic_point,%eax
334 pushfl
335 cld
336 call _padlock_verify_ctx
337 .L019cbc_pic_point:
338 leal 16(%edx),%edx
339 xorl %eax,%eax
340 xorl %ebx,%ebx
341 testl $32,(%edx)
342 jnz .L020cbc_aligned
343 testl $15,%edi
344 setz %al
345 testl $15,%esi
346 setz %bl
347 testl %ebx,%eax
348 jnz .L020cbc_aligned
349 negl %eax
350 movl $512,%ebx
351 notl %eax
352 leal -24(%esp),%ebp
353 cmpl %ebx,%ecx
354 cmovcl %ecx,%ebx
355 andl %ebx,%eax
356 movl %ecx,%ebx
357 negl %eax
358 andl $511,%ebx
359 leal (%eax,%ebp,1),%esp
360 movl $512,%eax
361 cmovzl %eax,%ebx
362 movl %ebp,%eax
363 andl $-16,%ebp
364 andl $-16,%esp
365 movl %eax,16(%ebp)
366 cmpl %ebx,%ecx
367 ja .L021cbc_loop
368 movl %esi,%eax
369 cmpl %esp,%ebp
370 cmovel %edi,%eax
371 addl %ecx,%eax
372 negl %eax
373 andl $4095,%eax
374 cmpl $64,%eax
375 movl $-64,%eax
376 cmovael %ebx,%eax
377 andl %eax,%ebx
378 jz .L022cbc_unaligned_tail
379 jmp .L021cbc_loop
380 .align 16
381 .L021cbc_loop:
382 movl %edi,(%ebp)
383 movl %esi,4(%ebp)
384 movl %ecx,8(%ebp)
385 movl %ebx,%ecx
386 movl %ebx,12(%ebp)
387 testl $15,%edi
388 cmovnzl %esp,%edi
389 testl $15,%esi
390 jz .L023cbc_inp_aligned
391 shrl $2,%ecx
392 .byte 243,165
393 subl %ebx,%edi
394 movl %ebx,%ecx
395 movl %edi,%esi
396 .L023cbc_inp_aligned:
397 leal -16(%edx),%eax
398 leal 16(%edx),%ebx
399 shrl $4,%ecx
400 .byte 243,15,167,208
401 movaps (%eax),%xmm0
402 movaps %xmm0,-16(%edx)
403 movl (%ebp),%edi
404 movl 12(%ebp),%ebx
405 testl $15,%edi
406 jz .L024cbc_out_aligned
407 movl %ebx,%ecx
408 leal (%esp),%esi
409 shrl $2,%ecx
410 .byte 243,165
411 subl %ebx,%edi
412 .L024cbc_out_aligned:
413 movl 4(%ebp),%esi
414 movl 8(%ebp),%ecx
415 addl %ebx,%edi
416 addl %ebx,%esi
417 subl %ebx,%ecx
418 movl $512,%ebx
419 jz .L025cbc_break
420 cmpl %ebx,%ecx
421 jae .L021cbc_loop
422 .L022cbc_unaligned_tail:
423 xorl %eax,%eax
424 cmpl %ebp,%esp
425 cmovel %ecx,%eax
426 subl %eax,%esp
427 movl %edi,%eax
428 movl %ecx,%ebx
429 shrl $2,%ecx
430 leal (%esp),%edi
431 .byte 243,165
432 movl %esp,%esi
433 movl %eax,%edi
434 movl %ebx,%ecx
435 jmp .L021cbc_loop
436 .align 16
437 .L025cbc_break:
438 cmpl %ebp,%esp
439 je .L026cbc_done
440 pxor %xmm0,%xmm0
441 leal (%esp),%eax
442 .L027cbc_bzero:
443 movaps %xmm0,(%eax)
444 leal 16(%eax),%eax
445 cmpl %eax,%ebp
446 ja .L027cbc_bzero
447 .L026cbc_done:
448 movl 16(%ebp),%ebp
449 leal 24(%ebp),%esp
450 jmp .L028cbc_exit
451 .align 16
452 .L020cbc_aligned:
453 leal (%esi,%ecx,1),%ebp
454 negl %ebp
455 andl $4095,%ebp
456 xorl %eax,%eax
457 cmpl $64,%ebp
458 movl $63,%ebp
459 cmovael %eax,%ebp
460 andl %ecx,%ebp
461 subl %ebp,%ecx
462 jz .L029cbc_aligned_tail
463 leal -16(%edx),%eax
464 leal 16(%edx),%ebx
465 shrl $4,%ecx
466 .byte 243,15,167,208
467 movaps (%eax),%xmm0
468 movaps %xmm0,-16(%edx)
469 testl %ebp,%ebp
470 jz .L028cbc_exit
471 .L029cbc_aligned_tail:
472 movl %ebp,%ecx
473 leal -24(%esp),%ebp
474 movl %ebp,%esp
475 movl %ebp,%eax
476 subl %ecx,%esp
477 andl $-16,%ebp
478 andl $-16,%esp
479 movl %eax,16(%ebp)
480 movl %edi,%eax
481 movl %ecx,%ebx
482 shrl $2,%ecx
483 leal (%esp),%edi
484 .byte 243,165
485 movl %esp,%esi
486 movl %eax,%edi
487 movl %ebx,%ecx
488 jmp .L021cbc_loop
489 .L028cbc_exit:
490 movl $1,%eax
491 leal 4(%esp),%esp
492 .L018cbc_abort:
493 popl %edi
494 popl %esi
495 popl %ebx
496 popl %ebp
497 ret
498 .size padlock_cbc_encrypt,.-.L_padlock_cbc_encrypt_begin
499 .globl padlock_cfb_encrypt
500 .type padlock_cfb_encrypt,@function
501 .align 16
502 padlock_cfb_encrypt:
503 .L_padlock_cfb_encrypt_begin:
504 pushl %ebp
505 pushl %ebx
506 pushl %esi
507 pushl %edi
508 movl 20(%esp),%edi
509 movl 24(%esp),%esi
510 movl 28(%esp),%edx
511 movl 32(%esp),%ecx
512 testl $15,%edx
513 jnz .L030cfb_abort
514 testl $15,%ecx
515 jnz .L030cfb_abort
516 leal .Lpadlock_saved_context-.L031cfb_pic_point,%eax
517 pushfl
518 cld
519 call _padlock_verify_ctx
520 .L031cfb_pic_point:
521 leal 16(%edx),%edx
522 xorl %eax,%eax
523 xorl %ebx,%ebx
524 testl $32,(%edx)
525 jnz .L032cfb_aligned
526 testl $15,%edi
527 setz %al
528 testl $15,%esi
529 setz %bl
530 testl %ebx,%eax
531 jnz .L032cfb_aligned
532 negl %eax
533 movl $512,%ebx
534 notl %eax
535 leal -24(%esp),%ebp
536 cmpl %ebx,%ecx
537 cmovcl %ecx,%ebx
538 andl %ebx,%eax
539 movl %ecx,%ebx
540 negl %eax
541 andl $511,%ebx
542 leal (%eax,%ebp,1),%esp
543 movl $512,%eax
544 cmovzl %eax,%ebx
545 movl %ebp,%eax
546 andl $-16,%ebp
547 andl $-16,%esp
548 movl %eax,16(%ebp)
549 jmp .L033cfb_loop
550 .align 16
551 .L033cfb_loop:
552 movl %edi,(%ebp)
553 movl %esi,4(%ebp)
554 movl %ecx,8(%ebp)
555 movl %ebx,%ecx
556 movl %ebx,12(%ebp)
557 testl $15,%edi
558 cmovnzl %esp,%edi
559 testl $15,%esi
560 jz .L034cfb_inp_aligned
561 shrl $2,%ecx
562 .byte 243,165
563 subl %ebx,%edi
564 movl %ebx,%ecx
565 movl %edi,%esi
566 .L034cfb_inp_aligned:
567 leal -16(%edx),%eax
568 leal 16(%edx),%ebx
569 shrl $4,%ecx
570 .byte 243,15,167,224
571 movaps (%eax),%xmm0
572 movaps %xmm0,-16(%edx)
573 movl (%ebp),%edi
574 movl 12(%ebp),%ebx
575 testl $15,%edi
576 jz .L035cfb_out_aligned
577 movl %ebx,%ecx
578 leal (%esp),%esi
579 shrl $2,%ecx
580 .byte 243,165
581 subl %ebx,%edi
582 .L035cfb_out_aligned:
583 movl 4(%ebp),%esi
584 movl 8(%ebp),%ecx
585 addl %ebx,%edi
586 addl %ebx,%esi
587 subl %ebx,%ecx
588 movl $512,%ebx
589 jnz .L033cfb_loop
590 cmpl %ebp,%esp
591 je .L036cfb_done
592 pxor %xmm0,%xmm0
593 leal (%esp),%eax
594 .L037cfb_bzero:
595 movaps %xmm0,(%eax)
596 leal 16(%eax),%eax
597 cmpl %eax,%ebp
598 ja .L037cfb_bzero
599 .L036cfb_done:
600 movl 16(%ebp),%ebp
601 leal 24(%ebp),%esp
602 jmp .L038cfb_exit
603 .align 16
604 .L032cfb_aligned:
605 leal -16(%edx),%eax
606 leal 16(%edx),%ebx
607 shrl $4,%ecx
608 .byte 243,15,167,224
609 movaps (%eax),%xmm0
610 movaps %xmm0,-16(%edx)
611 .L038cfb_exit:
612 movl $1,%eax
613 leal 4(%esp),%esp
614 .L030cfb_abort:
615 popl %edi
616 popl %esi
617 popl %ebx
618 popl %ebp
619 ret
620 .size padlock_cfb_encrypt,.-.L_padlock_cfb_encrypt_begin
621 .globl padlock_ofb_encrypt
622 .type padlock_ofb_encrypt,@function
623 .align 16
624 padlock_ofb_encrypt:
625 .L_padlock_ofb_encrypt_begin:
626 pushl %ebp
627 pushl %ebx
628 pushl %esi
629 pushl %edi
630 movl 20(%esp),%edi
631 movl 24(%esp),%esi
632 movl 28(%esp),%edx
633 movl 32(%esp),%ecx
634 testl $15,%edx
635 jnz .L039ofb_abort
636 testl $15,%ecx
637 jnz .L039ofb_abort
638 leal .Lpadlock_saved_context-.L040ofb_pic_point,%eax
639 pushfl
640 cld
641 call _padlock_verify_ctx
642 .L040ofb_pic_point:
643 leal 16(%edx),%edx
644 xorl %eax,%eax
645 xorl %ebx,%ebx
646 testl $32,(%edx)
647 jnz .L041ofb_aligned
648 testl $15,%edi
649 setz %al
650 testl $15,%esi
651 setz %bl
652 testl %ebx,%eax
653 jnz .L041ofb_aligned
654 negl %eax
655 movl $512,%ebx
656 notl %eax
657 leal -24(%esp),%ebp
658 cmpl %ebx,%ecx
659 cmovcl %ecx,%ebx
660 andl %ebx,%eax
661 movl %ecx,%ebx
662 negl %eax
663 andl $511,%ebx
664 leal (%eax,%ebp,1),%esp
665 movl $512,%eax
666 cmovzl %eax,%ebx
667 movl %ebp,%eax
668 andl $-16,%ebp
669 andl $-16,%esp
670 movl %eax,16(%ebp)
671 jmp .L042ofb_loop
672 .align 16
673 .L042ofb_loop:
674 movl %edi,(%ebp)
675 movl %esi,4(%ebp)
676 movl %ecx,8(%ebp)
677 movl %ebx,%ecx
678 movl %ebx,12(%ebp)
679 testl $15,%edi
680 cmovnzl %esp,%edi
681 testl $15,%esi
682 jz .L043ofb_inp_aligned
683 shrl $2,%ecx
684 .byte 243,165
685 subl %ebx,%edi
686 movl %ebx,%ecx
687 movl %edi,%esi
688 .L043ofb_inp_aligned:
689 leal -16(%edx),%eax
690 leal 16(%edx),%ebx
691 shrl $4,%ecx
692 .byte 243,15,167,232
693 movaps (%eax),%xmm0
694 movaps %xmm0,-16(%edx)
695 movl (%ebp),%edi
696 movl 12(%ebp),%ebx
697 testl $15,%edi
698 jz .L044ofb_out_aligned
699 movl %ebx,%ecx
700 leal (%esp),%esi
701 shrl $2,%ecx
702 .byte 243,165
703 subl %ebx,%edi
704 .L044ofb_out_aligned:
705 movl 4(%ebp),%esi
706 movl 8(%ebp),%ecx
707 addl %ebx,%edi
708 addl %ebx,%esi
709 subl %ebx,%ecx
710 movl $512,%ebx
711 jnz .L042ofb_loop
712 cmpl %ebp,%esp
713 je .L045ofb_done
714 pxor %xmm0,%xmm0
715 leal (%esp),%eax
716 .L046ofb_bzero:
717 movaps %xmm0,(%eax)
718 leal 16(%eax),%eax
719 cmpl %eax,%ebp
720 ja .L046ofb_bzero
721 .L045ofb_done:
722 movl 16(%ebp),%ebp
723 leal 24(%ebp),%esp
724 jmp .L047ofb_exit
725 .align 16
726 .L041ofb_aligned:
727 leal -16(%edx),%eax
728 leal 16(%edx),%ebx
729 shrl $4,%ecx
730 .byte 243,15,167,232
731 movaps (%eax),%xmm0
732 movaps %xmm0,-16(%edx)
733 .L047ofb_exit:
734 movl $1,%eax
735 leal 4(%esp),%esp
736 .L039ofb_abort:
737 popl %edi
738 popl %esi
739 popl %ebx
740 popl %ebp
741 ret
742 .size padlock_ofb_encrypt,.-.L_padlock_ofb_encrypt_begin
743 .globl padlock_ctr32_encrypt
744 .type padlock_ctr32_encrypt,@function
745 .align 16
746 padlock_ctr32_encrypt:
747 .L_padlock_ctr32_encrypt_begin:
748 pushl %ebp
749 pushl %ebx
750 pushl %esi
751 pushl %edi
752 movl 20(%esp),%edi
753 movl 24(%esp),%esi
754 movl 28(%esp),%edx
755 movl 32(%esp),%ecx
756 testl $15,%edx
757 jnz .L048ctr32_abort
758 testl $15,%ecx
759 jnz .L048ctr32_abort
760 leal .Lpadlock_saved_context-.L049ctr32_pic_point,%eax
761 pushfl
762 cld
763 call _padlock_verify_ctx
764 .L049ctr32_pic_point:
765 leal 16(%edx),%edx
766 xorl %eax,%eax
767 movq -16(%edx),%mm0
768 movl $512,%ebx
769 notl %eax
770 leal -24(%esp),%ebp
771 cmpl %ebx,%ecx
772 cmovcl %ecx,%ebx
773 andl %ebx,%eax
774 movl %ecx,%ebx
775 negl %eax
776 andl $511,%ebx
777 leal (%eax,%ebp,1),%esp
778 movl $512,%eax
779 cmovzl %eax,%ebx
780 movl %ebp,%eax
781 andl $-16,%ebp
782 andl $-16,%esp
783 movl %eax,16(%ebp)
784 jmp .L050ctr32_loop
785 .align 16
786 .L050ctr32_loop:
787 movl %edi,(%ebp)
788 movl %esi,4(%ebp)
789 movl %ecx,8(%ebp)
790 movl %ebx,%ecx
791 movl %ebx,12(%ebp)
792 movl -4(%edx),%ecx
793 xorl %edi,%edi
794 movl -8(%edx),%eax
795 .L051ctr32_prepare:
796 movl %ecx,12(%esp,%edi,1)
797 bswap %ecx
798 movq %mm0,(%esp,%edi,1)
799 incl %ecx
800 movl %eax,8(%esp,%edi,1)
801 bswap %ecx
802 leal 16(%edi),%edi
803 cmpl %ebx,%edi
804 jb .L051ctr32_prepare
805 movl %ecx,-4(%edx)
806 leal (%esp),%esi
807 leal (%esp),%edi
808 movl %ebx,%ecx
809 leal -16(%edx),%eax
810 leal 16(%edx),%ebx
811 shrl $4,%ecx
812 .byte 243,15,167,200
813 movl (%ebp),%edi
814 movl 12(%ebp),%ebx
815 movl 4(%ebp),%esi
816 xorl %ecx,%ecx
817 .L052ctr32_xor:
818 movups (%esi,%ecx,1),%xmm1
819 leal 16(%ecx),%ecx
820 pxor -16(%esp,%ecx,1),%xmm1
821 movups %xmm1,-16(%edi,%ecx,1)
822 cmpl %ebx,%ecx
823 jb .L052ctr32_xor
824 movl 8(%ebp),%ecx
825 addl %ebx,%edi
826 addl %ebx,%esi
827 subl %ebx,%ecx
828 movl $512,%ebx
829 jnz .L050ctr32_loop
830 pxor %xmm0,%xmm0
831 leal (%esp),%eax
832 .L053ctr32_bzero:
833 movaps %xmm0,(%eax)
834 leal 16(%eax),%eax
835 cmpl %eax,%ebp
836 ja .L053ctr32_bzero
837 .L054ctr32_done:
838 movl 16(%ebp),%ebp
839 leal 24(%ebp),%esp
840 movl $1,%eax
841 leal 4(%esp),%esp
842 emms
843 .L048ctr32_abort:
844 popl %edi
845 popl %esi
846 popl %ebx
847 popl %ebp
848 ret
849 .size padlock_ctr32_encrypt,.-.L_padlock_ctr32_encrypt_begin
850 .globl padlock_xstore
851 .type padlock_xstore,@function
852 .align 16
853 padlock_xstore:
854 .L_padlock_xstore_begin:
855 pushl %edi
856 movl 8(%esp),%edi
857 movl 12(%esp),%edx
858 .byte 15,167,192
859 popl %edi
860 ret
861 .size padlock_xstore,.-.L_padlock_xstore_begin
862 .type _win32_segv_handler,@function
863 .align 16
864 _win32_segv_handler:
865 movl $1,%eax
866 movl 4(%esp),%edx
867 movl 12(%esp),%ecx
868 cmpl $3221225477,(%edx)
869 jne .L055ret
870 addl $4,184(%ecx)
871 movl $0,%eax
872 .L055ret:
873 ret
874 .size _win32_segv_handler,.-_win32_segv_handler
875 .globl padlock_sha1_oneshot
876 .type padlock_sha1_oneshot,@function
877 .align 16
878 padlock_sha1_oneshot:
879 .L_padlock_sha1_oneshot_begin:
880 pushl %edi
881 pushl %esi
882 xorl %eax,%eax
883 movl 12(%esp),%edi
884 movl 16(%esp),%esi
885 movl 20(%esp),%ecx
886 movl %esp,%edx
887 addl $-128,%esp
888 movups (%edi),%xmm0
889 andl $-16,%esp
890 movl 16(%edi),%eax
891 movaps %xmm0,(%esp)
892 movl %esp,%edi
893 movl %eax,16(%esp)
894 xorl %eax,%eax
895 .byte 243,15,166,200
896 movaps (%esp),%xmm0
897 movl 16(%esp),%eax
898 movl %edx,%esp
899 movl 12(%esp),%edi
900 movups %xmm0,(%edi)
901 movl %eax,16(%edi)
902 popl %esi
903 popl %edi
904 ret
905 .size padlock_sha1_oneshot,.-.L_padlock_sha1_oneshot_begin
906 .globl padlock_sha1_blocks
907 .type padlock_sha1_blocks,@function
908 .align 16
909 padlock_sha1_blocks:
910 .L_padlock_sha1_blocks_begin:
911 pushl %edi
912 pushl %esi
913 movl 12(%esp),%edi
914 movl 16(%esp),%esi
915 movl %esp,%edx
916 movl 20(%esp),%ecx
917 addl $-128,%esp
918 movups (%edi),%xmm0
919 andl $-16,%esp
920 movl 16(%edi),%eax
921 movaps %xmm0,(%esp)
922 movl %esp,%edi
923 movl %eax,16(%esp)
924 movl $-1,%eax
925 .byte 243,15,166,200
926 movaps (%esp),%xmm0
927 movl 16(%esp),%eax
928 movl %edx,%esp
929 movl 12(%esp),%edi
930 movups %xmm0,(%edi)
931 movl %eax,16(%edi)
932 popl %esi
933 popl %edi
934 ret
935 .size padlock_sha1_blocks,.-.L_padlock_sha1_blocks_begin
936 .globl padlock_sha256_oneshot
937 .type padlock_sha256_oneshot,@function
938 .align 16
939 padlock_sha256_oneshot:
940 .L_padlock_sha256_oneshot_begin:
941 pushl %edi
942 pushl %esi
943 xorl %eax,%eax
944 movl 12(%esp),%edi
945 movl 16(%esp),%esi
946 movl 20(%esp),%ecx
947 movl %esp,%edx
948 addl $-128,%esp
949 movups (%edi),%xmm0
950 andl $-16,%esp
951 movups 16(%edi),%xmm1
952 movaps %xmm0,(%esp)
953 movl %esp,%edi
954 movaps %xmm1,16(%esp)
955 xorl %eax,%eax
956 .byte 243,15,166,208
957 movaps (%esp),%xmm0
958 movaps 16(%esp),%xmm1
959 movl %edx,%esp
960 movl 12(%esp),%edi
961 movups %xmm0,(%edi)
962 movups %xmm1,16(%edi)
963 popl %esi
964 popl %edi
965 ret
966 .size padlock_sha256_oneshot,.-.L_padlock_sha256_oneshot_begin
967 .globl padlock_sha256_blocks
968 .type padlock_sha256_blocks,@function
969 .align 16
970 padlock_sha256_blocks:
971 .L_padlock_sha256_blocks_begin:
972 pushl %edi
973 pushl %esi
974 movl 12(%esp),%edi
975 movl 16(%esp),%esi
976 movl 20(%esp),%ecx
977 movl %esp,%edx
978 addl $-128,%esp
979 movups (%edi),%xmm0
980 andl $-16,%esp
981 movups 16(%edi),%xmm1
982 movaps %xmm0,(%esp)
983 movl %esp,%edi
984 movaps %xmm1,16(%esp)
985 movl $-1,%eax
986 .byte 243,15,166,208
987 movaps (%esp),%xmm0
988 movaps 16(%esp),%xmm1
989 movl %edx,%esp
990 movl 12(%esp),%edi
991 movups %xmm0,(%edi)
992 movups %xmm1,16(%edi)
993 popl %esi
994 popl %edi
995 ret
996 .size padlock_sha256_blocks,.-.L_padlock_sha256_blocks_begin
997 .globl padlock_sha512_blocks
998 .type padlock_sha512_blocks,@function
999 .align 16
1000 padlock_sha512_blocks:
1001 .L_padlock_sha512_blocks_begin:
1002 pushl %edi
1003 pushl %esi
1004 movl 12(%esp),%edi
1005 movl 16(%esp),%esi
1006 movl 20(%esp),%ecx
1007 movl %esp,%edx
1008 addl $-128,%esp
1009 movups (%edi),%xmm0
1010 andl $-16,%esp
1011 movups 16(%edi),%xmm1
1012 movups 32(%edi),%xmm2
1013 movups 48(%edi),%xmm3
1014 movaps %xmm0,(%esp)
1015 movl %esp,%edi
1016 movaps %xmm1,16(%esp)
1017 movaps %xmm2,32(%esp)
1018 movaps %xmm3,48(%esp)
1019 .byte 243,15,166,224
1020 movaps (%esp),%xmm0
1021 movaps 16(%esp),%xmm1
1022 movaps 32(%esp),%xmm2
1023 movaps 48(%esp),%xmm3
1024 movl %edx,%esp
1025 movl 12(%esp),%edi
1026 movups %xmm0,(%edi)
1027 movups %xmm1,16(%edi)
1028 movups %xmm2,32(%edi)
1029 movups %xmm3,48(%edi)
1030 popl %esi
1031 popl %edi
1032 ret
1033 .size padlock_sha512_blocks,.-.L_padlock_sha512_blocks_begin
1034 .byte 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32
1035 .byte 109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65
1036 .byte 77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101
1037 .byte 110,115,115,108,46,111,114,103,62,0
1038 .align 16
1039 .data
1040 .align 4
1041 .Lpadlock_saved_context:
1042 .long 0
1043 #else
1044 .text
1045 .globl padlock_capability
1046 .type padlock_capability,@function
1047 .align 16
1048 padlock_capability:
1049 .L_padlock_capability_begin:
1050 pushl %ebx
1051 pushfl
1052 popl %eax
1053 movl %eax,%ecx
1054 xorl $2097152,%eax
1055 pushl %eax
1056 popfl
1057 pushfl
1058 popl %eax
1059 xorl %eax,%ecx
1060 xorl %eax,%eax
1061 btl $21,%ecx
1062 jnc .L000noluck
1063 .byte 0x0f,0xa2
1064 xorl %eax,%eax
1065 cmpl $0x746e6543,%ebx
1066 jne .L001zhaoxin
1067 cmpl $0x48727561,%edx
1068 jne .L000noluck
1069 cmpl $0x736c7561,%ecx
1070 jne .L000noluck
1071 jmp .L002zhaoxinEnd
1072 .L001zhaoxin:
1073 cmpl $0x68532020,%ebx
1074 jne .L000noluck
1075 cmpl $0x68676e61,%edx
1076 jne .L000noluck
1077 cmpl $0x20206961,%ecx
1078 jne .L000noluck
1079 .L002zhaoxinEnd:
1080 movl $3221225472,%eax
1081 .byte 0x0f,0xa2
1082 movl %eax,%edx
1083 xorl %eax,%eax
1084 cmpl $3221225473,%edx
1085 jb .L000noluck
1086 movl $1,%eax
1087 .byte 0x0f,0xa2
1088 orl $15,%eax
1089 xorl %ebx,%ebx
1090 andl $4095,%eax
1091 cmpl $1791,%eax
1092 sete %bl
1093 movl $3221225473,%eax
1094 pushl %ebx
1095 .byte 0x0f,0xa2
1096 popl %ebx
1097 movl %edx,%eax
1098 shll $4,%ebx
1099 andl $4294967279,%eax
1100 orl %ebx,%eax
1101 .L000noluck:
1102 popl %ebx
1103 ret
1104 .size padlock_capability,.-.L_padlock_capability_begin
1105 .globl padlock_key_bswap
1106 .type padlock_key_bswap,@function
1107 .align 16
1108 padlock_key_bswap:
1109 .L_padlock_key_bswap_begin:
1110 movl 4(%esp),%edx
1111 movl 240(%edx),%ecx
1112 .L003bswap_loop:
1113 movl (%edx),%eax
1114 bswap %eax
1115 movl %eax,(%edx)
1116 leal 4(%edx),%edx
1117 subl $1,%ecx
1118 jnz .L003bswap_loop
1119 ret
1120 .size padlock_key_bswap,.-.L_padlock_key_bswap_begin
1121 .globl padlock_verify_context
1122 .type padlock_verify_context,@function
1123 .align 16
1124 padlock_verify_context:
1125 .L_padlock_verify_context_begin:
1126 movl 4(%esp),%edx
1127 leal .Lpadlock_saved_context-.L004verify_pic_point,%eax
1128 pushfl
1129 call _padlock_verify_ctx
1130 .L004verify_pic_point:
1131 leal 4(%esp),%esp
1132 ret
1133 .size padlock_verify_context,.-.L_padlock_verify_context_begin
1134 .type _padlock_verify_ctx,@function
1135 .align 16
1136 _padlock_verify_ctx:
1137 addl (%esp),%eax
1138 btl $30,4(%esp)
1139 jnc .L005verified
1140 cmpl (%eax),%edx
1141 je .L005verified
1142 pushfl
1143 popfl
1144 .L005verified:
1145 movl %edx,(%eax)
1146 ret
1147 .size _padlock_verify_ctx,.-_padlock_verify_ctx
1148 .globl padlock_reload_key
1149 .type padlock_reload_key,@function
1150 .align 16
1151 padlock_reload_key:
1152 .L_padlock_reload_key_begin:
1153 pushfl
1154 popfl
1155 ret
1156 .size padlock_reload_key,.-.L_padlock_reload_key_begin
1157 .globl padlock_aes_block
1158 .type padlock_aes_block,@function
1159 .align 16
1160 padlock_aes_block:
1161 .L_padlock_aes_block_begin:
1162 pushl %edi
1163 pushl %esi
1164 pushl %ebx
1165 movl 16(%esp),%edi
1166 movl 20(%esp),%esi
1167 movl 24(%esp),%edx
1168 movl $1,%ecx
1169 leal 32(%edx),%ebx
1170 leal 16(%edx),%edx
1171 .byte 243,15,167,200
1172 popl %ebx
1173 popl %esi
1174 popl %edi
1175 ret
1176 .size padlock_aes_block,.-.L_padlock_aes_block_begin
1177 .globl padlock_ecb_encrypt
1178 .type padlock_ecb_encrypt,@function
1179 .align 16
1180 padlock_ecb_encrypt:
1181 .L_padlock_ecb_encrypt_begin:
1182 pushl %ebp
1183 pushl %ebx
1184 pushl %esi
1185 pushl %edi
1186 movl 20(%esp),%edi
1187 movl 24(%esp),%esi
1188 movl 28(%esp),%edx
1189 movl 32(%esp),%ecx
1190 testl $15,%edx
1191 jnz .L006ecb_abort
1192 testl $15,%ecx
1193 jnz .L006ecb_abort
1194 leal .Lpadlock_saved_context-.L007ecb_pic_point,%eax
1195 pushfl
1196 cld
1197 call _padlock_verify_ctx
1198 .L007ecb_pic_point:
1199 leal 16(%edx),%edx
1200 xorl %eax,%eax
1201 xorl %ebx,%ebx
1202 testl $32,(%edx)
1203 jnz .L008ecb_aligned
1204 testl $15,%edi
1205 setz %al
1206 testl $15,%esi
1207 setz %bl
1208 testl %ebx,%eax
1209 jnz .L008ecb_aligned
1210 negl %eax
1211 movl $512,%ebx
1212 notl %eax
1213 leal -24(%esp),%ebp
1214 cmpl %ebx,%ecx
1215 cmovcl %ecx,%ebx
1216 andl %ebx,%eax
1217 movl %ecx,%ebx
1218 negl %eax
1219 andl $511,%ebx
1220 leal (%eax,%ebp,1),%esp
1221 movl $512,%eax
1222 cmovzl %eax,%ebx
1223 movl %ebp,%eax
1224 andl $-16,%ebp
1225 andl $-16,%esp
1226 movl %eax,16(%ebp)
1227 cmpl %ebx,%ecx
1228 ja .L009ecb_loop
1229 movl %esi,%eax
1230 cmpl %esp,%ebp
1231 cmovel %edi,%eax
1232 addl %ecx,%eax
1233 negl %eax
1234 andl $4095,%eax
1235 cmpl $128,%eax
1236 movl $-128,%eax
1237 cmovael %ebx,%eax
1238 andl %eax,%ebx
1239 jz .L010ecb_unaligned_tail
1240 jmp .L009ecb_loop
1241 .align 16
1242 .L009ecb_loop:
1243 movl %edi,(%ebp)
1244 movl %esi,4(%ebp)
1245 movl %ecx,8(%ebp)
1246 movl %ebx,%ecx
1247 movl %ebx,12(%ebp)
1248 testl $15,%edi
1249 cmovnzl %esp,%edi
1250 testl $15,%esi
1251 jz .L011ecb_inp_aligned
1252 shrl $2,%ecx
1253 .byte 243,165
1254 subl %ebx,%edi
1255 movl %ebx,%ecx
1256 movl %edi,%esi
1257 .L011ecb_inp_aligned:
1258 leal -16(%edx),%eax
1259 leal 16(%edx),%ebx
1260 shrl $4,%ecx
1261 .byte 243,15,167,200
1262 movl (%ebp),%edi
1263 movl 12(%ebp),%ebx
1264 testl $15,%edi
1265 jz .L012ecb_out_aligned
1266 movl %ebx,%ecx
1267 leal (%esp),%esi
1268 shrl $2,%ecx
1269 .byte 243,165
1270 subl %ebx,%edi
1271 .L012ecb_out_aligned:
1272 movl 4(%ebp),%esi
1273 movl 8(%ebp),%ecx
1274 addl %ebx,%edi
1275 addl %ebx,%esi
1276 subl %ebx,%ecx
1277 movl $512,%ebx
1278 jz .L013ecb_break
1279 cmpl %ebx,%ecx
1280 jae .L009ecb_loop
1281 .L010ecb_unaligned_tail:
1282 xorl %eax,%eax
1283 cmpl %ebp,%esp
1284 cmovel %ecx,%eax
1285 subl %eax,%esp
1286 movl %edi,%eax
1287 movl %ecx,%ebx
1288 shrl $2,%ecx
1289 leal (%esp),%edi
1290 .byte 243,165
1291 movl %esp,%esi
1292 movl %eax,%edi
1293 movl %ebx,%ecx
1294 jmp .L009ecb_loop
1295 .align 16
1296 .L013ecb_break:
1297 cmpl %ebp,%esp
1298 je .L014ecb_done
1299 pxor %xmm0,%xmm0
1300 leal (%esp),%eax
1301 .L015ecb_bzero:
1302 movaps %xmm0,(%eax)
1303 leal 16(%eax),%eax
1304 cmpl %eax,%ebp
1305 ja .L015ecb_bzero
1306 .L014ecb_done:
1307 movl 16(%ebp),%ebp
1308 leal 24(%ebp),%esp
1309 jmp .L016ecb_exit
1310 .align 16
1311 .L008ecb_aligned:
1312 leal (%esi,%ecx,1),%ebp
1313 negl %ebp
1314 andl $4095,%ebp
1315 xorl %eax,%eax
1316 cmpl $128,%ebp
1317 movl $127,%ebp
1318 cmovael %eax,%ebp
1319 andl %ecx,%ebp
1320 subl %ebp,%ecx
1321 jz .L017ecb_aligned_tail
1322 leal -16(%edx),%eax
1323 leal 16(%edx),%ebx
1324 shrl $4,%ecx
1325 .byte 243,15,167,200
1326 testl %ebp,%ebp
1327 jz .L016ecb_exit
1328 .L017ecb_aligned_tail:
1329 movl %ebp,%ecx
1330 leal -24(%esp),%ebp
1331 movl %ebp,%esp
1332 movl %ebp,%eax
1333 subl %ecx,%esp
1334 andl $-16,%ebp
1335 andl $-16,%esp
1336 movl %eax,16(%ebp)
1337 movl %edi,%eax
1338 movl %ecx,%ebx
1339 shrl $2,%ecx
1340 leal (%esp),%edi
1341 .byte 243,165
1342 movl %esp,%esi
1343 movl %eax,%edi
1344 movl %ebx,%ecx
1345 jmp .L009ecb_loop
1346 .L016ecb_exit:
1347 movl $1,%eax
1348 leal 4(%esp),%esp
1349 .L006ecb_abort:
1350 popl %edi
1351 popl %esi
1352 popl %ebx
1353 popl %ebp
1354 ret
1355 .size padlock_ecb_encrypt,.-.L_padlock_ecb_encrypt_begin
1356 .globl padlock_cbc_encrypt
1357 .type padlock_cbc_encrypt,@function
1358 .align 16
1359 padlock_cbc_encrypt:
1360 .L_padlock_cbc_encrypt_begin:
1361 pushl %ebp
1362 pushl %ebx
1363 pushl %esi
1364 pushl %edi
1365 movl 20(%esp),%edi
1366 movl 24(%esp),%esi
1367 movl 28(%esp),%edx
1368 movl 32(%esp),%ecx
1369 testl $15,%edx
1370 jnz .L018cbc_abort
1371 testl $15,%ecx
1372 jnz .L018cbc_abort
1373 leal .Lpadlock_saved_context-.L019cbc_pic_point,%eax
1374 pushfl
1375 cld
1376 call _padlock_verify_ctx
1377 .L019cbc_pic_point:
1378 leal 16(%edx),%edx
1379 xorl %eax,%eax
1380 xorl %ebx,%ebx
1381 testl $32,(%edx)
1382 jnz .L020cbc_aligned
1383 testl $15,%edi
1384 setz %al
1385 testl $15,%esi
1386 setz %bl
1387 testl %ebx,%eax
1388 jnz .L020cbc_aligned
1389 negl %eax
1390 movl $512,%ebx
1391 notl %eax
1392 leal -24(%esp),%ebp
1393 cmpl %ebx,%ecx
1394 cmovcl %ecx,%ebx
1395 andl %ebx,%eax
1396 movl %ecx,%ebx
1397 negl %eax
1398 andl $511,%ebx
1399 leal (%eax,%ebp,1),%esp
1400 movl $512,%eax
1401 cmovzl %eax,%ebx
1402 movl %ebp,%eax
1403 andl $-16,%ebp
1404 andl $-16,%esp
1405 movl %eax,16(%ebp)
1406 cmpl %ebx,%ecx
1407 ja .L021cbc_loop
1408 movl %esi,%eax
1409 cmpl %esp,%ebp
1410 cmovel %edi,%eax
1411 addl %ecx,%eax
1412 negl %eax
1413 andl $4095,%eax
1414 cmpl $64,%eax
1415 movl $-64,%eax
1416 cmovael %ebx,%eax
1417 andl %eax,%ebx
1418 jz .L022cbc_unaligned_tail
1419 jmp .L021cbc_loop
1420 .align 16
1421 .L021cbc_loop:
1422 movl %edi,(%ebp)
1423 movl %esi,4(%ebp)
1424 movl %ecx,8(%ebp)
1425 movl %ebx,%ecx
1426 movl %ebx,12(%ebp)
1427 testl $15,%edi
1428 cmovnzl %esp,%edi
1429 testl $15,%esi
1430 jz .L023cbc_inp_aligned
1431 shrl $2,%ecx
1432 .byte 243,165
1433 subl %ebx,%edi
1434 movl %ebx,%ecx
1435 movl %edi,%esi
1436 .L023cbc_inp_aligned:
1437 leal -16(%edx),%eax
1438 leal 16(%edx),%ebx
1439 shrl $4,%ecx
1440 .byte 243,15,167,208
1441 movaps (%eax),%xmm0
1442 movaps %xmm0,-16(%edx)
1443 movl (%ebp),%edi
1444 movl 12(%ebp),%ebx
1445 testl $15,%edi
1446 jz .L024cbc_out_aligned
1447 movl %ebx,%ecx
1448 leal (%esp),%esi
1449 shrl $2,%ecx
1450 .byte 243,165
1451 subl %ebx,%edi
1452 .L024cbc_out_aligned:
1453 movl 4(%ebp),%esi
1454 movl 8(%ebp),%ecx
1455 addl %ebx,%edi
1456 addl %ebx,%esi
1457 subl %ebx,%ecx
1458 movl $512,%ebx
1459 jz .L025cbc_break
1460 cmpl %ebx,%ecx
1461 jae .L021cbc_loop
1462 .L022cbc_unaligned_tail:
1463 xorl %eax,%eax
1464 cmpl %ebp,%esp
1465 cmovel %ecx,%eax
1466 subl %eax,%esp
1467 movl %edi,%eax
1468 movl %ecx,%ebx
1469 shrl $2,%ecx
1470 leal (%esp),%edi
1471 .byte 243,165
1472 movl %esp,%esi
1473 movl %eax,%edi
1474 movl %ebx,%ecx
1475 jmp .L021cbc_loop
1476 .align 16
1477 .L025cbc_break:
1478 cmpl %ebp,%esp
1479 je .L026cbc_done
1480 pxor %xmm0,%xmm0
1481 leal (%esp),%eax
1482 .L027cbc_bzero:
1483 movaps %xmm0,(%eax)
1484 leal 16(%eax),%eax
1485 cmpl %eax,%ebp
1486 ja .L027cbc_bzero
1487 .L026cbc_done:
1488 movl 16(%ebp),%ebp
1489 leal 24(%ebp),%esp
1490 jmp .L028cbc_exit
1491 .align 16
1492 .L020cbc_aligned:
1493 leal (%esi,%ecx,1),%ebp
1494 negl %ebp
1495 andl $4095,%ebp
1496 xorl %eax,%eax
1497 cmpl $64,%ebp
1498 movl $63,%ebp
1499 cmovael %eax,%ebp
1500 andl %ecx,%ebp
1501 subl %ebp,%ecx
1502 jz .L029cbc_aligned_tail
1503 leal -16(%edx),%eax
1504 leal 16(%edx),%ebx
1505 shrl $4,%ecx
1506 .byte 243,15,167,208
1507 movaps (%eax),%xmm0
1508 movaps %xmm0,-16(%edx)
1509 testl %ebp,%ebp
1510 jz .L028cbc_exit
1511 .L029cbc_aligned_tail:
1512 movl %ebp,%ecx
1513 leal -24(%esp),%ebp
1514 movl %ebp,%esp
1515 movl %ebp,%eax
1516 subl %ecx,%esp
1517 andl $-16,%ebp
1518 andl $-16,%esp
1519 movl %eax,16(%ebp)
1520 movl %edi,%eax
1521 movl %ecx,%ebx
1522 shrl $2,%ecx
1523 leal (%esp),%edi
1524 .byte 243,165
1525 movl %esp,%esi
1526 movl %eax,%edi
1527 movl %ebx,%ecx
1528 jmp .L021cbc_loop
1529 .L028cbc_exit:
1530 movl $1,%eax
1531 leal 4(%esp),%esp
1532 .L018cbc_abort:
1533 popl %edi
1534 popl %esi
1535 popl %ebx
1536 popl %ebp
1537 ret
1538 .size padlock_cbc_encrypt,.-.L_padlock_cbc_encrypt_begin
1539 .globl padlock_cfb_encrypt
1540 .type padlock_cfb_encrypt,@function
1541 .align 16
1542 padlock_cfb_encrypt:
1543 .L_padlock_cfb_encrypt_begin:
1544 pushl %ebp
1545 pushl %ebx
1546 pushl %esi
1547 pushl %edi
1548 movl 20(%esp),%edi
1549 movl 24(%esp),%esi
1550 movl 28(%esp),%edx
1551 movl 32(%esp),%ecx
1552 testl $15,%edx
1553 jnz .L030cfb_abort
1554 testl $15,%ecx
1555 jnz .L030cfb_abort
1556 leal .Lpadlock_saved_context-.L031cfb_pic_point,%eax
1557 pushfl
1558 cld
1559 call _padlock_verify_ctx
1560 .L031cfb_pic_point:
1561 leal 16(%edx),%edx
1562 xorl %eax,%eax
1563 xorl %ebx,%ebx
1564 testl $32,(%edx)
1565 jnz .L032cfb_aligned
1566 testl $15,%edi
1567 setz %al
1568 testl $15,%esi
1569 setz %bl
1570 testl %ebx,%eax
1571 jnz .L032cfb_aligned
1572 negl %eax
1573 movl $512,%ebx
1574 notl %eax
1575 leal -24(%esp),%ebp
1576 cmpl %ebx,%ecx
1577 cmovcl %ecx,%ebx
1578 andl %ebx,%eax
1579 movl %ecx,%ebx
1580 negl %eax
1581 andl $511,%ebx
1582 leal (%eax,%ebp,1),%esp
1583 movl $512,%eax
1584 cmovzl %eax,%ebx
1585 movl %ebp,%eax
1586 andl $-16,%ebp
1587 andl $-16,%esp
1588 movl %eax,16(%ebp)
1589 jmp .L033cfb_loop
1590 .align 16
1591 .L033cfb_loop:
1592 movl %edi,(%ebp)
1593 movl %esi,4(%ebp)
1594 movl %ecx,8(%ebp)
1595 movl %ebx,%ecx
1596 movl %ebx,12(%ebp)
1597 testl $15,%edi
1598 cmovnzl %esp,%edi
1599 testl $15,%esi
1600 jz .L034cfb_inp_aligned
1601 shrl $2,%ecx
1602 .byte 243,165
1603 subl %ebx,%edi
1604 movl %ebx,%ecx
1605 movl %edi,%esi
1606 .L034cfb_inp_aligned:
1607 leal -16(%edx),%eax
1608 leal 16(%edx),%ebx
1609 shrl $4,%ecx
1610 .byte 243,15,167,224
1611 movaps (%eax),%xmm0
1612 movaps %xmm0,-16(%edx)
1613 movl (%ebp),%edi
1614 movl 12(%ebp),%ebx
1615 testl $15,%edi
1616 jz .L035cfb_out_aligned
1617 movl %ebx,%ecx
1618 leal (%esp),%esi
1619 shrl $2,%ecx
1620 .byte 243,165
1621 subl %ebx,%edi
1622 .L035cfb_out_aligned:
1623 movl 4(%ebp),%esi
1624 movl 8(%ebp),%ecx
1625 addl %ebx,%edi
1626 addl %ebx,%esi
1627 subl %ebx,%ecx
1628 movl $512,%ebx
1629 jnz .L033cfb_loop
1630 cmpl %ebp,%esp
1631 je .L036cfb_done
1632 pxor %xmm0,%xmm0
1633 leal (%esp),%eax
1634 .L037cfb_bzero:
1635 movaps %xmm0,(%eax)
1636 leal 16(%eax),%eax
1637 cmpl %eax,%ebp
1638 ja .L037cfb_bzero
1639 .L036cfb_done:
1640 movl 16(%ebp),%ebp
1641 leal 24(%ebp),%esp
1642 jmp .L038cfb_exit
1643 .align 16
1644 .L032cfb_aligned:
1645 leal -16(%edx),%eax
1646 leal 16(%edx),%ebx
1647 shrl $4,%ecx
1648 .byte 243,15,167,224
1649 movaps (%eax),%xmm0
1650 movaps %xmm0,-16(%edx)
1651 .L038cfb_exit:
1652 movl $1,%eax
1653 leal 4(%esp),%esp
1654 .L030cfb_abort:
1655 popl %edi
1656 popl %esi
1657 popl %ebx
1658 popl %ebp
1659 ret
1660 .size padlock_cfb_encrypt,.-.L_padlock_cfb_encrypt_begin
1661 .globl padlock_ofb_encrypt
1662 .type padlock_ofb_encrypt,@function
1663 .align 16
1664 padlock_ofb_encrypt:
1665 .L_padlock_ofb_encrypt_begin:
1666 pushl %ebp
1667 pushl %ebx
1668 pushl %esi
1669 pushl %edi
1670 movl 20(%esp),%edi
1671 movl 24(%esp),%esi
1672 movl 28(%esp),%edx
1673 movl 32(%esp),%ecx
1674 testl $15,%edx
1675 jnz .L039ofb_abort
1676 testl $15,%ecx
1677 jnz .L039ofb_abort
1678 leal .Lpadlock_saved_context-.L040ofb_pic_point,%eax
1679 pushfl
1680 cld
1681 call _padlock_verify_ctx
1682 .L040ofb_pic_point:
1683 leal 16(%edx),%edx
1684 xorl %eax,%eax
1685 xorl %ebx,%ebx
1686 testl $32,(%edx)
1687 jnz .L041ofb_aligned
1688 testl $15,%edi
1689 setz %al
1690 testl $15,%esi
1691 setz %bl
1692 testl %ebx,%eax
1693 jnz .L041ofb_aligned
1694 negl %eax
1695 movl $512,%ebx
1696 notl %eax
1697 leal -24(%esp),%ebp
1698 cmpl %ebx,%ecx
1699 cmovcl %ecx,%ebx
1700 andl %ebx,%eax
1701 movl %ecx,%ebx
1702 negl %eax
1703 andl $511,%ebx
1704 leal (%eax,%ebp,1),%esp
1705 movl $512,%eax
1706 cmovzl %eax,%ebx
1707 movl %ebp,%eax
1708 andl $-16,%ebp
1709 andl $-16,%esp
1710 movl %eax,16(%ebp)
1711 jmp .L042ofb_loop
1712 .align 16
1713 .L042ofb_loop:
1714 movl %edi,(%ebp)
1715 movl %esi,4(%ebp)
1716 movl %ecx,8(%ebp)
1717 movl %ebx,%ecx
1718 movl %ebx,12(%ebp)
1719 testl $15,%edi
1720 cmovnzl %esp,%edi
1721 testl $15,%esi
1722 jz .L043ofb_inp_aligned
1723 shrl $2,%ecx
1724 .byte 243,165
1725 subl %ebx,%edi
1726 movl %ebx,%ecx
1727 movl %edi,%esi
1728 .L043ofb_inp_aligned:
1729 leal -16(%edx),%eax
1730 leal 16(%edx),%ebx
1731 shrl $4,%ecx
1732 .byte 243,15,167,232
1733 movaps (%eax),%xmm0
1734 movaps %xmm0,-16(%edx)
1735 movl (%ebp),%edi
1736 movl 12(%ebp),%ebx
1737 testl $15,%edi
1738 jz .L044ofb_out_aligned
1739 movl %ebx,%ecx
1740 leal (%esp),%esi
1741 shrl $2,%ecx
1742 .byte 243,165
1743 subl %ebx,%edi
1744 .L044ofb_out_aligned:
1745 movl 4(%ebp),%esi
1746 movl 8(%ebp),%ecx
1747 addl %ebx,%edi
1748 addl %ebx,%esi
1749 subl %ebx,%ecx
1750 movl $512,%ebx
1751 jnz .L042ofb_loop
1752 cmpl %ebp,%esp
1753 je .L045ofb_done
1754 pxor %xmm0,%xmm0
1755 leal (%esp),%eax
1756 .L046ofb_bzero:
1757 movaps %xmm0,(%eax)
1758 leal 16(%eax),%eax
1759 cmpl %eax,%ebp
1760 ja .L046ofb_bzero
1761 .L045ofb_done:
1762 movl 16(%ebp),%ebp
1763 leal 24(%ebp),%esp
1764 jmp .L047ofb_exit
1765 .align 16
1766 .L041ofb_aligned:
1767 leal -16(%edx),%eax
1768 leal 16(%edx),%ebx
1769 shrl $4,%ecx
1770 .byte 243,15,167,232
1771 movaps (%eax),%xmm0
1772 movaps %xmm0,-16(%edx)
1773 .L047ofb_exit:
1774 movl $1,%eax
1775 leal 4(%esp),%esp
1776 .L039ofb_abort:
1777 popl %edi
1778 popl %esi
1779 popl %ebx
1780 popl %ebp
1781 ret
1782 .size padlock_ofb_encrypt,.-.L_padlock_ofb_encrypt_begin
1783 .globl padlock_ctr32_encrypt
1784 .type padlock_ctr32_encrypt,@function
1785 .align 16
1786 padlock_ctr32_encrypt:
1787 .L_padlock_ctr32_encrypt_begin:
1788 pushl %ebp
1789 pushl %ebx
1790 pushl %esi
1791 pushl %edi
1792 movl 20(%esp),%edi
1793 movl 24(%esp),%esi
1794 movl 28(%esp),%edx
1795 movl 32(%esp),%ecx
1796 testl $15,%edx
1797 jnz .L048ctr32_abort
1798 testl $15,%ecx
1799 jnz .L048ctr32_abort
1800 leal .Lpadlock_saved_context-.L049ctr32_pic_point,%eax
1801 pushfl
1802 cld
1803 call _padlock_verify_ctx
1804 .L049ctr32_pic_point:
1805 leal 16(%edx),%edx
1806 xorl %eax,%eax
1807 movq -16(%edx),%mm0
1808 movl $512,%ebx
1809 notl %eax
1810 leal -24(%esp),%ebp
1811 cmpl %ebx,%ecx
1812 cmovcl %ecx,%ebx
1813 andl %ebx,%eax
1814 movl %ecx,%ebx
1815 negl %eax
1816 andl $511,%ebx
1817 leal (%eax,%ebp,1),%esp
1818 movl $512,%eax
1819 cmovzl %eax,%ebx
1820 movl %ebp,%eax
1821 andl $-16,%ebp
1822 andl $-16,%esp
1823 movl %eax,16(%ebp)
1824 jmp .L050ctr32_loop
1825 .align 16
1826 .L050ctr32_loop:
1827 movl %edi,(%ebp)
1828 movl %esi,4(%ebp)
1829 movl %ecx,8(%ebp)
1830 movl %ebx,%ecx
1831 movl %ebx,12(%ebp)
1832 movl -4(%edx),%ecx
1833 xorl %edi,%edi
1834 movl -8(%edx),%eax
1835 .L051ctr32_prepare:
1836 movl %ecx,12(%esp,%edi,1)
1837 bswap %ecx
1838 movq %mm0,(%esp,%edi,1)
1839 incl %ecx
1840 movl %eax,8(%esp,%edi,1)
1841 bswap %ecx
1842 leal 16(%edi),%edi
1843 cmpl %ebx,%edi
1844 jb .L051ctr32_prepare
1845 movl %ecx,-4(%edx)
1846 leal (%esp),%esi
1847 leal (%esp),%edi
1848 movl %ebx,%ecx
1849 leal -16(%edx),%eax
1850 leal 16(%edx),%ebx
1851 shrl $4,%ecx
1852 .byte 243,15,167,200
1853 movl (%ebp),%edi
1854 movl 12(%ebp),%ebx
1855 movl 4(%ebp),%esi
1856 xorl %ecx,%ecx
1857 .L052ctr32_xor:
1858 movups (%esi,%ecx,1),%xmm1
1859 leal 16(%ecx),%ecx
1860 pxor -16(%esp,%ecx,1),%xmm1
1861 movups %xmm1,-16(%edi,%ecx,1)
1862 cmpl %ebx,%ecx
1863 jb .L052ctr32_xor
1864 movl 8(%ebp),%ecx
1865 addl %ebx,%edi
1866 addl %ebx,%esi
1867 subl %ebx,%ecx
1868 movl $512,%ebx
1869 jnz .L050ctr32_loop
1870 pxor %xmm0,%xmm0
1871 leal (%esp),%eax
1872 .L053ctr32_bzero:
1873 movaps %xmm0,(%eax)
1874 leal 16(%eax),%eax
1875 cmpl %eax,%ebp
1876 ja .L053ctr32_bzero
1877 .L054ctr32_done:
1878 movl 16(%ebp),%ebp
1879 leal 24(%ebp),%esp
1880 movl $1,%eax
1881 leal 4(%esp),%esp
1882 emms
1883 .L048ctr32_abort:
1884 popl %edi
1885 popl %esi
1886 popl %ebx
1887 popl %ebp
1888 ret
1889 .size padlock_ctr32_encrypt,.-.L_padlock_ctr32_encrypt_begin
1890 .globl padlock_xstore
1891 .type padlock_xstore,@function
1892 .align 16
1893 padlock_xstore:
1894 .L_padlock_xstore_begin:
1895 pushl %edi
1896 movl 8(%esp),%edi
1897 movl 12(%esp),%edx
1898 .byte 15,167,192
1899 popl %edi
1900 ret
1901 .size padlock_xstore,.-.L_padlock_xstore_begin
1902 .type _win32_segv_handler,@function
1903 .align 16
1904 _win32_segv_handler:
1905 movl $1,%eax
1906 movl 4(%esp),%edx
1907 movl 12(%esp),%ecx
1908 cmpl $3221225477,(%edx)
1909 jne .L055ret
1910 addl $4,184(%ecx)
1911 movl $0,%eax
1912 .L055ret:
1913 ret
1914 .size _win32_segv_handler,.-_win32_segv_handler
1915 .globl padlock_sha1_oneshot
1916 .type padlock_sha1_oneshot,@function
1917 .align 16
1918 padlock_sha1_oneshot:
1919 .L_padlock_sha1_oneshot_begin:
1920 pushl %edi
1921 pushl %esi
1922 xorl %eax,%eax
1923 movl 12(%esp),%edi
1924 movl 16(%esp),%esi
1925 movl 20(%esp),%ecx
1926 movl %esp,%edx
1927 addl $-128,%esp
1928 movups (%edi),%xmm0
1929 andl $-16,%esp
1930 movl 16(%edi),%eax
1931 movaps %xmm0,(%esp)
1932 movl %esp,%edi
1933 movl %eax,16(%esp)
1934 xorl %eax,%eax
1935 .byte 243,15,166,200
1936 movaps (%esp),%xmm0
1937 movl 16(%esp),%eax
1938 movl %edx,%esp
1939 movl 12(%esp),%edi
1940 movups %xmm0,(%edi)
1941 movl %eax,16(%edi)
1942 popl %esi
1943 popl %edi
1944 ret
1945 .size padlock_sha1_oneshot,.-.L_padlock_sha1_oneshot_begin
1946 .globl padlock_sha1_blocks
1947 .type padlock_sha1_blocks,@function
1948 .align 16
1949 padlock_sha1_blocks:
1950 .L_padlock_sha1_blocks_begin:
1951 pushl %edi
1952 pushl %esi
1953 movl 12(%esp),%edi
1954 movl 16(%esp),%esi
1955 movl %esp,%edx
1956 movl 20(%esp),%ecx
1957 addl $-128,%esp
1958 movups (%edi),%xmm0
1959 andl $-16,%esp
1960 movl 16(%edi),%eax
1961 movaps %xmm0,(%esp)
1962 movl %esp,%edi
1963 movl %eax,16(%esp)
1964 movl $-1,%eax
1965 .byte 243,15,166,200
1966 movaps (%esp),%xmm0
1967 movl 16(%esp),%eax
1968 movl %edx,%esp
1969 movl 12(%esp),%edi
1970 movups %xmm0,(%edi)
1971 movl %eax,16(%edi)
1972 popl %esi
1973 popl %edi
1974 ret
1975 .size padlock_sha1_blocks,.-.L_padlock_sha1_blocks_begin
1976 .globl padlock_sha256_oneshot
1977 .type padlock_sha256_oneshot,@function
1978 .align 16
1979 padlock_sha256_oneshot:
1980 .L_padlock_sha256_oneshot_begin:
1981 pushl %edi
1982 pushl %esi
1983 xorl %eax,%eax
1984 movl 12(%esp),%edi
1985 movl 16(%esp),%esi
1986 movl 20(%esp),%ecx
1987 movl %esp,%edx
1988 addl $-128,%esp
1989 movups (%edi),%xmm0
1990 andl $-16,%esp
1991 movups 16(%edi),%xmm1
1992 movaps %xmm0,(%esp)
1993 movl %esp,%edi
1994 movaps %xmm1,16(%esp)
1995 xorl %eax,%eax
1996 .byte 243,15,166,208
1997 movaps (%esp),%xmm0
1998 movaps 16(%esp),%xmm1
1999 movl %edx,%esp
2000 movl 12(%esp),%edi
2001 movups %xmm0,(%edi)
2002 movups %xmm1,16(%edi)
2003 popl %esi
2004 popl %edi
2005 ret
2006 .size padlock_sha256_oneshot,.-.L_padlock_sha256_oneshot_begin
2007 .globl padlock_sha256_blocks
2008 .type padlock_sha256_blocks,@function
2009 .align 16
2010 padlock_sha256_blocks:
2011 .L_padlock_sha256_blocks_begin:
2012 pushl %edi
2013 pushl %esi
2014 movl 12(%esp),%edi
2015 movl 16(%esp),%esi
2016 movl 20(%esp),%ecx
2017 movl %esp,%edx
2018 addl $-128,%esp
2019 movups (%edi),%xmm0
2020 andl $-16,%esp
2021 movups 16(%edi),%xmm1
2022 movaps %xmm0,(%esp)
2023 movl %esp,%edi
2024 movaps %xmm1,16(%esp)
2025 movl $-1,%eax
2026 .byte 243,15,166,208
2027 movaps (%esp),%xmm0
2028 movaps 16(%esp),%xmm1
2029 movl %edx,%esp
2030 movl 12(%esp),%edi
2031 movups %xmm0,(%edi)
2032 movups %xmm1,16(%edi)
2033 popl %esi
2034 popl %edi
2035 ret
2036 .size padlock_sha256_blocks,.-.L_padlock_sha256_blocks_begin
2037 .globl padlock_sha512_blocks
2038 .type padlock_sha512_blocks,@function
2039 .align 16
2040 padlock_sha512_blocks:
2041 .L_padlock_sha512_blocks_begin:
2042 pushl %edi
2043 pushl %esi
2044 movl 12(%esp),%edi
2045 movl 16(%esp),%esi
2046 movl 20(%esp),%ecx
2047 movl %esp,%edx
2048 addl $-128,%esp
2049 movups (%edi),%xmm0
2050 andl $-16,%esp
2051 movups 16(%edi),%xmm1
2052 movups 32(%edi),%xmm2
2053 movups 48(%edi),%xmm3
2054 movaps %xmm0,(%esp)
2055 movl %esp,%edi
2056 movaps %xmm1,16(%esp)
2057 movaps %xmm2,32(%esp)
2058 movaps %xmm3,48(%esp)
2059 .byte 243,15,166,224
2060 movaps (%esp),%xmm0
2061 movaps 16(%esp),%xmm1
2062 movaps 32(%esp),%xmm2
2063 movaps 48(%esp),%xmm3
2064 movl %edx,%esp
2065 movl 12(%esp),%edi
2066 movups %xmm0,(%edi)
2067 movups %xmm1,16(%edi)
2068 movups %xmm2,32(%edi)
2069 movups %xmm3,48(%edi)
2070 popl %esi
2071 popl %edi
2072 ret
2073 .size padlock_sha512_blocks,.-.L_padlock_sha512_blocks_begin
2074 .byte 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32
2075 .byte 109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65
2076 .byte 77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101
2077 .byte 110,115,115,108,46,111,114,103,62,0
2078 .align 16
2079 .data
2080 .align 4
2081 .Lpadlock_saved_context:
2082 .long 0
2083 #endif
Cache object: c30edb91f1c0aaca8b44cfe5b9b7c553
|