| # 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 16 |
| .globl bn_mul_add_words |
| .type bn_mul_add_words,@function |
| bn_mul_add_words: |
| pushl %ebp |
| pushl %ebx |
| pushl %esi |
| pushl %edi |
| |
| |
| xorl %esi, %esi |
| movl 20(%esp), %edi |
| movl 28(%esp), %ecx |
| movl 24(%esp), %ebx |
| andl $4294967288, %ecx |
| movl 32(%esp), %ebp |
| pushl %ecx |
| jz .L000maw_finish |
| .L001maw_loop: |
| movl %ecx, (%esp) |
| # Round 0 |
| movl (%ebx), %eax |
| mull %ebp |
| addl %esi, %eax |
| movl (%edi), %esi |
| adcl $0, %edx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, (%edi) |
| movl %edx, %esi |
| # Round 4 |
| movl 4(%ebx), %eax |
| mull %ebp |
| addl %esi, %eax |
| movl 4(%edi), %esi |
| adcl $0, %edx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 4(%edi) |
| movl %edx, %esi |
| # Round 8 |
| movl 8(%ebx), %eax |
| mull %ebp |
| addl %esi, %eax |
| movl 8(%edi), %esi |
| adcl $0, %edx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 8(%edi) |
| movl %edx, %esi |
| # Round 12 |
| movl 12(%ebx), %eax |
| mull %ebp |
| addl %esi, %eax |
| movl 12(%edi), %esi |
| adcl $0, %edx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 12(%edi) |
| movl %edx, %esi |
| # Round 16 |
| movl 16(%ebx), %eax |
| mull %ebp |
| addl %esi, %eax |
| movl 16(%edi), %esi |
| adcl $0, %edx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 16(%edi) |
| movl %edx, %esi |
| # Round 20 |
| movl 20(%ebx), %eax |
| mull %ebp |
| addl %esi, %eax |
| movl 20(%edi), %esi |
| adcl $0, %edx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 20(%edi) |
| movl %edx, %esi |
| # Round 24 |
| movl 24(%ebx), %eax |
| mull %ebp |
| addl %esi, %eax |
| movl 24(%edi), %esi |
| adcl $0, %edx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 24(%edi) |
| movl %edx, %esi |
| # Round 28 |
| movl 28(%ebx), %eax |
| mull %ebp |
| addl %esi, %eax |
| movl 28(%edi), %esi |
| adcl $0, %edx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 28(%edi) |
| movl %edx, %esi |
| |
| movl (%esp), %ecx |
| addl $32, %ebx |
| addl $32, %edi |
| subl $8, %ecx |
| jnz .L001maw_loop |
| .L000maw_finish: |
| movl 32(%esp), %ecx |
| andl $7, %ecx |
| jnz .L002maw_finish2 |
| jmp .L003maw_end |
| .align 16 |
| .L002maw_finish2: |
| # Tail Round 0 |
| movl (%ebx), %eax |
| mull %ebp |
| addl %esi, %eax |
| movl (%edi), %esi |
| adcl $0, %edx |
| addl %esi, %eax |
| adcl $0, %edx |
| decl %ecx |
| movl %eax, (%edi) |
| movl %edx, %esi |
| jz .L003maw_end |
| # Tail Round 1 |
| movl 4(%ebx), %eax |
| mull %ebp |
| addl %esi, %eax |
| movl 4(%edi), %esi |
| adcl $0, %edx |
| addl %esi, %eax |
| adcl $0, %edx |
| decl %ecx |
| movl %eax, 4(%edi) |
| movl %edx, %esi |
| jz .L003maw_end |
| # Tail Round 2 |
| movl 8(%ebx), %eax |
| mull %ebp |
| addl %esi, %eax |
| movl 8(%edi), %esi |
| adcl $0, %edx |
| addl %esi, %eax |
| adcl $0, %edx |
| decl %ecx |
| movl %eax, 8(%edi) |
| movl %edx, %esi |
| jz .L003maw_end |
| # Tail Round 3 |
| movl 12(%ebx), %eax |
| mull %ebp |
| addl %esi, %eax |
| movl 12(%edi), %esi |
| adcl $0, %edx |
| addl %esi, %eax |
| adcl $0, %edx |
| decl %ecx |
| movl %eax, 12(%edi) |
| movl %edx, %esi |
| jz .L003maw_end |
| # Tail Round 4 |
| movl 16(%ebx), %eax |
| mull %ebp |
| addl %esi, %eax |
| movl 16(%edi), %esi |
| adcl $0, %edx |
| addl %esi, %eax |
| adcl $0, %edx |
| decl %ecx |
| movl %eax, 16(%edi) |
| movl %edx, %esi |
| jz .L003maw_end |
| # Tail Round 5 |
| movl 20(%ebx), %eax |
| mull %ebp |
| addl %esi, %eax |
| movl 20(%edi), %esi |
| adcl $0, %edx |
| addl %esi, %eax |
| adcl $0, %edx |
| decl %ecx |
| movl %eax, 20(%edi) |
| movl %edx, %esi |
| jz .L003maw_end |
| # Tail Round 6 |
| movl 24(%ebx), %eax |
| mull %ebp |
| addl %esi, %eax |
| movl 24(%edi), %esi |
| adcl $0, %edx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 24(%edi) |
| movl %edx, %esi |
| .L003maw_end: |
| movl %esi, %eax |
| popl %ecx |
| popl %edi |
| popl %esi |
| popl %ebx |
| popl %ebp |
| ret |
| .bn_mul_add_words_end: |
| .size bn_mul_add_words,.bn_mul_add_words_end-bn_mul_add_words |
| .ident "bn_mul_add_words" |
| .text |
| .align 16 |
| .globl bn_mul_words |
| .type bn_mul_words,@function |
| bn_mul_words: |
| pushl %ebp |
| pushl %ebx |
| pushl %esi |
| pushl %edi |
| |
| |
| xorl %esi, %esi |
| movl 20(%esp), %edi |
| movl 24(%esp), %ebx |
| movl 28(%esp), %ebp |
| movl 32(%esp), %ecx |
| andl $4294967288, %ebp |
| jz .L004mw_finish |
| .L005mw_loop: |
| # Round 0 |
| movl (%ebx), %eax |
| mull %ecx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, (%edi) |
| movl %edx, %esi |
| # Round 4 |
| movl 4(%ebx), %eax |
| mull %ecx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 4(%edi) |
| movl %edx, %esi |
| # Round 8 |
| movl 8(%ebx), %eax |
| mull %ecx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 8(%edi) |
| movl %edx, %esi |
| # Round 12 |
| movl 12(%ebx), %eax |
| mull %ecx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 12(%edi) |
| movl %edx, %esi |
| # Round 16 |
| movl 16(%ebx), %eax |
| mull %ecx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 16(%edi) |
| movl %edx, %esi |
| # Round 20 |
| movl 20(%ebx), %eax |
| mull %ecx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 20(%edi) |
| movl %edx, %esi |
| # Round 24 |
| movl 24(%ebx), %eax |
| mull %ecx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 24(%edi) |
| movl %edx, %esi |
| # Round 28 |
| movl 28(%ebx), %eax |
| mull %ecx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 28(%edi) |
| movl %edx, %esi |
| |
| addl $32, %ebx |
| addl $32, %edi |
| subl $8, %ebp |
| jz .L004mw_finish |
| jmp .L005mw_loop |
| .L004mw_finish: |
| movl 28(%esp), %ebp |
| andl $7, %ebp |
| jnz .L006mw_finish2 |
| jmp .L007mw_end |
| .align 16 |
| .L006mw_finish2: |
| # Tail Round 0 |
| movl (%ebx), %eax |
| mull %ecx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, (%edi) |
| movl %edx, %esi |
| decl %ebp |
| jz .L007mw_end |
| # Tail Round 1 |
| movl 4(%ebx), %eax |
| mull %ecx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 4(%edi) |
| movl %edx, %esi |
| decl %ebp |
| jz .L007mw_end |
| # Tail Round 2 |
| movl 8(%ebx), %eax |
| mull %ecx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 8(%edi) |
| movl %edx, %esi |
| decl %ebp |
| jz .L007mw_end |
| # Tail Round 3 |
| movl 12(%ebx), %eax |
| mull %ecx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 12(%edi) |
| movl %edx, %esi |
| decl %ebp |
| jz .L007mw_end |
| # Tail Round 4 |
| movl 16(%ebx), %eax |
| mull %ecx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 16(%edi) |
| movl %edx, %esi |
| decl %ebp |
| jz .L007mw_end |
| # Tail Round 5 |
| movl 20(%ebx), %eax |
| mull %ecx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 20(%edi) |
| movl %edx, %esi |
| decl %ebp |
| jz .L007mw_end |
| # Tail Round 6 |
| movl 24(%ebx), %eax |
| mull %ecx |
| addl %esi, %eax |
| adcl $0, %edx |
| movl %eax, 24(%edi) |
| movl %edx, %esi |
| .L007mw_end: |
| movl %esi, %eax |
| popl %edi |
| popl %esi |
| popl %ebx |
| popl %ebp |
| ret |
| .bn_mul_words_end: |
| .size bn_mul_words,.bn_mul_words_end-bn_mul_words |
| .ident "bn_mul_words" |
| .text |
| .align 16 |
| .globl bn_sqr_words |
| .type bn_sqr_words,@function |
| bn_sqr_words: |
| pushl %ebp |
| pushl %ebx |
| pushl %esi |
| pushl %edi |
| |
| |
| movl 20(%esp), %esi |
| movl 24(%esp), %edi |
| movl 28(%esp), %ebx |
| andl $4294967288, %ebx |
| jz .L008sw_finish |
| .L009sw_loop: |
| # Round 0 |
| movl (%edi), %eax |
| mull %eax |
| movl %eax, (%esi) |
| movl %edx, 4(%esi) |
| # Round 4 |
| movl 4(%edi), %eax |
| mull %eax |
| movl %eax, 8(%esi) |
| movl %edx, 12(%esi) |
| # Round 8 |
| movl 8(%edi), %eax |
| mull %eax |
| movl %eax, 16(%esi) |
| movl %edx, 20(%esi) |
| # Round 12 |
| movl 12(%edi), %eax |
| mull %eax |
| movl %eax, 24(%esi) |
| movl %edx, 28(%esi) |
| # Round 16 |
| movl 16(%edi), %eax |
| mull %eax |
| movl %eax, 32(%esi) |
| movl %edx, 36(%esi) |
| # Round 20 |
| movl 20(%edi), %eax |
| mull %eax |
| movl %eax, 40(%esi) |
| movl %edx, 44(%esi) |
| # Round 24 |
| movl 24(%edi), %eax |
| mull %eax |
| movl %eax, 48(%esi) |
| movl %edx, 52(%esi) |
| # Round 28 |
| movl 28(%edi), %eax |
| mull %eax |
| movl %eax, 56(%esi) |
| movl %edx, 60(%esi) |
| |
| addl $32, %edi |
| addl $64, %esi |
| subl $8, %ebx |
| jnz .L009sw_loop |
| .L008sw_finish: |
| movl 28(%esp), %ebx |
| andl $7, %ebx |
| jz .L010sw_end |
| # Tail Round 0 |
| movl (%edi), %eax |
| mull %eax |
| movl %eax, (%esi) |
| decl %ebx |
| movl %edx, 4(%esi) |
| jz .L010sw_end |
| # Tail Round 1 |
| movl 4(%edi), %eax |
| mull %eax |
| movl %eax, 8(%esi) |
| decl %ebx |
| movl %edx, 12(%esi) |
| jz .L010sw_end |
| # Tail Round 2 |
| movl 8(%edi), %eax |
| mull %eax |
| movl %eax, 16(%esi) |
| decl %ebx |
| movl %edx, 20(%esi) |
| jz .L010sw_end |
| # Tail Round 3 |
| movl 12(%edi), %eax |
| mull %eax |
| movl %eax, 24(%esi) |
| decl %ebx |
| movl %edx, 28(%esi) |
| jz .L010sw_end |
| # Tail Round 4 |
| movl 16(%edi), %eax |
| mull %eax |
| movl %eax, 32(%esi) |
| decl %ebx |
| movl %edx, 36(%esi) |
| jz .L010sw_end |
| # Tail Round 5 |
| movl 20(%edi), %eax |
| mull %eax |
| movl %eax, 40(%esi) |
| decl %ebx |
| movl %edx, 44(%esi) |
| jz .L010sw_end |
| # Tail Round 6 |
| movl 24(%edi), %eax |
| mull %eax |
| movl %eax, 48(%esi) |
| movl %edx, 52(%esi) |
| .L010sw_end: |
| popl %edi |
| popl %esi |
| popl %ebx |
| popl %ebp |
| ret |
| .bn_sqr_words_end: |
| .size bn_sqr_words,.bn_sqr_words_end-bn_sqr_words |
| .ident "bn_sqr_words" |
| .text |
| .align 16 |
| .globl bn_div64 |
| .type bn_div64,@function |
| bn_div64: |
| pushl %ebp |
| pushl %ebx |
| pushl %esi |
| pushl %edi |
| |
| movl 20(%esp), %edx |
| movl 24(%esp), %eax |
| movl 28(%esp), %ebx |
| divl %ebx |
| popl %edi |
| popl %esi |
| popl %ebx |
| popl %ebp |
| ret |
| .bn_div64_end: |
| .size bn_div64,.bn_div64_end-bn_div64 |
| .ident "bn_div64" |
| .text |
| .align 16 |
| .globl bn_add_words |
| .type bn_add_words,@function |
| bn_add_words: |
| pushl %ebp |
| pushl %ebx |
| pushl %esi |
| pushl %edi |
| |
| |
| movl 20(%esp), %ebx |
| movl 24(%esp), %esi |
| movl 28(%esp), %edi |
| movl 32(%esp), %ebp |
| xorl %eax, %eax |
| andl $4294967288, %ebp |
| jz .L011aw_finish |
| .L012aw_loop: |
| # Round 0 |
| movl (%esi), %ecx |
| movl (%edi), %edx |
| addl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| addl %edx, %ecx |
| adcl $0, %eax |
| movl %ecx, (%ebx) |
| # Round 1 |
| movl 4(%esi), %ecx |
| movl 4(%edi), %edx |
| addl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| addl %edx, %ecx |
| adcl $0, %eax |
| movl %ecx, 4(%ebx) |
| # Round 2 |
| movl 8(%esi), %ecx |
| movl 8(%edi), %edx |
| addl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| addl %edx, %ecx |
| adcl $0, %eax |
| movl %ecx, 8(%ebx) |
| # Round 3 |
| movl 12(%esi), %ecx |
| movl 12(%edi), %edx |
| addl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| addl %edx, %ecx |
| adcl $0, %eax |
| movl %ecx, 12(%ebx) |
| # Round 4 |
| movl 16(%esi), %ecx |
| movl 16(%edi), %edx |
| addl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| addl %edx, %ecx |
| adcl $0, %eax |
| movl %ecx, 16(%ebx) |
| # Round 5 |
| movl 20(%esi), %ecx |
| movl 20(%edi), %edx |
| addl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| addl %edx, %ecx |
| adcl $0, %eax |
| movl %ecx, 20(%ebx) |
| # Round 6 |
| movl 24(%esi), %ecx |
| movl 24(%edi), %edx |
| addl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| addl %edx, %ecx |
| adcl $0, %eax |
| movl %ecx, 24(%ebx) |
| # Round 7 |
| movl 28(%esi), %ecx |
| movl 28(%edi), %edx |
| addl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| addl %edx, %ecx |
| adcl $0, %eax |
| movl %ecx, 28(%ebx) |
| |
| addl $32, %esi |
| addl $32, %edi |
| addl $32, %ebx |
| subl $8, %ebp |
| jnz .L012aw_loop |
| .L011aw_finish: |
| movl 32(%esp), %ebp |
| andl $7, %ebp |
| jz .L013aw_end |
| # Tail Round 0 |
| movl (%esi), %ecx |
| movl (%edi), %edx |
| addl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| addl %edx, %ecx |
| adcl $0, %eax |
| decl %ebp |
| movl %ecx, (%ebx) |
| jz .L013aw_end |
| # Tail Round 1 |
| movl 4(%esi), %ecx |
| movl 4(%edi), %edx |
| addl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| addl %edx, %ecx |
| adcl $0, %eax |
| decl %ebp |
| movl %ecx, 4(%ebx) |
| jz .L013aw_end |
| # Tail Round 2 |
| movl 8(%esi), %ecx |
| movl 8(%edi), %edx |
| addl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| addl %edx, %ecx |
| adcl $0, %eax |
| decl %ebp |
| movl %ecx, 8(%ebx) |
| jz .L013aw_end |
| # Tail Round 3 |
| movl 12(%esi), %ecx |
| movl 12(%edi), %edx |
| addl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| addl %edx, %ecx |
| adcl $0, %eax |
| decl %ebp |
| movl %ecx, 12(%ebx) |
| jz .L013aw_end |
| # Tail Round 4 |
| movl 16(%esi), %ecx |
| movl 16(%edi), %edx |
| addl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| addl %edx, %ecx |
| adcl $0, %eax |
| decl %ebp |
| movl %ecx, 16(%ebx) |
| jz .L013aw_end |
| # Tail Round 5 |
| movl 20(%esi), %ecx |
| movl 20(%edi), %edx |
| addl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| addl %edx, %ecx |
| adcl $0, %eax |
| decl %ebp |
| movl %ecx, 20(%ebx) |
| jz .L013aw_end |
| # Tail Round 6 |
| movl 24(%esi), %ecx |
| movl 24(%edi), %edx |
| addl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| addl %edx, %ecx |
| adcl $0, %eax |
| movl %ecx, 24(%ebx) |
| .L013aw_end: |
| popl %edi |
| popl %esi |
| popl %ebx |
| popl %ebp |
| ret |
| .bn_add_words_end: |
| .size bn_add_words,.bn_add_words_end-bn_add_words |
| .ident "bn_add_words" |
| .text |
| .align 16 |
| .globl bn_sub_words |
| .type bn_sub_words,@function |
| bn_sub_words: |
| pushl %ebp |
| pushl %ebx |
| pushl %esi |
| pushl %edi |
| |
| |
| movl 20(%esp), %ebx |
| movl 24(%esp), %esi |
| movl 28(%esp), %edi |
| movl 32(%esp), %ebp |
| xorl %eax, %eax |
| andl $4294967288, %ebp |
| jz .L014aw_finish |
| .L015aw_loop: |
| # Round 0 |
| movl (%esi), %ecx |
| movl (%edi), %edx |
| subl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| subl %edx, %ecx |
| adcl $0, %eax |
| movl %ecx, (%ebx) |
| # Round 1 |
| movl 4(%esi), %ecx |
| movl 4(%edi), %edx |
| subl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| subl %edx, %ecx |
| adcl $0, %eax |
| movl %ecx, 4(%ebx) |
| # Round 2 |
| movl 8(%esi), %ecx |
| movl 8(%edi), %edx |
| subl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| subl %edx, %ecx |
| adcl $0, %eax |
| movl %ecx, 8(%ebx) |
| # Round 3 |
| movl 12(%esi), %ecx |
| movl 12(%edi), %edx |
| subl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| subl %edx, %ecx |
| adcl $0, %eax |
| movl %ecx, 12(%ebx) |
| # Round 4 |
| movl 16(%esi), %ecx |
| movl 16(%edi), %edx |
| subl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| subl %edx, %ecx |
| adcl $0, %eax |
| movl %ecx, 16(%ebx) |
| # Round 5 |
| movl 20(%esi), %ecx |
| movl 20(%edi), %edx |
| subl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| subl %edx, %ecx |
| adcl $0, %eax |
| movl %ecx, 20(%ebx) |
| # Round 6 |
| movl 24(%esi), %ecx |
| movl 24(%edi), %edx |
| subl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| subl %edx, %ecx |
| adcl $0, %eax |
| movl %ecx, 24(%ebx) |
| # Round 7 |
| movl 28(%esi), %ecx |
| movl 28(%edi), %edx |
| subl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| subl %edx, %ecx |
| adcl $0, %eax |
| movl %ecx, 28(%ebx) |
| |
| addl $32, %esi |
| addl $32, %edi |
| addl $32, %ebx |
| subl $8, %ebp |
| jnz .L015aw_loop |
| .L014aw_finish: |
| movl 32(%esp), %ebp |
| andl $7, %ebp |
| jz .L016aw_end |
| # Tail Round 0 |
| movl (%esi), %ecx |
| movl (%edi), %edx |
| subl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| subl %edx, %ecx |
| adcl $0, %eax |
| decl %ebp |
| movl %ecx, (%ebx) |
| jz .L016aw_end |
| # Tail Round 1 |
| movl 4(%esi), %ecx |
| movl 4(%edi), %edx |
| subl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| subl %edx, %ecx |
| adcl $0, %eax |
| decl %ebp |
| movl %ecx, 4(%ebx) |
| jz .L016aw_end |
| # Tail Round 2 |
| movl 8(%esi), %ecx |
| movl 8(%edi), %edx |
| subl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| subl %edx, %ecx |
| adcl $0, %eax |
| decl %ebp |
| movl %ecx, 8(%ebx) |
| jz .L016aw_end |
| # Tail Round 3 |
| movl 12(%esi), %ecx |
| movl 12(%edi), %edx |
| subl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| subl %edx, %ecx |
| adcl $0, %eax |
| decl %ebp |
| movl %ecx, 12(%ebx) |
| jz .L016aw_end |
| # Tail Round 4 |
| movl 16(%esi), %ecx |
| movl 16(%edi), %edx |
| subl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| subl %edx, %ecx |
| adcl $0, %eax |
| decl %ebp |
| movl %ecx, 16(%ebx) |
| jz .L016aw_end |
| # Tail Round 5 |
| movl 20(%esi), %ecx |
| movl 20(%edi), %edx |
| subl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| subl %edx, %ecx |
| adcl $0, %eax |
| decl %ebp |
| movl %ecx, 20(%ebx) |
| jz .L016aw_end |
| # Tail Round 6 |
| movl 24(%esi), %ecx |
| movl 24(%edi), %edx |
| subl %eax, %ecx |
| movl $0, %eax |
| adcl %eax, %eax |
| subl %edx, %ecx |
| adcl $0, %eax |
| movl %ecx, 24(%ebx) |
| .L016aw_end: |
| popl %edi |
| popl %esi |
| popl %ebx |
| popl %ebp |
| ret |
| .bn_sub_words_end: |
| .size bn_sub_words,.bn_sub_words_end-bn_sub_words |
| .ident "bn_sub_words" |
| .text |
| .align 16 |
| .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 16 |
| .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 16 |
| .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 16 |
| .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" |