bn-586.S revision 95967
195967Speter # $FreeBSD: head/secure/lib/libcrypto/i386/bn-586.s 95967 2002-05-03 00:14:39Z peter $ 295967Speter # Dont even think of reading this code 395967Speter # It was automatically generated by bn-586.pl 495967Speter # Which is a perl program used to generate the x86 assember for 595967Speter # any of elf, a.out, BSDI, Win32, gaswin (for GNU as on Win32) or Solaris 695967Speter # eric <eay@cryptsoft.com> 795967Speter 895967Speter .file "bn-586.s" 995967Speter .version "01.01" 1095967Spetergcc2_compiled.: 1195967Speter.text 1295967Speter .align 16 1395967Speter.globl bn_mul_add_words 1495967Speter .type bn_mul_add_words,@function 1595967Speterbn_mul_add_words: 1695967Speter pushl %ebp 1795967Speter pushl %ebx 1895967Speter pushl %esi 1995967Speter pushl %edi 2095967Speter 2195967Speter 2295967Speter xorl %esi, %esi 2395967Speter movl 20(%esp), %edi 2495967Speter movl 28(%esp), %ecx 2595967Speter movl 24(%esp), %ebx 2695967Speter andl $4294967288, %ecx 2795967Speter movl 32(%esp), %ebp 2895967Speter pushl %ecx 2995967Speter jz .L000maw_finish 3095967Speter.L001maw_loop: 3195967Speter movl %ecx, (%esp) 3295967Speter # Round 0 3395967Speter movl (%ebx), %eax 3495967Speter mull %ebp 3595967Speter addl %esi, %eax 3695967Speter movl (%edi), %esi 3795967Speter adcl $0, %edx 3895967Speter addl %esi, %eax 3995967Speter adcl $0, %edx 4095967Speter movl %eax, (%edi) 4195967Speter movl %edx, %esi 4295967Speter # Round 4 4395967Speter movl 4(%ebx), %eax 4495967Speter mull %ebp 4595967Speter addl %esi, %eax 4695967Speter movl 4(%edi), %esi 4795967Speter adcl $0, %edx 4895967Speter addl %esi, %eax 4995967Speter adcl $0, %edx 5095967Speter movl %eax, 4(%edi) 5195967Speter movl %edx, %esi 5295967Speter # Round 8 5395967Speter movl 8(%ebx), %eax 5495967Speter mull %ebp 5595967Speter addl %esi, %eax 5695967Speter movl 8(%edi), %esi 5795967Speter adcl $0, %edx 5895967Speter addl %esi, %eax 5995967Speter adcl $0, %edx 6095967Speter movl %eax, 8(%edi) 6195967Speter movl %edx, %esi 6295967Speter # Round 12 6395967Speter movl 12(%ebx), %eax 6495967Speter mull %ebp 6595967Speter addl %esi, %eax 6695967Speter movl 12(%edi), %esi 6795967Speter adcl $0, %edx 6895967Speter addl %esi, %eax 6995967Speter adcl $0, %edx 7095967Speter movl %eax, 12(%edi) 7195967Speter movl %edx, %esi 7295967Speter # Round 16 7395967Speter movl 16(%ebx), %eax 7495967Speter mull %ebp 7595967Speter addl %esi, %eax 7695967Speter movl 16(%edi), %esi 7795967Speter adcl $0, %edx 7895967Speter addl %esi, %eax 7995967Speter adcl $0, %edx 8095967Speter movl %eax, 16(%edi) 8195967Speter movl %edx, %esi 8295967Speter # Round 20 8395967Speter movl 20(%ebx), %eax 8495967Speter mull %ebp 8595967Speter addl %esi, %eax 8695967Speter movl 20(%edi), %esi 8795967Speter adcl $0, %edx 8895967Speter addl %esi, %eax 8995967Speter adcl $0, %edx 9095967Speter movl %eax, 20(%edi) 9195967Speter movl %edx, %esi 9295967Speter # Round 24 9395967Speter movl 24(%ebx), %eax 9495967Speter mull %ebp 9595967Speter addl %esi, %eax 9695967Speter movl 24(%edi), %esi 9795967Speter adcl $0, %edx 9895967Speter addl %esi, %eax 9995967Speter adcl $0, %edx 10095967Speter movl %eax, 24(%edi) 10195967Speter movl %edx, %esi 10295967Speter # Round 28 10395967Speter movl 28(%ebx), %eax 10495967Speter mull %ebp 10595967Speter addl %esi, %eax 10695967Speter movl 28(%edi), %esi 10795967Speter adcl $0, %edx 10895967Speter addl %esi, %eax 10995967Speter adcl $0, %edx 11095967Speter movl %eax, 28(%edi) 11195967Speter movl %edx, %esi 11295967Speter 11395967Speter movl (%esp), %ecx 11495967Speter addl $32, %ebx 11595967Speter addl $32, %edi 11695967Speter subl $8, %ecx 11795967Speter jnz .L001maw_loop 11895967Speter.L000maw_finish: 11995967Speter movl 32(%esp), %ecx 12095967Speter andl $7, %ecx 12195967Speter jnz .L002maw_finish2 12295967Speter jmp .L003maw_end 12395967Speter.align 16 12495967Speter.L002maw_finish2: 12595967Speter # Tail Round 0 12695967Speter movl (%ebx), %eax 12795967Speter mull %ebp 12895967Speter addl %esi, %eax 12995967Speter movl (%edi), %esi 13095967Speter adcl $0, %edx 13195967Speter addl %esi, %eax 13295967Speter adcl $0, %edx 13395967Speter decl %ecx 13495967Speter movl %eax, (%edi) 13595967Speter movl %edx, %esi 13695967Speter jz .L003maw_end 13795967Speter # Tail Round 1 13895967Speter movl 4(%ebx), %eax 13995967Speter mull %ebp 14095967Speter addl %esi, %eax 14195967Speter movl 4(%edi), %esi 14295967Speter adcl $0, %edx 14395967Speter addl %esi, %eax 14495967Speter adcl $0, %edx 14595967Speter decl %ecx 14695967Speter movl %eax, 4(%edi) 14795967Speter movl %edx, %esi 14895967Speter jz .L003maw_end 14995967Speter # Tail Round 2 15095967Speter movl 8(%ebx), %eax 15195967Speter mull %ebp 15295967Speter addl %esi, %eax 15395967Speter movl 8(%edi), %esi 15495967Speter adcl $0, %edx 15595967Speter addl %esi, %eax 15695967Speter adcl $0, %edx 15795967Speter decl %ecx 15895967Speter movl %eax, 8(%edi) 15995967Speter movl %edx, %esi 16095967Speter jz .L003maw_end 16195967Speter # Tail Round 3 16295967Speter movl 12(%ebx), %eax 16395967Speter mull %ebp 16495967Speter addl %esi, %eax 16595967Speter movl 12(%edi), %esi 16695967Speter adcl $0, %edx 16795967Speter addl %esi, %eax 16895967Speter adcl $0, %edx 16995967Speter decl %ecx 17095967Speter movl %eax, 12(%edi) 17195967Speter movl %edx, %esi 17295967Speter jz .L003maw_end 17395967Speter # Tail Round 4 17495967Speter movl 16(%ebx), %eax 17595967Speter mull %ebp 17695967Speter addl %esi, %eax 17795967Speter movl 16(%edi), %esi 17895967Speter adcl $0, %edx 17995967Speter addl %esi, %eax 18095967Speter adcl $0, %edx 18195967Speter decl %ecx 18295967Speter movl %eax, 16(%edi) 18395967Speter movl %edx, %esi 18495967Speter jz .L003maw_end 18595967Speter # Tail Round 5 18695967Speter movl 20(%ebx), %eax 18795967Speter mull %ebp 18895967Speter addl %esi, %eax 18995967Speter movl 20(%edi), %esi 19095967Speter adcl $0, %edx 19195967Speter addl %esi, %eax 19295967Speter adcl $0, %edx 19395967Speter decl %ecx 19495967Speter movl %eax, 20(%edi) 19595967Speter movl %edx, %esi 19695967Speter jz .L003maw_end 19795967Speter # Tail Round 6 19895967Speter movl 24(%ebx), %eax 19995967Speter mull %ebp 20095967Speter addl %esi, %eax 20195967Speter movl 24(%edi), %esi 20295967Speter adcl $0, %edx 20395967Speter addl %esi, %eax 20495967Speter adcl $0, %edx 20595967Speter movl %eax, 24(%edi) 20695967Speter movl %edx, %esi 20795967Speter.L003maw_end: 20895967Speter movl %esi, %eax 20995967Speter popl %ecx 21095967Speter popl %edi 21195967Speter popl %esi 21295967Speter popl %ebx 21395967Speter popl %ebp 21495967Speter ret 21595967Speter.bn_mul_add_words_end: 21695967Speter .size bn_mul_add_words,.bn_mul_add_words_end-bn_mul_add_words 21795967Speter.ident "bn_mul_add_words" 21895967Speter.text 21995967Speter .align 16 22095967Speter.globl bn_mul_words 22195967Speter .type bn_mul_words,@function 22295967Speterbn_mul_words: 22395967Speter pushl %ebp 22495967Speter pushl %ebx 22595967Speter pushl %esi 22695967Speter pushl %edi 22795967Speter 22895967Speter 22995967Speter xorl %esi, %esi 23095967Speter movl 20(%esp), %edi 23195967Speter movl 24(%esp), %ebx 23295967Speter movl 28(%esp), %ebp 23395967Speter movl 32(%esp), %ecx 23495967Speter andl $4294967288, %ebp 23595967Speter jz .L004mw_finish 23695967Speter.L005mw_loop: 23795967Speter # Round 0 23895967Speter movl (%ebx), %eax 23995967Speter mull %ecx 24095967Speter addl %esi, %eax 24195967Speter adcl $0, %edx 24295967Speter movl %eax, (%edi) 24395967Speter movl %edx, %esi 24495967Speter # Round 4 24595967Speter movl 4(%ebx), %eax 24695967Speter mull %ecx 24795967Speter addl %esi, %eax 24895967Speter adcl $0, %edx 24995967Speter movl %eax, 4(%edi) 25095967Speter movl %edx, %esi 25195967Speter # Round 8 25295967Speter movl 8(%ebx), %eax 25395967Speter mull %ecx 25495967Speter addl %esi, %eax 25595967Speter adcl $0, %edx 25695967Speter movl %eax, 8(%edi) 25795967Speter movl %edx, %esi 25895967Speter # Round 12 25995967Speter movl 12(%ebx), %eax 26095967Speter mull %ecx 26195967Speter addl %esi, %eax 26295967Speter adcl $0, %edx 26395967Speter movl %eax, 12(%edi) 26495967Speter movl %edx, %esi 26595967Speter # Round 16 26695967Speter movl 16(%ebx), %eax 26795967Speter mull %ecx 26895967Speter addl %esi, %eax 26995967Speter adcl $0, %edx 27095967Speter movl %eax, 16(%edi) 27195967Speter movl %edx, %esi 27295967Speter # Round 20 27395967Speter movl 20(%ebx), %eax 27495967Speter mull %ecx 27595967Speter addl %esi, %eax 27695967Speter adcl $0, %edx 27795967Speter movl %eax, 20(%edi) 27895967Speter movl %edx, %esi 27995967Speter # Round 24 28095967Speter movl 24(%ebx), %eax 28195967Speter mull %ecx 28295967Speter addl %esi, %eax 28395967Speter adcl $0, %edx 28495967Speter movl %eax, 24(%edi) 28595967Speter movl %edx, %esi 28695967Speter # Round 28 28795967Speter movl 28(%ebx), %eax 28895967Speter mull %ecx 28995967Speter addl %esi, %eax 29095967Speter adcl $0, %edx 29195967Speter movl %eax, 28(%edi) 29295967Speter movl %edx, %esi 29395967Speter 29495967Speter addl $32, %ebx 29595967Speter addl $32, %edi 29695967Speter subl $8, %ebp 29795967Speter jz .L004mw_finish 29895967Speter jmp .L005mw_loop 29995967Speter.L004mw_finish: 30095967Speter movl 28(%esp), %ebp 30195967Speter andl $7, %ebp 30295967Speter jnz .L006mw_finish2 30395967Speter jmp .L007mw_end 30495967Speter.align 16 30595967Speter.L006mw_finish2: 30695967Speter # Tail Round 0 30795967Speter movl (%ebx), %eax 30895967Speter mull %ecx 30995967Speter addl %esi, %eax 31095967Speter adcl $0, %edx 31195967Speter movl %eax, (%edi) 31295967Speter movl %edx, %esi 31395967Speter decl %ebp 31495967Speter jz .L007mw_end 31595967Speter # Tail Round 1 31695967Speter movl 4(%ebx), %eax 31795967Speter mull %ecx 31895967Speter addl %esi, %eax 31995967Speter adcl $0, %edx 32095967Speter movl %eax, 4(%edi) 32195967Speter movl %edx, %esi 32295967Speter decl %ebp 32395967Speter jz .L007mw_end 32495967Speter # Tail Round 2 32595967Speter movl 8(%ebx), %eax 32695967Speter mull %ecx 32795967Speter addl %esi, %eax 32895967Speter adcl $0, %edx 32995967Speter movl %eax, 8(%edi) 33095967Speter movl %edx, %esi 33195967Speter decl %ebp 33295967Speter jz .L007mw_end 33395967Speter # Tail Round 3 33495967Speter movl 12(%ebx), %eax 33595967Speter mull %ecx 33695967Speter addl %esi, %eax 33795967Speter adcl $0, %edx 33895967Speter movl %eax, 12(%edi) 33995967Speter movl %edx, %esi 34095967Speter decl %ebp 34195967Speter jz .L007mw_end 34295967Speter # Tail Round 4 34395967Speter movl 16(%ebx), %eax 34495967Speter mull %ecx 34595967Speter addl %esi, %eax 34695967Speter adcl $0, %edx 34795967Speter movl %eax, 16(%edi) 34895967Speter movl %edx, %esi 34995967Speter decl %ebp 35095967Speter jz .L007mw_end 35195967Speter # Tail Round 5 35295967Speter movl 20(%ebx), %eax 35395967Speter mull %ecx 35495967Speter addl %esi, %eax 35595967Speter adcl $0, %edx 35695967Speter movl %eax, 20(%edi) 35795967Speter movl %edx, %esi 35895967Speter decl %ebp 35995967Speter jz .L007mw_end 36095967Speter # Tail Round 6 36195967Speter movl 24(%ebx), %eax 36295967Speter mull %ecx 36395967Speter addl %esi, %eax 36495967Speter adcl $0, %edx 36595967Speter movl %eax, 24(%edi) 36695967Speter movl %edx, %esi 36795967Speter.L007mw_end: 36895967Speter movl %esi, %eax 36995967Speter popl %edi 37095967Speter popl %esi 37195967Speter popl %ebx 37295967Speter popl %ebp 37395967Speter ret 37495967Speter.bn_mul_words_end: 37595967Speter .size bn_mul_words,.bn_mul_words_end-bn_mul_words 37695967Speter.ident "bn_mul_words" 37795967Speter.text 37895967Speter .align 16 37995967Speter.globl bn_sqr_words 38095967Speter .type bn_sqr_words,@function 38195967Speterbn_sqr_words: 38295967Speter pushl %ebp 38395967Speter pushl %ebx 38495967Speter pushl %esi 38595967Speter pushl %edi 38695967Speter 38795967Speter 38895967Speter movl 20(%esp), %esi 38995967Speter movl 24(%esp), %edi 39095967Speter movl 28(%esp), %ebx 39195967Speter andl $4294967288, %ebx 39295967Speter jz .L008sw_finish 39395967Speter.L009sw_loop: 39495967Speter # Round 0 39595967Speter movl (%edi), %eax 39695967Speter mull %eax 39795967Speter movl %eax, (%esi) 39895967Speter movl %edx, 4(%esi) 39995967Speter # Round 4 40095967Speter movl 4(%edi), %eax 40195967Speter mull %eax 40295967Speter movl %eax, 8(%esi) 40395967Speter movl %edx, 12(%esi) 40495967Speter # Round 8 40595967Speter movl 8(%edi), %eax 40695967Speter mull %eax 40795967Speter movl %eax, 16(%esi) 40895967Speter movl %edx, 20(%esi) 40995967Speter # Round 12 41095967Speter movl 12(%edi), %eax 41195967Speter mull %eax 41295967Speter movl %eax, 24(%esi) 41395967Speter movl %edx, 28(%esi) 41495967Speter # Round 16 41595967Speter movl 16(%edi), %eax 41695967Speter mull %eax 41795967Speter movl %eax, 32(%esi) 41895967Speter movl %edx, 36(%esi) 41995967Speter # Round 20 42095967Speter movl 20(%edi), %eax 42195967Speter mull %eax 42295967Speter movl %eax, 40(%esi) 42395967Speter movl %edx, 44(%esi) 42495967Speter # Round 24 42595967Speter movl 24(%edi), %eax 42695967Speter mull %eax 42795967Speter movl %eax, 48(%esi) 42895967Speter movl %edx, 52(%esi) 42995967Speter # Round 28 43095967Speter movl 28(%edi), %eax 43195967Speter mull %eax 43295967Speter movl %eax, 56(%esi) 43395967Speter movl %edx, 60(%esi) 43495967Speter 43595967Speter addl $32, %edi 43695967Speter addl $64, %esi 43795967Speter subl $8, %ebx 43895967Speter jnz .L009sw_loop 43995967Speter.L008sw_finish: 44095967Speter movl 28(%esp), %ebx 44195967Speter andl $7, %ebx 44295967Speter jz .L010sw_end 44395967Speter # Tail Round 0 44495967Speter movl (%edi), %eax 44595967Speter mull %eax 44695967Speter movl %eax, (%esi) 44795967Speter decl %ebx 44895967Speter movl %edx, 4(%esi) 44995967Speter jz .L010sw_end 45095967Speter # Tail Round 1 45195967Speter movl 4(%edi), %eax 45295967Speter mull %eax 45395967Speter movl %eax, 8(%esi) 45495967Speter decl %ebx 45595967Speter movl %edx, 12(%esi) 45695967Speter jz .L010sw_end 45795967Speter # Tail Round 2 45895967Speter movl 8(%edi), %eax 45995967Speter mull %eax 46095967Speter movl %eax, 16(%esi) 46195967Speter decl %ebx 46295967Speter movl %edx, 20(%esi) 46395967Speter jz .L010sw_end 46495967Speter # Tail Round 3 46595967Speter movl 12(%edi), %eax 46695967Speter mull %eax 46795967Speter movl %eax, 24(%esi) 46895967Speter decl %ebx 46995967Speter movl %edx, 28(%esi) 47095967Speter jz .L010sw_end 47195967Speter # Tail Round 4 47295967Speter movl 16(%edi), %eax 47395967Speter mull %eax 47495967Speter movl %eax, 32(%esi) 47595967Speter decl %ebx 47695967Speter movl %edx, 36(%esi) 47795967Speter jz .L010sw_end 47895967Speter # Tail Round 5 47995967Speter movl 20(%edi), %eax 48095967Speter mull %eax 48195967Speter movl %eax, 40(%esi) 48295967Speter decl %ebx 48395967Speter movl %edx, 44(%esi) 48495967Speter jz .L010sw_end 48595967Speter # Tail Round 6 48695967Speter movl 24(%edi), %eax 48795967Speter mull %eax 48895967Speter movl %eax, 48(%esi) 48995967Speter movl %edx, 52(%esi) 49095967Speter.L010sw_end: 49195967Speter popl %edi 49295967Speter popl %esi 49395967Speter popl %ebx 49495967Speter popl %ebp 49595967Speter ret 49695967Speter.bn_sqr_words_end: 49795967Speter .size bn_sqr_words,.bn_sqr_words_end-bn_sqr_words 49895967Speter.ident "bn_sqr_words" 49995967Speter.text 50095967Speter .align 16 50195967Speter.globl bn_div_words 50295967Speter .type bn_div_words,@function 50395967Speterbn_div_words: 50495967Speter pushl %ebp 50595967Speter pushl %ebx 50695967Speter pushl %esi 50795967Speter pushl %edi 50895967Speter 50995967Speter movl 20(%esp), %edx 51095967Speter movl 24(%esp), %eax 51195967Speter movl 28(%esp), %ebx 51295967Speter divl %ebx 51395967Speter popl %edi 51495967Speter popl %esi 51595967Speter popl %ebx 51695967Speter popl %ebp 51795967Speter ret 51895967Speter.bn_div_words_end: 51995967Speter .size bn_div_words,.bn_div_words_end-bn_div_words 52095967Speter.ident "bn_div_words" 52195967Speter.text 52295967Speter .align 16 52395967Speter.globl bn_add_words 52495967Speter .type bn_add_words,@function 52595967Speterbn_add_words: 52695967Speter pushl %ebp 52795967Speter pushl %ebx 52895967Speter pushl %esi 52995967Speter pushl %edi 53095967Speter 53195967Speter 53295967Speter movl 20(%esp), %ebx 53395967Speter movl 24(%esp), %esi 53495967Speter movl 28(%esp), %edi 53595967Speter movl 32(%esp), %ebp 53695967Speter xorl %eax, %eax 53795967Speter andl $4294967288, %ebp 53895967Speter jz .L011aw_finish 53995967Speter.L012aw_loop: 54095967Speter # Round 0 54195967Speter movl (%esi), %ecx 54295967Speter movl (%edi), %edx 54395967Speter addl %eax, %ecx 54495967Speter movl $0, %eax 54595967Speter adcl %eax, %eax 54695967Speter addl %edx, %ecx 54795967Speter adcl $0, %eax 54895967Speter movl %ecx, (%ebx) 54995967Speter # Round 1 55095967Speter movl 4(%esi), %ecx 55195967Speter movl 4(%edi), %edx 55295967Speter addl %eax, %ecx 55395967Speter movl $0, %eax 55495967Speter adcl %eax, %eax 55595967Speter addl %edx, %ecx 55695967Speter adcl $0, %eax 55795967Speter movl %ecx, 4(%ebx) 55895967Speter # Round 2 55995967Speter movl 8(%esi), %ecx 56095967Speter movl 8(%edi), %edx 56195967Speter addl %eax, %ecx 56295967Speter movl $0, %eax 56395967Speter adcl %eax, %eax 56495967Speter addl %edx, %ecx 56595967Speter adcl $0, %eax 56695967Speter movl %ecx, 8(%ebx) 56795967Speter # Round 3 56895967Speter movl 12(%esi), %ecx 56995967Speter movl 12(%edi), %edx 57095967Speter addl %eax, %ecx 57195967Speter movl $0, %eax 57295967Speter adcl %eax, %eax 57395967Speter addl %edx, %ecx 57495967Speter adcl $0, %eax 57595967Speter movl %ecx, 12(%ebx) 57695967Speter # Round 4 57795967Speter movl 16(%esi), %ecx 57895967Speter movl 16(%edi), %edx 57995967Speter addl %eax, %ecx 58095967Speter movl $0, %eax 58195967Speter adcl %eax, %eax 58295967Speter addl %edx, %ecx 58395967Speter adcl $0, %eax 58495967Speter movl %ecx, 16(%ebx) 58595967Speter # Round 5 58695967Speter movl 20(%esi), %ecx 58795967Speter movl 20(%edi), %edx 58895967Speter addl %eax, %ecx 58995967Speter movl $0, %eax 59095967Speter adcl %eax, %eax 59195967Speter addl %edx, %ecx 59295967Speter adcl $0, %eax 59395967Speter movl %ecx, 20(%ebx) 59495967Speter # Round 6 59595967Speter movl 24(%esi), %ecx 59695967Speter movl 24(%edi), %edx 59795967Speter addl %eax, %ecx 59895967Speter movl $0, %eax 59995967Speter adcl %eax, %eax 60095967Speter addl %edx, %ecx 60195967Speter adcl $0, %eax 60295967Speter movl %ecx, 24(%ebx) 60395967Speter # Round 7 60495967Speter movl 28(%esi), %ecx 60595967Speter movl 28(%edi), %edx 60695967Speter addl %eax, %ecx 60795967Speter movl $0, %eax 60895967Speter adcl %eax, %eax 60995967Speter addl %edx, %ecx 61095967Speter adcl $0, %eax 61195967Speter movl %ecx, 28(%ebx) 61295967Speter 61395967Speter addl $32, %esi 61495967Speter addl $32, %edi 61595967Speter addl $32, %ebx 61695967Speter subl $8, %ebp 61795967Speter jnz .L012aw_loop 61895967Speter.L011aw_finish: 61995967Speter movl 32(%esp), %ebp 62095967Speter andl $7, %ebp 62195967Speter jz .L013aw_end 62295967Speter # Tail Round 0 62395967Speter movl (%esi), %ecx 62495967Speter movl (%edi), %edx 62595967Speter addl %eax, %ecx 62695967Speter movl $0, %eax 62795967Speter adcl %eax, %eax 62895967Speter addl %edx, %ecx 62995967Speter adcl $0, %eax 63095967Speter decl %ebp 63195967Speter movl %ecx, (%ebx) 63295967Speter jz .L013aw_end 63395967Speter # Tail Round 1 63495967Speter movl 4(%esi), %ecx 63595967Speter movl 4(%edi), %edx 63695967Speter addl %eax, %ecx 63795967Speter movl $0, %eax 63895967Speter adcl %eax, %eax 63995967Speter addl %edx, %ecx 64095967Speter adcl $0, %eax 64195967Speter decl %ebp 64295967Speter movl %ecx, 4(%ebx) 64395967Speter jz .L013aw_end 64495967Speter # Tail Round 2 64595967Speter movl 8(%esi), %ecx 64695967Speter movl 8(%edi), %edx 64795967Speter addl %eax, %ecx 64895967Speter movl $0, %eax 64995967Speter adcl %eax, %eax 65095967Speter addl %edx, %ecx 65195967Speter adcl $0, %eax 65295967Speter decl %ebp 65395967Speter movl %ecx, 8(%ebx) 65495967Speter jz .L013aw_end 65595967Speter # Tail Round 3 65695967Speter movl 12(%esi), %ecx 65795967Speter movl 12(%edi), %edx 65895967Speter addl %eax, %ecx 65995967Speter movl $0, %eax 66095967Speter adcl %eax, %eax 66195967Speter addl %edx, %ecx 66295967Speter adcl $0, %eax 66395967Speter decl %ebp 66495967Speter movl %ecx, 12(%ebx) 66595967Speter jz .L013aw_end 66695967Speter # Tail Round 4 66795967Speter movl 16(%esi), %ecx 66895967Speter movl 16(%edi), %edx 66995967Speter addl %eax, %ecx 67095967Speter movl $0, %eax 67195967Speter adcl %eax, %eax 67295967Speter addl %edx, %ecx 67395967Speter adcl $0, %eax 67495967Speter decl %ebp 67595967Speter movl %ecx, 16(%ebx) 67695967Speter jz .L013aw_end 67795967Speter # Tail Round 5 67895967Speter movl 20(%esi), %ecx 67995967Speter movl 20(%edi), %edx 68095967Speter addl %eax, %ecx 68195967Speter movl $0, %eax 68295967Speter adcl %eax, %eax 68395967Speter addl %edx, %ecx 68495967Speter adcl $0, %eax 68595967Speter decl %ebp 68695967Speter movl %ecx, 20(%ebx) 68795967Speter jz .L013aw_end 68895967Speter # Tail Round 6 68995967Speter movl 24(%esi), %ecx 69095967Speter movl 24(%edi), %edx 69195967Speter addl %eax, %ecx 69295967Speter movl $0, %eax 69395967Speter adcl %eax, %eax 69495967Speter addl %edx, %ecx 69595967Speter adcl $0, %eax 69695967Speter movl %ecx, 24(%ebx) 69795967Speter.L013aw_end: 69895967Speter popl %edi 69995967Speter popl %esi 70095967Speter popl %ebx 70195967Speter popl %ebp 70295967Speter ret 70395967Speter.bn_add_words_end: 70495967Speter .size bn_add_words,.bn_add_words_end-bn_add_words 70595967Speter.ident "bn_add_words" 70695967Speter.text 70795967Speter .align 16 70895967Speter.globl bn_sub_words 70995967Speter .type bn_sub_words,@function 71095967Speterbn_sub_words: 71195967Speter pushl %ebp 71295967Speter pushl %ebx 71395967Speter pushl %esi 71495967Speter pushl %edi 71595967Speter 71695967Speter 71795967Speter movl 20(%esp), %ebx 71895967Speter movl 24(%esp), %esi 71995967Speter movl 28(%esp), %edi 72095967Speter movl 32(%esp), %ebp 72195967Speter xorl %eax, %eax 72295967Speter andl $4294967288, %ebp 72395967Speter jz .L014aw_finish 72495967Speter.L015aw_loop: 72595967Speter # Round 0 72695967Speter movl (%esi), %ecx 72795967Speter movl (%edi), %edx 72895967Speter subl %eax, %ecx 72995967Speter movl $0, %eax 73095967Speter adcl %eax, %eax 73195967Speter subl %edx, %ecx 73295967Speter adcl $0, %eax 73395967Speter movl %ecx, (%ebx) 73495967Speter # Round 1 73595967Speter movl 4(%esi), %ecx 73695967Speter movl 4(%edi), %edx 73795967Speter subl %eax, %ecx 73895967Speter movl $0, %eax 73995967Speter adcl %eax, %eax 74095967Speter subl %edx, %ecx 74195967Speter adcl $0, %eax 74295967Speter movl %ecx, 4(%ebx) 74395967Speter # Round 2 74495967Speter movl 8(%esi), %ecx 74595967Speter movl 8(%edi), %edx 74695967Speter subl %eax, %ecx 74795967Speter movl $0, %eax 74895967Speter adcl %eax, %eax 74995967Speter subl %edx, %ecx 75095967Speter adcl $0, %eax 75195967Speter movl %ecx, 8(%ebx) 75295967Speter # Round 3 75395967Speter movl 12(%esi), %ecx 75495967Speter movl 12(%edi), %edx 75595967Speter subl %eax, %ecx 75695967Speter movl $0, %eax 75795967Speter adcl %eax, %eax 75895967Speter subl %edx, %ecx 75995967Speter adcl $0, %eax 76095967Speter movl %ecx, 12(%ebx) 76195967Speter # Round 4 76295967Speter movl 16(%esi), %ecx 76395967Speter movl 16(%edi), %edx 76495967Speter subl %eax, %ecx 76595967Speter movl $0, %eax 76695967Speter adcl %eax, %eax 76795967Speter subl %edx, %ecx 76895967Speter adcl $0, %eax 76995967Speter movl %ecx, 16(%ebx) 77095967Speter # Round 5 77195967Speter movl 20(%esi), %ecx 77295967Speter movl 20(%edi), %edx 77395967Speter subl %eax, %ecx 77495967Speter movl $0, %eax 77595967Speter adcl %eax, %eax 77695967Speter subl %edx, %ecx 77795967Speter adcl $0, %eax 77895967Speter movl %ecx, 20(%ebx) 77995967Speter # Round 6 78095967Speter movl 24(%esi), %ecx 78195967Speter movl 24(%edi), %edx 78295967Speter subl %eax, %ecx 78395967Speter movl $0, %eax 78495967Speter adcl %eax, %eax 78595967Speter subl %edx, %ecx 78695967Speter adcl $0, %eax 78795967Speter movl %ecx, 24(%ebx) 78895967Speter # Round 7 78995967Speter movl 28(%esi), %ecx 79095967Speter movl 28(%edi), %edx 79195967Speter subl %eax, %ecx 79295967Speter movl $0, %eax 79395967Speter adcl %eax, %eax 79495967Speter subl %edx, %ecx 79595967Speter adcl $0, %eax 79695967Speter movl %ecx, 28(%ebx) 79795967Speter 79895967Speter addl $32, %esi 79995967Speter addl $32, %edi 80095967Speter addl $32, %ebx 80195967Speter subl $8, %ebp 80295967Speter jnz .L015aw_loop 80395967Speter.L014aw_finish: 80495967Speter movl 32(%esp), %ebp 80595967Speter andl $7, %ebp 80695967Speter jz .L016aw_end 80795967Speter # Tail Round 0 80895967Speter movl (%esi), %ecx 80995967Speter movl (%edi), %edx 81095967Speter subl %eax, %ecx 81195967Speter movl $0, %eax 81295967Speter adcl %eax, %eax 81395967Speter subl %edx, %ecx 81495967Speter adcl $0, %eax 81595967Speter decl %ebp 81695967Speter movl %ecx, (%ebx) 81795967Speter jz .L016aw_end 81895967Speter # Tail Round 1 81995967Speter movl 4(%esi), %ecx 82095967Speter movl 4(%edi), %edx 82195967Speter subl %eax, %ecx 82295967Speter movl $0, %eax 82395967Speter adcl %eax, %eax 82495967Speter subl %edx, %ecx 82595967Speter adcl $0, %eax 82695967Speter decl %ebp 82795967Speter movl %ecx, 4(%ebx) 82895967Speter jz .L016aw_end 82995967Speter # Tail Round 2 83095967Speter movl 8(%esi), %ecx 83195967Speter movl 8(%edi), %edx 83295967Speter subl %eax, %ecx 83395967Speter movl $0, %eax 83495967Speter adcl %eax, %eax 83595967Speter subl %edx, %ecx 83695967Speter adcl $0, %eax 83795967Speter decl %ebp 83895967Speter movl %ecx, 8(%ebx) 83995967Speter jz .L016aw_end 84095967Speter # Tail Round 3 84195967Speter movl 12(%esi), %ecx 84295967Speter movl 12(%edi), %edx 84395967Speter subl %eax, %ecx 84495967Speter movl $0, %eax 84595967Speter adcl %eax, %eax 84695967Speter subl %edx, %ecx 84795967Speter adcl $0, %eax 84895967Speter decl %ebp 84995967Speter movl %ecx, 12(%ebx) 85095967Speter jz .L016aw_end 85195967Speter # Tail Round 4 85295967Speter movl 16(%esi), %ecx 85395967Speter movl 16(%edi), %edx 85495967Speter subl %eax, %ecx 85595967Speter movl $0, %eax 85695967Speter adcl %eax, %eax 85795967Speter subl %edx, %ecx 85895967Speter adcl $0, %eax 85995967Speter decl %ebp 86095967Speter movl %ecx, 16(%ebx) 86195967Speter jz .L016aw_end 86295967Speter # Tail Round 5 86395967Speter movl 20(%esi), %ecx 86495967Speter movl 20(%edi), %edx 86595967Speter subl %eax, %ecx 86695967Speter movl $0, %eax 86795967Speter adcl %eax, %eax 86895967Speter subl %edx, %ecx 86995967Speter adcl $0, %eax 87095967Speter decl %ebp 87195967Speter movl %ecx, 20(%ebx) 87295967Speter jz .L016aw_end 87395967Speter # Tail Round 6 87495967Speter movl 24(%esi), %ecx 87595967Speter movl 24(%edi), %edx 87695967Speter subl %eax, %ecx 87795967Speter movl $0, %eax 87895967Speter adcl %eax, %eax 87995967Speter subl %edx, %ecx 88095967Speter adcl $0, %eax 88195967Speter movl %ecx, 24(%ebx) 88295967Speter.L016aw_end: 88395967Speter popl %edi 88495967Speter popl %esi 88595967Speter popl %ebx 88695967Speter popl %ebp 88795967Speter ret 88895967Speter.bn_sub_words_end: 88995967Speter .size bn_sub_words,.bn_sub_words_end-bn_sub_words 89095967Speter.ident "bn_sub_words" 891