# HG changeset patch # User Michael Schloh von Bennewitz # Date 1346171650 -7200 # Node ID c371e003ecc35d9c86a501a63c1d226a7027e61a # Parent f6dc17424a459a8936e573ff42d6f245314d2cee Modernize packaging, update version, rename CAST relevant assembly file c-sol.s, correct typical german english grammar mistakes, repair substitutions for GCC CFLAGS and proper dependency leverage, remove carriage returns in sources, and use parallel make. diff -r f6dc17424a45 -r c371e003ecc3 cryptlib/bn-sol.s --- a/cryptlib/bn-sol.s Tue Aug 28 18:34:05 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2149 +0,0 @@ - / Don't even think of reading this code - / It was automatically generated by x86.pl - / Which is a perl program used to generate the x86 assember for - / any of elf, a.out, BSDI, Win32, gaswin (for GNU as on Win32) or Solaris - / eric - - .file "x86.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_div_words - .type bn_div_words,@function -bn_div_words: - 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_div_words_end: - .size bn_div_words,.bn_div_words_end-bn_div_words -.ident "bn_div_words" -.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 -.L_bn_mul_comba8_end: - .size bn_mul_comba8,.L_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 -.L_bn_mul_comba4_end: - .size bn_mul_comba4,.L_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 -.L_bn_sqr_comba8_end: - .size bn_sqr_comba8,.L_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 -.L_bn_sqr_comba4_end: - .size bn_sqr_comba4,.L_bn_sqr_comba4_end-bn_sqr_comba4 -.ident "desasm.pl" diff -r f6dc17424a45 -r c371e003ecc3 cryptlib/c-sol.s --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cryptlib/c-sol.s Tue Aug 28 18:34:10 2012 +0200 @@ -0,0 +1,2149 @@ + / Don't even think of reading this code + / It was automatically generated by x86.pl + / Which is a perl program used to generate the x86 assember for + / any of elf, a.out, BSDI, Win32, gaswin (for GNU as on Win32) or Solaris + / eric + + .file "x86.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_div_words + .type bn_div_words,@function +bn_div_words: + 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_div_words_end: + .size bn_div_words,.bn_div_words_end-bn_div_words +.ident "bn_div_words" +.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 +.L_bn_mul_comba8_end: + .size bn_mul_comba8,.L_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 +.L_bn_mul_comba4_end: + .size bn_mul_comba4,.L_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 +.L_bn_sqr_comba8_end: + .size bn_sqr_comba8,.L_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 +.L_bn_sqr_comba4_end: + .size bn_sqr_comba4,.L_bn_sqr_comba4_end-bn_sqr_comba4 +.ident "desasm.pl" diff -r f6dc17424a45 -r c371e003ecc3 cryptlib/cryptlib.spec --- a/cryptlib/cryptlib.spec Tue Aug 28 18:34:05 2012 +0200 +++ b/cryptlib/cryptlib.spec Tue Aug 28 18:34:10 2012 +0200 @@ -22,9 +22,9 @@ ## # package version -%define V_full 3.3.2 -%define V_comp 332 -%define V_track 332 +%define V_full 3.4.1 +%define V_comp 341 +%define V_track 341 # package information Name: cryptlib @@ -37,35 +37,31 @@ Group: Cryptography License: MIT-style Version: %{V_full} -Release: 20090106 +Release: 20120800 # list of sources Source0: ftp://ftp.franken.de/pub/crypt/cryptlib/cl%{V_comp}.zip Source1: ftp://ftp.franken.de/pub/crypt/cryptlib/manual.pdf -Source2: bn-sol.s +Source2: c-sol.s Patch0: cryptlib.patch # build information -Prefix: %{l_prefix} -BuildRoot: %{l_buildroot} -BuildPreReq: OpenPKG, openpkg >= 20040130, make, gcc, infozip -PreReq: OpenPKG, openpkg >= 20040130 -AutoReq: no -AutoReqProv: no +BuildPreReq: OpenPKG, openpkg >= 20100101, infozip, make, gcc +PreReq: OpenPKG, openpkg >= 20100101 %description CryptLib is a powerful security toolkit which allows even inexperienced crypto programmers to easily add encryption and - authentication services to their software. The high-level interface + authentication services to their software. The high level interface provides anyone with the ability to add strong security capabilities to an application in as little as half an hour, without needing - to know any of the low-level details which make the encryption + to know any of the low level details which make the encryption or authentication work. Because of this, cryptlib dramatically reduces the cost involved in adding security to new or existing applications. CryptLib provides a standardised interface to a number - of popular encryption algorithms, as well as providing a high-level + of popular encryption algorithms, as well as providing a high level interface which hides most of the implementation details and - provides an operating-system-independent encoding method which makes + provides an operating system independent encoding method which makes it easy to transfer secured data from one operating environment to another. @@ -80,18 +76,38 @@ %prep %setup -q -c -T %{l_prefix}/bin/unzip -q -x %{SOURCE0} - cp %{SOURCE bn-sol.s} bn/ %patch -p0 - %{l_shtool} subst -e 's;\r$;;' tools/*.pl tools/*.sh - %{l_shtool} subst -e 's;-xO3 *;;g' 's; *-O;;g' makefile - %{l_shtool} subst -e 's; *-O[1234];;g' 's; *-O;;g' makefile + + # repair 'can't open crypt/c-sol.s for reading' + cp %{SOURCE c-sol.s} bn/bn-sol.s + cp %{SOURCE c-sol.s} crypt/ + + # remove CR causing build failure + %{l_shtool} subst -e 's;\r$;;' tools/*.sh + + # disable automatic detection + %{l_shtool} subst \ + -e 's;if \[ .*/sql.h \];if false;g' \ + -e 's;if \[ .*/ldap.h \];if false;g' \ + tools/ccopts.sh + + # allow for parallel build + %{l_shtool} subst \ + -e 's;@\([\.\-]\);@+\1;g' \ + -e 's;@\(make\);@+\1;g' \ + makefile + + # special handling for GCC + if [ ".`(%{l_cc} -v; %{l_cc} --version) &1 | grep -i 'gcc'`" != . ]; then + %{l_shtool} subst -e 's;-xO\([0-9] *\);-O\1;g' makefile + fi %build + %{l_make} babies love cookies %{l_make} %{l_mflags -O} \ CC="%{l_cc} %{l_cflags -O}" %install - rm -rf $RPM_BUILD_ROOT %{l_shtool} mkdir -f -p -m 755 \ $RPM_BUILD_ROOT%{l_prefix}/include \ $RPM_BUILD_ROOT%{l_prefix}/lib \ @@ -109,5 +125,4 @@ %files -f files %clean - rm -rf $RPM_BUILD_ROOT