# Don't even think of reading this code # It was automatically generated by bn-586.pl # Which is a perl program used to generate the x86 assember for # any of ELF, a.out, COFF, Win32, ... # eric .file "bn-586.s" .text .globl _bn_mul_add_words .align 4 _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 4 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 L__bn_mul_add_words_end: .ident "_bn_mul_add_words" .text .globl _bn_mul_words .align 4 _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 4 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 L__bn_mul_words_end: .ident "_bn_mul_words" .text .globl _bn_sqr_words .align 4 _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 L__bn_sqr_words_end: .ident "_bn_sqr_words" .text .globl _bn_div_words .align 4 _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 L__bn_div_words_end: .ident "_bn_div_words" .text .globl _bn_add_words .align 4 _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 L__bn_add_words_end: .ident "_bn_add_words" .text .globl _bn_sub_words .align 4 _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 L__bn_sub_words_end: .ident "_bn_sub_words" .text .globl _bn_sub_part_words .align 4 _bn_sub_part_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 L017aw_finish L018aw_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 L018aw_loop L017aw_finish: movl 32(%esp), %ebp andl $7, %ebp jz L019aw_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 movl %ecx, (%ebx) addl $4, %esi addl $4, %edi addl $4, %ebx decl %ebp jz L019aw_end # Tail Round 1 movl (%esi), %ecx movl (%edi), %edx subl %eax, %ecx movl $0, %eax adcl %eax, %eax subl %edx, %ecx adcl $0, %eax movl %ecx, (%ebx) addl $4, %esi addl $4, %edi addl $4, %ebx decl %ebp jz L019aw_end # Tail Round 2 movl (%esi), %ecx movl (%edi), %edx subl %eax, %ecx movl $0, %eax adcl %eax, %eax subl %edx, %ecx adcl $0, %eax movl %ecx, (%ebx) addl $4, %esi addl $4, %edi addl $4, %ebx decl %ebp jz L019aw_end # Tail Round 3 movl (%esi), %ecx movl (%edi), %edx subl %eax, %ecx movl $0, %eax adcl %eax, %eax subl %edx, %ecx adcl $0, %eax movl %ecx, (%ebx) addl $4, %esi addl $4, %edi addl $4, %ebx decl %ebp jz L019aw_end # Tail Round 4 movl (%esi), %ecx movl (%edi), %edx subl %eax, %ecx movl $0, %eax adcl %eax, %eax subl %edx, %ecx adcl $0, %eax movl %ecx, (%ebx) addl $4, %esi addl $4, %edi addl $4, %ebx decl %ebp jz L019aw_end # Tail Round 5 movl (%esi), %ecx movl (%edi), %edx subl %eax, %ecx movl $0, %eax adcl %eax, %eax subl %edx, %ecx adcl $0, %eax movl %ecx, (%ebx) addl $4, %esi addl $4, %edi addl $4, %ebx decl %ebp jz L019aw_end # Tail Round 6 movl (%esi), %ecx movl (%edi), %edx subl %eax, %ecx movl $0, %eax adcl %eax, %eax subl %edx, %ecx adcl $0, %eax movl %ecx, (%ebx) addl $4, %esi addl $4, %edi addl $4, %ebx L019aw_end: cmpl $0, 36(%esp) je L020pw_end movl 36(%esp), %ebp cmpl $0, %ebp je L020pw_end jge L021pw_pos # pw_neg movl $0, %edx subl %ebp, %edx movl %edx, %ebp andl $4294967288, %ebp jz L022pw_neg_finish L023pw_neg_loop: # dl<0 Round 0 movl $0, %ecx movl (%edi), %edx subl %eax, %ecx movl $0, %eax adcl %eax, %eax subl %edx, %ecx adcl $0, %eax movl %ecx, (%ebx) # dl<0 Round 1 movl $0, %ecx movl 4(%edi), %edx subl %eax, %ecx movl $0, %eax adcl %eax, %eax subl %edx, %ecx adcl $0, %eax movl %ecx, 4(%ebx) # dl<0 Round 2 movl $0, %ecx movl 8(%edi), %edx subl %eax, %ecx movl $0, %eax adcl %eax, %eax subl %edx, %ecx adcl $0, %eax movl %ecx, 8(%ebx) # dl<0 Round 3 movl $0, %ecx movl 12(%edi), %edx subl %eax, %ecx movl $0, %eax adcl %eax, %eax subl %edx, %ecx adcl $0, %eax movl %ecx, 12(%ebx) # dl<0 Round 4 movl $0, %ecx movl 16(%edi), %edx subl %eax, %ecx movl $0, %eax adcl %eax, %eax subl %edx, %ecx adcl $0, %eax movl %ecx, 16(%ebx) # dl<0 Round 5 movl $0, %ecx movl 20(%edi), %edx subl %eax, %ecx movl $0, %eax adcl %eax, %eax subl %edx, %ecx adcl $0, %eax movl %ecx, 20(%ebx) # dl<0 Round 6 movl $0, %ecx movl 24(%edi), %edx subl %eax, %ecx movl $0, %eax adcl %eax, %eax subl %edx, %ecx adcl $0, %eax movl %ecx, 24(%ebx) # dl<0 Round 7 movl $0, %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, %edi addl $32, %ebx subl $8, %ebp jnz L023pw_neg_loop L022pw_neg_finish: movl 36(%esp), %edx movl $0, %ebp subl %edx, %ebp andl $7, %ebp jz L020pw_end # dl<0 Tail Round 0 movl $0, %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 L020pw_end # dl<0 Tail Round 1 movl $0, %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 L020pw_end # dl<0 Tail Round 2 movl $0, %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 L020pw_end # dl<0 Tail Round 3 movl $0, %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 L020pw_end # dl<0 Tail Round 4 movl $0, %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 L020pw_end # dl<0 Tail Round 5 movl $0, %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 L020pw_end # dl<0 Tail Round 6 movl $0, %ecx movl 24(%edi), %edx subl %eax, %ecx movl $0, %eax adcl %eax, %eax subl %edx, %ecx adcl $0, %eax movl %ecx, 24(%ebx) jmp L020pw_end L021pw_pos: andl $4294967288, %ebp jz L024pw_pos_finish L025pw_pos_loop: # dl>0 Round 0 movl (%esi), %ecx subl %eax, %ecx movl %ecx, (%ebx) jnc L026pw_nc0 # dl>0 Round 1 movl 4(%esi), %ecx subl %eax, %ecx movl %ecx, 4(%ebx) jnc L027pw_nc1 # dl>0 Round 2 movl 8(%esi), %ecx subl %eax, %ecx movl %ecx, 8(%ebx) jnc L028pw_nc2 # dl>0 Round 3 movl 12(%esi), %ecx subl %eax, %ecx movl %ecx, 12(%ebx) jnc L029pw_nc3 # dl>0 Round 4 movl 16(%esi), %ecx subl %eax, %ecx movl %ecx, 16(%ebx) jnc L030pw_nc4 # dl>0 Round 5 movl 20(%esi), %ecx subl %eax, %ecx movl %ecx, 20(%ebx) jnc L031pw_nc5 # dl>0 Round 6 movl 24(%esi), %ecx subl %eax, %ecx movl %ecx, 24(%ebx) jnc L032pw_nc6 # dl>0 Round 7 movl 28(%esi), %ecx subl %eax, %ecx movl %ecx, 28(%ebx) jnc L033pw_nc7 addl $32, %esi addl $32, %ebx subl $8, %ebp jnz L025pw_pos_loop L024pw_pos_finish: movl 36(%esp), %ebp andl $7, %ebp jz L020pw_end # dl>0 Tail Round 0 movl (%esi), %ecx subl %eax, %ecx movl %ecx, (%ebx) jnc L034pw_tail_nc0 decl %ebp jz L020pw_end # dl>0 Tail Round 1 movl 4(%esi), %ecx subl %eax, %ecx movl %ecx, 4(%ebx) jnc L035pw_tail_nc1 decl %ebp jz L020pw_end # dl>0 Tail Round 2 movl 8(%esi), %ecx subl %eax, %ecx movl %ecx, 8(%ebx) jnc L036pw_tail_nc2 decl %ebp jz L020pw_end # dl>0 Tail Round 3 movl 12(%esi), %ecx subl %eax, %ecx movl %ecx, 12(%ebx) jnc L037pw_tail_nc3 decl %ebp jz L020pw_end # dl>0 Tail Round 4 movl 16(%esi), %ecx subl %eax, %ecx movl %ecx, 16(%ebx) jnc L038pw_tail_nc4 decl %ebp jz L020pw_end # dl>0 Tail Round 5 movl 20(%esi), %ecx subl %eax, %ecx movl %ecx, 20(%ebx) jnc L039pw_tail_nc5 decl %ebp jz L020pw_end # dl>0 Tail Round 6 movl 24(%esi), %ecx subl %eax, %ecx movl %ecx, 24(%ebx) jnc L040pw_tail_nc6 movl $1, %eax jmp L020pw_end L041pw_nc_loop: movl (%esi), %ecx movl %ecx, (%ebx) L026pw_nc0: movl 4(%esi), %ecx movl %ecx, 4(%ebx) L027pw_nc1: movl 8(%esi), %ecx movl %ecx, 8(%ebx) L028pw_nc2: movl 12(%esi), %ecx movl %ecx, 12(%ebx) L029pw_nc3: movl 16(%esi), %ecx movl %ecx, 16(%ebx) L030pw_nc4: movl 20(%esi), %ecx movl %ecx, 20(%ebx) L031pw_nc5: movl 24(%esi), %ecx movl %ecx, 24(%ebx) L032pw_nc6: movl 28(%esi), %ecx movl %ecx, 28(%ebx) L033pw_nc7: addl $32, %esi addl $32, %ebx subl $8, %ebp jnz L041pw_nc_loop movl 36(%esp), %ebp andl $7, %ebp jz L042pw_nc_end movl (%esi), %ecx movl %ecx, (%ebx) L034pw_tail_nc0: decl %ebp jz L042pw_nc_end movl 4(%esi), %ecx movl %ecx, 4(%ebx) L035pw_tail_nc1: decl %ebp jz L042pw_nc_end movl 8(%esi), %ecx movl %ecx, 8(%ebx) L036pw_tail_nc2: decl %ebp jz L042pw_nc_end movl 12(%esi), %ecx movl %ecx, 12(%ebx) L037pw_tail_nc3: decl %ebp jz L042pw_nc_end movl 16(%esi), %ecx movl %ecx, 16(%ebx) L038pw_tail_nc4: decl %ebp jz L042pw_nc_end movl 20(%esi), %ecx movl %ecx, 20(%ebx) L039pw_tail_nc5: decl %ebp jz L042pw_nc_end movl 24(%esi), %ecx movl %ecx, 24(%ebx) L040pw_tail_nc6: L042pw_nc_end: movl $0, %eax L020pw_end: popl %edi popl %esi popl %ebx popl %ebp ret L__bn_sub_part_words_end: .ident "_bn_sub_part_words" # Don't even think of reading this code # It was automatically generated by co-586.pl # Which is a perl program used to generate the x86 assember for # any of ELF, a.out, COFF, Win32, ... # eric .text .globl _bn_mul_comba8 .align 4 _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: .ident "_bn_mul_comba8" .text .globl _bn_mul_comba4 .align 4 _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: .ident "_bn_mul_comba4" .text .globl _bn_sqr_comba8 .align 4 _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: .ident "_bn_sqr_comba8" .text .globl _bn_sqr_comba4 .align 4 _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: .ident "_bn_sqr_comba4"