195967Speter # $FreeBSD$ 2238405Sjkim.file "bn-586.s" 395967Speter.text 4238405Sjkim.globl bn_mul_add_words 5238405Sjkim.type bn_mul_add_words,@function 6238405Sjkim.align 16 795967Speterbn_mul_add_words: 8238405Sjkim.L_bn_mul_add_words_begin: 9238405Sjkim leal OPENSSL_ia32cap_P,%eax 10238405Sjkim btl $26,(%eax) 11238405Sjkim jnc .L000maw_non_sse2 12238405Sjkim movl 4(%esp),%eax 13238405Sjkim movl 8(%esp),%edx 14238405Sjkim movl 12(%esp),%ecx 15238405Sjkim movd 16(%esp),%mm0 16238405Sjkim pxor %mm1,%mm1 17238405Sjkim jmp .L001maw_sse2_entry 18238405Sjkim.align 16 19238405Sjkim.L002maw_sse2_unrolled: 20238405Sjkim movd (%eax),%mm3 21238405Sjkim paddq %mm3,%mm1 22238405Sjkim movd (%edx),%mm2 23238405Sjkim pmuludq %mm0,%mm2 24238405Sjkim movd 4(%edx),%mm4 25238405Sjkim pmuludq %mm0,%mm4 26238405Sjkim movd 8(%edx),%mm6 27238405Sjkim pmuludq %mm0,%mm6 28238405Sjkim movd 12(%edx),%mm7 29238405Sjkim pmuludq %mm0,%mm7 30238405Sjkim paddq %mm2,%mm1 31238405Sjkim movd 4(%eax),%mm3 32238405Sjkim paddq %mm4,%mm3 33238405Sjkim movd 8(%eax),%mm5 34238405Sjkim paddq %mm6,%mm5 35238405Sjkim movd 12(%eax),%mm4 36238405Sjkim paddq %mm4,%mm7 37238405Sjkim movd %mm1,(%eax) 38238405Sjkim movd 16(%edx),%mm2 39238405Sjkim pmuludq %mm0,%mm2 40238405Sjkim psrlq $32,%mm1 41238405Sjkim movd 20(%edx),%mm4 42238405Sjkim pmuludq %mm0,%mm4 43238405Sjkim paddq %mm3,%mm1 44238405Sjkim movd 24(%edx),%mm6 45238405Sjkim pmuludq %mm0,%mm6 46238405Sjkim movd %mm1,4(%eax) 47238405Sjkim psrlq $32,%mm1 48238405Sjkim movd 28(%edx),%mm3 49238405Sjkim addl $32,%edx 50238405Sjkim pmuludq %mm0,%mm3 51238405Sjkim paddq %mm5,%mm1 52238405Sjkim movd 16(%eax),%mm5 53238405Sjkim paddq %mm5,%mm2 54238405Sjkim movd %mm1,8(%eax) 55238405Sjkim psrlq $32,%mm1 56238405Sjkim paddq %mm7,%mm1 57238405Sjkim movd 20(%eax),%mm5 58238405Sjkim paddq %mm5,%mm4 59238405Sjkim movd %mm1,12(%eax) 60238405Sjkim psrlq $32,%mm1 61238405Sjkim paddq %mm2,%mm1 62238405Sjkim movd 24(%eax),%mm5 63238405Sjkim paddq %mm5,%mm6 64238405Sjkim movd %mm1,16(%eax) 65238405Sjkim psrlq $32,%mm1 66238405Sjkim paddq %mm4,%mm1 67238405Sjkim movd 28(%eax),%mm5 68238405Sjkim paddq %mm5,%mm3 69238405Sjkim movd %mm1,20(%eax) 70238405Sjkim psrlq $32,%mm1 71238405Sjkim paddq %mm6,%mm1 72238405Sjkim movd %mm1,24(%eax) 73238405Sjkim psrlq $32,%mm1 74238405Sjkim paddq %mm3,%mm1 75238405Sjkim movd %mm1,28(%eax) 76238405Sjkim leal 32(%eax),%eax 77238405Sjkim psrlq $32,%mm1 78238405Sjkim subl $8,%ecx 79238405Sjkim jz .L003maw_sse2_exit 80238405Sjkim.L001maw_sse2_entry: 81238405Sjkim testl $4294967288,%ecx 82238405Sjkim jnz .L002maw_sse2_unrolled 83238405Sjkim.align 4 84238405Sjkim.L004maw_sse2_loop: 85238405Sjkim movd (%edx),%mm2 86238405Sjkim movd (%eax),%mm3 87238405Sjkim pmuludq %mm0,%mm2 88238405Sjkim leal 4(%edx),%edx 89238405Sjkim paddq %mm3,%mm1 90238405Sjkim paddq %mm2,%mm1 91238405Sjkim movd %mm1,(%eax) 92238405Sjkim subl $1,%ecx 93238405Sjkim psrlq $32,%mm1 94238405Sjkim leal 4(%eax),%eax 95238405Sjkim jnz .L004maw_sse2_loop 96238405Sjkim.L003maw_sse2_exit: 97238405Sjkim movd %mm1,%eax 98238405Sjkim emms 99238405Sjkim ret 100238405Sjkim.align 16 101238405Sjkim.L000maw_non_sse2: 10295967Speter pushl %ebp 10395967Speter pushl %ebx 10495967Speter pushl %esi 10595967Speter pushl %edi 10695967Speter 107238405Sjkim xorl %esi,%esi 108238405Sjkim movl 20(%esp),%edi 109238405Sjkim movl 28(%esp),%ecx 110238405Sjkim movl 24(%esp),%ebx 111238405Sjkim andl $4294967288,%ecx 112238405Sjkim movl 32(%esp),%ebp 11395967Speter pushl %ecx 114238405Sjkim jz .L005maw_finish 115238405Sjkim.align 16 116238405Sjkim.L006maw_loop: 117127326Smarkm 118238405Sjkim movl (%ebx),%eax 11995967Speter mull %ebp 120238405Sjkim addl %esi,%eax 121238405Sjkim adcl $0,%edx 122238405Sjkim addl (%edi),%eax 123238405Sjkim adcl $0,%edx 124238405Sjkim movl %eax,(%edi) 125238405Sjkim movl %edx,%esi 126127326Smarkm 127238405Sjkim movl 4(%ebx),%eax 12895967Speter mull %ebp 129238405Sjkim addl %esi,%eax 130238405Sjkim adcl $0,%edx 131238405Sjkim addl 4(%edi),%eax 132238405Sjkim adcl $0,%edx 133238405Sjkim movl %eax,4(%edi) 134238405Sjkim movl %edx,%esi 135127326Smarkm 136238405Sjkim movl 8(%ebx),%eax 13795967Speter mull %ebp 138238405Sjkim addl %esi,%eax 139238405Sjkim adcl $0,%edx 140238405Sjkim addl 8(%edi),%eax 141238405Sjkim adcl $0,%edx 142238405Sjkim movl %eax,8(%edi) 143238405Sjkim movl %edx,%esi 144127326Smarkm 145238405Sjkim movl 12(%ebx),%eax 14695967Speter mull %ebp 147238405Sjkim addl %esi,%eax 148238405Sjkim adcl $0,%edx 149238405Sjkim addl 12(%edi),%eax 150238405Sjkim adcl $0,%edx 151238405Sjkim movl %eax,12(%edi) 152238405Sjkim movl %edx,%esi 153127326Smarkm 154238405Sjkim movl 16(%ebx),%eax 15595967Speter mull %ebp 156238405Sjkim addl %esi,%eax 157238405Sjkim adcl $0,%edx 158238405Sjkim addl 16(%edi),%eax 159238405Sjkim adcl $0,%edx 160238405Sjkim movl %eax,16(%edi) 161238405Sjkim movl %edx,%esi 162127326Smarkm 163238405Sjkim movl 20(%ebx),%eax 16495967Speter mull %ebp 165238405Sjkim addl %esi,%eax 166238405Sjkim adcl $0,%edx 167238405Sjkim addl 20(%edi),%eax 168238405Sjkim adcl $0,%edx 169238405Sjkim movl %eax,20(%edi) 170238405Sjkim movl %edx,%esi 171127326Smarkm 172238405Sjkim movl 24(%ebx),%eax 17395967Speter mull %ebp 174238405Sjkim addl %esi,%eax 175238405Sjkim adcl $0,%edx 176238405Sjkim addl 24(%edi),%eax 177238405Sjkim adcl $0,%edx 178238405Sjkim movl %eax,24(%edi) 179238405Sjkim movl %edx,%esi 180127326Smarkm 181238405Sjkim movl 28(%ebx),%eax 18295967Speter mull %ebp 183238405Sjkim addl %esi,%eax 184238405Sjkim adcl $0,%edx 185238405Sjkim addl 28(%edi),%eax 186238405Sjkim adcl $0,%edx 187238405Sjkim movl %eax,28(%edi) 188238405Sjkim movl %edx,%esi 18995967Speter 190238405Sjkim subl $8,%ecx 191238405Sjkim leal 32(%ebx),%ebx 192238405Sjkim leal 32(%edi),%edi 193238405Sjkim jnz .L006maw_loop 194238405Sjkim.L005maw_finish: 195238405Sjkim movl 32(%esp),%ecx 196238405Sjkim andl $7,%ecx 197238405Sjkim jnz .L007maw_finish2 198238405Sjkim jmp .L008maw_end 199238405Sjkim.L007maw_finish2: 200127326Smarkm 201238405Sjkim movl (%ebx),%eax 20295967Speter mull %ebp 203238405Sjkim addl %esi,%eax 204238405Sjkim adcl $0,%edx 205238405Sjkim addl (%edi),%eax 206238405Sjkim adcl $0,%edx 20795967Speter decl %ecx 208238405Sjkim movl %eax,(%edi) 209238405Sjkim movl %edx,%esi 210238405Sjkim jz .L008maw_end 211127326Smarkm 212238405Sjkim movl 4(%ebx),%eax 21395967Speter mull %ebp 214238405Sjkim addl %esi,%eax 215238405Sjkim adcl $0,%edx 216238405Sjkim addl 4(%edi),%eax 217238405Sjkim adcl $0,%edx 21895967Speter decl %ecx 219238405Sjkim movl %eax,4(%edi) 220238405Sjkim movl %edx,%esi 221238405Sjkim jz .L008maw_end 222127326Smarkm 223238405Sjkim movl 8(%ebx),%eax 22495967Speter mull %ebp 225238405Sjkim addl %esi,%eax 226238405Sjkim adcl $0,%edx 227238405Sjkim addl 8(%edi),%eax 228238405Sjkim adcl $0,%edx 22995967Speter decl %ecx 230238405Sjkim movl %eax,8(%edi) 231238405Sjkim movl %edx,%esi 232238405Sjkim jz .L008maw_end 233127326Smarkm 234238405Sjkim movl 12(%ebx),%eax 23595967Speter mull %ebp 236238405Sjkim addl %esi,%eax 237238405Sjkim adcl $0,%edx 238238405Sjkim addl 12(%edi),%eax 239238405Sjkim adcl $0,%edx 24095967Speter decl %ecx 241238405Sjkim movl %eax,12(%edi) 242238405Sjkim movl %edx,%esi 243238405Sjkim jz .L008maw_end 244127326Smarkm 245238405Sjkim movl 16(%ebx),%eax 24695967Speter mull %ebp 247238405Sjkim addl %esi,%eax 248238405Sjkim adcl $0,%edx 249238405Sjkim addl 16(%edi),%eax 250238405Sjkim adcl $0,%edx 25195967Speter decl %ecx 252238405Sjkim movl %eax,16(%edi) 253238405Sjkim movl %edx,%esi 254238405Sjkim jz .L008maw_end 255127326Smarkm 256238405Sjkim movl 20(%ebx),%eax 25795967Speter mull %ebp 258238405Sjkim addl %esi,%eax 259238405Sjkim adcl $0,%edx 260238405Sjkim addl 20(%edi),%eax 261238405Sjkim adcl $0,%edx 26295967Speter decl %ecx 263238405Sjkim movl %eax,20(%edi) 264238405Sjkim movl %edx,%esi 265238405Sjkim jz .L008maw_end 266127326Smarkm 267238405Sjkim movl 24(%ebx),%eax 26895967Speter mull %ebp 269238405Sjkim addl %esi,%eax 270238405Sjkim adcl $0,%edx 271238405Sjkim addl 24(%edi),%eax 272238405Sjkim adcl $0,%edx 273238405Sjkim movl %eax,24(%edi) 274238405Sjkim movl %edx,%esi 275238405Sjkim.L008maw_end: 276238405Sjkim movl %esi,%eax 27795967Speter popl %ecx 27895967Speter popl %edi 27995967Speter popl %esi 28095967Speter popl %ebx 28195967Speter popl %ebp 28295967Speter ret 283238405Sjkim.size bn_mul_add_words,.-.L_bn_mul_add_words_begin 284238405Sjkim.globl bn_mul_words 285238405Sjkim.type bn_mul_words,@function 286238405Sjkim.align 16 28795967Speterbn_mul_words: 288238405Sjkim.L_bn_mul_words_begin: 289238405Sjkim leal OPENSSL_ia32cap_P,%eax 290238405Sjkim btl $26,(%eax) 291238405Sjkim jnc .L009mw_non_sse2 292238405Sjkim movl 4(%esp),%eax 293238405Sjkim movl 8(%esp),%edx 294238405Sjkim movl 12(%esp),%ecx 295238405Sjkim movd 16(%esp),%mm0 296238405Sjkim pxor %mm1,%mm1 297238405Sjkim.align 16 298238405Sjkim.L010mw_sse2_loop: 299238405Sjkim movd (%edx),%mm2 300238405Sjkim pmuludq %mm0,%mm2 301238405Sjkim leal 4(%edx),%edx 302238405Sjkim paddq %mm2,%mm1 303238405Sjkim movd %mm1,(%eax) 304238405Sjkim subl $1,%ecx 305238405Sjkim psrlq $32,%mm1 306238405Sjkim leal 4(%eax),%eax 307238405Sjkim jnz .L010mw_sse2_loop 308238405Sjkim movd %mm1,%eax 309238405Sjkim emms 310238405Sjkim ret 311238405Sjkim.align 16 312238405Sjkim.L009mw_non_sse2: 31395967Speter pushl %ebp 31495967Speter pushl %ebx 31595967Speter pushl %esi 31695967Speter pushl %edi 31795967Speter 318238405Sjkim xorl %esi,%esi 319238405Sjkim movl 20(%esp),%edi 320238405Sjkim movl 24(%esp),%ebx 321238405Sjkim movl 28(%esp),%ebp 322238405Sjkim movl 32(%esp),%ecx 323238405Sjkim andl $4294967288,%ebp 324238405Sjkim jz .L011mw_finish 325238405Sjkim.L012mw_loop: 32695967Speter 327238405Sjkim movl (%ebx),%eax 32895967Speter mull %ecx 329238405Sjkim addl %esi,%eax 330238405Sjkim adcl $0,%edx 331238405Sjkim movl %eax,(%edi) 332238405Sjkim movl %edx,%esi 333127326Smarkm 334238405Sjkim movl 4(%ebx),%eax 33595967Speter mull %ecx 336238405Sjkim addl %esi,%eax 337238405Sjkim adcl $0,%edx 338238405Sjkim movl %eax,4(%edi) 339238405Sjkim movl %edx,%esi 340127326Smarkm 341238405Sjkim movl 8(%ebx),%eax 34295967Speter mull %ecx 343238405Sjkim addl %esi,%eax 344238405Sjkim adcl $0,%edx 345238405Sjkim movl %eax,8(%edi) 346238405Sjkim movl %edx,%esi 347127326Smarkm 348238405Sjkim movl 12(%ebx),%eax 34995967Speter mull %ecx 350238405Sjkim addl %esi,%eax 351238405Sjkim adcl $0,%edx 352238405Sjkim movl %eax,12(%edi) 353238405Sjkim movl %edx,%esi 354127326Smarkm 355238405Sjkim movl 16(%ebx),%eax 35695967Speter mull %ecx 357238405Sjkim addl %esi,%eax 358238405Sjkim adcl $0,%edx 359238405Sjkim movl %eax,16(%edi) 360238405Sjkim movl %edx,%esi 361127326Smarkm 362238405Sjkim movl 20(%ebx),%eax 36395967Speter mull %ecx 364238405Sjkim addl %esi,%eax 365238405Sjkim adcl $0,%edx 366238405Sjkim movl %eax,20(%edi) 367238405Sjkim movl %edx,%esi 368127326Smarkm 369238405Sjkim movl 24(%ebx),%eax 37095967Speter mull %ecx 371238405Sjkim addl %esi,%eax 372238405Sjkim adcl $0,%edx 373238405Sjkim movl %eax,24(%edi) 374238405Sjkim movl %edx,%esi 375127326Smarkm 376238405Sjkim movl 28(%ebx),%eax 37795967Speter mull %ecx 378238405Sjkim addl %esi,%eax 379238405Sjkim adcl $0,%edx 380238405Sjkim movl %eax,28(%edi) 381238405Sjkim movl %edx,%esi 38295967Speter 383238405Sjkim addl $32,%ebx 384238405Sjkim addl $32,%edi 385238405Sjkim subl $8,%ebp 386238405Sjkim jz .L011mw_finish 387238405Sjkim jmp .L012mw_loop 388238405Sjkim.L011mw_finish: 389238405Sjkim movl 28(%esp),%ebp 390238405Sjkim andl $7,%ebp 391238405Sjkim jnz .L013mw_finish2 392238405Sjkim jmp .L014mw_end 393238405Sjkim.L013mw_finish2: 394127326Smarkm 395238405Sjkim movl (%ebx),%eax 39695967Speter mull %ecx 397238405Sjkim addl %esi,%eax 398238405Sjkim adcl $0,%edx 399238405Sjkim movl %eax,(%edi) 400238405Sjkim movl %edx,%esi 40195967Speter decl %ebp 402238405Sjkim jz .L014mw_end 403127326Smarkm 404238405Sjkim movl 4(%ebx),%eax 40595967Speter mull %ecx 406238405Sjkim addl %esi,%eax 407238405Sjkim adcl $0,%edx 408238405Sjkim movl %eax,4(%edi) 409238405Sjkim movl %edx,%esi 41095967Speter decl %ebp 411238405Sjkim jz .L014mw_end 412127326Smarkm 413238405Sjkim movl 8(%ebx),%eax 41495967Speter mull %ecx 415238405Sjkim addl %esi,%eax 416238405Sjkim adcl $0,%edx 417238405Sjkim movl %eax,8(%edi) 418238405Sjkim movl %edx,%esi 41995967Speter decl %ebp 420238405Sjkim jz .L014mw_end 421127326Smarkm 422238405Sjkim movl 12(%ebx),%eax 42395967Speter mull %ecx 424238405Sjkim addl %esi,%eax 425238405Sjkim adcl $0,%edx 426238405Sjkim movl %eax,12(%edi) 427238405Sjkim movl %edx,%esi 42895967Speter decl %ebp 429238405Sjkim jz .L014mw_end 430127326Smarkm 431238405Sjkim movl 16(%ebx),%eax 43295967Speter mull %ecx 433238405Sjkim addl %esi,%eax 434238405Sjkim adcl $0,%edx 435238405Sjkim movl %eax,16(%edi) 436238405Sjkim movl %edx,%esi 43795967Speter decl %ebp 438238405Sjkim jz .L014mw_end 439127326Smarkm 440238405Sjkim movl 20(%ebx),%eax 44195967Speter mull %ecx 442238405Sjkim addl %esi,%eax 443238405Sjkim adcl $0,%edx 444238405Sjkim movl %eax,20(%edi) 445238405Sjkim movl %edx,%esi 44695967Speter decl %ebp 447238405Sjkim jz .L014mw_end 448127326Smarkm 449238405Sjkim movl 24(%ebx),%eax 45095967Speter mull %ecx 451238405Sjkim addl %esi,%eax 452238405Sjkim adcl $0,%edx 453238405Sjkim movl %eax,24(%edi) 454238405Sjkim movl %edx,%esi 455238405Sjkim.L014mw_end: 456238405Sjkim movl %esi,%eax 45795967Speter popl %edi 45895967Speter popl %esi 45995967Speter popl %ebx 46095967Speter popl %ebp 46195967Speter ret 462238405Sjkim.size bn_mul_words,.-.L_bn_mul_words_begin 463238405Sjkim.globl bn_sqr_words 464238405Sjkim.type bn_sqr_words,@function 465238405Sjkim.align 16 46695967Speterbn_sqr_words: 467238405Sjkim.L_bn_sqr_words_begin: 468238405Sjkim leal OPENSSL_ia32cap_P,%eax 469238405Sjkim btl $26,(%eax) 470238405Sjkim jnc .L015sqr_non_sse2 471238405Sjkim movl 4(%esp),%eax 472238405Sjkim movl 8(%esp),%edx 473238405Sjkim movl 12(%esp),%ecx 474238405Sjkim.align 16 475238405Sjkim.L016sqr_sse2_loop: 476238405Sjkim movd (%edx),%mm0 477238405Sjkim pmuludq %mm0,%mm0 478238405Sjkim leal 4(%edx),%edx 479238405Sjkim movq %mm0,(%eax) 480238405Sjkim subl $1,%ecx 481238405Sjkim leal 8(%eax),%eax 482238405Sjkim jnz .L016sqr_sse2_loop 483238405Sjkim emms 484238405Sjkim ret 485238405Sjkim.align 16 486238405Sjkim.L015sqr_non_sse2: 48795967Speter pushl %ebp 48895967Speter pushl %ebx 48995967Speter pushl %esi 49095967Speter pushl %edi 49195967Speter 492238405Sjkim movl 20(%esp),%esi 493238405Sjkim movl 24(%esp),%edi 494238405Sjkim movl 28(%esp),%ebx 495238405Sjkim andl $4294967288,%ebx 496238405Sjkim jz .L017sw_finish 497238405Sjkim.L018sw_loop: 49895967Speter 499238405Sjkim movl (%edi),%eax 50095967Speter mull %eax 501238405Sjkim movl %eax,(%esi) 502238405Sjkim movl %edx,4(%esi) 503127326Smarkm 504238405Sjkim movl 4(%edi),%eax 50595967Speter mull %eax 506238405Sjkim movl %eax,8(%esi) 507238405Sjkim movl %edx,12(%esi) 508127326Smarkm 509238405Sjkim movl 8(%edi),%eax 51095967Speter mull %eax 511238405Sjkim movl %eax,16(%esi) 512238405Sjkim movl %edx,20(%esi) 513127326Smarkm 514238405Sjkim movl 12(%edi),%eax 51595967Speter mull %eax 516238405Sjkim movl %eax,24(%esi) 517238405Sjkim movl %edx,28(%esi) 518127326Smarkm 519238405Sjkim movl 16(%edi),%eax 52095967Speter mull %eax 521238405Sjkim movl %eax,32(%esi) 522238405Sjkim movl %edx,36(%esi) 523127326Smarkm 524238405Sjkim movl 20(%edi),%eax 52595967Speter mull %eax 526238405Sjkim movl %eax,40(%esi) 527238405Sjkim movl %edx,44(%esi) 528127326Smarkm 529238405Sjkim movl 24(%edi),%eax 53095967Speter mull %eax 531238405Sjkim movl %eax,48(%esi) 532238405Sjkim movl %edx,52(%esi) 533127326Smarkm 534238405Sjkim movl 28(%edi),%eax 53595967Speter mull %eax 536238405Sjkim movl %eax,56(%esi) 537238405Sjkim movl %edx,60(%esi) 53895967Speter 539238405Sjkim addl $32,%edi 540238405Sjkim addl $64,%esi 541238405Sjkim subl $8,%ebx 542238405Sjkim jnz .L018sw_loop 543238405Sjkim.L017sw_finish: 544238405Sjkim movl 28(%esp),%ebx 545238405Sjkim andl $7,%ebx 546238405Sjkim jz .L019sw_end 547127326Smarkm 548238405Sjkim movl (%edi),%eax 54995967Speter mull %eax 550238405Sjkim movl %eax,(%esi) 55195967Speter decl %ebx 552238405Sjkim movl %edx,4(%esi) 553238405Sjkim jz .L019sw_end 554127326Smarkm 555238405Sjkim movl 4(%edi),%eax 55695967Speter mull %eax 557238405Sjkim movl %eax,8(%esi) 55895967Speter decl %ebx 559238405Sjkim movl %edx,12(%esi) 560238405Sjkim jz .L019sw_end 561127326Smarkm 562238405Sjkim movl 8(%edi),%eax 56395967Speter mull %eax 564238405Sjkim movl %eax,16(%esi) 56595967Speter decl %ebx 566238405Sjkim movl %edx,20(%esi) 567238405Sjkim jz .L019sw_end 568127326Smarkm 569238405Sjkim movl 12(%edi),%eax 57095967Speter mull %eax 571238405Sjkim movl %eax,24(%esi) 57295967Speter decl %ebx 573238405Sjkim movl %edx,28(%esi) 574238405Sjkim jz .L019sw_end 575127326Smarkm 576238405Sjkim movl 16(%edi),%eax 57795967Speter mull %eax 578238405Sjkim movl %eax,32(%esi) 57995967Speter decl %ebx 580238405Sjkim movl %edx,36(%esi) 581238405Sjkim jz .L019sw_end 582127326Smarkm 583238405Sjkim movl 20(%edi),%eax 58495967Speter mull %eax 585238405Sjkim movl %eax,40(%esi) 58695967Speter decl %ebx 587238405Sjkim movl %edx,44(%esi) 588238405Sjkim jz .L019sw_end 589127326Smarkm 590238405Sjkim movl 24(%edi),%eax 59195967Speter mull %eax 592238405Sjkim movl %eax,48(%esi) 593238405Sjkim movl %edx,52(%esi) 594238405Sjkim.L019sw_end: 59595967Speter popl %edi 59695967Speter popl %esi 59795967Speter popl %ebx 59895967Speter popl %ebp 59995967Speter ret 600238405Sjkim.size bn_sqr_words,.-.L_bn_sqr_words_begin 601238405Sjkim.globl bn_div_words 602238405Sjkim.type bn_div_words,@function 603238405Sjkim.align 16 60495967Speterbn_div_words: 605238405Sjkim.L_bn_div_words_begin: 606238405Sjkim movl 4(%esp),%edx 607238405Sjkim movl 8(%esp),%eax 608238405Sjkim movl 12(%esp),%ecx 609238405Sjkim divl %ecx 610238405Sjkim ret 611238405Sjkim.size bn_div_words,.-.L_bn_div_words_begin 612238405Sjkim.globl bn_add_words 613238405Sjkim.type bn_add_words,@function 614238405Sjkim.align 16 615238405Sjkimbn_add_words: 616238405Sjkim.L_bn_add_words_begin: 61795967Speter pushl %ebp 61895967Speter pushl %ebx 61995967Speter pushl %esi 62095967Speter pushl %edi 62195967Speter 622238405Sjkim movl 20(%esp),%ebx 623238405Sjkim movl 24(%esp),%esi 624238405Sjkim movl 28(%esp),%edi 625238405Sjkim movl 32(%esp),%ebp 626238405Sjkim xorl %eax,%eax 627238405Sjkim andl $4294967288,%ebp 628238405Sjkim jz .L020aw_finish 629238405Sjkim.L021aw_loop: 630238405Sjkim 631238405Sjkim movl (%esi),%ecx 632238405Sjkim movl (%edi),%edx 633238405Sjkim addl %eax,%ecx 634238405Sjkim movl $0,%eax 635238405Sjkim adcl %eax,%eax 636238405Sjkim addl %edx,%ecx 637238405Sjkim adcl $0,%eax 638238405Sjkim movl %ecx,(%ebx) 639238405Sjkim 640238405Sjkim movl 4(%esi),%ecx 641238405Sjkim movl 4(%edi),%edx 642238405Sjkim addl %eax,%ecx 643238405Sjkim movl $0,%eax 644238405Sjkim adcl %eax,%eax 645238405Sjkim addl %edx,%ecx 646238405Sjkim adcl $0,%eax 647238405Sjkim movl %ecx,4(%ebx) 648238405Sjkim 649238405Sjkim movl 8(%esi),%ecx 650238405Sjkim movl 8(%edi),%edx 651238405Sjkim addl %eax,%ecx 652238405Sjkim movl $0,%eax 653238405Sjkim adcl %eax,%eax 654238405Sjkim addl %edx,%ecx 655238405Sjkim adcl $0,%eax 656238405Sjkim movl %ecx,8(%ebx) 657238405Sjkim 658238405Sjkim movl 12(%esi),%ecx 659238405Sjkim movl 12(%edi),%edx 660238405Sjkim addl %eax,%ecx 661238405Sjkim movl $0,%eax 662238405Sjkim adcl %eax,%eax 663238405Sjkim addl %edx,%ecx 664238405Sjkim adcl $0,%eax 665238405Sjkim movl %ecx,12(%ebx) 666238405Sjkim 667238405Sjkim movl 16(%esi),%ecx 668238405Sjkim movl 16(%edi),%edx 669238405Sjkim addl %eax,%ecx 670238405Sjkim movl $0,%eax 671238405Sjkim adcl %eax,%eax 672238405Sjkim addl %edx,%ecx 673238405Sjkim adcl $0,%eax 674238405Sjkim movl %ecx,16(%ebx) 675238405Sjkim 676238405Sjkim movl 20(%esi),%ecx 677238405Sjkim movl 20(%edi),%edx 678238405Sjkim addl %eax,%ecx 679238405Sjkim movl $0,%eax 680238405Sjkim adcl %eax,%eax 681238405Sjkim addl %edx,%ecx 682238405Sjkim adcl $0,%eax 683238405Sjkim movl %ecx,20(%ebx) 684238405Sjkim 685238405Sjkim movl 24(%esi),%ecx 686238405Sjkim movl 24(%edi),%edx 687238405Sjkim addl %eax,%ecx 688238405Sjkim movl $0,%eax 689238405Sjkim adcl %eax,%eax 690238405Sjkim addl %edx,%ecx 691238405Sjkim adcl $0,%eax 692238405Sjkim movl %ecx,24(%ebx) 693238405Sjkim 694238405Sjkim movl 28(%esi),%ecx 695238405Sjkim movl 28(%edi),%edx 696238405Sjkim addl %eax,%ecx 697238405Sjkim movl $0,%eax 698238405Sjkim adcl %eax,%eax 699238405Sjkim addl %edx,%ecx 700238405Sjkim adcl $0,%eax 701238405Sjkim movl %ecx,28(%ebx) 702238405Sjkim 703238405Sjkim addl $32,%esi 704238405Sjkim addl $32,%edi 705238405Sjkim addl $32,%ebx 706238405Sjkim subl $8,%ebp 707238405Sjkim jnz .L021aw_loop 708238405Sjkim.L020aw_finish: 709238405Sjkim movl 32(%esp),%ebp 710238405Sjkim andl $7,%ebp 711238405Sjkim jz .L022aw_end 712238405Sjkim 713238405Sjkim movl (%esi),%ecx 714238405Sjkim movl (%edi),%edx 715238405Sjkim addl %eax,%ecx 716238405Sjkim movl $0,%eax 717238405Sjkim adcl %eax,%eax 718238405Sjkim addl %edx,%ecx 719238405Sjkim adcl $0,%eax 720238405Sjkim decl %ebp 721238405Sjkim movl %ecx,(%ebx) 722238405Sjkim jz .L022aw_end 723238405Sjkim 724238405Sjkim movl 4(%esi),%ecx 725238405Sjkim movl 4(%edi),%edx 726238405Sjkim addl %eax,%ecx 727238405Sjkim movl $0,%eax 728238405Sjkim adcl %eax,%eax 729238405Sjkim addl %edx,%ecx 730238405Sjkim adcl $0,%eax 731238405Sjkim decl %ebp 732238405Sjkim movl %ecx,4(%ebx) 733238405Sjkim jz .L022aw_end 734238405Sjkim 735238405Sjkim movl 8(%esi),%ecx 736238405Sjkim movl 8(%edi),%edx 737238405Sjkim addl %eax,%ecx 738238405Sjkim movl $0,%eax 739238405Sjkim adcl %eax,%eax 740238405Sjkim addl %edx,%ecx 741238405Sjkim adcl $0,%eax 742238405Sjkim decl %ebp 743238405Sjkim movl %ecx,8(%ebx) 744238405Sjkim jz .L022aw_end 745238405Sjkim 746238405Sjkim movl 12(%esi),%ecx 747238405Sjkim movl 12(%edi),%edx 748238405Sjkim addl %eax,%ecx 749238405Sjkim movl $0,%eax 750238405Sjkim adcl %eax,%eax 751238405Sjkim addl %edx,%ecx 752238405Sjkim adcl $0,%eax 753238405Sjkim decl %ebp 754238405Sjkim movl %ecx,12(%ebx) 755238405Sjkim jz .L022aw_end 756238405Sjkim 757238405Sjkim movl 16(%esi),%ecx 758238405Sjkim movl 16(%edi),%edx 759238405Sjkim addl %eax,%ecx 760238405Sjkim movl $0,%eax 761238405Sjkim adcl %eax,%eax 762238405Sjkim addl %edx,%ecx 763238405Sjkim adcl $0,%eax 764238405Sjkim decl %ebp 765238405Sjkim movl %ecx,16(%ebx) 766238405Sjkim jz .L022aw_end 767238405Sjkim 768238405Sjkim movl 20(%esi),%ecx 769238405Sjkim movl 20(%edi),%edx 770238405Sjkim addl %eax,%ecx 771238405Sjkim movl $0,%eax 772238405Sjkim adcl %eax,%eax 773238405Sjkim addl %edx,%ecx 774238405Sjkim adcl $0,%eax 775238405Sjkim decl %ebp 776238405Sjkim movl %ecx,20(%ebx) 777238405Sjkim jz .L022aw_end 778238405Sjkim 779238405Sjkim movl 24(%esi),%ecx 780238405Sjkim movl 24(%edi),%edx 781238405Sjkim addl %eax,%ecx 782238405Sjkim movl $0,%eax 783238405Sjkim adcl %eax,%eax 784238405Sjkim addl %edx,%ecx 785238405Sjkim adcl $0,%eax 786238405Sjkim movl %ecx,24(%ebx) 787238405Sjkim.L022aw_end: 78895967Speter popl %edi 78995967Speter popl %esi 79095967Speter popl %ebx 79195967Speter popl %ebp 79295967Speter ret 793238405Sjkim.size bn_add_words,.-.L_bn_add_words_begin 794238405Sjkim.globl bn_sub_words 795238405Sjkim.type bn_sub_words,@function 796238405Sjkim.align 16 797238405Sjkimbn_sub_words: 798238405Sjkim.L_bn_sub_words_begin: 79995967Speter pushl %ebp 80095967Speter pushl %ebx 80195967Speter pushl %esi 80295967Speter pushl %edi 80395967Speter 804238405Sjkim movl 20(%esp),%ebx 805238405Sjkim movl 24(%esp),%esi 806238405Sjkim movl 28(%esp),%edi 807238405Sjkim movl 32(%esp),%ebp 808238405Sjkim xorl %eax,%eax 809238405Sjkim andl $4294967288,%ebp 810238405Sjkim jz .L023aw_finish 811238405Sjkim.L024aw_loop: 81295967Speter 813238405Sjkim movl (%esi),%ecx 814238405Sjkim movl (%edi),%edx 815238405Sjkim subl %eax,%ecx 816238405Sjkim movl $0,%eax 817238405Sjkim adcl %eax,%eax 818238405Sjkim subl %edx,%ecx 819238405Sjkim adcl $0,%eax 820238405Sjkim movl %ecx,(%ebx) 821127326Smarkm 822238405Sjkim movl 4(%esi),%ecx 823238405Sjkim movl 4(%edi),%edx 824238405Sjkim subl %eax,%ecx 825238405Sjkim movl $0,%eax 826238405Sjkim adcl %eax,%eax 827238405Sjkim subl %edx,%ecx 828238405Sjkim adcl $0,%eax 829238405Sjkim movl %ecx,4(%ebx) 830127326Smarkm 831238405Sjkim movl 8(%esi),%ecx 832238405Sjkim movl 8(%edi),%edx 833238405Sjkim subl %eax,%ecx 834238405Sjkim movl $0,%eax 835238405Sjkim adcl %eax,%eax 836238405Sjkim subl %edx,%ecx 837238405Sjkim adcl $0,%eax 838238405Sjkim movl %ecx,8(%ebx) 839127326Smarkm 840238405Sjkim movl 12(%esi),%ecx 841238405Sjkim movl 12(%edi),%edx 842238405Sjkim subl %eax,%ecx 843238405Sjkim movl $0,%eax 844238405Sjkim adcl %eax,%eax 845238405Sjkim subl %edx,%ecx 846238405Sjkim adcl $0,%eax 847238405Sjkim movl %ecx,12(%ebx) 848127326Smarkm 849238405Sjkim movl 16(%esi),%ecx 850238405Sjkim movl 16(%edi),%edx 851238405Sjkim subl %eax,%ecx 852238405Sjkim movl $0,%eax 853238405Sjkim adcl %eax,%eax 854238405Sjkim subl %edx,%ecx 855238405Sjkim adcl $0,%eax 856238405Sjkim movl %ecx,16(%ebx) 857127326Smarkm 858238405Sjkim movl 20(%esi),%ecx 859238405Sjkim movl 20(%edi),%edx 860238405Sjkim subl %eax,%ecx 861238405Sjkim movl $0,%eax 862238405Sjkim adcl %eax,%eax 863238405Sjkim subl %edx,%ecx 864238405Sjkim adcl $0,%eax 865238405Sjkim movl %ecx,20(%ebx) 866127326Smarkm 867238405Sjkim movl 24(%esi),%ecx 868238405Sjkim movl 24(%edi),%edx 869238405Sjkim subl %eax,%ecx 870238405Sjkim movl $0,%eax 871238405Sjkim adcl %eax,%eax 872238405Sjkim subl %edx,%ecx 873238405Sjkim adcl $0,%eax 874238405Sjkim movl %ecx,24(%ebx) 875127326Smarkm 876238405Sjkim movl 28(%esi),%ecx 877238405Sjkim movl 28(%edi),%edx 878238405Sjkim subl %eax,%ecx 879238405Sjkim movl $0,%eax 880238405Sjkim adcl %eax,%eax 881238405Sjkim subl %edx,%ecx 882238405Sjkim adcl $0,%eax 883238405Sjkim movl %ecx,28(%ebx) 884127326Smarkm 885238405Sjkim addl $32,%esi 886238405Sjkim addl $32,%edi 887238405Sjkim addl $32,%ebx 888238405Sjkim subl $8,%ebp 889238405Sjkim jnz .L024aw_loop 890238405Sjkim.L023aw_finish: 891238405Sjkim movl 32(%esp),%ebp 892238405Sjkim andl $7,%ebp 893238405Sjkim jz .L025aw_end 89495967Speter 895238405Sjkim movl (%esi),%ecx 896238405Sjkim movl (%edi),%edx 897238405Sjkim subl %eax,%ecx 898238405Sjkim movl $0,%eax 899238405Sjkim adcl %eax,%eax 900238405Sjkim subl %edx,%ecx 901238405Sjkim adcl $0,%eax 90295967Speter decl %ebp 903238405Sjkim movl %ecx,(%ebx) 904238405Sjkim jz .L025aw_end 905127326Smarkm 906238405Sjkim movl 4(%esi),%ecx 907238405Sjkim movl 4(%edi),%edx 908238405Sjkim subl %eax,%ecx 909238405Sjkim movl $0,%eax 910238405Sjkim adcl %eax,%eax 911238405Sjkim subl %edx,%ecx 912238405Sjkim adcl $0,%eax 91395967Speter decl %ebp 914238405Sjkim movl %ecx,4(%ebx) 915238405Sjkim jz .L025aw_end 916127326Smarkm 917238405Sjkim movl 8(%esi),%ecx 918238405Sjkim movl 8(%edi),%edx 919238405Sjkim subl %eax,%ecx 920238405Sjkim movl $0,%eax 921238405Sjkim adcl %eax,%eax 922238405Sjkim subl %edx,%ecx 923238405Sjkim adcl $0,%eax 92495967Speter decl %ebp 925238405Sjkim movl %ecx,8(%ebx) 926238405Sjkim jz .L025aw_end 927127326Smarkm 928238405Sjkim movl 12(%esi),%ecx 929238405Sjkim movl 12(%edi),%edx 930238405Sjkim subl %eax,%ecx 931238405Sjkim movl $0,%eax 932238405Sjkim adcl %eax,%eax 933238405Sjkim subl %edx,%ecx 934238405Sjkim adcl $0,%eax 93595967Speter decl %ebp 936238405Sjkim movl %ecx,12(%ebx) 937238405Sjkim jz .L025aw_end 938127326Smarkm 939238405Sjkim movl 16(%esi),%ecx 940238405Sjkim movl 16(%edi),%edx 941238405Sjkim subl %eax,%ecx 942238405Sjkim movl $0,%eax 943238405Sjkim adcl %eax,%eax 944238405Sjkim subl %edx,%ecx 945238405Sjkim adcl $0,%eax 94695967Speter decl %ebp 947238405Sjkim movl %ecx,16(%ebx) 948238405Sjkim jz .L025aw_end 949127326Smarkm 950238405Sjkim movl 20(%esi),%ecx 951238405Sjkim movl 20(%edi),%edx 952238405Sjkim subl %eax,%ecx 953238405Sjkim movl $0,%eax 954238405Sjkim adcl %eax,%eax 955238405Sjkim subl %edx,%ecx 956238405Sjkim adcl $0,%eax 95795967Speter decl %ebp 958238405Sjkim movl %ecx,20(%ebx) 959238405Sjkim jz .L025aw_end 960127326Smarkm 961238405Sjkim movl 24(%esi),%ecx 962238405Sjkim movl 24(%edi),%edx 963238405Sjkim subl %eax,%ecx 964238405Sjkim movl $0,%eax 965238405Sjkim adcl %eax,%eax 966238405Sjkim subl %edx,%ecx 967238405Sjkim adcl $0,%eax 968238405Sjkim movl %ecx,24(%ebx) 969238405Sjkim.L025aw_end: 97095967Speter popl %edi 97195967Speter popl %esi 97295967Speter popl %ebx 97395967Speter popl %ebp 97495967Speter ret 975238405Sjkim.size bn_sub_words,.-.L_bn_sub_words_begin 976238405Sjkim.globl bn_sub_part_words 977238405Sjkim.type bn_sub_part_words,@function 978238405Sjkim.align 16 979238405Sjkimbn_sub_part_words: 980238405Sjkim.L_bn_sub_part_words_begin: 98195967Speter pushl %ebp 98295967Speter pushl %ebx 98395967Speter pushl %esi 98495967Speter pushl %edi 98595967Speter 986238405Sjkim movl 20(%esp),%ebx 987238405Sjkim movl 24(%esp),%esi 988238405Sjkim movl 28(%esp),%edi 989238405Sjkim movl 32(%esp),%ebp 990238405Sjkim xorl %eax,%eax 991238405Sjkim andl $4294967288,%ebp 992238405Sjkim jz .L026aw_finish 993238405Sjkim.L027aw_loop: 99495967Speter 995238405Sjkim movl (%esi),%ecx 996238405Sjkim movl (%edi),%edx 997238405Sjkim subl %eax,%ecx 998238405Sjkim movl $0,%eax 999238405Sjkim adcl %eax,%eax 1000238405Sjkim subl %edx,%ecx 1001238405Sjkim adcl $0,%eax 1002238405Sjkim movl %ecx,(%ebx) 1003127326Smarkm 1004238405Sjkim movl 4(%esi),%ecx 1005238405Sjkim movl 4(%edi),%edx 1006238405Sjkim subl %eax,%ecx 1007238405Sjkim movl $0,%eax 1008238405Sjkim adcl %eax,%eax 1009238405Sjkim subl %edx,%ecx 1010238405Sjkim adcl $0,%eax 1011238405Sjkim movl %ecx,4(%ebx) 1012127326Smarkm 1013238405Sjkim movl 8(%esi),%ecx 1014238405Sjkim movl 8(%edi),%edx 1015238405Sjkim subl %eax,%ecx 1016238405Sjkim movl $0,%eax 1017238405Sjkim adcl %eax,%eax 1018238405Sjkim subl %edx,%ecx 1019238405Sjkim adcl $0,%eax 1020238405Sjkim movl %ecx,8(%ebx) 1021127326Smarkm 1022238405Sjkim movl 12(%esi),%ecx 1023238405Sjkim movl 12(%edi),%edx 1024238405Sjkim subl %eax,%ecx 1025238405Sjkim movl $0,%eax 1026238405Sjkim adcl %eax,%eax 1027238405Sjkim subl %edx,%ecx 1028238405Sjkim adcl $0,%eax 1029238405Sjkim movl %ecx,12(%ebx) 1030127326Smarkm 1031238405Sjkim movl 16(%esi),%ecx 1032238405Sjkim movl 16(%edi),%edx 1033238405Sjkim subl %eax,%ecx 1034238405Sjkim movl $0,%eax 1035238405Sjkim adcl %eax,%eax 1036238405Sjkim subl %edx,%ecx 1037238405Sjkim adcl $0,%eax 1038238405Sjkim movl %ecx,16(%ebx) 1039127326Smarkm 1040238405Sjkim movl 20(%esi),%ecx 1041238405Sjkim movl 20(%edi),%edx 1042238405Sjkim subl %eax,%ecx 1043238405Sjkim movl $0,%eax 1044238405Sjkim adcl %eax,%eax 1045238405Sjkim subl %edx,%ecx 1046238405Sjkim adcl $0,%eax 1047238405Sjkim movl %ecx,20(%ebx) 1048127326Smarkm 1049238405Sjkim movl 24(%esi),%ecx 1050238405Sjkim movl 24(%edi),%edx 1051238405Sjkim subl %eax,%ecx 1052238405Sjkim movl $0,%eax 1053238405Sjkim adcl %eax,%eax 1054238405Sjkim subl %edx,%ecx 1055238405Sjkim adcl $0,%eax 1056238405Sjkim movl %ecx,24(%ebx) 1057127326Smarkm 1058238405Sjkim movl 28(%esi),%ecx 1059238405Sjkim movl 28(%edi),%edx 1060238405Sjkim subl %eax,%ecx 1061238405Sjkim movl $0,%eax 1062238405Sjkim adcl %eax,%eax 1063238405Sjkim subl %edx,%ecx 1064238405Sjkim adcl $0,%eax 1065238405Sjkim movl %ecx,28(%ebx) 1066127326Smarkm 1067238405Sjkim addl $32,%esi 1068238405Sjkim addl $32,%edi 1069238405Sjkim addl $32,%ebx 1070238405Sjkim subl $8,%ebp 1071238405Sjkim jnz .L027aw_loop 1072238405Sjkim.L026aw_finish: 1073238405Sjkim movl 32(%esp),%ebp 1074238405Sjkim andl $7,%ebp 1075238405Sjkim jz .L028aw_end 107695967Speter 1077238405Sjkim movl (%esi),%ecx 1078238405Sjkim movl (%edi),%edx 1079238405Sjkim subl %eax,%ecx 1080238405Sjkim movl $0,%eax 1081238405Sjkim adcl %eax,%eax 1082238405Sjkim subl %edx,%ecx 1083238405Sjkim adcl $0,%eax 1084238405Sjkim movl %ecx,(%ebx) 1085238405Sjkim addl $4,%esi 1086238405Sjkim addl $4,%edi 1087238405Sjkim addl $4,%ebx 1088238405Sjkim decl %ebp 1089238405Sjkim jz .L028aw_end 1090127326Smarkm 1091238405Sjkim movl (%esi),%ecx 1092238405Sjkim movl (%edi),%edx 1093238405Sjkim subl %eax,%ecx 1094238405Sjkim movl $0,%eax 1095238405Sjkim adcl %eax,%eax 1096238405Sjkim subl %edx,%ecx 1097238405Sjkim adcl $0,%eax 1098238405Sjkim movl %ecx,(%ebx) 1099238405Sjkim addl $4,%esi 1100238405Sjkim addl $4,%edi 1101238405Sjkim addl $4,%ebx 110295967Speter decl %ebp 1103238405Sjkim jz .L028aw_end 1104127326Smarkm 1105238405Sjkim movl (%esi),%ecx 1106238405Sjkim movl (%edi),%edx 1107238405Sjkim subl %eax,%ecx 1108238405Sjkim movl $0,%eax 1109238405Sjkim adcl %eax,%eax 1110238405Sjkim subl %edx,%ecx 1111238405Sjkim adcl $0,%eax 1112238405Sjkim movl %ecx,(%ebx) 1113238405Sjkim addl $4,%esi 1114238405Sjkim addl $4,%edi 1115238405Sjkim addl $4,%ebx 111695967Speter decl %ebp 1117238405Sjkim jz .L028aw_end 1118127326Smarkm 1119238405Sjkim movl (%esi),%ecx 1120238405Sjkim movl (%edi),%edx 1121238405Sjkim subl %eax,%ecx 1122238405Sjkim movl $0,%eax 1123238405Sjkim adcl %eax,%eax 1124238405Sjkim subl %edx,%ecx 1125238405Sjkim adcl $0,%eax 1126238405Sjkim movl %ecx,(%ebx) 1127238405Sjkim addl $4,%esi 1128238405Sjkim addl $4,%edi 1129238405Sjkim addl $4,%ebx 113095967Speter decl %ebp 1131238405Sjkim jz .L028aw_end 1132127326Smarkm 1133238405Sjkim movl (%esi),%ecx 1134238405Sjkim movl (%edi),%edx 1135238405Sjkim subl %eax,%ecx 1136238405Sjkim movl $0,%eax 1137238405Sjkim adcl %eax,%eax 1138238405Sjkim subl %edx,%ecx 1139238405Sjkim adcl $0,%eax 1140238405Sjkim movl %ecx,(%ebx) 1141238405Sjkim addl $4,%esi 1142238405Sjkim addl $4,%edi 1143238405Sjkim addl $4,%ebx 114495967Speter decl %ebp 1145238405Sjkim jz .L028aw_end 1146127326Smarkm 1147238405Sjkim movl (%esi),%ecx 1148238405Sjkim movl (%edi),%edx 1149238405Sjkim subl %eax,%ecx 1150238405Sjkim movl $0,%eax 1151238405Sjkim adcl %eax,%eax 1152238405Sjkim subl %edx,%ecx 1153238405Sjkim adcl $0,%eax 1154238405Sjkim movl %ecx,(%ebx) 1155238405Sjkim addl $4,%esi 1156238405Sjkim addl $4,%edi 1157238405Sjkim addl $4,%ebx 115895967Speter decl %ebp 1159238405Sjkim jz .L028aw_end 1160127326Smarkm 1161238405Sjkim movl (%esi),%ecx 1162238405Sjkim movl (%edi),%edx 1163238405Sjkim subl %eax,%ecx 1164238405Sjkim movl $0,%eax 1165238405Sjkim adcl %eax,%eax 1166238405Sjkim subl %edx,%ecx 1167238405Sjkim adcl $0,%eax 1168238405Sjkim movl %ecx,(%ebx) 1169238405Sjkim addl $4,%esi 1170238405Sjkim addl $4,%edi 1171238405Sjkim addl $4,%ebx 1172238405Sjkim.L028aw_end: 1173238405Sjkim cmpl $0,36(%esp) 1174238405Sjkim je .L029pw_end 1175238405Sjkim movl 36(%esp),%ebp 1176238405Sjkim cmpl $0,%ebp 1177238405Sjkim je .L029pw_end 1178238405Sjkim jge .L030pw_pos 1179238405Sjkim 1180238405Sjkim movl $0,%edx 1181238405Sjkim subl %ebp,%edx 1182238405Sjkim movl %edx,%ebp 1183238405Sjkim andl $4294967288,%ebp 1184238405Sjkim jz .L031pw_neg_finish 1185238405Sjkim.L032pw_neg_loop: 1186238405Sjkim 1187238405Sjkim movl $0,%ecx 1188238405Sjkim movl (%edi),%edx 1189238405Sjkim subl %eax,%ecx 1190238405Sjkim movl $0,%eax 1191238405Sjkim adcl %eax,%eax 1192238405Sjkim subl %edx,%ecx 1193238405Sjkim adcl $0,%eax 1194238405Sjkim movl %ecx,(%ebx) 1195238405Sjkim 1196238405Sjkim movl $0,%ecx 1197238405Sjkim movl 4(%edi),%edx 1198238405Sjkim subl %eax,%ecx 1199238405Sjkim movl $0,%eax 1200238405Sjkim adcl %eax,%eax 1201238405Sjkim subl %edx,%ecx 1202238405Sjkim adcl $0,%eax 1203238405Sjkim movl %ecx,4(%ebx) 1204238405Sjkim 1205238405Sjkim movl $0,%ecx 1206238405Sjkim movl 8(%edi),%edx 1207238405Sjkim subl %eax,%ecx 1208238405Sjkim movl $0,%eax 1209238405Sjkim adcl %eax,%eax 1210238405Sjkim subl %edx,%ecx 1211238405Sjkim adcl $0,%eax 1212238405Sjkim movl %ecx,8(%ebx) 1213238405Sjkim 1214238405Sjkim movl $0,%ecx 1215238405Sjkim movl 12(%edi),%edx 1216238405Sjkim subl %eax,%ecx 1217238405Sjkim movl $0,%eax 1218238405Sjkim adcl %eax,%eax 1219238405Sjkim subl %edx,%ecx 1220238405Sjkim adcl $0,%eax 1221238405Sjkim movl %ecx,12(%ebx) 1222238405Sjkim 1223238405Sjkim movl $0,%ecx 1224238405Sjkim movl 16(%edi),%edx 1225238405Sjkim subl %eax,%ecx 1226238405Sjkim movl $0,%eax 1227238405Sjkim adcl %eax,%eax 1228238405Sjkim subl %edx,%ecx 1229238405Sjkim adcl $0,%eax 1230238405Sjkim movl %ecx,16(%ebx) 1231238405Sjkim 1232238405Sjkim movl $0,%ecx 1233238405Sjkim movl 20(%edi),%edx 1234238405Sjkim subl %eax,%ecx 1235238405Sjkim movl $0,%eax 1236238405Sjkim adcl %eax,%eax 1237238405Sjkim subl %edx,%ecx 1238238405Sjkim adcl $0,%eax 1239238405Sjkim movl %ecx,20(%ebx) 1240238405Sjkim 1241238405Sjkim movl $0,%ecx 1242238405Sjkim movl 24(%edi),%edx 1243238405Sjkim subl %eax,%ecx 1244238405Sjkim movl $0,%eax 1245238405Sjkim adcl %eax,%eax 1246238405Sjkim subl %edx,%ecx 1247238405Sjkim adcl $0,%eax 1248238405Sjkim movl %ecx,24(%ebx) 1249238405Sjkim 1250238405Sjkim movl $0,%ecx 1251238405Sjkim movl 28(%edi),%edx 1252238405Sjkim subl %eax,%ecx 1253238405Sjkim movl $0,%eax 1254238405Sjkim adcl %eax,%eax 1255238405Sjkim subl %edx,%ecx 1256238405Sjkim adcl $0,%eax 1257238405Sjkim movl %ecx,28(%ebx) 1258238405Sjkim 1259238405Sjkim addl $32,%edi 1260238405Sjkim addl $32,%ebx 1261238405Sjkim subl $8,%ebp 1262238405Sjkim jnz .L032pw_neg_loop 1263238405Sjkim.L031pw_neg_finish: 1264238405Sjkim movl 36(%esp),%edx 1265238405Sjkim movl $0,%ebp 1266238405Sjkim subl %edx,%ebp 1267238405Sjkim andl $7,%ebp 1268238405Sjkim jz .L029pw_end 1269238405Sjkim 1270238405Sjkim movl $0,%ecx 1271238405Sjkim movl (%edi),%edx 1272238405Sjkim subl %eax,%ecx 1273238405Sjkim movl $0,%eax 1274238405Sjkim adcl %eax,%eax 1275238405Sjkim subl %edx,%ecx 1276238405Sjkim adcl $0,%eax 127795967Speter decl %ebp 1278238405Sjkim movl %ecx,(%ebx) 1279238405Sjkim jz .L029pw_end 1280127326Smarkm 1281238405Sjkim movl $0,%ecx 1282238405Sjkim movl 4(%edi),%edx 1283238405Sjkim subl %eax,%ecx 1284238405Sjkim movl $0,%eax 1285238405Sjkim adcl %eax,%eax 1286238405Sjkim subl %edx,%ecx 1287238405Sjkim adcl $0,%eax 1288238405Sjkim decl %ebp 1289238405Sjkim movl %ecx,4(%ebx) 1290238405Sjkim jz .L029pw_end 1291238405Sjkim 1292238405Sjkim movl $0,%ecx 1293238405Sjkim movl 8(%edi),%edx 1294238405Sjkim subl %eax,%ecx 1295238405Sjkim movl $0,%eax 1296238405Sjkim adcl %eax,%eax 1297238405Sjkim subl %edx,%ecx 1298238405Sjkim adcl $0,%eax 1299238405Sjkim decl %ebp 1300238405Sjkim movl %ecx,8(%ebx) 1301238405Sjkim jz .L029pw_end 1302238405Sjkim 1303238405Sjkim movl $0,%ecx 1304238405Sjkim movl 12(%edi),%edx 1305238405Sjkim subl %eax,%ecx 1306238405Sjkim movl $0,%eax 1307238405Sjkim adcl %eax,%eax 1308238405Sjkim subl %edx,%ecx 1309238405Sjkim adcl $0,%eax 1310238405Sjkim decl %ebp 1311238405Sjkim movl %ecx,12(%ebx) 1312238405Sjkim jz .L029pw_end 1313238405Sjkim 1314238405Sjkim movl $0,%ecx 1315238405Sjkim movl 16(%edi),%edx 1316238405Sjkim subl %eax,%ecx 1317238405Sjkim movl $0,%eax 1318238405Sjkim adcl %eax,%eax 1319238405Sjkim subl %edx,%ecx 1320238405Sjkim adcl $0,%eax 1321238405Sjkim decl %ebp 1322238405Sjkim movl %ecx,16(%ebx) 1323238405Sjkim jz .L029pw_end 1324238405Sjkim 1325238405Sjkim movl $0,%ecx 1326238405Sjkim movl 20(%edi),%edx 1327238405Sjkim subl %eax,%ecx 1328238405Sjkim movl $0,%eax 1329238405Sjkim adcl %eax,%eax 1330238405Sjkim subl %edx,%ecx 1331238405Sjkim adcl $0,%eax 1332238405Sjkim decl %ebp 1333238405Sjkim movl %ecx,20(%ebx) 1334238405Sjkim jz .L029pw_end 1335238405Sjkim 1336238405Sjkim movl $0,%ecx 1337238405Sjkim movl 24(%edi),%edx 1338238405Sjkim subl %eax,%ecx 1339238405Sjkim movl $0,%eax 1340238405Sjkim adcl %eax,%eax 1341238405Sjkim subl %edx,%ecx 1342238405Sjkim adcl $0,%eax 1343238405Sjkim movl %ecx,24(%ebx) 1344238405Sjkim jmp .L029pw_end 1345238405Sjkim.L030pw_pos: 1346238405Sjkim andl $4294967288,%ebp 1347238405Sjkim jz .L033pw_pos_finish 1348238405Sjkim.L034pw_pos_loop: 1349238405Sjkim 1350238405Sjkim movl (%esi),%ecx 1351238405Sjkim subl %eax,%ecx 1352238405Sjkim movl %ecx,(%ebx) 1353238405Sjkim jnc .L035pw_nc0 1354238405Sjkim 1355238405Sjkim movl 4(%esi),%ecx 1356238405Sjkim subl %eax,%ecx 1357238405Sjkim movl %ecx,4(%ebx) 1358238405Sjkim jnc .L036pw_nc1 1359238405Sjkim 1360238405Sjkim movl 8(%esi),%ecx 1361238405Sjkim subl %eax,%ecx 1362238405Sjkim movl %ecx,8(%ebx) 1363238405Sjkim jnc .L037pw_nc2 1364238405Sjkim 1365238405Sjkim movl 12(%esi),%ecx 1366238405Sjkim subl %eax,%ecx 1367238405Sjkim movl %ecx,12(%ebx) 1368238405Sjkim jnc .L038pw_nc3 1369238405Sjkim 1370238405Sjkim movl 16(%esi),%ecx 1371238405Sjkim subl %eax,%ecx 1372238405Sjkim movl %ecx,16(%ebx) 1373238405Sjkim jnc .L039pw_nc4 1374238405Sjkim 1375238405Sjkim movl 20(%esi),%ecx 1376238405Sjkim subl %eax,%ecx 1377238405Sjkim movl %ecx,20(%ebx) 1378238405Sjkim jnc .L040pw_nc5 1379238405Sjkim 1380238405Sjkim movl 24(%esi),%ecx 1381238405Sjkim subl %eax,%ecx 1382238405Sjkim movl %ecx,24(%ebx) 1383238405Sjkim jnc .L041pw_nc6 1384238405Sjkim 1385238405Sjkim movl 28(%esi),%ecx 1386238405Sjkim subl %eax,%ecx 1387238405Sjkim movl %ecx,28(%ebx) 1388238405Sjkim jnc .L042pw_nc7 1389238405Sjkim 1390238405Sjkim addl $32,%esi 1391238405Sjkim addl $32,%ebx 1392238405Sjkim subl $8,%ebp 1393238405Sjkim jnz .L034pw_pos_loop 1394238405Sjkim.L033pw_pos_finish: 1395238405Sjkim movl 36(%esp),%ebp 1396238405Sjkim andl $7,%ebp 1397238405Sjkim jz .L029pw_end 1398238405Sjkim 1399238405Sjkim movl (%esi),%ecx 1400238405Sjkim subl %eax,%ecx 1401238405Sjkim movl %ecx,(%ebx) 1402238405Sjkim jnc .L043pw_tail_nc0 1403238405Sjkim decl %ebp 1404238405Sjkim jz .L029pw_end 1405238405Sjkim 1406238405Sjkim movl 4(%esi),%ecx 1407238405Sjkim subl %eax,%ecx 1408238405Sjkim movl %ecx,4(%ebx) 1409238405Sjkim jnc .L044pw_tail_nc1 1410238405Sjkim decl %ebp 1411238405Sjkim jz .L029pw_end 1412238405Sjkim 1413238405Sjkim movl 8(%esi),%ecx 1414238405Sjkim subl %eax,%ecx 1415238405Sjkim movl %ecx,8(%ebx) 1416238405Sjkim jnc .L045pw_tail_nc2 1417238405Sjkim decl %ebp 1418238405Sjkim jz .L029pw_end 1419238405Sjkim 1420238405Sjkim movl 12(%esi),%ecx 1421238405Sjkim subl %eax,%ecx 1422238405Sjkim movl %ecx,12(%ebx) 1423238405Sjkim jnc .L046pw_tail_nc3 1424238405Sjkim decl %ebp 1425238405Sjkim jz .L029pw_end 1426238405Sjkim 1427238405Sjkim movl 16(%esi),%ecx 1428238405Sjkim subl %eax,%ecx 1429238405Sjkim movl %ecx,16(%ebx) 1430238405Sjkim jnc .L047pw_tail_nc4 1431238405Sjkim decl %ebp 1432238405Sjkim jz .L029pw_end 1433238405Sjkim 1434238405Sjkim movl 20(%esi),%ecx 1435238405Sjkim subl %eax,%ecx 1436238405Sjkim movl %ecx,20(%ebx) 1437238405Sjkim jnc .L048pw_tail_nc5 1438238405Sjkim decl %ebp 1439238405Sjkim jz .L029pw_end 1440238405Sjkim 1441238405Sjkim movl 24(%esi),%ecx 1442238405Sjkim subl %eax,%ecx 1443238405Sjkim movl %ecx,24(%ebx) 1444238405Sjkim jnc .L049pw_tail_nc6 1445238405Sjkim movl $1,%eax 1446238405Sjkim jmp .L029pw_end 1447238405Sjkim.L050pw_nc_loop: 1448238405Sjkim movl (%esi),%ecx 1449238405Sjkim movl %ecx,(%ebx) 1450238405Sjkim.L035pw_nc0: 1451238405Sjkim movl 4(%esi),%ecx 1452238405Sjkim movl %ecx,4(%ebx) 1453238405Sjkim.L036pw_nc1: 1454238405Sjkim movl 8(%esi),%ecx 1455238405Sjkim movl %ecx,8(%ebx) 1456238405Sjkim.L037pw_nc2: 1457238405Sjkim movl 12(%esi),%ecx 1458238405Sjkim movl %ecx,12(%ebx) 1459238405Sjkim.L038pw_nc3: 1460238405Sjkim movl 16(%esi),%ecx 1461238405Sjkim movl %ecx,16(%ebx) 1462238405Sjkim.L039pw_nc4: 1463238405Sjkim movl 20(%esi),%ecx 1464238405Sjkim movl %ecx,20(%ebx) 1465238405Sjkim.L040pw_nc5: 1466238405Sjkim movl 24(%esi),%ecx 1467238405Sjkim movl %ecx,24(%ebx) 1468238405Sjkim.L041pw_nc6: 1469238405Sjkim movl 28(%esi),%ecx 1470238405Sjkim movl %ecx,28(%ebx) 1471238405Sjkim.L042pw_nc7: 1472238405Sjkim 1473238405Sjkim addl $32,%esi 1474238405Sjkim addl $32,%ebx 1475238405Sjkim subl $8,%ebp 1476238405Sjkim jnz .L050pw_nc_loop 1477238405Sjkim movl 36(%esp),%ebp 1478238405Sjkim andl $7,%ebp 1479238405Sjkim jz .L051pw_nc_end 1480238405Sjkim movl (%esi),%ecx 1481238405Sjkim movl %ecx,(%ebx) 1482238405Sjkim.L043pw_tail_nc0: 1483238405Sjkim decl %ebp 1484238405Sjkim jz .L051pw_nc_end 1485238405Sjkim movl 4(%esi),%ecx 1486238405Sjkim movl %ecx,4(%ebx) 1487238405Sjkim.L044pw_tail_nc1: 1488238405Sjkim decl %ebp 1489238405Sjkim jz .L051pw_nc_end 1490238405Sjkim movl 8(%esi),%ecx 1491238405Sjkim movl %ecx,8(%ebx) 1492238405Sjkim.L045pw_tail_nc2: 1493238405Sjkim decl %ebp 1494238405Sjkim jz .L051pw_nc_end 1495238405Sjkim movl 12(%esi),%ecx 1496238405Sjkim movl %ecx,12(%ebx) 1497238405Sjkim.L046pw_tail_nc3: 1498238405Sjkim decl %ebp 1499238405Sjkim jz .L051pw_nc_end 1500238405Sjkim movl 16(%esi),%ecx 1501238405Sjkim movl %ecx,16(%ebx) 1502238405Sjkim.L047pw_tail_nc4: 1503238405Sjkim decl %ebp 1504238405Sjkim jz .L051pw_nc_end 1505238405Sjkim movl 20(%esi),%ecx 1506238405Sjkim movl %ecx,20(%ebx) 1507238405Sjkim.L048pw_tail_nc5: 1508238405Sjkim decl %ebp 1509238405Sjkim jz .L051pw_nc_end 1510238405Sjkim movl 24(%esi),%ecx 1511238405Sjkim movl %ecx,24(%ebx) 1512238405Sjkim.L049pw_tail_nc6: 1513238405Sjkim.L051pw_nc_end: 1514238405Sjkim movl $0,%eax 1515238405Sjkim.L029pw_end: 151695967Speter popl %edi 151795967Speter popl %esi 151895967Speter popl %ebx 151995967Speter popl %ebp 152095967Speter ret 1521238405Sjkim.size bn_sub_part_words,.-.L_bn_sub_part_words_begin 1522238405Sjkim.comm OPENSSL_ia32cap_P,8,4 1523