michael@38: / Don't even think of reading this code michael@38: / It was automatically generated by x86.pl michael@38: / Which is a perl program used to generate the x86 assember for michael@38: / any of elf, a.out, BSDI, Win32, gaswin (for GNU as on Win32) or Solaris michael@38: / eric michael@38: michael@38: .file "x86.s" michael@38: .version "01.01" michael@38: gcc2_compiled.: michael@38: .text michael@38: .align 16 michael@38: .globl bn_mul_add_words michael@38: .type bn_mul_add_words,@function michael@38: bn_mul_add_words: michael@38: pushl %ebp michael@38: pushl %ebx michael@38: pushl %esi michael@38: pushl %edi michael@38: michael@38: michael@38: xorl %esi, %esi michael@38: movl 20(%esp), %edi michael@38: movl 28(%esp), %ecx michael@38: movl 24(%esp), %ebx michael@38: andl $4294967288, %ecx michael@38: movl 32(%esp), %ebp michael@38: pushl %ecx michael@38: jz .L000maw_finish michael@38: .L001maw_loop: michael@38: movl %ecx, (%esp) michael@38: / Round 0 michael@38: movl (%ebx), %eax michael@38: mull %ebp michael@38: addl %esi, %eax michael@38: movl (%edi), %esi michael@38: adcl $0, %edx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, (%edi) michael@38: movl %edx, %esi michael@38: / Round 4 michael@38: movl 4(%ebx), %eax michael@38: mull %ebp michael@38: addl %esi, %eax michael@38: movl 4(%edi), %esi michael@38: adcl $0, %edx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 4(%edi) michael@38: movl %edx, %esi michael@38: / Round 8 michael@38: movl 8(%ebx), %eax michael@38: mull %ebp michael@38: addl %esi, %eax michael@38: movl 8(%edi), %esi michael@38: adcl $0, %edx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 8(%edi) michael@38: movl %edx, %esi michael@38: / Round 12 michael@38: movl 12(%ebx), %eax michael@38: mull %ebp michael@38: addl %esi, %eax michael@38: movl 12(%edi), %esi michael@38: adcl $0, %edx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 12(%edi) michael@38: movl %edx, %esi michael@38: / Round 16 michael@38: movl 16(%ebx), %eax michael@38: mull %ebp michael@38: addl %esi, %eax michael@38: movl 16(%edi), %esi michael@38: adcl $0, %edx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 16(%edi) michael@38: movl %edx, %esi michael@38: / Round 20 michael@38: movl 20(%ebx), %eax michael@38: mull %ebp michael@38: addl %esi, %eax michael@38: movl 20(%edi), %esi michael@38: adcl $0, %edx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 20(%edi) michael@38: movl %edx, %esi michael@38: / Round 24 michael@38: movl 24(%ebx), %eax michael@38: mull %ebp michael@38: addl %esi, %eax michael@38: movl 24(%edi), %esi michael@38: adcl $0, %edx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 24(%edi) michael@38: movl %edx, %esi michael@38: / Round 28 michael@38: movl 28(%ebx), %eax michael@38: mull %ebp michael@38: addl %esi, %eax michael@38: movl 28(%edi), %esi michael@38: adcl $0, %edx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 28(%edi) michael@38: movl %edx, %esi michael@38: michael@38: movl (%esp), %ecx michael@38: addl $32, %ebx michael@38: addl $32, %edi michael@38: subl $8, %ecx michael@38: jnz .L001maw_loop michael@38: .L000maw_finish: michael@38: movl 32(%esp), %ecx michael@38: andl $7, %ecx michael@38: jnz .L002maw_finish2 michael@38: jmp .L003maw_end michael@38: .align 16 michael@38: .L002maw_finish2: michael@38: / Tail Round 0 michael@38: movl (%ebx), %eax michael@38: mull %ebp michael@38: addl %esi, %eax michael@38: movl (%edi), %esi michael@38: adcl $0, %edx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: decl %ecx michael@38: movl %eax, (%edi) michael@38: movl %edx, %esi michael@38: jz .L003maw_end michael@38: / Tail Round 1 michael@38: movl 4(%ebx), %eax michael@38: mull %ebp michael@38: addl %esi, %eax michael@38: movl 4(%edi), %esi michael@38: adcl $0, %edx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: decl %ecx michael@38: movl %eax, 4(%edi) michael@38: movl %edx, %esi michael@38: jz .L003maw_end michael@38: / Tail Round 2 michael@38: movl 8(%ebx), %eax michael@38: mull %ebp michael@38: addl %esi, %eax michael@38: movl 8(%edi), %esi michael@38: adcl $0, %edx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: decl %ecx michael@38: movl %eax, 8(%edi) michael@38: movl %edx, %esi michael@38: jz .L003maw_end michael@38: / Tail Round 3 michael@38: movl 12(%ebx), %eax michael@38: mull %ebp michael@38: addl %esi, %eax michael@38: movl 12(%edi), %esi michael@38: adcl $0, %edx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: decl %ecx michael@38: movl %eax, 12(%edi) michael@38: movl %edx, %esi michael@38: jz .L003maw_end michael@38: / Tail Round 4 michael@38: movl 16(%ebx), %eax michael@38: mull %ebp michael@38: addl %esi, %eax michael@38: movl 16(%edi), %esi michael@38: adcl $0, %edx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: decl %ecx michael@38: movl %eax, 16(%edi) michael@38: movl %edx, %esi michael@38: jz .L003maw_end michael@38: / Tail Round 5 michael@38: movl 20(%ebx), %eax michael@38: mull %ebp michael@38: addl %esi, %eax michael@38: movl 20(%edi), %esi michael@38: adcl $0, %edx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: decl %ecx michael@38: movl %eax, 20(%edi) michael@38: movl %edx, %esi michael@38: jz .L003maw_end michael@38: / Tail Round 6 michael@38: movl 24(%ebx), %eax michael@38: mull %ebp michael@38: addl %esi, %eax michael@38: movl 24(%edi), %esi michael@38: adcl $0, %edx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 24(%edi) michael@38: movl %edx, %esi michael@38: .L003maw_end: michael@38: movl %esi, %eax michael@38: popl %ecx michael@38: popl %edi michael@38: popl %esi michael@38: popl %ebx michael@38: popl %ebp michael@38: ret michael@38: .bn_mul_add_words_end: michael@38: .size bn_mul_add_words,.bn_mul_add_words_end-bn_mul_add_words michael@38: .ident "bn_mul_add_words" michael@38: .text michael@38: .align 16 michael@38: .globl bn_mul_words michael@38: .type bn_mul_words,@function michael@38: bn_mul_words: michael@38: pushl %ebp michael@38: pushl %ebx michael@38: pushl %esi michael@38: pushl %edi michael@38: michael@38: michael@38: xorl %esi, %esi michael@38: movl 20(%esp), %edi michael@38: movl 24(%esp), %ebx michael@38: movl 28(%esp), %ebp michael@38: movl 32(%esp), %ecx michael@38: andl $4294967288, %ebp michael@38: jz .L004mw_finish michael@38: .L005mw_loop: michael@38: / Round 0 michael@38: movl (%ebx), %eax michael@38: mull %ecx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, (%edi) michael@38: movl %edx, %esi michael@38: / Round 4 michael@38: movl 4(%ebx), %eax michael@38: mull %ecx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 4(%edi) michael@38: movl %edx, %esi michael@38: / Round 8 michael@38: movl 8(%ebx), %eax michael@38: mull %ecx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 8(%edi) michael@38: movl %edx, %esi michael@38: / Round 12 michael@38: movl 12(%ebx), %eax michael@38: mull %ecx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 12(%edi) michael@38: movl %edx, %esi michael@38: / Round 16 michael@38: movl 16(%ebx), %eax michael@38: mull %ecx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 16(%edi) michael@38: movl %edx, %esi michael@38: / Round 20 michael@38: movl 20(%ebx), %eax michael@38: mull %ecx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 20(%edi) michael@38: movl %edx, %esi michael@38: / Round 24 michael@38: movl 24(%ebx), %eax michael@38: mull %ecx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 24(%edi) michael@38: movl %edx, %esi michael@38: / Round 28 michael@38: movl 28(%ebx), %eax michael@38: mull %ecx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 28(%edi) michael@38: movl %edx, %esi michael@38: michael@38: addl $32, %ebx michael@38: addl $32, %edi michael@38: subl $8, %ebp michael@38: jz .L004mw_finish michael@38: jmp .L005mw_loop michael@38: .L004mw_finish: michael@38: movl 28(%esp), %ebp michael@38: andl $7, %ebp michael@38: jnz .L006mw_finish2 michael@38: jmp .L007mw_end michael@38: .align 16 michael@38: .L006mw_finish2: michael@38: / Tail Round 0 michael@38: movl (%ebx), %eax michael@38: mull %ecx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, (%edi) michael@38: movl %edx, %esi michael@38: decl %ebp michael@38: jz .L007mw_end michael@38: / Tail Round 1 michael@38: movl 4(%ebx), %eax michael@38: mull %ecx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 4(%edi) michael@38: movl %edx, %esi michael@38: decl %ebp michael@38: jz .L007mw_end michael@38: / Tail Round 2 michael@38: movl 8(%ebx), %eax michael@38: mull %ecx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 8(%edi) michael@38: movl %edx, %esi michael@38: decl %ebp michael@38: jz .L007mw_end michael@38: / Tail Round 3 michael@38: movl 12(%ebx), %eax michael@38: mull %ecx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 12(%edi) michael@38: movl %edx, %esi michael@38: decl %ebp michael@38: jz .L007mw_end michael@38: / Tail Round 4 michael@38: movl 16(%ebx), %eax michael@38: mull %ecx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 16(%edi) michael@38: movl %edx, %esi michael@38: decl %ebp michael@38: jz .L007mw_end michael@38: / Tail Round 5 michael@38: movl 20(%ebx), %eax michael@38: mull %ecx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 20(%edi) michael@38: movl %edx, %esi michael@38: decl %ebp michael@38: jz .L007mw_end michael@38: / Tail Round 6 michael@38: movl 24(%ebx), %eax michael@38: mull %ecx michael@38: addl %esi, %eax michael@38: adcl $0, %edx michael@38: movl %eax, 24(%edi) michael@38: movl %edx, %esi michael@38: .L007mw_end: michael@38: movl %esi, %eax michael@38: popl %edi michael@38: popl %esi michael@38: popl %ebx michael@38: popl %ebp michael@38: ret michael@38: .bn_mul_words_end: michael@38: .size bn_mul_words,.bn_mul_words_end-bn_mul_words michael@38: .ident "bn_mul_words" michael@38: .text michael@38: .align 16 michael@38: .globl bn_sqr_words michael@38: .type bn_sqr_words,@function michael@38: bn_sqr_words: michael@38: pushl %ebp michael@38: pushl %ebx michael@38: pushl %esi michael@38: pushl %edi michael@38: michael@38: michael@38: movl 20(%esp), %esi michael@38: movl 24(%esp), %edi michael@38: movl 28(%esp), %ebx michael@38: andl $4294967288, %ebx michael@38: jz .L008sw_finish michael@38: .L009sw_loop: michael@38: / Round 0 michael@38: movl (%edi), %eax michael@38: mull %eax michael@38: movl %eax, (%esi) michael@38: movl %edx, 4(%esi) michael@38: / Round 4 michael@38: movl 4(%edi), %eax michael@38: mull %eax michael@38: movl %eax, 8(%esi) michael@38: movl %edx, 12(%esi) michael@38: / Round 8 michael@38: movl 8(%edi), %eax michael@38: mull %eax michael@38: movl %eax, 16(%esi) michael@38: movl %edx, 20(%esi) michael@38: / Round 12 michael@38: movl 12(%edi), %eax michael@38: mull %eax michael@38: movl %eax, 24(%esi) michael@38: movl %edx, 28(%esi) michael@38: / Round 16 michael@38: movl 16(%edi), %eax michael@38: mull %eax michael@38: movl %eax, 32(%esi) michael@38: movl %edx, 36(%esi) michael@38: / Round 20 michael@38: movl 20(%edi), %eax michael@38: mull %eax michael@38: movl %eax, 40(%esi) michael@38: movl %edx, 44(%esi) michael@38: / Round 24 michael@38: movl 24(%edi), %eax michael@38: mull %eax michael@38: movl %eax, 48(%esi) michael@38: movl %edx, 52(%esi) michael@38: / Round 28 michael@38: movl 28(%edi), %eax michael@38: mull %eax michael@38: movl %eax, 56(%esi) michael@38: movl %edx, 60(%esi) michael@38: michael@38: addl $32, %edi michael@38: addl $64, %esi michael@38: subl $8, %ebx michael@38: jnz .L009sw_loop michael@38: .L008sw_finish: michael@38: movl 28(%esp), %ebx michael@38: andl $7, %ebx michael@38: jz .L010sw_end michael@38: / Tail Round 0 michael@38: movl (%edi), %eax michael@38: mull %eax michael@38: movl %eax, (%esi) michael@38: decl %ebx michael@38: movl %edx, 4(%esi) michael@38: jz .L010sw_end michael@38: / Tail Round 1 michael@38: movl 4(%edi), %eax michael@38: mull %eax michael@38: movl %eax, 8(%esi) michael@38: decl %ebx michael@38: movl %edx, 12(%esi) michael@38: jz .L010sw_end michael@38: / Tail Round 2 michael@38: movl 8(%edi), %eax michael@38: mull %eax michael@38: movl %eax, 16(%esi) michael@38: decl %ebx michael@38: movl %edx, 20(%esi) michael@38: jz .L010sw_end michael@38: / Tail Round 3 michael@38: movl 12(%edi), %eax michael@38: mull %eax michael@38: movl %eax, 24(%esi) michael@38: decl %ebx michael@38: movl %edx, 28(%esi) michael@38: jz .L010sw_end michael@38: / Tail Round 4 michael@38: movl 16(%edi), %eax michael@38: mull %eax michael@38: movl %eax, 32(%esi) michael@38: decl %ebx michael@38: movl %edx, 36(%esi) michael@38: jz .L010sw_end michael@38: / Tail Round 5 michael@38: movl 20(%edi), %eax michael@38: mull %eax michael@38: movl %eax, 40(%esi) michael@38: decl %ebx michael@38: movl %edx, 44(%esi) michael@38: jz .L010sw_end michael@38: / Tail Round 6 michael@38: movl 24(%edi), %eax michael@38: mull %eax michael@38: movl %eax, 48(%esi) michael@38: movl %edx, 52(%esi) michael@38: .L010sw_end: michael@38: popl %edi michael@38: popl %esi michael@38: popl %ebx michael@38: popl %ebp michael@38: ret michael@38: .bn_sqr_words_end: michael@38: .size bn_sqr_words,.bn_sqr_words_end-bn_sqr_words michael@38: .ident "bn_sqr_words" michael@38: .text michael@38: .align 16 michael@38: .globl bn_div_words michael@38: .type bn_div_words,@function michael@38: bn_div_words: michael@38: pushl %ebp michael@38: pushl %ebx michael@38: pushl %esi michael@38: pushl %edi michael@38: michael@38: movl 20(%esp), %edx michael@38: movl 24(%esp), %eax michael@38: movl 28(%esp), %ebx michael@38: divl %ebx michael@38: popl %edi michael@38: popl %esi michael@38: popl %ebx michael@38: popl %ebp michael@38: ret michael@38: .bn_div_words_end: michael@38: .size bn_div_words,.bn_div_words_end-bn_div_words michael@38: .ident "bn_div_words" michael@38: .text michael@38: .align 16 michael@38: .globl bn_add_words michael@38: .type bn_add_words,@function michael@38: bn_add_words: michael@38: pushl %ebp michael@38: pushl %ebx michael@38: pushl %esi michael@38: pushl %edi michael@38: michael@38: michael@38: movl 20(%esp), %ebx michael@38: movl 24(%esp), %esi michael@38: movl 28(%esp), %edi michael@38: movl 32(%esp), %ebp michael@38: xorl %eax, %eax michael@38: andl $4294967288, %ebp michael@38: jz .L011aw_finish michael@38: .L012aw_loop: michael@38: / Round 0 michael@38: movl (%esi), %ecx michael@38: movl (%edi), %edx michael@38: addl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: addl %edx, %ecx michael@38: adcl $0, %eax michael@38: movl %ecx, (%ebx) michael@38: / Round 1 michael@38: movl 4(%esi), %ecx michael@38: movl 4(%edi), %edx michael@38: addl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: addl %edx, %ecx michael@38: adcl $0, %eax michael@38: movl %ecx, 4(%ebx) michael@38: / Round 2 michael@38: movl 8(%esi), %ecx michael@38: movl 8(%edi), %edx michael@38: addl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: addl %edx, %ecx michael@38: adcl $0, %eax michael@38: movl %ecx, 8(%ebx) michael@38: / Round 3 michael@38: movl 12(%esi), %ecx michael@38: movl 12(%edi), %edx michael@38: addl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: addl %edx, %ecx michael@38: adcl $0, %eax michael@38: movl %ecx, 12(%ebx) michael@38: / Round 4 michael@38: movl 16(%esi), %ecx michael@38: movl 16(%edi), %edx michael@38: addl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: addl %edx, %ecx michael@38: adcl $0, %eax michael@38: movl %ecx, 16(%ebx) michael@38: / Round 5 michael@38: movl 20(%esi), %ecx michael@38: movl 20(%edi), %edx michael@38: addl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: addl %edx, %ecx michael@38: adcl $0, %eax michael@38: movl %ecx, 20(%ebx) michael@38: / Round 6 michael@38: movl 24(%esi), %ecx michael@38: movl 24(%edi), %edx michael@38: addl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: addl %edx, %ecx michael@38: adcl $0, %eax michael@38: movl %ecx, 24(%ebx) michael@38: / Round 7 michael@38: movl 28(%esi), %ecx michael@38: movl 28(%edi), %edx michael@38: addl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: addl %edx, %ecx michael@38: adcl $0, %eax michael@38: movl %ecx, 28(%ebx) michael@38: michael@38: addl $32, %esi michael@38: addl $32, %edi michael@38: addl $32, %ebx michael@38: subl $8, %ebp michael@38: jnz .L012aw_loop michael@38: .L011aw_finish: michael@38: movl 32(%esp), %ebp michael@38: andl $7, %ebp michael@38: jz .L013aw_end michael@38: / Tail Round 0 michael@38: movl (%esi), %ecx michael@38: movl (%edi), %edx michael@38: addl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: addl %edx, %ecx michael@38: adcl $0, %eax michael@38: decl %ebp michael@38: movl %ecx, (%ebx) michael@38: jz .L013aw_end michael@38: / Tail Round 1 michael@38: movl 4(%esi), %ecx michael@38: movl 4(%edi), %edx michael@38: addl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: addl %edx, %ecx michael@38: adcl $0, %eax michael@38: decl %ebp michael@38: movl %ecx, 4(%ebx) michael@38: jz .L013aw_end michael@38: / Tail Round 2 michael@38: movl 8(%esi), %ecx michael@38: movl 8(%edi), %edx michael@38: addl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: addl %edx, %ecx michael@38: adcl $0, %eax michael@38: decl %ebp michael@38: movl %ecx, 8(%ebx) michael@38: jz .L013aw_end michael@38: / Tail Round 3 michael@38: movl 12(%esi), %ecx michael@38: movl 12(%edi), %edx michael@38: addl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: addl %edx, %ecx michael@38: adcl $0, %eax michael@38: decl %ebp michael@38: movl %ecx, 12(%ebx) michael@38: jz .L013aw_end michael@38: / Tail Round 4 michael@38: movl 16(%esi), %ecx michael@38: movl 16(%edi), %edx michael@38: addl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: addl %edx, %ecx michael@38: adcl $0, %eax michael@38: decl %ebp michael@38: movl %ecx, 16(%ebx) michael@38: jz .L013aw_end michael@38: / Tail Round 5 michael@38: movl 20(%esi), %ecx michael@38: movl 20(%edi), %edx michael@38: addl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: addl %edx, %ecx michael@38: adcl $0, %eax michael@38: decl %ebp michael@38: movl %ecx, 20(%ebx) michael@38: jz .L013aw_end michael@38: / Tail Round 6 michael@38: movl 24(%esi), %ecx michael@38: movl 24(%edi), %edx michael@38: addl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: addl %edx, %ecx michael@38: adcl $0, %eax michael@38: movl %ecx, 24(%ebx) michael@38: .L013aw_end: michael@38: popl %edi michael@38: popl %esi michael@38: popl %ebx michael@38: popl %ebp michael@38: ret michael@38: .bn_add_words_end: michael@38: .size bn_add_words,.bn_add_words_end-bn_add_words michael@38: .ident "bn_add_words" michael@38: .text michael@38: .align 16 michael@38: .globl bn_sub_words michael@38: .type bn_sub_words,@function michael@38: bn_sub_words: michael@38: pushl %ebp michael@38: pushl %ebx michael@38: pushl %esi michael@38: pushl %edi michael@38: michael@38: michael@38: movl 20(%esp), %ebx michael@38: movl 24(%esp), %esi michael@38: movl 28(%esp), %edi michael@38: movl 32(%esp), %ebp michael@38: xorl %eax, %eax michael@38: andl $4294967288, %ebp michael@38: jz .L014aw_finish michael@38: .L015aw_loop: michael@38: / Round 0 michael@38: movl (%esi), %ecx michael@38: movl (%edi), %edx michael@38: subl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: subl %edx, %ecx michael@38: adcl $0, %eax michael@38: movl %ecx, (%ebx) michael@38: / Round 1 michael@38: movl 4(%esi), %ecx michael@38: movl 4(%edi), %edx michael@38: subl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: subl %edx, %ecx michael@38: adcl $0, %eax michael@38: movl %ecx, 4(%ebx) michael@38: / Round 2 michael@38: movl 8(%esi), %ecx michael@38: movl 8(%edi), %edx michael@38: subl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: subl %edx, %ecx michael@38: adcl $0, %eax michael@38: movl %ecx, 8(%ebx) michael@38: / Round 3 michael@38: movl 12(%esi), %ecx michael@38: movl 12(%edi), %edx michael@38: subl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: subl %edx, %ecx michael@38: adcl $0, %eax michael@38: movl %ecx, 12(%ebx) michael@38: / Round 4 michael@38: movl 16(%esi), %ecx michael@38: movl 16(%edi), %edx michael@38: subl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: subl %edx, %ecx michael@38: adcl $0, %eax michael@38: movl %ecx, 16(%ebx) michael@38: / Round 5 michael@38: movl 20(%esi), %ecx michael@38: movl 20(%edi), %edx michael@38: subl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: subl %edx, %ecx michael@38: adcl $0, %eax michael@38: movl %ecx, 20(%ebx) michael@38: / Round 6 michael@38: movl 24(%esi), %ecx michael@38: movl 24(%edi), %edx michael@38: subl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: subl %edx, %ecx michael@38: adcl $0, %eax michael@38: movl %ecx, 24(%ebx) michael@38: / Round 7 michael@38: movl 28(%esi), %ecx michael@38: movl 28(%edi), %edx michael@38: subl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: subl %edx, %ecx michael@38: adcl $0, %eax michael@38: movl %ecx, 28(%ebx) michael@38: michael@38: addl $32, %esi michael@38: addl $32, %edi michael@38: addl $32, %ebx michael@38: subl $8, %ebp michael@38: jnz .L015aw_loop michael@38: .L014aw_finish: michael@38: movl 32(%esp), %ebp michael@38: andl $7, %ebp michael@38: jz .L016aw_end michael@38: / Tail Round 0 michael@38: movl (%esi), %ecx michael@38: movl (%edi), %edx michael@38: subl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: subl %edx, %ecx michael@38: adcl $0, %eax michael@38: decl %ebp michael@38: movl %ecx, (%ebx) michael@38: jz .L016aw_end michael@38: / Tail Round 1 michael@38: movl 4(%esi), %ecx michael@38: movl 4(%edi), %edx michael@38: subl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: subl %edx, %ecx michael@38: adcl $0, %eax michael@38: decl %ebp michael@38: movl %ecx, 4(%ebx) michael@38: jz .L016aw_end michael@38: / Tail Round 2 michael@38: movl 8(%esi), %ecx michael@38: movl 8(%edi), %edx michael@38: subl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: subl %edx, %ecx michael@38: adcl $0, %eax michael@38: decl %ebp michael@38: movl %ecx, 8(%ebx) michael@38: jz .L016aw_end michael@38: / Tail Round 3 michael@38: movl 12(%esi), %ecx michael@38: movl 12(%edi), %edx michael@38: subl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: subl %edx, %ecx michael@38: adcl $0, %eax michael@38: decl %ebp michael@38: movl %ecx, 12(%ebx) michael@38: jz .L016aw_end michael@38: / Tail Round 4 michael@38: movl 16(%esi), %ecx michael@38: movl 16(%edi), %edx michael@38: subl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: subl %edx, %ecx michael@38: adcl $0, %eax michael@38: decl %ebp michael@38: movl %ecx, 16(%ebx) michael@38: jz .L016aw_end michael@38: / Tail Round 5 michael@38: movl 20(%esi), %ecx michael@38: movl 20(%edi), %edx michael@38: subl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: subl %edx, %ecx michael@38: adcl $0, %eax michael@38: decl %ebp michael@38: movl %ecx, 20(%ebx) michael@38: jz .L016aw_end michael@38: / Tail Round 6 michael@38: movl 24(%esi), %ecx michael@38: movl 24(%edi), %edx michael@38: subl %eax, %ecx michael@38: movl $0, %eax michael@38: adcl %eax, %eax michael@38: subl %edx, %ecx michael@38: adcl $0, %eax michael@38: movl %ecx, 24(%ebx) michael@38: .L016aw_end: michael@38: popl %edi michael@38: popl %esi michael@38: popl %ebx michael@38: popl %ebp michael@38: ret michael@38: .bn_sub_words_end: michael@38: .size bn_sub_words,.bn_sub_words_end-bn_sub_words michael@38: .ident "bn_sub_words" michael@38: .text michael@38: .align 16 michael@38: .globl bn_mul_comba8 michael@38: .type bn_mul_comba8,@function michael@38: bn_mul_comba8: michael@38: pushl %esi michael@38: movl 12(%esp), %esi michael@38: pushl %edi michael@38: movl 20(%esp), %edi michael@38: pushl %ebp michael@38: pushl %ebx michael@38: xorl %ebx, %ebx michael@38: movl (%esi), %eax michael@38: xorl %ecx, %ecx michael@38: movl (%edi), %edx michael@38: / ################## Calculate word 0 michael@38: xorl %ebp, %ebp michael@38: / mul a[0]*b[0] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ecx michael@38: movl (%edi), %edx michael@38: adcl $0, %ebp michael@38: movl %ebx, (%eax) michael@38: movl 4(%esi), %eax michael@38: / saved r[0] michael@38: / ################## Calculate word 1 michael@38: xorl %ebx, %ebx michael@38: / mul a[1]*b[0] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl (%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 4(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[0]*b[1] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ebp michael@38: movl (%edi), %edx michael@38: adcl $0, %ebx michael@38: movl %ecx, 4(%eax) michael@38: movl 8(%esi), %eax michael@38: / saved r[1] michael@38: / ################## Calculate word 2 michael@38: xorl %ecx, %ecx michael@38: / mul a[2]*b[0] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 4(%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 4(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[1]*b[1] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl (%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 8(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[0]*b[2] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ebx michael@38: movl (%edi), %edx michael@38: adcl $0, %ecx michael@38: movl %ebp, 8(%eax) michael@38: movl 12(%esi), %eax michael@38: / saved r[2] michael@38: / ################## Calculate word 3 michael@38: xorl %ebp, %ebp michael@38: / mul a[3]*b[0] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 8(%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 4(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[2]*b[1] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 4(%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 8(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[1]*b[2] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl (%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 12(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[0]*b[3] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ecx michael@38: movl (%edi), %edx michael@38: adcl $0, %ebp michael@38: movl %ebx, 12(%eax) michael@38: movl 16(%esi), %eax michael@38: / saved r[3] michael@38: / ################## Calculate word 4 michael@38: xorl %ebx, %ebx michael@38: / mul a[4]*b[0] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 12(%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 4(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[3]*b[1] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 8(%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 8(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[2]*b[2] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 4(%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 12(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[1]*b[3] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl (%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 16(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[0]*b[4] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ebp michael@38: movl (%edi), %edx michael@38: adcl $0, %ebx michael@38: movl %ecx, 16(%eax) michael@38: movl 20(%esi), %eax michael@38: / saved r[4] michael@38: / ################## Calculate word 5 michael@38: xorl %ecx, %ecx michael@38: / mul a[5]*b[0] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 16(%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 4(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[4]*b[1] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 12(%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 8(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[3]*b[2] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 8(%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 12(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[2]*b[3] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 4(%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 16(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[1]*b[4] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl (%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 20(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[0]*b[5] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ebx michael@38: movl (%edi), %edx michael@38: adcl $0, %ecx michael@38: movl %ebp, 20(%eax) michael@38: movl 24(%esi), %eax michael@38: / saved r[5] michael@38: / ################## Calculate word 6 michael@38: xorl %ebp, %ebp michael@38: / mul a[6]*b[0] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 20(%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 4(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[5]*b[1] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 16(%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 8(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[4]*b[2] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 12(%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 12(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[3]*b[3] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 8(%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 16(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[2]*b[4] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 4(%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 20(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[1]*b[5] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl (%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 24(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[0]*b[6] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ecx michael@38: movl (%edi), %edx michael@38: adcl $0, %ebp michael@38: movl %ebx, 24(%eax) michael@38: movl 28(%esi), %eax michael@38: / saved r[6] michael@38: / ################## Calculate word 7 michael@38: xorl %ebx, %ebx michael@38: / mul a[7]*b[0] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 24(%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 4(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[6]*b[1] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 20(%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 8(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[5]*b[2] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 16(%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 12(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[4]*b[3] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 12(%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 16(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[3]*b[4] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 8(%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 20(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[2]*b[5] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 4(%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 24(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[1]*b[6] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl (%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 28(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[0]*b[7] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ebp michael@38: movl 4(%edi), %edx michael@38: adcl $0, %ebx michael@38: movl %ecx, 28(%eax) michael@38: movl 28(%esi), %eax michael@38: / saved r[7] michael@38: / ################## Calculate word 8 michael@38: xorl %ecx, %ecx michael@38: / mul a[7]*b[1] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 24(%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 8(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[6]*b[2] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 20(%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 12(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[5]*b[3] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 16(%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 16(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[4]*b[4] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 12(%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 20(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[3]*b[5] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 8(%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 24(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[2]*b[6] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 4(%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 28(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[1]*b[7] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ebx michael@38: movl 8(%edi), %edx michael@38: adcl $0, %ecx michael@38: movl %ebp, 32(%eax) michael@38: movl 28(%esi), %eax michael@38: / saved r[8] michael@38: / ################## Calculate word 9 michael@38: xorl %ebp, %ebp michael@38: / mul a[7]*b[2] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 24(%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 12(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[6]*b[3] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 20(%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 16(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[5]*b[4] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 16(%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 20(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[4]*b[5] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 12(%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 24(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[3]*b[6] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 8(%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 28(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[2]*b[7] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ecx michael@38: movl 12(%edi), %edx michael@38: adcl $0, %ebp michael@38: movl %ebx, 36(%eax) michael@38: movl 28(%esi), %eax michael@38: / saved r[9] michael@38: / ################## Calculate word 10 michael@38: xorl %ebx, %ebx michael@38: / mul a[7]*b[3] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 24(%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 16(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[6]*b[4] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 20(%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 20(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[5]*b[5] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 16(%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 24(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[4]*b[6] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 12(%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 28(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[3]*b[7] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ebp michael@38: movl 16(%edi), %edx michael@38: adcl $0, %ebx michael@38: movl %ecx, 40(%eax) michael@38: movl 28(%esi), %eax michael@38: / saved r[10] michael@38: / ################## Calculate word 11 michael@38: xorl %ecx, %ecx michael@38: / mul a[7]*b[4] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 24(%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 20(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[6]*b[5] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 20(%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 24(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[5]*b[6] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 16(%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 28(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[4]*b[7] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ebx michael@38: movl 20(%edi), %edx michael@38: adcl $0, %ecx michael@38: movl %ebp, 44(%eax) michael@38: movl 28(%esi), %eax michael@38: / saved r[11] michael@38: / ################## Calculate word 12 michael@38: xorl %ebp, %ebp michael@38: / mul a[7]*b[5] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 24(%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 24(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[6]*b[6] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 20(%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 28(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[5]*b[7] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ecx michael@38: movl 24(%edi), %edx michael@38: adcl $0, %ebp michael@38: movl %ebx, 48(%eax) michael@38: movl 28(%esi), %eax michael@38: / saved r[12] michael@38: / ################## Calculate word 13 michael@38: xorl %ebx, %ebx michael@38: / mul a[7]*b[6] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 24(%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 28(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[6]*b[7] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ebp michael@38: movl 28(%edi), %edx michael@38: adcl $0, %ebx michael@38: movl %ecx, 52(%eax) michael@38: movl 28(%esi), %eax michael@38: / saved r[13] michael@38: / ################## Calculate word 14 michael@38: xorl %ecx, %ecx michael@38: / mul a[7]*b[7] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ebx michael@38: adcl $0, %ecx michael@38: movl %ebp, 56(%eax) michael@38: / saved r[14] michael@38: / save r[15] michael@38: movl %ebx, 60(%eax) michael@38: popl %ebx michael@38: popl %ebp michael@38: popl %edi michael@38: popl %esi michael@38: ret michael@38: .L_bn_mul_comba8_end: michael@38: .size bn_mul_comba8,.L_bn_mul_comba8_end-bn_mul_comba8 michael@38: .ident "desasm.pl" michael@38: .text michael@38: .align 16 michael@38: .globl bn_mul_comba4 michael@38: .type bn_mul_comba4,@function michael@38: bn_mul_comba4: michael@38: pushl %esi michael@38: movl 12(%esp), %esi michael@38: pushl %edi michael@38: movl 20(%esp), %edi michael@38: pushl %ebp michael@38: pushl %ebx michael@38: xorl %ebx, %ebx michael@38: movl (%esi), %eax michael@38: xorl %ecx, %ecx michael@38: movl (%edi), %edx michael@38: / ################## Calculate word 0 michael@38: xorl %ebp, %ebp michael@38: / mul a[0]*b[0] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ecx michael@38: movl (%edi), %edx michael@38: adcl $0, %ebp michael@38: movl %ebx, (%eax) michael@38: movl 4(%esi), %eax michael@38: / saved r[0] michael@38: / ################## Calculate word 1 michael@38: xorl %ebx, %ebx michael@38: / mul a[1]*b[0] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl (%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 4(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[0]*b[1] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ebp michael@38: movl (%edi), %edx michael@38: adcl $0, %ebx michael@38: movl %ecx, 4(%eax) michael@38: movl 8(%esi), %eax michael@38: / saved r[1] michael@38: / ################## Calculate word 2 michael@38: xorl %ecx, %ecx michael@38: / mul a[2]*b[0] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 4(%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 4(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[1]*b[1] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl (%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 8(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[0]*b[2] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ebx michael@38: movl (%edi), %edx michael@38: adcl $0, %ecx michael@38: movl %ebp, 8(%eax) michael@38: movl 12(%esi), %eax michael@38: / saved r[2] michael@38: / ################## Calculate word 3 michael@38: xorl %ebp, %ebp michael@38: / mul a[3]*b[0] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 8(%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 4(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[2]*b[1] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 4(%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 8(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[1]*b[2] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl (%esi), %eax michael@38: adcl %edx, %ecx michael@38: movl 12(%edi), %edx michael@38: adcl $0, %ebp michael@38: / mul a[0]*b[3] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ecx michael@38: movl 4(%edi), %edx michael@38: adcl $0, %ebp michael@38: movl %ebx, 12(%eax) michael@38: movl 12(%esi), %eax michael@38: / saved r[3] michael@38: / ################## Calculate word 4 michael@38: xorl %ebx, %ebx michael@38: / mul a[3]*b[1] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 8(%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 8(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[2]*b[2] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 4(%esi), %eax michael@38: adcl %edx, %ebp michael@38: movl 12(%edi), %edx michael@38: adcl $0, %ebx michael@38: / mul a[1]*b[3] michael@38: mull %edx michael@38: addl %eax, %ecx michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ebp michael@38: movl 8(%edi), %edx michael@38: adcl $0, %ebx michael@38: movl %ecx, 16(%eax) michael@38: movl 12(%esi), %eax michael@38: / saved r[4] michael@38: / ################## Calculate word 5 michael@38: xorl %ecx, %ecx michael@38: / mul a[3]*b[2] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 8(%esi), %eax michael@38: adcl %edx, %ebx michael@38: movl 12(%edi), %edx michael@38: adcl $0, %ecx michael@38: / mul a[2]*b[3] michael@38: mull %edx michael@38: addl %eax, %ebp michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ebx michael@38: movl 12(%edi), %edx michael@38: adcl $0, %ecx michael@38: movl %ebp, 20(%eax) michael@38: movl 12(%esi), %eax michael@38: / saved r[5] michael@38: / ################## Calculate word 6 michael@38: xorl %ebp, %ebp michael@38: / mul a[3]*b[3] michael@38: mull %edx michael@38: addl %eax, %ebx michael@38: movl 20(%esp), %eax michael@38: adcl %edx, %ecx michael@38: adcl $0, %ebp michael@38: movl %ebx, 24(%eax) michael@38: / saved r[6] michael@38: / save r[7] michael@38: movl %ecx, 28(%eax) michael@38: popl %ebx michael@38: popl %ebp michael@38: popl %edi michael@38: popl %esi michael@38: ret michael@38: .L_bn_mul_comba4_end: michael@38: .size bn_mul_comba4,.L_bn_mul_comba4_end-bn_mul_comba4 michael@38: .ident "desasm.pl" michael@38: .text michael@38: .align 16 michael@38: .globl bn_sqr_comba8 michael@38: .type bn_sqr_comba8,@function michael@38: bn_sqr_comba8: michael@38: pushl %esi michael@38: pushl %edi michael@38: pushl %ebp michael@38: pushl %ebx michael@38: movl 20(%esp), %edi michael@38: movl 24(%esp), %esi michael@38: xorl %ebx, %ebx michael@38: xorl %ecx, %ecx michael@38: movl (%esi), %eax michael@38: / ############### Calculate word 0 michael@38: xorl %ebp, %ebp michael@38: / sqr a[0]*a[0] michael@38: mull %eax michael@38: addl %eax, %ebx michael@38: adcl %edx, %ecx michael@38: movl (%esi), %edx michael@38: adcl $0, %ebp michael@38: movl %ebx, (%edi) michael@38: movl 4(%esi), %eax michael@38: / saved r[0] michael@38: / ############### Calculate word 1 michael@38: xorl %ebx, %ebx michael@38: / sqr a[1]*a[0] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebx michael@38: addl %eax, %ecx michael@38: adcl %edx, %ebp michael@38: movl 8(%esi), %eax michael@38: adcl $0, %ebx michael@38: movl %ecx, 4(%edi) michael@38: movl (%esi), %edx michael@38: / saved r[1] michael@38: / ############### Calculate word 2 michael@38: xorl %ecx, %ecx michael@38: / sqr a[2]*a[0] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ecx michael@38: addl %eax, %ebp michael@38: adcl %edx, %ebx michael@38: movl 4(%esi), %eax michael@38: adcl $0, %ecx michael@38: / sqr a[1]*a[1] michael@38: mull %eax michael@38: addl %eax, %ebp michael@38: adcl %edx, %ebx michael@38: movl (%esi), %edx michael@38: adcl $0, %ecx michael@38: movl %ebp, 8(%edi) michael@38: movl 12(%esi), %eax michael@38: / saved r[2] michael@38: / ############### Calculate word 3 michael@38: xorl %ebp, %ebp michael@38: / sqr a[3]*a[0] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebp michael@38: addl %eax, %ebx michael@38: adcl %edx, %ecx michael@38: movl 8(%esi), %eax michael@38: adcl $0, %ebp michael@38: movl 4(%esi), %edx michael@38: / sqr a[2]*a[1] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebp michael@38: addl %eax, %ebx michael@38: adcl %edx, %ecx michael@38: movl 16(%esi), %eax michael@38: adcl $0, %ebp michael@38: movl %ebx, 12(%edi) michael@38: movl (%esi), %edx michael@38: / saved r[3] michael@38: / ############### Calculate word 4 michael@38: xorl %ebx, %ebx michael@38: / sqr a[4]*a[0] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebx michael@38: addl %eax, %ecx michael@38: adcl %edx, %ebp michael@38: movl 12(%esi), %eax michael@38: adcl $0, %ebx michael@38: movl 4(%esi), %edx michael@38: / sqr a[3]*a[1] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebx michael@38: addl %eax, %ecx michael@38: adcl %edx, %ebp michael@38: movl 8(%esi), %eax michael@38: adcl $0, %ebx michael@38: / sqr a[2]*a[2] michael@38: mull %eax michael@38: addl %eax, %ecx michael@38: adcl %edx, %ebp michael@38: movl (%esi), %edx michael@38: adcl $0, %ebx michael@38: movl %ecx, 16(%edi) michael@38: movl 20(%esi), %eax michael@38: / saved r[4] michael@38: / ############### Calculate word 5 michael@38: xorl %ecx, %ecx michael@38: / sqr a[5]*a[0] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ecx michael@38: addl %eax, %ebp michael@38: adcl %edx, %ebx michael@38: movl 16(%esi), %eax michael@38: adcl $0, %ecx michael@38: movl 4(%esi), %edx michael@38: / sqr a[4]*a[1] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ecx michael@38: addl %eax, %ebp michael@38: adcl %edx, %ebx michael@38: movl 12(%esi), %eax michael@38: adcl $0, %ecx michael@38: movl 8(%esi), %edx michael@38: / sqr a[3]*a[2] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ecx michael@38: addl %eax, %ebp michael@38: adcl %edx, %ebx michael@38: movl 24(%esi), %eax michael@38: adcl $0, %ecx michael@38: movl %ebp, 20(%edi) michael@38: movl (%esi), %edx michael@38: / saved r[5] michael@38: / ############### Calculate word 6 michael@38: xorl %ebp, %ebp michael@38: / sqr a[6]*a[0] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebp michael@38: addl %eax, %ebx michael@38: adcl %edx, %ecx michael@38: movl 20(%esi), %eax michael@38: adcl $0, %ebp michael@38: movl 4(%esi), %edx michael@38: / sqr a[5]*a[1] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebp michael@38: addl %eax, %ebx michael@38: adcl %edx, %ecx michael@38: movl 16(%esi), %eax michael@38: adcl $0, %ebp michael@38: movl 8(%esi), %edx michael@38: / sqr a[4]*a[2] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebp michael@38: addl %eax, %ebx michael@38: adcl %edx, %ecx michael@38: movl 12(%esi), %eax michael@38: adcl $0, %ebp michael@38: / sqr a[3]*a[3] michael@38: mull %eax michael@38: addl %eax, %ebx michael@38: adcl %edx, %ecx michael@38: movl (%esi), %edx michael@38: adcl $0, %ebp michael@38: movl %ebx, 24(%edi) michael@38: movl 28(%esi), %eax michael@38: / saved r[6] michael@38: / ############### Calculate word 7 michael@38: xorl %ebx, %ebx michael@38: / sqr a[7]*a[0] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebx michael@38: addl %eax, %ecx michael@38: adcl %edx, %ebp michael@38: movl 24(%esi), %eax michael@38: adcl $0, %ebx michael@38: movl 4(%esi), %edx michael@38: / sqr a[6]*a[1] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebx michael@38: addl %eax, %ecx michael@38: adcl %edx, %ebp michael@38: movl 20(%esi), %eax michael@38: adcl $0, %ebx michael@38: movl 8(%esi), %edx michael@38: / sqr a[5]*a[2] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebx michael@38: addl %eax, %ecx michael@38: adcl %edx, %ebp michael@38: movl 16(%esi), %eax michael@38: adcl $0, %ebx michael@38: movl 12(%esi), %edx michael@38: / sqr a[4]*a[3] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebx michael@38: addl %eax, %ecx michael@38: adcl %edx, %ebp michael@38: movl 28(%esi), %eax michael@38: adcl $0, %ebx michael@38: movl %ecx, 28(%edi) michael@38: movl 4(%esi), %edx michael@38: / saved r[7] michael@38: / ############### Calculate word 8 michael@38: xorl %ecx, %ecx michael@38: / sqr a[7]*a[1] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ecx michael@38: addl %eax, %ebp michael@38: adcl %edx, %ebx michael@38: movl 24(%esi), %eax michael@38: adcl $0, %ecx michael@38: movl 8(%esi), %edx michael@38: / sqr a[6]*a[2] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ecx michael@38: addl %eax, %ebp michael@38: adcl %edx, %ebx michael@38: movl 20(%esi), %eax michael@38: adcl $0, %ecx michael@38: movl 12(%esi), %edx michael@38: / sqr a[5]*a[3] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ecx michael@38: addl %eax, %ebp michael@38: adcl %edx, %ebx michael@38: movl 16(%esi), %eax michael@38: adcl $0, %ecx michael@38: / sqr a[4]*a[4] michael@38: mull %eax michael@38: addl %eax, %ebp michael@38: adcl %edx, %ebx michael@38: movl 8(%esi), %edx michael@38: adcl $0, %ecx michael@38: movl %ebp, 32(%edi) michael@38: movl 28(%esi), %eax michael@38: / saved r[8] michael@38: / ############### Calculate word 9 michael@38: xorl %ebp, %ebp michael@38: / sqr a[7]*a[2] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebp michael@38: addl %eax, %ebx michael@38: adcl %edx, %ecx michael@38: movl 24(%esi), %eax michael@38: adcl $0, %ebp michael@38: movl 12(%esi), %edx michael@38: / sqr a[6]*a[3] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebp michael@38: addl %eax, %ebx michael@38: adcl %edx, %ecx michael@38: movl 20(%esi), %eax michael@38: adcl $0, %ebp michael@38: movl 16(%esi), %edx michael@38: / sqr a[5]*a[4] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebp michael@38: addl %eax, %ebx michael@38: adcl %edx, %ecx michael@38: movl 28(%esi), %eax michael@38: adcl $0, %ebp michael@38: movl %ebx, 36(%edi) michael@38: movl 12(%esi), %edx michael@38: / saved r[9] michael@38: / ############### Calculate word 10 michael@38: xorl %ebx, %ebx michael@38: / sqr a[7]*a[3] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebx michael@38: addl %eax, %ecx michael@38: adcl %edx, %ebp michael@38: movl 24(%esi), %eax michael@38: adcl $0, %ebx michael@38: movl 16(%esi), %edx michael@38: / sqr a[6]*a[4] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebx michael@38: addl %eax, %ecx michael@38: adcl %edx, %ebp michael@38: movl 20(%esi), %eax michael@38: adcl $0, %ebx michael@38: / sqr a[5]*a[5] michael@38: mull %eax michael@38: addl %eax, %ecx michael@38: adcl %edx, %ebp michael@38: movl 16(%esi), %edx michael@38: adcl $0, %ebx michael@38: movl %ecx, 40(%edi) michael@38: movl 28(%esi), %eax michael@38: / saved r[10] michael@38: / ############### Calculate word 11 michael@38: xorl %ecx, %ecx michael@38: / sqr a[7]*a[4] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ecx michael@38: addl %eax, %ebp michael@38: adcl %edx, %ebx michael@38: movl 24(%esi), %eax michael@38: adcl $0, %ecx michael@38: movl 20(%esi), %edx michael@38: / sqr a[6]*a[5] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ecx michael@38: addl %eax, %ebp michael@38: adcl %edx, %ebx michael@38: movl 28(%esi), %eax michael@38: adcl $0, %ecx michael@38: movl %ebp, 44(%edi) michael@38: movl 20(%esi), %edx michael@38: / saved r[11] michael@38: / ############### Calculate word 12 michael@38: xorl %ebp, %ebp michael@38: / sqr a[7]*a[5] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebp michael@38: addl %eax, %ebx michael@38: adcl %edx, %ecx michael@38: movl 24(%esi), %eax michael@38: adcl $0, %ebp michael@38: / sqr a[6]*a[6] michael@38: mull %eax michael@38: addl %eax, %ebx michael@38: adcl %edx, %ecx michael@38: movl 24(%esi), %edx michael@38: adcl $0, %ebp michael@38: movl %ebx, 48(%edi) michael@38: movl 28(%esi), %eax michael@38: / saved r[12] michael@38: / ############### Calculate word 13 michael@38: xorl %ebx, %ebx michael@38: / sqr a[7]*a[6] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebx michael@38: addl %eax, %ecx michael@38: adcl %edx, %ebp michael@38: movl 28(%esi), %eax michael@38: adcl $0, %ebx michael@38: movl %ecx, 52(%edi) michael@38: / saved r[13] michael@38: / ############### Calculate word 14 michael@38: xorl %ecx, %ecx michael@38: / sqr a[7]*a[7] michael@38: mull %eax michael@38: addl %eax, %ebp michael@38: adcl %edx, %ebx michael@38: adcl $0, %ecx michael@38: movl %ebp, 56(%edi) michael@38: / saved r[14] michael@38: movl %ebx, 60(%edi) michael@38: popl %ebx michael@38: popl %ebp michael@38: popl %edi michael@38: popl %esi michael@38: ret michael@38: .L_bn_sqr_comba8_end: michael@38: .size bn_sqr_comba8,.L_bn_sqr_comba8_end-bn_sqr_comba8 michael@38: .ident "desasm.pl" michael@38: .text michael@38: .align 16 michael@38: .globl bn_sqr_comba4 michael@38: .type bn_sqr_comba4,@function michael@38: bn_sqr_comba4: michael@38: pushl %esi michael@38: pushl %edi michael@38: pushl %ebp michael@38: pushl %ebx michael@38: movl 20(%esp), %edi michael@38: movl 24(%esp), %esi michael@38: xorl %ebx, %ebx michael@38: xorl %ecx, %ecx michael@38: movl (%esi), %eax michael@38: / ############### Calculate word 0 michael@38: xorl %ebp, %ebp michael@38: / sqr a[0]*a[0] michael@38: mull %eax michael@38: addl %eax, %ebx michael@38: adcl %edx, %ecx michael@38: movl (%esi), %edx michael@38: adcl $0, %ebp michael@38: movl %ebx, (%edi) michael@38: movl 4(%esi), %eax michael@38: / saved r[0] michael@38: / ############### Calculate word 1 michael@38: xorl %ebx, %ebx michael@38: / sqr a[1]*a[0] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebx michael@38: addl %eax, %ecx michael@38: adcl %edx, %ebp michael@38: movl 8(%esi), %eax michael@38: adcl $0, %ebx michael@38: movl %ecx, 4(%edi) michael@38: movl (%esi), %edx michael@38: / saved r[1] michael@38: / ############### Calculate word 2 michael@38: xorl %ecx, %ecx michael@38: / sqr a[2]*a[0] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ecx michael@38: addl %eax, %ebp michael@38: adcl %edx, %ebx michael@38: movl 4(%esi), %eax michael@38: adcl $0, %ecx michael@38: / sqr a[1]*a[1] michael@38: mull %eax michael@38: addl %eax, %ebp michael@38: adcl %edx, %ebx michael@38: movl (%esi), %edx michael@38: adcl $0, %ecx michael@38: movl %ebp, 8(%edi) michael@38: movl 12(%esi), %eax michael@38: / saved r[2] michael@38: / ############### Calculate word 3 michael@38: xorl %ebp, %ebp michael@38: / sqr a[3]*a[0] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebp michael@38: addl %eax, %ebx michael@38: adcl %edx, %ecx michael@38: movl 8(%esi), %eax michael@38: adcl $0, %ebp michael@38: movl 4(%esi), %edx michael@38: / sqr a[2]*a[1] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebp michael@38: addl %eax, %ebx michael@38: adcl %edx, %ecx michael@38: movl 12(%esi), %eax michael@38: adcl $0, %ebp michael@38: movl %ebx, 12(%edi) michael@38: movl 4(%esi), %edx michael@38: / saved r[3] michael@38: / ############### Calculate word 4 michael@38: xorl %ebx, %ebx michael@38: / sqr a[3]*a[1] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ebx michael@38: addl %eax, %ecx michael@38: adcl %edx, %ebp michael@38: movl 8(%esi), %eax michael@38: adcl $0, %ebx michael@38: / sqr a[2]*a[2] michael@38: mull %eax michael@38: addl %eax, %ecx michael@38: adcl %edx, %ebp michael@38: movl 8(%esi), %edx michael@38: adcl $0, %ebx michael@38: movl %ecx, 16(%edi) michael@38: movl 12(%esi), %eax michael@38: / saved r[4] michael@38: / ############### Calculate word 5 michael@38: xorl %ecx, %ecx michael@38: / sqr a[3]*a[2] michael@38: mull %edx michael@38: addl %eax, %eax michael@38: adcl %edx, %edx michael@38: adcl $0, %ecx michael@38: addl %eax, %ebp michael@38: adcl %edx, %ebx michael@38: movl 12(%esi), %eax michael@38: adcl $0, %ecx michael@38: movl %ebp, 20(%edi) michael@38: / saved r[5] michael@38: / ############### Calculate word 6 michael@38: xorl %ebp, %ebp michael@38: / sqr a[3]*a[3] michael@38: mull %eax michael@38: addl %eax, %ebx michael@38: adcl %edx, %ecx michael@38: adcl $0, %ebp michael@38: movl %ebx, 24(%edi) michael@38: / saved r[6] michael@38: movl %ecx, 28(%edi) michael@38: popl %ebx michael@38: popl %ebp michael@38: popl %edi michael@38: popl %esi michael@38: ret michael@38: .L_bn_sqr_comba4_end: michael@38: .size bn_sqr_comba4,.L_bn_sqr_comba4_end-bn_sqr_comba4 michael@38: .ident "desasm.pl"