| /* Run the C pre-processor over this file with one of the following defined |
| * ELF - elf object files, |
| * OUT - a.out object files, |
| * BSDI - BSDI style a.out object files |
| * SOL - Solaris style elf |
| */ |
| |
| #define TYPE(a,b) .type a,b |
| #define SIZE(a,b) .size a,b |
| |
| #if defined(OUT) || defined(BSDI) |
| #define bn_mul_comba8 _bn_mul_comba8 |
| #define bn_mul_comba4 _bn_mul_comba4 |
| #define bn_sqr_comba8 _bn_sqr_comba8 |
| #define bn_sqr_comba4 _bn_sqr_comba4 |
| |
| #endif |
| |
| #ifdef OUT |
| #define OK 1 |
| #define ALIGN 4 |
| #endif |
| |
| #ifdef BSDI |
| #define OK 1 |
| #define ALIGN 4 |
| #undef SIZE |
| #undef TYPE |
| #define SIZE(a,b) |
| #define TYPE(a,b) |
| #endif |
| |
| #if defined(ELF) || defined(SOL) |
| #define OK 1 |
| #define ALIGN 16 |
| #endif |
| |
| #ifndef OK |
| You need to define one of |
| ELF - elf systems - linux-elf, NetBSD and DG-UX |
| OUT - a.out systems - linux-a.out and FreeBSD |
| SOL - solaris systems, which are elf with strange comment lines |
| BSDI - a.out with a very primative version of as. |
| #endif |
| |
| /* Let the Assembler begin :-) */ |
| /* Don't even think of reading this code */ |
| /* It was automatically generated by bn-586.pl */ |
| /* Which is a perl program used to generate the x86 assember for */ |
| /* any of elf, a.out, BSDI,Win32, or Solaris */ |
| /* eric <eay@cryptsoft.com> */ |
| |
| .file "bn-586.s" |
| .version "01.01" |
| gcc2_compiled.: |
| .text |
| .align ALIGN |
| .globl bn_mul_comba8 |
| TYPE(bn_mul_comba8,@function) |
| bn_mul_comba8: |
| 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 |
| .bn_mul_comba8_end: |
| SIZE(bn_mul_comba8,.bn_mul_comba8_end-bn_mul_comba8) |
| .ident "desasm.pl" |
| .text |
| .align ALIGN |
| .globl bn_mul_comba4 |
| TYPE(bn_mul_comba4,@function) |
| bn_mul_comba4: |
| 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 |
| .bn_mul_comba4_end: |
| SIZE(bn_mul_comba4,.bn_mul_comba4_end-bn_mul_comba4) |
| .ident "desasm.pl" |
| .text |
| .align ALIGN |
| .globl bn_sqr_comba8 |
| TYPE(bn_sqr_comba8,@function) |
| bn_sqr_comba8: |
| 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 |
| .bn_sqr_comba8_end: |
| SIZE(bn_sqr_comba8,.bn_sqr_comba8_end-bn_sqr_comba8) |
| .ident "desasm.pl" |
| .text |
| .align ALIGN |
| .globl bn_sqr_comba4 |
| TYPE(bn_sqr_comba4,@function) |
| bn_sqr_comba4: |
| 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 |
| .bn_sqr_comba4_end: |
| SIZE(bn_sqr_comba4,.bn_sqr_comba4_end-bn_sqr_comba4) |
| .ident "desasm.pl" |