2 # Copyright (c) 2011-2012, Andy Polyakov <appro@openssl.org>
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions
9 # * Redistributions of source code must retain copyright notices,
10 # this list of conditions and the following disclaimer.
12 # * Redistributions in binary form must reproduce the above
13 # copyright notice, this list of conditions and the following
14 # disclaimer in the documentation and/or other materials
15 # provided with the distribution.
17 # * Neither the name of the Andy Polyakov nor the names of its
18 # copyright holder and contributors may be used to endorse or
19 # promote products derived from this software without specific
20 # prior written permission.
22 # ALTERNATIVELY, provided that this notice is retained in full, this
23 # product may be distributed under the terms of the GNU General Public
24 # License (GPL), in which case the provisions of the GPL apply INSTEAD OF
27 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
28 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
29 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
30 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
31 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
32 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
33 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
34 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
35 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
36 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
37 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39 # *** This file is auto-generated ***
42 .file "devel/perlasm/e_padlock-x86.s"
44 .globl _padlock_capability
47 L_padlock_capability_begin:
93 .globl _padlock_key_bswap
96 L_padlock_key_bswap_begin:
107 .globl _padlock_verify_context
109 _padlock_verify_context:
110 L_padlock_verify_context_begin:
112 leal Lpadlock_saved_context-L002verify_pic_point,%eax
114 call __padlock_verify_ctx
115 L002verify_pic_point:
119 __padlock_verify_ctx:
130 .globl _padlock_reload_key
133 L_padlock_reload_key_begin:
137 .globl _padlock_aes_block
140 L_padlock_aes_block_begin:
155 .globl _padlock_ecb_encrypt
157 _padlock_ecb_encrypt:
158 L_padlock_ecb_encrypt_begin:
171 leal Lpadlock_saved_context-L005ecb_pic_point,%eax
174 call __padlock_verify_ctx
197 leal (%eax,%ebp,1),%esp
216 jz L008ecb_unaligned_tail
228 jz L009ecb_inp_aligned
242 jz L010ecb_out_aligned
258 L008ecb_unaligned_tail:
289 leal (%esi,%ecx,1),%ebp
298 jz L015ecb_aligned_tail
305 L015ecb_aligned_tail:
332 .globl _padlock_cbc_encrypt
334 _padlock_cbc_encrypt:
335 L_padlock_cbc_encrypt_begin:
348 leal Lpadlock_saved_context-L017cbc_pic_point,%eax
351 call __padlock_verify_ctx
374 leal (%eax,%ebp,1),%esp
393 jz L020cbc_unaligned_tail
405 jz L021cbc_inp_aligned
417 movaps %xmm0,-16(%edx)
421 jz L022cbc_out_aligned
437 L020cbc_unaligned_tail:
468 leal (%esi,%ecx,1),%ebp
477 jz L027cbc_aligned_tail
483 movaps %xmm0,-16(%edx)
486 L027cbc_aligned_tail:
513 .globl _padlock_cfb_encrypt
515 _padlock_cfb_encrypt:
516 L_padlock_cfb_encrypt_begin:
529 leal Lpadlock_saved_context-L029cfb_pic_point,%eax
532 call __padlock_verify_ctx
555 leal (%eax,%ebp,1),%esp
573 jz L032cfb_inp_aligned
585 movaps %xmm0,-16(%edx)
589 jz L033cfb_out_aligned
623 movaps %xmm0,-16(%edx)
633 .globl _padlock_ofb_encrypt
635 _padlock_ofb_encrypt:
636 L_padlock_ofb_encrypt_begin:
649 leal Lpadlock_saved_context-L038ofb_pic_point,%eax
652 call __padlock_verify_ctx
675 leal (%eax,%ebp,1),%esp
693 jz L041ofb_inp_aligned
705 movaps %xmm0,-16(%edx)
709 jz L042ofb_out_aligned
743 movaps %xmm0,-16(%edx)
753 .globl _padlock_ctr32_encrypt
755 _padlock_ctr32_encrypt:
756 L_padlock_ctr32_encrypt_begin:
769 leal Lpadlock_saved_context-L047ctr32_pic_point,%eax
772 call __padlock_verify_ctx
786 leal (%eax,%ebp,1),%esp
805 movl %ecx,12(%esp,%edi,1)
807 movq %mm0,(%esp,%edi,1)
809 movl %eax,8(%esp,%edi,1)
827 movups (%esi,%ecx,1),%xmm1
829 pxor -16(%esp,%ecx,1),%xmm1
830 movups %xmm1,-16(%edi,%ecx,1)
858 .globl _padlock_xstore
861 L_padlock_xstore_begin:
869 __win32_segv_handler:
873 cmpl $3221225477,(%edx)
879 .globl _padlock_sha1_oneshot
881 _padlock_sha1_oneshot:
882 L_padlock_sha1_oneshot_begin:
908 .globl _padlock_sha1_blocks
910 _padlock_sha1_blocks:
911 L_padlock_sha1_blocks_begin:
936 .globl _padlock_sha256_oneshot
938 _padlock_sha256_oneshot:
939 L_padlock_sha256_oneshot_begin:
950 movups 16(%edi),%xmm1
953 movaps %xmm1,16(%esp)
957 movaps 16(%esp),%xmm1
961 movups %xmm1,16(%edi)
965 .globl _padlock_sha256_blocks
967 _padlock_sha256_blocks:
968 L_padlock_sha256_blocks_begin:
978 movups 16(%edi),%xmm1
981 movaps %xmm1,16(%esp)
985 movaps 16(%esp),%xmm1
989 movups %xmm1,16(%edi)
993 .globl _padlock_sha512_blocks
995 _padlock_sha512_blocks:
996 L_padlock_sha512_blocks_begin:
1006 movups 16(%edi),%xmm1
1007 movups 32(%edi),%xmm2
1008 movups 48(%edi),%xmm3
1011 movaps %xmm1,16(%esp)
1012 movaps %xmm2,32(%esp)
1013 movaps %xmm3,48(%esp)
1014 .byte 243,15,166,224
1016 movaps 16(%esp),%xmm1
1017 movaps 32(%esp),%xmm2
1018 movaps 48(%esp),%xmm3
1022 movups %xmm1,16(%edi)
1023 movups %xmm2,32(%edi)
1024 movups %xmm3,48(%edi)
1028 .byte 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32
1029 .byte 109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65
1030 .byte 77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101
1031 .byte 110,115,115,108,46,111,114,103,62,0
1035 Lpadlock_saved_context: