| // This file is generated from a similarly-named Perl script in the BoringSSL |
| // source tree. Do not edit by hand. |
| |
| #include <openssl/asm_base.h> |
| |
| #if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__APPLE__) |
| .text |
| .globl _bn_mul_comba8 |
| .private_extern _bn_mul_comba8 |
| .align 4 |
| _bn_mul_comba8: |
| L_bn_mul_comba8_begin: |
| pushl %esi |
| movl 12(%esp),%esi |
| pushl %edi |
| movl 20(%esp),%edi |
| pushl %ebp |
| pushl %ebx |
| xorl %ebx,%ebx |
| movl (%esi),%eax |
| xorl %ecx,%ecx |
| movl (%edi),%edx |
| # ################## Calculate word 0 |
| xorl %ebp,%ebp |
| # mul a[0]*b[0] |
| mull %edx |
| addl %eax,%ebx |
| movl 20(%esp),%eax |
| adcl %edx,%ecx |
| movl (%edi),%edx |
| adcl $0,%ebp |
| movl %ebx,(%eax) |
| movl 4(%esi),%eax |
| # saved r[0] |
| # ################## Calculate word 1 |
| xorl %ebx,%ebx |
| # mul a[1]*b[0] |
| mull %edx |
| addl %eax,%ecx |
| movl (%esi),%eax |
| adcl %edx,%ebp |
| movl 4(%edi),%edx |
| adcl $0,%ebx |
| # mul a[0]*b[1] |
| mull %edx |
| addl %eax,%ecx |
| movl 20(%esp),%eax |
| adcl %edx,%ebp |
| movl (%edi),%edx |
| adcl $0,%ebx |
| movl %ecx,4(%eax) |
| movl 8(%esi),%eax |
| # saved r[1] |
| # ################## Calculate word 2 |
| xorl %ecx,%ecx |
| # mul a[2]*b[0] |
| mull %edx |
| addl %eax,%ebp |
| movl 4(%esi),%eax |
| adcl %edx,%ebx |
| movl 4(%edi),%edx |
| adcl $0,%ecx |
| # mul a[1]*b[1] |
| mull %edx |
| addl %eax,%ebp |
| movl (%esi),%eax |
| adcl %edx,%ebx |
| movl 8(%edi),%edx |
| adcl $0,%ecx |
| # mul a[0]*b[2] |
| mull %edx |
| addl %eax,%ebp |
| movl 20(%esp),%eax |
| adcl %edx,%ebx |
| movl (%edi),%edx |
| adcl $0,%ecx |
| movl %ebp,8(%eax) |
| movl 12(%esi),%eax |
| # saved r[2] |
| # ################## Calculate word 3 |
| xorl %ebp,%ebp |
| # mul a[3]*b[0] |
| mull %edx |
| addl %eax,%ebx |
| movl 8(%esi),%eax |
| adcl %edx,%ecx |
| movl 4(%edi),%edx |
| adcl $0,%ebp |
| # mul a[2]*b[1] |
| mull %edx |
| addl %eax,%ebx |
| movl 4(%esi),%eax |
| adcl %edx,%ecx |
| movl 8(%edi),%edx |
| adcl $0,%ebp |
| # mul a[1]*b[2] |
| mull %edx |
| addl %eax,%ebx |
| movl (%esi),%eax |
| adcl %edx,%ecx |
| movl 12(%edi),%edx |
| adcl $0,%ebp |
| # mul a[0]*b[3] |
| mull %edx |
| addl %eax,%ebx |
| movl 20(%esp),%eax |
| adcl %edx,%ecx |
| movl (%edi),%edx |
| adcl $0,%ebp |
| movl %ebx,12(%eax) |
| movl 16(%esi),%eax |
| # saved r[3] |
| # ################## Calculate word 4 |
| xorl %ebx,%ebx |
| # mul a[4]*b[0] |
| mull %edx |
| addl %eax,%ecx |
| movl 12(%esi),%eax |
| adcl %edx,%ebp |
| movl 4(%edi),%edx |
| adcl $0,%ebx |
| # mul a[3]*b[1] |
| mull %edx |
| addl %eax,%ecx |
| movl 8(%esi),%eax |
| adcl %edx,%ebp |
| movl 8(%edi),%edx |
| adcl $0,%ebx |
| # mul a[2]*b[2] |
| mull %edx |
| addl %eax,%ecx |
| movl 4(%esi),%eax |
| adcl %edx,%ebp |
| movl 12(%edi),%edx |
| adcl $0,%ebx |
| # mul a[1]*b[3] |
| mull %edx |
| addl %eax,%ecx |
| movl (%esi),%eax |
| adcl %edx,%ebp |
| movl 16(%edi),%edx |
| adcl $0,%ebx |
| # mul a[0]*b[4] |
| mull %edx |
| addl %eax,%ecx |
| movl 20(%esp),%eax |
| adcl %edx,%ebp |
| movl (%edi),%edx |
| adcl $0,%ebx |
| movl %ecx,16(%eax) |
| movl 20(%esi),%eax |
| # saved r[4] |
| # ################## Calculate word 5 |
| xorl %ecx,%ecx |
| # mul a[5]*b[0] |
| mull %edx |
| addl %eax,%ebp |
| movl 16(%esi),%eax |
| adcl %edx,%ebx |
| movl 4(%edi),%edx |
| adcl $0,%ecx |
| # mul a[4]*b[1] |
| mull %edx |
| addl %eax,%ebp |
| movl 12(%esi),%eax |
| adcl %edx,%ebx |
| movl 8(%edi),%edx |
| adcl $0,%ecx |
| # mul a[3]*b[2] |
| mull %edx |
| addl %eax,%ebp |
| movl 8(%esi),%eax |
| adcl %edx,%ebx |
| movl 12(%edi),%edx |
| adcl $0,%ecx |
| # mul a[2]*b[3] |
| mull %edx |
| addl %eax,%ebp |
| movl 4(%esi),%eax |
| adcl %edx,%ebx |
| movl 16(%edi),%edx |
| adcl $0,%ecx |
| # mul a[1]*b[4] |
| mull %edx |
| addl %eax,%ebp |
| movl (%esi),%eax |
| adcl %edx,%ebx |
| movl 20(%edi),%edx |
| adcl $0,%ecx |
| # mul a[0]*b[5] |
| mull %edx |
| addl %eax,%ebp |
| movl 20(%esp),%eax |
| adcl %edx,%ebx |
| movl (%edi),%edx |
| adcl $0,%ecx |
| movl %ebp,20(%eax) |
| movl 24(%esi),%eax |
| # saved r[5] |
| # ################## Calculate word 6 |
| xorl %ebp,%ebp |
| # mul a[6]*b[0] |
| mull %edx |
| addl %eax,%ebx |
| movl 20(%esi),%eax |
| adcl %edx,%ecx |
| movl 4(%edi),%edx |
| adcl $0,%ebp |
| # mul a[5]*b[1] |
| mull %edx |
| addl %eax,%ebx |
| movl 16(%esi),%eax |
| adcl %edx,%ecx |
| movl 8(%edi),%edx |
| adcl $0,%ebp |
| # mul a[4]*b[2] |
| mull %edx |
| addl %eax,%ebx |
| movl 12(%esi),%eax |
| adcl %edx,%ecx |
| movl 12(%edi),%edx |
| adcl $0,%ebp |
| # mul a[3]*b[3] |
| mull %edx |
| addl %eax,%ebx |
| movl 8(%esi),%eax |
| adcl %edx,%ecx |
| movl 16(%edi),%edx |
| adcl $0,%ebp |
| # mul a[2]*b[4] |
| mull %edx |
| addl %eax,%ebx |
| movl 4(%esi),%eax |
| adcl %edx,%ecx |
| movl 20(%edi),%edx |
| adcl $0,%ebp |
| # mul a[1]*b[5] |
| mull %edx |
| addl %eax,%ebx |
| movl (%esi),%eax |
| adcl %edx,%ecx |
| movl 24(%edi),%edx |
| adcl $0,%ebp |
| # mul a[0]*b[6] |
| mull %edx |
| addl %eax,%ebx |
| movl 20(%esp),%eax |
| adcl %edx,%ecx |
| movl (%edi),%edx |
| adcl $0,%ebp |
| movl %ebx,24(%eax) |
| movl 28(%esi),%eax |
| # saved r[6] |
| # ################## Calculate word 7 |
| xorl %ebx,%ebx |
| # mul a[7]*b[0] |
| mull %edx |
| addl %eax,%ecx |
| movl 24(%esi),%eax |
| adcl %edx,%ebp |
| movl 4(%edi),%edx |
| adcl $0,%ebx |
| # mul a[6]*b[1] |
| mull %edx |
| addl %eax,%ecx |
| movl 20(%esi),%eax |
| adcl %edx,%ebp |
| movl 8(%edi),%edx |
| adcl $0,%ebx |
| # mul a[5]*b[2] |
| mull %edx |
| addl %eax,%ecx |
| movl 16(%esi),%eax |
| adcl %edx,%ebp |
| movl 12(%edi),%edx |
| adcl $0,%ebx |
| # mul a[4]*b[3] |
| mull %edx |
| addl %eax,%ecx |
| movl 12(%esi),%eax |
| adcl %edx,%ebp |
| movl 16(%edi),%edx |
| adcl $0,%ebx |
| # mul a[3]*b[4] |
| mull %edx |
| addl %eax,%ecx |
| movl 8(%esi),%eax |
| adcl %edx,%ebp |
| movl 20(%edi),%edx |
| adcl $0,%ebx |
| # mul a[2]*b[5] |
| mull %edx |
| addl %eax,%ecx |
| movl 4(%esi),%eax |
| adcl %edx,%ebp |
| movl 24(%edi),%edx |
| adcl $0,%ebx |
| # mul a[1]*b[6] |
| mull %edx |
| addl %eax,%ecx |
| movl (%esi),%eax |
| adcl %edx,%ebp |
| movl 28(%edi),%edx |
| adcl $0,%ebx |
| # mul a[0]*b[7] |
| mull %edx |
| addl %eax,%ecx |
| movl 20(%esp),%eax |
| adcl %edx,%ebp |
| movl 4(%edi),%edx |
| adcl $0,%ebx |
| movl %ecx,28(%eax) |
| movl 28(%esi),%eax |
| # saved r[7] |
| # ################## Calculate word 8 |
| xorl %ecx,%ecx |
| # mul a[7]*b[1] |
| mull %edx |
| addl %eax,%ebp |
| movl 24(%esi),%eax |
| adcl %edx,%ebx |
| movl 8(%edi),%edx |
| adcl $0,%ecx |
| # mul a[6]*b[2] |
| mull %edx |
| addl %eax,%ebp |
| movl 20(%esi),%eax |
| adcl %edx,%ebx |
| movl 12(%edi),%edx |
| adcl $0,%ecx |
| # mul a[5]*b[3] |
| mull %edx |
| addl %eax,%ebp |
| movl 16(%esi),%eax |
| adcl %edx,%ebx |
| movl 16(%edi),%edx |
| adcl $0,%ecx |
| # mul a[4]*b[4] |
| mull %edx |
| addl %eax,%ebp |
| movl 12(%esi),%eax |
| adcl %edx,%ebx |
| movl 20(%edi),%edx |
| adcl $0,%ecx |
| # mul a[3]*b[5] |
| mull %edx |
| addl %eax,%ebp |
| movl 8(%esi),%eax |
| adcl %edx,%ebx |
| movl 24(%edi),%edx |
| adcl $0,%ecx |
| # mul a[2]*b[6] |
| mull %edx |
| addl %eax,%ebp |
| movl 4(%esi),%eax |
| adcl %edx,%ebx |
| movl 28(%edi),%edx |
| adcl $0,%ecx |
| # mul a[1]*b[7] |
| mull %edx |
| addl %eax,%ebp |
| movl 20(%esp),%eax |
| adcl %edx,%ebx |
| movl 8(%edi),%edx |
| adcl $0,%ecx |
| movl %ebp,32(%eax) |
| movl 28(%esi),%eax |
| # saved r[8] |
| # ################## Calculate word 9 |
| xorl %ebp,%ebp |
| # mul a[7]*b[2] |
| mull %edx |
| addl %eax,%ebx |
| movl 24(%esi),%eax |
| adcl %edx,%ecx |
| movl 12(%edi),%edx |
| adcl $0,%ebp |
| # mul a[6]*b[3] |
| mull %edx |
| addl %eax,%ebx |
| movl 20(%esi),%eax |
| adcl %edx,%ecx |
| movl 16(%edi),%edx |
| adcl $0,%ebp |
| # mul a[5]*b[4] |
| mull %edx |
| addl %eax,%ebx |
| movl 16(%esi),%eax |
| adcl %edx,%ecx |
| movl 20(%edi),%edx |
| adcl $0,%ebp |
| # mul a[4]*b[5] |
| mull %edx |
| addl %eax,%ebx |
| movl 12(%esi),%eax |
| adcl %edx,%ecx |
| movl 24(%edi),%edx |
| adcl $0,%ebp |
| # mul a[3]*b[6] |
| mull %edx |
| addl %eax,%ebx |
| movl 8(%esi),%eax |
| adcl %edx,%ecx |
| movl 28(%edi),%edx |
| adcl $0,%ebp |
| # mul a[2]*b[7] |
| mull %edx |
| addl %eax,%ebx |
| movl 20(%esp),%eax |
| adcl %edx,%ecx |
| movl 12(%edi),%edx |
| adcl $0,%ebp |
| movl %ebx,36(%eax) |
| movl 28(%esi),%eax |
| # saved r[9] |
| # ################## Calculate word 10 |
| xorl %ebx,%ebx |
| # mul a[7]*b[3] |
| mull %edx |
| addl %eax,%ecx |
| movl 24(%esi),%eax |
| adcl %edx,%ebp |
| movl 16(%edi),%edx |
| adcl $0,%ebx |
| # mul a[6]*b[4] |
| mull %edx |
| addl %eax,%ecx |
| movl 20(%esi),%eax |
| adcl %edx,%ebp |
| movl 20(%edi),%edx |
| adcl $0,%ebx |
| # mul a[5]*b[5] |
| mull %edx |
| addl %eax,%ecx |
| movl 16(%esi),%eax |
| adcl %edx,%ebp |
| movl 24(%edi),%edx |
| adcl $0,%ebx |
| # mul a[4]*b[6] |
| mull %edx |
| addl %eax,%ecx |
| movl 12(%esi),%eax |
| adcl %edx,%ebp |
| movl 28(%edi),%edx |
| adcl $0,%ebx |
| # mul a[3]*b[7] |
| mull %edx |
| addl %eax,%ecx |
| movl 20(%esp),%eax |
| adcl %edx,%ebp |
| movl 16(%edi),%edx |
| adcl $0,%ebx |
| movl %ecx,40(%eax) |
| movl 28(%esi),%eax |
| # saved r[10] |
| # ################## Calculate word 11 |
| xorl %ecx,%ecx |
| # mul a[7]*b[4] |
| mull %edx |
| addl %eax,%ebp |
| movl 24(%esi),%eax |
| adcl %edx,%ebx |
| movl 20(%edi),%edx |
| adcl $0,%ecx |
| # mul a[6]*b[5] |
| mull %edx |
| addl %eax,%ebp |
| movl 20(%esi),%eax |
| adcl %edx,%ebx |
| movl 24(%edi),%edx |
| adcl $0,%ecx |
| # mul a[5]*b[6] |
| mull %edx |
| addl %eax,%ebp |
| movl 16(%esi),%eax |
| adcl %edx,%ebx |
| movl 28(%edi),%edx |
| adcl $0,%ecx |
| # mul a[4]*b[7] |
| mull %edx |
| addl %eax,%ebp |
| movl 20(%esp),%eax |
| adcl %edx,%ebx |
| movl 20(%edi),%edx |
| adcl $0,%ecx |
| movl %ebp,44(%eax) |
| movl 28(%esi),%eax |
| # saved r[11] |
| # ################## Calculate word 12 |
| xorl %ebp,%ebp |
| # mul a[7]*b[5] |
| mull %edx |
| addl %eax,%ebx |
| movl 24(%esi),%eax |
| adcl %edx,%ecx |
| movl 24(%edi),%edx |
| adcl $0,%ebp |
| # mul a[6]*b[6] |
| mull %edx |
| addl %eax,%ebx |
| movl 20(%esi),%eax |
| adcl %edx,%ecx |
| movl 28(%edi),%edx |
| adcl $0,%ebp |
| # mul a[5]*b[7] |
| mull %edx |
| addl %eax,%ebx |
| movl 20(%esp),%eax |
| adcl %edx,%ecx |
| movl 24(%edi),%edx |
| adcl $0,%ebp |
| movl %ebx,48(%eax) |
| movl 28(%esi),%eax |
| # saved r[12] |
| # ################## Calculate word 13 |
| xorl %ebx,%ebx |
| # mul a[7]*b[6] |
| mull %edx |
| addl %eax,%ecx |
| movl 24(%esi),%eax |
| adcl %edx,%ebp |
| movl 28(%edi),%edx |
| adcl $0,%ebx |
| # mul a[6]*b[7] |
| mull %edx |
| addl %eax,%ecx |
| movl 20(%esp),%eax |
| adcl %edx,%ebp |
| movl 28(%edi),%edx |
| adcl $0,%ebx |
| movl %ecx,52(%eax) |
| movl 28(%esi),%eax |
| # saved r[13] |
| # ################## Calculate word 14 |
| xorl %ecx,%ecx |
| # mul a[7]*b[7] |
| mull %edx |
| addl %eax,%ebp |
| movl 20(%esp),%eax |
| adcl %edx,%ebx |
| adcl $0,%ecx |
| movl %ebp,56(%eax) |
| # saved r[14] |
| # save r[15] |
| movl %ebx,60(%eax) |
| popl %ebx |
| popl %ebp |
| popl %edi |
| popl %esi |
| ret |
| .globl _bn_mul_comba4 |
| .private_extern _bn_mul_comba4 |
| .align 4 |
| _bn_mul_comba4: |
| L_bn_mul_comba4_begin: |
| pushl %esi |
| movl 12(%esp),%esi |
| pushl %edi |
| movl 20(%esp),%edi |
| pushl %ebp |
| pushl %ebx |
| xorl %ebx,%ebx |
| movl (%esi),%eax |
| xorl %ecx,%ecx |
| movl (%edi),%edx |
| # ################## Calculate word 0 |
| xorl %ebp,%ebp |
| # mul a[0]*b[0] |
| mull %edx |
| addl %eax,%ebx |
| movl 20(%esp),%eax |
| adcl %edx,%ecx |
| movl (%edi),%edx |
| adcl $0,%ebp |
| movl %ebx,(%eax) |
| movl 4(%esi),%eax |
| # saved r[0] |
| # ################## Calculate word 1 |
| xorl %ebx,%ebx |
| # mul a[1]*b[0] |
| mull %edx |
| addl %eax,%ecx |
| movl (%esi),%eax |
| adcl %edx,%ebp |
| movl 4(%edi),%edx |
| adcl $0,%ebx |
| # mul a[0]*b[1] |
| mull %edx |
| addl %eax,%ecx |
| movl 20(%esp),%eax |
| adcl %edx,%ebp |
| movl (%edi),%edx |
| adcl $0,%ebx |
| movl %ecx,4(%eax) |
| movl 8(%esi),%eax |
| # saved r[1] |
| # ################## Calculate word 2 |
| xorl %ecx,%ecx |
| # mul a[2]*b[0] |
| mull %edx |
| addl %eax,%ebp |
| movl 4(%esi),%eax |
| adcl %edx,%ebx |
| movl 4(%edi),%edx |
| adcl $0,%ecx |
| # mul a[1]*b[1] |
| mull %edx |
| addl %eax,%ebp |
| movl (%esi),%eax |
| adcl %edx,%ebx |
| movl 8(%edi),%edx |
| adcl $0,%ecx |
| # mul a[0]*b[2] |
| mull %edx |
| addl %eax,%ebp |
| movl 20(%esp),%eax |
| adcl %edx,%ebx |
| movl (%edi),%edx |
| adcl $0,%ecx |
| movl %ebp,8(%eax) |
| movl 12(%esi),%eax |
| # saved r[2] |
| # ################## Calculate word 3 |
| xorl %ebp,%ebp |
| # mul a[3]*b[0] |
| mull %edx |
| addl %eax,%ebx |
| movl 8(%esi),%eax |
| adcl %edx,%ecx |
| movl 4(%edi),%edx |
| adcl $0,%ebp |
| # mul a[2]*b[1] |
| mull %edx |
| addl %eax,%ebx |
| movl 4(%esi),%eax |
| adcl %edx,%ecx |
| movl 8(%edi),%edx |
| adcl $0,%ebp |
| # mul a[1]*b[2] |
| mull %edx |
| addl %eax,%ebx |
| movl (%esi),%eax |
| adcl %edx,%ecx |
| movl 12(%edi),%edx |
| adcl $0,%ebp |
| # mul a[0]*b[3] |
| mull %edx |
| addl %eax,%ebx |
| movl 20(%esp),%eax |
| adcl %edx,%ecx |
| movl 4(%edi),%edx |
| adcl $0,%ebp |
| movl %ebx,12(%eax) |
| movl 12(%esi),%eax |
| # saved r[3] |
| # ################## Calculate word 4 |
| xorl %ebx,%ebx |
| # mul a[3]*b[1] |
| mull %edx |
| addl %eax,%ecx |
| movl 8(%esi),%eax |
| adcl %edx,%ebp |
| movl 8(%edi),%edx |
| adcl $0,%ebx |
| # mul a[2]*b[2] |
| mull %edx |
| addl %eax,%ecx |
| movl 4(%esi),%eax |
| adcl %edx,%ebp |
| movl 12(%edi),%edx |
| adcl $0,%ebx |
| # mul a[1]*b[3] |
| mull %edx |
| addl %eax,%ecx |
| movl 20(%esp),%eax |
| adcl %edx,%ebp |
| movl 8(%edi),%edx |
| adcl $0,%ebx |
| movl %ecx,16(%eax) |
| movl 12(%esi),%eax |
| # saved r[4] |
| # ################## Calculate word 5 |
| xorl %ecx,%ecx |
| # mul a[3]*b[2] |
| mull %edx |
| addl %eax,%ebp |
| movl 8(%esi),%eax |
| adcl %edx,%ebx |
| movl 12(%edi),%edx |
| adcl $0,%ecx |
| # mul a[2]*b[3] |
| mull %edx |
| addl %eax,%ebp |
| movl 20(%esp),%eax |
| adcl %edx,%ebx |
| movl 12(%edi),%edx |
| adcl $0,%ecx |
| movl %ebp,20(%eax) |
| movl 12(%esi),%eax |
| # saved r[5] |
| # ################## Calculate word 6 |
| xorl %ebp,%ebp |
| # mul a[3]*b[3] |
| mull %edx |
| addl %eax,%ebx |
| movl 20(%esp),%eax |
| adcl %edx,%ecx |
| adcl $0,%ebp |
| movl %ebx,24(%eax) |
| # saved r[6] |
| # save r[7] |
| movl %ecx,28(%eax) |
| popl %ebx |
| popl %ebp |
| popl %edi |
| popl %esi |
| ret |
| .globl _bn_sqr_comba8 |
| .private_extern _bn_sqr_comba8 |
| .align 4 |
| _bn_sqr_comba8: |
| L_bn_sqr_comba8_begin: |
| pushl %esi |
| pushl %edi |
| pushl %ebp |
| pushl %ebx |
| movl 20(%esp),%edi |
| movl 24(%esp),%esi |
| xorl %ebx,%ebx |
| xorl %ecx,%ecx |
| movl (%esi),%eax |
| # ############### Calculate word 0 |
| xorl %ebp,%ebp |
| # sqr a[0]*a[0] |
| mull %eax |
| addl %eax,%ebx |
| adcl %edx,%ecx |
| movl (%esi),%edx |
| adcl $0,%ebp |
| movl %ebx,(%edi) |
| movl 4(%esi),%eax |
| # saved r[0] |
| # ############### Calculate word 1 |
| xorl %ebx,%ebx |
| # sqr a[1]*a[0] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebx |
| addl %eax,%ecx |
| adcl %edx,%ebp |
| movl 8(%esi),%eax |
| adcl $0,%ebx |
| movl %ecx,4(%edi) |
| movl (%esi),%edx |
| # saved r[1] |
| # ############### Calculate word 2 |
| xorl %ecx,%ecx |
| # sqr a[2]*a[0] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ecx |
| addl %eax,%ebp |
| adcl %edx,%ebx |
| movl 4(%esi),%eax |
| adcl $0,%ecx |
| # sqr a[1]*a[1] |
| mull %eax |
| addl %eax,%ebp |
| adcl %edx,%ebx |
| movl (%esi),%edx |
| adcl $0,%ecx |
| movl %ebp,8(%edi) |
| movl 12(%esi),%eax |
| # saved r[2] |
| # ############### Calculate word 3 |
| xorl %ebp,%ebp |
| # sqr a[3]*a[0] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebp |
| addl %eax,%ebx |
| adcl %edx,%ecx |
| movl 8(%esi),%eax |
| adcl $0,%ebp |
| movl 4(%esi),%edx |
| # sqr a[2]*a[1] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebp |
| addl %eax,%ebx |
| adcl %edx,%ecx |
| movl 16(%esi),%eax |
| adcl $0,%ebp |
| movl %ebx,12(%edi) |
| movl (%esi),%edx |
| # saved r[3] |
| # ############### Calculate word 4 |
| xorl %ebx,%ebx |
| # sqr a[4]*a[0] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebx |
| addl %eax,%ecx |
| adcl %edx,%ebp |
| movl 12(%esi),%eax |
| adcl $0,%ebx |
| movl 4(%esi),%edx |
| # sqr a[3]*a[1] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebx |
| addl %eax,%ecx |
| adcl %edx,%ebp |
| movl 8(%esi),%eax |
| adcl $0,%ebx |
| # sqr a[2]*a[2] |
| mull %eax |
| addl %eax,%ecx |
| adcl %edx,%ebp |
| movl (%esi),%edx |
| adcl $0,%ebx |
| movl %ecx,16(%edi) |
| movl 20(%esi),%eax |
| # saved r[4] |
| # ############### Calculate word 5 |
| xorl %ecx,%ecx |
| # sqr a[5]*a[0] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ecx |
| addl %eax,%ebp |
| adcl %edx,%ebx |
| movl 16(%esi),%eax |
| adcl $0,%ecx |
| movl 4(%esi),%edx |
| # sqr a[4]*a[1] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ecx |
| addl %eax,%ebp |
| adcl %edx,%ebx |
| movl 12(%esi),%eax |
| adcl $0,%ecx |
| movl 8(%esi),%edx |
| # sqr a[3]*a[2] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ecx |
| addl %eax,%ebp |
| adcl %edx,%ebx |
| movl 24(%esi),%eax |
| adcl $0,%ecx |
| movl %ebp,20(%edi) |
| movl (%esi),%edx |
| # saved r[5] |
| # ############### Calculate word 6 |
| xorl %ebp,%ebp |
| # sqr a[6]*a[0] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebp |
| addl %eax,%ebx |
| adcl %edx,%ecx |
| movl 20(%esi),%eax |
| adcl $0,%ebp |
| movl 4(%esi),%edx |
| # sqr a[5]*a[1] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebp |
| addl %eax,%ebx |
| adcl %edx,%ecx |
| movl 16(%esi),%eax |
| adcl $0,%ebp |
| movl 8(%esi),%edx |
| # sqr a[4]*a[2] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebp |
| addl %eax,%ebx |
| adcl %edx,%ecx |
| movl 12(%esi),%eax |
| adcl $0,%ebp |
| # sqr a[3]*a[3] |
| mull %eax |
| addl %eax,%ebx |
| adcl %edx,%ecx |
| movl (%esi),%edx |
| adcl $0,%ebp |
| movl %ebx,24(%edi) |
| movl 28(%esi),%eax |
| # saved r[6] |
| # ############### Calculate word 7 |
| xorl %ebx,%ebx |
| # sqr a[7]*a[0] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebx |
| addl %eax,%ecx |
| adcl %edx,%ebp |
| movl 24(%esi),%eax |
| adcl $0,%ebx |
| movl 4(%esi),%edx |
| # sqr a[6]*a[1] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebx |
| addl %eax,%ecx |
| adcl %edx,%ebp |
| movl 20(%esi),%eax |
| adcl $0,%ebx |
| movl 8(%esi),%edx |
| # sqr a[5]*a[2] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebx |
| addl %eax,%ecx |
| adcl %edx,%ebp |
| movl 16(%esi),%eax |
| adcl $0,%ebx |
| movl 12(%esi),%edx |
| # sqr a[4]*a[3] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebx |
| addl %eax,%ecx |
| adcl %edx,%ebp |
| movl 28(%esi),%eax |
| adcl $0,%ebx |
| movl %ecx,28(%edi) |
| movl 4(%esi),%edx |
| # saved r[7] |
| # ############### Calculate word 8 |
| xorl %ecx,%ecx |
| # sqr a[7]*a[1] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ecx |
| addl %eax,%ebp |
| adcl %edx,%ebx |
| movl 24(%esi),%eax |
| adcl $0,%ecx |
| movl 8(%esi),%edx |
| # sqr a[6]*a[2] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ecx |
| addl %eax,%ebp |
| adcl %edx,%ebx |
| movl 20(%esi),%eax |
| adcl $0,%ecx |
| movl 12(%esi),%edx |
| # sqr a[5]*a[3] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ecx |
| addl %eax,%ebp |
| adcl %edx,%ebx |
| movl 16(%esi),%eax |
| adcl $0,%ecx |
| # sqr a[4]*a[4] |
| mull %eax |
| addl %eax,%ebp |
| adcl %edx,%ebx |
| movl 8(%esi),%edx |
| adcl $0,%ecx |
| movl %ebp,32(%edi) |
| movl 28(%esi),%eax |
| # saved r[8] |
| # ############### Calculate word 9 |
| xorl %ebp,%ebp |
| # sqr a[7]*a[2] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebp |
| addl %eax,%ebx |
| adcl %edx,%ecx |
| movl 24(%esi),%eax |
| adcl $0,%ebp |
| movl 12(%esi),%edx |
| # sqr a[6]*a[3] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebp |
| addl %eax,%ebx |
| adcl %edx,%ecx |
| movl 20(%esi),%eax |
| adcl $0,%ebp |
| movl 16(%esi),%edx |
| # sqr a[5]*a[4] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebp |
| addl %eax,%ebx |
| adcl %edx,%ecx |
| movl 28(%esi),%eax |
| adcl $0,%ebp |
| movl %ebx,36(%edi) |
| movl 12(%esi),%edx |
| # saved r[9] |
| # ############### Calculate word 10 |
| xorl %ebx,%ebx |
| # sqr a[7]*a[3] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebx |
| addl %eax,%ecx |
| adcl %edx,%ebp |
| movl 24(%esi),%eax |
| adcl $0,%ebx |
| movl 16(%esi),%edx |
| # sqr a[6]*a[4] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebx |
| addl %eax,%ecx |
| adcl %edx,%ebp |
| movl 20(%esi),%eax |
| adcl $0,%ebx |
| # sqr a[5]*a[5] |
| mull %eax |
| addl %eax,%ecx |
| adcl %edx,%ebp |
| movl 16(%esi),%edx |
| adcl $0,%ebx |
| movl %ecx,40(%edi) |
| movl 28(%esi),%eax |
| # saved r[10] |
| # ############### Calculate word 11 |
| xorl %ecx,%ecx |
| # sqr a[7]*a[4] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ecx |
| addl %eax,%ebp |
| adcl %edx,%ebx |
| movl 24(%esi),%eax |
| adcl $0,%ecx |
| movl 20(%esi),%edx |
| # sqr a[6]*a[5] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ecx |
| addl %eax,%ebp |
| adcl %edx,%ebx |
| movl 28(%esi),%eax |
| adcl $0,%ecx |
| movl %ebp,44(%edi) |
| movl 20(%esi),%edx |
| # saved r[11] |
| # ############### Calculate word 12 |
| xorl %ebp,%ebp |
| # sqr a[7]*a[5] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebp |
| addl %eax,%ebx |
| adcl %edx,%ecx |
| movl 24(%esi),%eax |
| adcl $0,%ebp |
| # sqr a[6]*a[6] |
| mull %eax |
| addl %eax,%ebx |
| adcl %edx,%ecx |
| movl 24(%esi),%edx |
| adcl $0,%ebp |
| movl %ebx,48(%edi) |
| movl 28(%esi),%eax |
| # saved r[12] |
| # ############### Calculate word 13 |
| xorl %ebx,%ebx |
| # sqr a[7]*a[6] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebx |
| addl %eax,%ecx |
| adcl %edx,%ebp |
| movl 28(%esi),%eax |
| adcl $0,%ebx |
| movl %ecx,52(%edi) |
| # saved r[13] |
| # ############### Calculate word 14 |
| xorl %ecx,%ecx |
| # sqr a[7]*a[7] |
| mull %eax |
| addl %eax,%ebp |
| adcl %edx,%ebx |
| adcl $0,%ecx |
| movl %ebp,56(%edi) |
| # saved r[14] |
| movl %ebx,60(%edi) |
| popl %ebx |
| popl %ebp |
| popl %edi |
| popl %esi |
| ret |
| .globl _bn_sqr_comba4 |
| .private_extern _bn_sqr_comba4 |
| .align 4 |
| _bn_sqr_comba4: |
| L_bn_sqr_comba4_begin: |
| pushl %esi |
| pushl %edi |
| pushl %ebp |
| pushl %ebx |
| movl 20(%esp),%edi |
| movl 24(%esp),%esi |
| xorl %ebx,%ebx |
| xorl %ecx,%ecx |
| movl (%esi),%eax |
| # ############### Calculate word 0 |
| xorl %ebp,%ebp |
| # sqr a[0]*a[0] |
| mull %eax |
| addl %eax,%ebx |
| adcl %edx,%ecx |
| movl (%esi),%edx |
| adcl $0,%ebp |
| movl %ebx,(%edi) |
| movl 4(%esi),%eax |
| # saved r[0] |
| # ############### Calculate word 1 |
| xorl %ebx,%ebx |
| # sqr a[1]*a[0] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebx |
| addl %eax,%ecx |
| adcl %edx,%ebp |
| movl 8(%esi),%eax |
| adcl $0,%ebx |
| movl %ecx,4(%edi) |
| movl (%esi),%edx |
| # saved r[1] |
| # ############### Calculate word 2 |
| xorl %ecx,%ecx |
| # sqr a[2]*a[0] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ecx |
| addl %eax,%ebp |
| adcl %edx,%ebx |
| movl 4(%esi),%eax |
| adcl $0,%ecx |
| # sqr a[1]*a[1] |
| mull %eax |
| addl %eax,%ebp |
| adcl %edx,%ebx |
| movl (%esi),%edx |
| adcl $0,%ecx |
| movl %ebp,8(%edi) |
| movl 12(%esi),%eax |
| # saved r[2] |
| # ############### Calculate word 3 |
| xorl %ebp,%ebp |
| # sqr a[3]*a[0] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebp |
| addl %eax,%ebx |
| adcl %edx,%ecx |
| movl 8(%esi),%eax |
| adcl $0,%ebp |
| movl 4(%esi),%edx |
| # sqr a[2]*a[1] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebp |
| addl %eax,%ebx |
| adcl %edx,%ecx |
| movl 12(%esi),%eax |
| adcl $0,%ebp |
| movl %ebx,12(%edi) |
| movl 4(%esi),%edx |
| # saved r[3] |
| # ############### Calculate word 4 |
| xorl %ebx,%ebx |
| # sqr a[3]*a[1] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ebx |
| addl %eax,%ecx |
| adcl %edx,%ebp |
| movl 8(%esi),%eax |
| adcl $0,%ebx |
| # sqr a[2]*a[2] |
| mull %eax |
| addl %eax,%ecx |
| adcl %edx,%ebp |
| movl 8(%esi),%edx |
| adcl $0,%ebx |
| movl %ecx,16(%edi) |
| movl 12(%esi),%eax |
| # saved r[4] |
| # ############### Calculate word 5 |
| xorl %ecx,%ecx |
| # sqr a[3]*a[2] |
| mull %edx |
| addl %eax,%eax |
| adcl %edx,%edx |
| adcl $0,%ecx |
| addl %eax,%ebp |
| adcl %edx,%ebx |
| movl 12(%esi),%eax |
| adcl $0,%ecx |
| movl %ebp,20(%edi) |
| # saved r[5] |
| # ############### Calculate word 6 |
| xorl %ebp,%ebp |
| # sqr a[3]*a[3] |
| mull %eax |
| addl %eax,%ebx |
| adcl %edx,%ecx |
| adcl $0,%ebp |
| movl %ebx,24(%edi) |
| # saved r[6] |
| movl %ecx,28(%edi) |
| popl %ebx |
| popl %ebp |
| popl %edi |
| popl %esi |
| ret |
| #endif // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__APPLE__) |