1305153Sjkim/* $FreeBSD$ */ 2305153Sjkim/* Do not modify. This file is auto-generated from bn-586.pl. */ 3299389Sjkim#ifdef PIC 4299389Sjkim.file "bn-586.S" 595967Speter.text 6238405Sjkim.globl bn_mul_add_words 7238405Sjkim.type bn_mul_add_words,@function 8238405Sjkim.align 16 995967Speterbn_mul_add_words: 10238405Sjkim.L_bn_mul_add_words_begin: 11299389Sjkim call .L000PIC_me_up 12299389Sjkim.L000PIC_me_up: 13299389Sjkim popl %eax 14299389Sjkim leal OPENSSL_ia32cap_P-.L000PIC_me_up(%eax),%eax 15299389Sjkim btl $26,(%eax) 16299389Sjkim jnc .L001maw_non_sse2 17299389Sjkim movl 4(%esp),%eax 18299389Sjkim movl 8(%esp),%edx 19299389Sjkim movl 12(%esp),%ecx 20299389Sjkim movd 16(%esp),%mm0 21299389Sjkim pxor %mm1,%mm1 22299389Sjkim jmp .L002maw_sse2_entry 23299389Sjkim.align 16 24299389Sjkim.L003maw_sse2_unrolled: 25299389Sjkim movd (%eax),%mm3 26299389Sjkim paddq %mm3,%mm1 27299389Sjkim movd (%edx),%mm2 28299389Sjkim pmuludq %mm0,%mm2 29299389Sjkim movd 4(%edx),%mm4 30299389Sjkim pmuludq %mm0,%mm4 31299389Sjkim movd 8(%edx),%mm6 32299389Sjkim pmuludq %mm0,%mm6 33299389Sjkim movd 12(%edx),%mm7 34299389Sjkim pmuludq %mm0,%mm7 35299389Sjkim paddq %mm2,%mm1 36299389Sjkim movd 4(%eax),%mm3 37299389Sjkim paddq %mm4,%mm3 38299389Sjkim movd 8(%eax),%mm5 39299389Sjkim paddq %mm6,%mm5 40299389Sjkim movd 12(%eax),%mm4 41299389Sjkim paddq %mm4,%mm7 42299389Sjkim movd %mm1,(%eax) 43299389Sjkim movd 16(%edx),%mm2 44299389Sjkim pmuludq %mm0,%mm2 45299389Sjkim psrlq $32,%mm1 46299389Sjkim movd 20(%edx),%mm4 47299389Sjkim pmuludq %mm0,%mm4 48299389Sjkim paddq %mm3,%mm1 49299389Sjkim movd 24(%edx),%mm6 50299389Sjkim pmuludq %mm0,%mm6 51299389Sjkim movd %mm1,4(%eax) 52299389Sjkim psrlq $32,%mm1 53299389Sjkim movd 28(%edx),%mm3 54299389Sjkim addl $32,%edx 55299389Sjkim pmuludq %mm0,%mm3 56299389Sjkim paddq %mm5,%mm1 57299389Sjkim movd 16(%eax),%mm5 58299389Sjkim paddq %mm5,%mm2 59299389Sjkim movd %mm1,8(%eax) 60299389Sjkim psrlq $32,%mm1 61299389Sjkim paddq %mm7,%mm1 62299389Sjkim movd 20(%eax),%mm5 63299389Sjkim paddq %mm5,%mm4 64299389Sjkim movd %mm1,12(%eax) 65299389Sjkim psrlq $32,%mm1 66299389Sjkim paddq %mm2,%mm1 67299389Sjkim movd 24(%eax),%mm5 68299389Sjkim paddq %mm5,%mm6 69299389Sjkim movd %mm1,16(%eax) 70299389Sjkim psrlq $32,%mm1 71299389Sjkim paddq %mm4,%mm1 72299389Sjkim movd 28(%eax),%mm5 73299389Sjkim paddq %mm5,%mm3 74299389Sjkim movd %mm1,20(%eax) 75299389Sjkim psrlq $32,%mm1 76299389Sjkim paddq %mm6,%mm1 77299389Sjkim movd %mm1,24(%eax) 78299389Sjkim psrlq $32,%mm1 79299389Sjkim paddq %mm3,%mm1 80299389Sjkim movd %mm1,28(%eax) 81299389Sjkim leal 32(%eax),%eax 82299389Sjkim psrlq $32,%mm1 83299389Sjkim subl $8,%ecx 84299389Sjkim jz .L004maw_sse2_exit 85299389Sjkim.L002maw_sse2_entry: 86299389Sjkim testl $4294967288,%ecx 87299389Sjkim jnz .L003maw_sse2_unrolled 88299389Sjkim.align 4 89299389Sjkim.L005maw_sse2_loop: 90299389Sjkim movd (%edx),%mm2 91299389Sjkim movd (%eax),%mm3 92299389Sjkim pmuludq %mm0,%mm2 93299389Sjkim leal 4(%edx),%edx 94299389Sjkim paddq %mm3,%mm1 95299389Sjkim paddq %mm2,%mm1 96299389Sjkim movd %mm1,(%eax) 97299389Sjkim subl $1,%ecx 98299389Sjkim psrlq $32,%mm1 99299389Sjkim leal 4(%eax),%eax 100299389Sjkim jnz .L005maw_sse2_loop 101299389Sjkim.L004maw_sse2_exit: 102299389Sjkim movd %mm1,%eax 103299389Sjkim emms 104299389Sjkim ret 105299389Sjkim.align 16 106299389Sjkim.L001maw_non_sse2: 107299389Sjkim pushl %ebp 108299389Sjkim pushl %ebx 109299389Sjkim pushl %esi 110299389Sjkim pushl %edi 111299389Sjkim 112299389Sjkim xorl %esi,%esi 113299389Sjkim movl 20(%esp),%edi 114299389Sjkim movl 28(%esp),%ecx 115299389Sjkim movl 24(%esp),%ebx 116299389Sjkim andl $4294967288,%ecx 117299389Sjkim movl 32(%esp),%ebp 118299389Sjkim pushl %ecx 119299389Sjkim jz .L006maw_finish 120299389Sjkim.align 16 121299389Sjkim.L007maw_loop: 122299389Sjkim 123299389Sjkim movl (%ebx),%eax 124299389Sjkim mull %ebp 125299389Sjkim addl %esi,%eax 126299389Sjkim adcl $0,%edx 127299389Sjkim addl (%edi),%eax 128299389Sjkim adcl $0,%edx 129299389Sjkim movl %eax,(%edi) 130299389Sjkim movl %edx,%esi 131299389Sjkim 132299389Sjkim movl 4(%ebx),%eax 133299389Sjkim mull %ebp 134299389Sjkim addl %esi,%eax 135299389Sjkim adcl $0,%edx 136299389Sjkim addl 4(%edi),%eax 137299389Sjkim adcl $0,%edx 138299389Sjkim movl %eax,4(%edi) 139299389Sjkim movl %edx,%esi 140299389Sjkim 141299389Sjkim movl 8(%ebx),%eax 142299389Sjkim mull %ebp 143299389Sjkim addl %esi,%eax 144299389Sjkim adcl $0,%edx 145299389Sjkim addl 8(%edi),%eax 146299389Sjkim adcl $0,%edx 147299389Sjkim movl %eax,8(%edi) 148299389Sjkim movl %edx,%esi 149299389Sjkim 150299389Sjkim movl 12(%ebx),%eax 151299389Sjkim mull %ebp 152299389Sjkim addl %esi,%eax 153299389Sjkim adcl $0,%edx 154299389Sjkim addl 12(%edi),%eax 155299389Sjkim adcl $0,%edx 156299389Sjkim movl %eax,12(%edi) 157299389Sjkim movl %edx,%esi 158299389Sjkim 159299389Sjkim movl 16(%ebx),%eax 160299389Sjkim mull %ebp 161299389Sjkim addl %esi,%eax 162299389Sjkim adcl $0,%edx 163299389Sjkim addl 16(%edi),%eax 164299389Sjkim adcl $0,%edx 165299389Sjkim movl %eax,16(%edi) 166299389Sjkim movl %edx,%esi 167299389Sjkim 168299389Sjkim movl 20(%ebx),%eax 169299389Sjkim mull %ebp 170299389Sjkim addl %esi,%eax 171299389Sjkim adcl $0,%edx 172299389Sjkim addl 20(%edi),%eax 173299389Sjkim adcl $0,%edx 174299389Sjkim movl %eax,20(%edi) 175299389Sjkim movl %edx,%esi 176299389Sjkim 177299389Sjkim movl 24(%ebx),%eax 178299389Sjkim mull %ebp 179299389Sjkim addl %esi,%eax 180299389Sjkim adcl $0,%edx 181299389Sjkim addl 24(%edi),%eax 182299389Sjkim adcl $0,%edx 183299389Sjkim movl %eax,24(%edi) 184299389Sjkim movl %edx,%esi 185299389Sjkim 186299389Sjkim movl 28(%ebx),%eax 187299389Sjkim mull %ebp 188299389Sjkim addl %esi,%eax 189299389Sjkim adcl $0,%edx 190299389Sjkim addl 28(%edi),%eax 191299389Sjkim adcl $0,%edx 192299389Sjkim movl %eax,28(%edi) 193299389Sjkim movl %edx,%esi 194299389Sjkim 195299389Sjkim subl $8,%ecx 196299389Sjkim leal 32(%ebx),%ebx 197299389Sjkim leal 32(%edi),%edi 198299389Sjkim jnz .L007maw_loop 199299389Sjkim.L006maw_finish: 200299389Sjkim movl 32(%esp),%ecx 201299389Sjkim andl $7,%ecx 202299389Sjkim jnz .L008maw_finish2 203299389Sjkim jmp .L009maw_end 204299389Sjkim.L008maw_finish2: 205299389Sjkim 206299389Sjkim movl (%ebx),%eax 207299389Sjkim mull %ebp 208299389Sjkim addl %esi,%eax 209299389Sjkim adcl $0,%edx 210299389Sjkim addl (%edi),%eax 211299389Sjkim adcl $0,%edx 212299389Sjkim decl %ecx 213299389Sjkim movl %eax,(%edi) 214299389Sjkim movl %edx,%esi 215299389Sjkim jz .L009maw_end 216299389Sjkim 217299389Sjkim movl 4(%ebx),%eax 218299389Sjkim mull %ebp 219299389Sjkim addl %esi,%eax 220299389Sjkim adcl $0,%edx 221299389Sjkim addl 4(%edi),%eax 222299389Sjkim adcl $0,%edx 223299389Sjkim decl %ecx 224299389Sjkim movl %eax,4(%edi) 225299389Sjkim movl %edx,%esi 226299389Sjkim jz .L009maw_end 227299389Sjkim 228299389Sjkim movl 8(%ebx),%eax 229299389Sjkim mull %ebp 230299389Sjkim addl %esi,%eax 231299389Sjkim adcl $0,%edx 232299389Sjkim addl 8(%edi),%eax 233299389Sjkim adcl $0,%edx 234299389Sjkim decl %ecx 235299389Sjkim movl %eax,8(%edi) 236299389Sjkim movl %edx,%esi 237299389Sjkim jz .L009maw_end 238299389Sjkim 239299389Sjkim movl 12(%ebx),%eax 240299389Sjkim mull %ebp 241299389Sjkim addl %esi,%eax 242299389Sjkim adcl $0,%edx 243299389Sjkim addl 12(%edi),%eax 244299389Sjkim adcl $0,%edx 245299389Sjkim decl %ecx 246299389Sjkim movl %eax,12(%edi) 247299389Sjkim movl %edx,%esi 248299389Sjkim jz .L009maw_end 249299389Sjkim 250299389Sjkim movl 16(%ebx),%eax 251299389Sjkim mull %ebp 252299389Sjkim addl %esi,%eax 253299389Sjkim adcl $0,%edx 254299389Sjkim addl 16(%edi),%eax 255299389Sjkim adcl $0,%edx 256299389Sjkim decl %ecx 257299389Sjkim movl %eax,16(%edi) 258299389Sjkim movl %edx,%esi 259299389Sjkim jz .L009maw_end 260299389Sjkim 261299389Sjkim movl 20(%ebx),%eax 262299389Sjkim mull %ebp 263299389Sjkim addl %esi,%eax 264299389Sjkim adcl $0,%edx 265299389Sjkim addl 20(%edi),%eax 266299389Sjkim adcl $0,%edx 267299389Sjkim decl %ecx 268299389Sjkim movl %eax,20(%edi) 269299389Sjkim movl %edx,%esi 270299389Sjkim jz .L009maw_end 271299389Sjkim 272299389Sjkim movl 24(%ebx),%eax 273299389Sjkim mull %ebp 274299389Sjkim addl %esi,%eax 275299389Sjkim adcl $0,%edx 276299389Sjkim addl 24(%edi),%eax 277299389Sjkim adcl $0,%edx 278299389Sjkim movl %eax,24(%edi) 279299389Sjkim movl %edx,%esi 280299389Sjkim.L009maw_end: 281299389Sjkim movl %esi,%eax 282299389Sjkim popl %ecx 283299389Sjkim popl %edi 284299389Sjkim popl %esi 285299389Sjkim popl %ebx 286299389Sjkim popl %ebp 287299389Sjkim ret 288299389Sjkim.size bn_mul_add_words,.-.L_bn_mul_add_words_begin 289299389Sjkim.globl bn_mul_words 290299389Sjkim.type bn_mul_words,@function 291299389Sjkim.align 16 292299389Sjkimbn_mul_words: 293299389Sjkim.L_bn_mul_words_begin: 294299389Sjkim call .L010PIC_me_up 295299389Sjkim.L010PIC_me_up: 296299389Sjkim popl %eax 297299389Sjkim leal OPENSSL_ia32cap_P-.L010PIC_me_up(%eax),%eax 298299389Sjkim btl $26,(%eax) 299299389Sjkim jnc .L011mw_non_sse2 300299389Sjkim movl 4(%esp),%eax 301299389Sjkim movl 8(%esp),%edx 302299389Sjkim movl 12(%esp),%ecx 303299389Sjkim movd 16(%esp),%mm0 304299389Sjkim pxor %mm1,%mm1 305299389Sjkim.align 16 306299389Sjkim.L012mw_sse2_loop: 307299389Sjkim movd (%edx),%mm2 308299389Sjkim pmuludq %mm0,%mm2 309299389Sjkim leal 4(%edx),%edx 310299389Sjkim paddq %mm2,%mm1 311299389Sjkim movd %mm1,(%eax) 312299389Sjkim subl $1,%ecx 313299389Sjkim psrlq $32,%mm1 314299389Sjkim leal 4(%eax),%eax 315299389Sjkim jnz .L012mw_sse2_loop 316299389Sjkim movd %mm1,%eax 317299389Sjkim emms 318299389Sjkim ret 319299389Sjkim.align 16 320299389Sjkim.L011mw_non_sse2: 321299389Sjkim pushl %ebp 322299389Sjkim pushl %ebx 323299389Sjkim pushl %esi 324299389Sjkim pushl %edi 325299389Sjkim 326299389Sjkim xorl %esi,%esi 327299389Sjkim movl 20(%esp),%edi 328299389Sjkim movl 24(%esp),%ebx 329299389Sjkim movl 28(%esp),%ebp 330299389Sjkim movl 32(%esp),%ecx 331299389Sjkim andl $4294967288,%ebp 332299389Sjkim jz .L013mw_finish 333299389Sjkim.L014mw_loop: 334299389Sjkim 335299389Sjkim movl (%ebx),%eax 336299389Sjkim mull %ecx 337299389Sjkim addl %esi,%eax 338299389Sjkim adcl $0,%edx 339299389Sjkim movl %eax,(%edi) 340299389Sjkim movl %edx,%esi 341299389Sjkim 342299389Sjkim movl 4(%ebx),%eax 343299389Sjkim mull %ecx 344299389Sjkim addl %esi,%eax 345299389Sjkim adcl $0,%edx 346299389Sjkim movl %eax,4(%edi) 347299389Sjkim movl %edx,%esi 348299389Sjkim 349299389Sjkim movl 8(%ebx),%eax 350299389Sjkim mull %ecx 351299389Sjkim addl %esi,%eax 352299389Sjkim adcl $0,%edx 353299389Sjkim movl %eax,8(%edi) 354299389Sjkim movl %edx,%esi 355299389Sjkim 356299389Sjkim movl 12(%ebx),%eax 357299389Sjkim mull %ecx 358299389Sjkim addl %esi,%eax 359299389Sjkim adcl $0,%edx 360299389Sjkim movl %eax,12(%edi) 361299389Sjkim movl %edx,%esi 362299389Sjkim 363299389Sjkim movl 16(%ebx),%eax 364299389Sjkim mull %ecx 365299389Sjkim addl %esi,%eax 366299389Sjkim adcl $0,%edx 367299389Sjkim movl %eax,16(%edi) 368299389Sjkim movl %edx,%esi 369299389Sjkim 370299389Sjkim movl 20(%ebx),%eax 371299389Sjkim mull %ecx 372299389Sjkim addl %esi,%eax 373299389Sjkim adcl $0,%edx 374299389Sjkim movl %eax,20(%edi) 375299389Sjkim movl %edx,%esi 376299389Sjkim 377299389Sjkim movl 24(%ebx),%eax 378299389Sjkim mull %ecx 379299389Sjkim addl %esi,%eax 380299389Sjkim adcl $0,%edx 381299389Sjkim movl %eax,24(%edi) 382299389Sjkim movl %edx,%esi 383299389Sjkim 384299389Sjkim movl 28(%ebx),%eax 385299389Sjkim mull %ecx 386299389Sjkim addl %esi,%eax 387299389Sjkim adcl $0,%edx 388299389Sjkim movl %eax,28(%edi) 389299389Sjkim movl %edx,%esi 390299389Sjkim 391299389Sjkim addl $32,%ebx 392299389Sjkim addl $32,%edi 393299389Sjkim subl $8,%ebp 394299389Sjkim jz .L013mw_finish 395299389Sjkim jmp .L014mw_loop 396299389Sjkim.L013mw_finish: 397299389Sjkim movl 28(%esp),%ebp 398299389Sjkim andl $7,%ebp 399299389Sjkim jnz .L015mw_finish2 400299389Sjkim jmp .L016mw_end 401299389Sjkim.L015mw_finish2: 402299389Sjkim 403299389Sjkim movl (%ebx),%eax 404299389Sjkim mull %ecx 405299389Sjkim addl %esi,%eax 406299389Sjkim adcl $0,%edx 407299389Sjkim movl %eax,(%edi) 408299389Sjkim movl %edx,%esi 409299389Sjkim decl %ebp 410299389Sjkim jz .L016mw_end 411299389Sjkim 412299389Sjkim movl 4(%ebx),%eax 413299389Sjkim mull %ecx 414299389Sjkim addl %esi,%eax 415299389Sjkim adcl $0,%edx 416299389Sjkim movl %eax,4(%edi) 417299389Sjkim movl %edx,%esi 418299389Sjkim decl %ebp 419299389Sjkim jz .L016mw_end 420299389Sjkim 421299389Sjkim movl 8(%ebx),%eax 422299389Sjkim mull %ecx 423299389Sjkim addl %esi,%eax 424299389Sjkim adcl $0,%edx 425299389Sjkim movl %eax,8(%edi) 426299389Sjkim movl %edx,%esi 427299389Sjkim decl %ebp 428299389Sjkim jz .L016mw_end 429299389Sjkim 430299389Sjkim movl 12(%ebx),%eax 431299389Sjkim mull %ecx 432299389Sjkim addl %esi,%eax 433299389Sjkim adcl $0,%edx 434299389Sjkim movl %eax,12(%edi) 435299389Sjkim movl %edx,%esi 436299389Sjkim decl %ebp 437299389Sjkim jz .L016mw_end 438299389Sjkim 439299389Sjkim movl 16(%ebx),%eax 440299389Sjkim mull %ecx 441299389Sjkim addl %esi,%eax 442299389Sjkim adcl $0,%edx 443299389Sjkim movl %eax,16(%edi) 444299389Sjkim movl %edx,%esi 445299389Sjkim decl %ebp 446299389Sjkim jz .L016mw_end 447299389Sjkim 448299389Sjkim movl 20(%ebx),%eax 449299389Sjkim mull %ecx 450299389Sjkim addl %esi,%eax 451299389Sjkim adcl $0,%edx 452299389Sjkim movl %eax,20(%edi) 453299389Sjkim movl %edx,%esi 454299389Sjkim decl %ebp 455299389Sjkim jz .L016mw_end 456299389Sjkim 457299389Sjkim movl 24(%ebx),%eax 458299389Sjkim mull %ecx 459299389Sjkim addl %esi,%eax 460299389Sjkim adcl $0,%edx 461299389Sjkim movl %eax,24(%edi) 462299389Sjkim movl %edx,%esi 463299389Sjkim.L016mw_end: 464299389Sjkim movl %esi,%eax 465299389Sjkim popl %edi 466299389Sjkim popl %esi 467299389Sjkim popl %ebx 468299389Sjkim popl %ebp 469299389Sjkim ret 470299389Sjkim.size bn_mul_words,.-.L_bn_mul_words_begin 471299389Sjkim.globl bn_sqr_words 472299389Sjkim.type bn_sqr_words,@function 473299389Sjkim.align 16 474299389Sjkimbn_sqr_words: 475299389Sjkim.L_bn_sqr_words_begin: 476299389Sjkim call .L017PIC_me_up 477299389Sjkim.L017PIC_me_up: 478299389Sjkim popl %eax 479299389Sjkim leal OPENSSL_ia32cap_P-.L017PIC_me_up(%eax),%eax 480299389Sjkim btl $26,(%eax) 481299389Sjkim jnc .L018sqr_non_sse2 482299389Sjkim movl 4(%esp),%eax 483299389Sjkim movl 8(%esp),%edx 484299389Sjkim movl 12(%esp),%ecx 485299389Sjkim.align 16 486299389Sjkim.L019sqr_sse2_loop: 487299389Sjkim movd (%edx),%mm0 488299389Sjkim pmuludq %mm0,%mm0 489299389Sjkim leal 4(%edx),%edx 490299389Sjkim movq %mm0,(%eax) 491299389Sjkim subl $1,%ecx 492299389Sjkim leal 8(%eax),%eax 493299389Sjkim jnz .L019sqr_sse2_loop 494299389Sjkim emms 495299389Sjkim ret 496299389Sjkim.align 16 497299389Sjkim.L018sqr_non_sse2: 498299389Sjkim pushl %ebp 499299389Sjkim pushl %ebx 500299389Sjkim pushl %esi 501299389Sjkim pushl %edi 502299389Sjkim 503299389Sjkim movl 20(%esp),%esi 504299389Sjkim movl 24(%esp),%edi 505299389Sjkim movl 28(%esp),%ebx 506299389Sjkim andl $4294967288,%ebx 507299389Sjkim jz .L020sw_finish 508299389Sjkim.L021sw_loop: 509299389Sjkim 510299389Sjkim movl (%edi),%eax 511299389Sjkim mull %eax 512299389Sjkim movl %eax,(%esi) 513299389Sjkim movl %edx,4(%esi) 514299389Sjkim 515299389Sjkim movl 4(%edi),%eax 516299389Sjkim mull %eax 517299389Sjkim movl %eax,8(%esi) 518299389Sjkim movl %edx,12(%esi) 519299389Sjkim 520299389Sjkim movl 8(%edi),%eax 521299389Sjkim mull %eax 522299389Sjkim movl %eax,16(%esi) 523299389Sjkim movl %edx,20(%esi) 524299389Sjkim 525299389Sjkim movl 12(%edi),%eax 526299389Sjkim mull %eax 527299389Sjkim movl %eax,24(%esi) 528299389Sjkim movl %edx,28(%esi) 529299389Sjkim 530299389Sjkim movl 16(%edi),%eax 531299389Sjkim mull %eax 532299389Sjkim movl %eax,32(%esi) 533299389Sjkim movl %edx,36(%esi) 534299389Sjkim 535299389Sjkim movl 20(%edi),%eax 536299389Sjkim mull %eax 537299389Sjkim movl %eax,40(%esi) 538299389Sjkim movl %edx,44(%esi) 539299389Sjkim 540299389Sjkim movl 24(%edi),%eax 541299389Sjkim mull %eax 542299389Sjkim movl %eax,48(%esi) 543299389Sjkim movl %edx,52(%esi) 544299389Sjkim 545299389Sjkim movl 28(%edi),%eax 546299389Sjkim mull %eax 547299389Sjkim movl %eax,56(%esi) 548299389Sjkim movl %edx,60(%esi) 549299389Sjkim 550299389Sjkim addl $32,%edi 551299389Sjkim addl $64,%esi 552299389Sjkim subl $8,%ebx 553299389Sjkim jnz .L021sw_loop 554299389Sjkim.L020sw_finish: 555299389Sjkim movl 28(%esp),%ebx 556299389Sjkim andl $7,%ebx 557299389Sjkim jz .L022sw_end 558299389Sjkim 559299389Sjkim movl (%edi),%eax 560299389Sjkim mull %eax 561299389Sjkim movl %eax,(%esi) 562299389Sjkim decl %ebx 563299389Sjkim movl %edx,4(%esi) 564299389Sjkim jz .L022sw_end 565299389Sjkim 566299389Sjkim movl 4(%edi),%eax 567299389Sjkim mull %eax 568299389Sjkim movl %eax,8(%esi) 569299389Sjkim decl %ebx 570299389Sjkim movl %edx,12(%esi) 571299389Sjkim jz .L022sw_end 572299389Sjkim 573299389Sjkim movl 8(%edi),%eax 574299389Sjkim mull %eax 575299389Sjkim movl %eax,16(%esi) 576299389Sjkim decl %ebx 577299389Sjkim movl %edx,20(%esi) 578299389Sjkim jz .L022sw_end 579299389Sjkim 580299389Sjkim movl 12(%edi),%eax 581299389Sjkim mull %eax 582299389Sjkim movl %eax,24(%esi) 583299389Sjkim decl %ebx 584299389Sjkim movl %edx,28(%esi) 585299389Sjkim jz .L022sw_end 586299389Sjkim 587299389Sjkim movl 16(%edi),%eax 588299389Sjkim mull %eax 589299389Sjkim movl %eax,32(%esi) 590299389Sjkim decl %ebx 591299389Sjkim movl %edx,36(%esi) 592299389Sjkim jz .L022sw_end 593299389Sjkim 594299389Sjkim movl 20(%edi),%eax 595299389Sjkim mull %eax 596299389Sjkim movl %eax,40(%esi) 597299389Sjkim decl %ebx 598299389Sjkim movl %edx,44(%esi) 599299389Sjkim jz .L022sw_end 600299389Sjkim 601299389Sjkim movl 24(%edi),%eax 602299389Sjkim mull %eax 603299389Sjkim movl %eax,48(%esi) 604299389Sjkim movl %edx,52(%esi) 605299389Sjkim.L022sw_end: 606299389Sjkim popl %edi 607299389Sjkim popl %esi 608299389Sjkim popl %ebx 609299389Sjkim popl %ebp 610299389Sjkim ret 611299389Sjkim.size bn_sqr_words,.-.L_bn_sqr_words_begin 612299389Sjkim.globl bn_div_words 613299389Sjkim.type bn_div_words,@function 614299389Sjkim.align 16 615299389Sjkimbn_div_words: 616299389Sjkim.L_bn_div_words_begin: 617299389Sjkim movl 4(%esp),%edx 618299389Sjkim movl 8(%esp),%eax 619299389Sjkim movl 12(%esp),%ecx 620299389Sjkim divl %ecx 621299389Sjkim ret 622299389Sjkim.size bn_div_words,.-.L_bn_div_words_begin 623299389Sjkim.globl bn_add_words 624299389Sjkim.type bn_add_words,@function 625299389Sjkim.align 16 626299389Sjkimbn_add_words: 627299389Sjkim.L_bn_add_words_begin: 628299389Sjkim pushl %ebp 629299389Sjkim pushl %ebx 630299389Sjkim pushl %esi 631299389Sjkim pushl %edi 632299389Sjkim 633299389Sjkim movl 20(%esp),%ebx 634299389Sjkim movl 24(%esp),%esi 635299389Sjkim movl 28(%esp),%edi 636299389Sjkim movl 32(%esp),%ebp 637299389Sjkim xorl %eax,%eax 638299389Sjkim andl $4294967288,%ebp 639299389Sjkim jz .L023aw_finish 640299389Sjkim.L024aw_loop: 641299389Sjkim 642299389Sjkim movl (%esi),%ecx 643299389Sjkim movl (%edi),%edx 644299389Sjkim addl %eax,%ecx 645299389Sjkim movl $0,%eax 646299389Sjkim adcl %eax,%eax 647299389Sjkim addl %edx,%ecx 648299389Sjkim adcl $0,%eax 649299389Sjkim movl %ecx,(%ebx) 650299389Sjkim 651299389Sjkim movl 4(%esi),%ecx 652299389Sjkim movl 4(%edi),%edx 653299389Sjkim addl %eax,%ecx 654299389Sjkim movl $0,%eax 655299389Sjkim adcl %eax,%eax 656299389Sjkim addl %edx,%ecx 657299389Sjkim adcl $0,%eax 658299389Sjkim movl %ecx,4(%ebx) 659299389Sjkim 660299389Sjkim movl 8(%esi),%ecx 661299389Sjkim movl 8(%edi),%edx 662299389Sjkim addl %eax,%ecx 663299389Sjkim movl $0,%eax 664299389Sjkim adcl %eax,%eax 665299389Sjkim addl %edx,%ecx 666299389Sjkim adcl $0,%eax 667299389Sjkim movl %ecx,8(%ebx) 668299389Sjkim 669299389Sjkim movl 12(%esi),%ecx 670299389Sjkim movl 12(%edi),%edx 671299389Sjkim addl %eax,%ecx 672299389Sjkim movl $0,%eax 673299389Sjkim adcl %eax,%eax 674299389Sjkim addl %edx,%ecx 675299389Sjkim adcl $0,%eax 676299389Sjkim movl %ecx,12(%ebx) 677299389Sjkim 678299389Sjkim movl 16(%esi),%ecx 679299389Sjkim movl 16(%edi),%edx 680299389Sjkim addl %eax,%ecx 681299389Sjkim movl $0,%eax 682299389Sjkim adcl %eax,%eax 683299389Sjkim addl %edx,%ecx 684299389Sjkim adcl $0,%eax 685299389Sjkim movl %ecx,16(%ebx) 686299389Sjkim 687299389Sjkim movl 20(%esi),%ecx 688299389Sjkim movl 20(%edi),%edx 689299389Sjkim addl %eax,%ecx 690299389Sjkim movl $0,%eax 691299389Sjkim adcl %eax,%eax 692299389Sjkim addl %edx,%ecx 693299389Sjkim adcl $0,%eax 694299389Sjkim movl %ecx,20(%ebx) 695299389Sjkim 696299389Sjkim movl 24(%esi),%ecx 697299389Sjkim movl 24(%edi),%edx 698299389Sjkim addl %eax,%ecx 699299389Sjkim movl $0,%eax 700299389Sjkim adcl %eax,%eax 701299389Sjkim addl %edx,%ecx 702299389Sjkim adcl $0,%eax 703299389Sjkim movl %ecx,24(%ebx) 704299389Sjkim 705299389Sjkim movl 28(%esi),%ecx 706299389Sjkim movl 28(%edi),%edx 707299389Sjkim addl %eax,%ecx 708299389Sjkim movl $0,%eax 709299389Sjkim adcl %eax,%eax 710299389Sjkim addl %edx,%ecx 711299389Sjkim adcl $0,%eax 712299389Sjkim movl %ecx,28(%ebx) 713299389Sjkim 714299389Sjkim addl $32,%esi 715299389Sjkim addl $32,%edi 716299389Sjkim addl $32,%ebx 717299389Sjkim subl $8,%ebp 718299389Sjkim jnz .L024aw_loop 719299389Sjkim.L023aw_finish: 720299389Sjkim movl 32(%esp),%ebp 721299389Sjkim andl $7,%ebp 722299389Sjkim jz .L025aw_end 723299389Sjkim 724299389Sjkim movl (%esi),%ecx 725299389Sjkim movl (%edi),%edx 726299389Sjkim addl %eax,%ecx 727299389Sjkim movl $0,%eax 728299389Sjkim adcl %eax,%eax 729299389Sjkim addl %edx,%ecx 730299389Sjkim adcl $0,%eax 731299389Sjkim decl %ebp 732299389Sjkim movl %ecx,(%ebx) 733299389Sjkim jz .L025aw_end 734299389Sjkim 735299389Sjkim movl 4(%esi),%ecx 736299389Sjkim movl 4(%edi),%edx 737299389Sjkim addl %eax,%ecx 738299389Sjkim movl $0,%eax 739299389Sjkim adcl %eax,%eax 740299389Sjkim addl %edx,%ecx 741299389Sjkim adcl $0,%eax 742299389Sjkim decl %ebp 743299389Sjkim movl %ecx,4(%ebx) 744299389Sjkim jz .L025aw_end 745299389Sjkim 746299389Sjkim movl 8(%esi),%ecx 747299389Sjkim movl 8(%edi),%edx 748299389Sjkim addl %eax,%ecx 749299389Sjkim movl $0,%eax 750299389Sjkim adcl %eax,%eax 751299389Sjkim addl %edx,%ecx 752299389Sjkim adcl $0,%eax 753299389Sjkim decl %ebp 754299389Sjkim movl %ecx,8(%ebx) 755299389Sjkim jz .L025aw_end 756299389Sjkim 757299389Sjkim movl 12(%esi),%ecx 758299389Sjkim movl 12(%edi),%edx 759299389Sjkim addl %eax,%ecx 760299389Sjkim movl $0,%eax 761299389Sjkim adcl %eax,%eax 762299389Sjkim addl %edx,%ecx 763299389Sjkim adcl $0,%eax 764299389Sjkim decl %ebp 765299389Sjkim movl %ecx,12(%ebx) 766299389Sjkim jz .L025aw_end 767299389Sjkim 768299389Sjkim movl 16(%esi),%ecx 769299389Sjkim movl 16(%edi),%edx 770299389Sjkim addl %eax,%ecx 771299389Sjkim movl $0,%eax 772299389Sjkim adcl %eax,%eax 773299389Sjkim addl %edx,%ecx 774299389Sjkim adcl $0,%eax 775299389Sjkim decl %ebp 776299389Sjkim movl %ecx,16(%ebx) 777299389Sjkim jz .L025aw_end 778299389Sjkim 779299389Sjkim movl 20(%esi),%ecx 780299389Sjkim movl 20(%edi),%edx 781299389Sjkim addl %eax,%ecx 782299389Sjkim movl $0,%eax 783299389Sjkim adcl %eax,%eax 784299389Sjkim addl %edx,%ecx 785299389Sjkim adcl $0,%eax 786299389Sjkim decl %ebp 787299389Sjkim movl %ecx,20(%ebx) 788299389Sjkim jz .L025aw_end 789299389Sjkim 790299389Sjkim movl 24(%esi),%ecx 791299389Sjkim movl 24(%edi),%edx 792299389Sjkim addl %eax,%ecx 793299389Sjkim movl $0,%eax 794299389Sjkim adcl %eax,%eax 795299389Sjkim addl %edx,%ecx 796299389Sjkim adcl $0,%eax 797299389Sjkim movl %ecx,24(%ebx) 798299389Sjkim.L025aw_end: 799299389Sjkim popl %edi 800299389Sjkim popl %esi 801299389Sjkim popl %ebx 802299389Sjkim popl %ebp 803299389Sjkim ret 804299389Sjkim.size bn_add_words,.-.L_bn_add_words_begin 805299389Sjkim.globl bn_sub_words 806299389Sjkim.type bn_sub_words,@function 807299389Sjkim.align 16 808299389Sjkimbn_sub_words: 809299389Sjkim.L_bn_sub_words_begin: 810299389Sjkim pushl %ebp 811299389Sjkim pushl %ebx 812299389Sjkim pushl %esi 813299389Sjkim pushl %edi 814299389Sjkim 815299389Sjkim movl 20(%esp),%ebx 816299389Sjkim movl 24(%esp),%esi 817299389Sjkim movl 28(%esp),%edi 818299389Sjkim movl 32(%esp),%ebp 819299389Sjkim xorl %eax,%eax 820299389Sjkim andl $4294967288,%ebp 821299389Sjkim jz .L026aw_finish 822299389Sjkim.L027aw_loop: 823299389Sjkim 824299389Sjkim movl (%esi),%ecx 825299389Sjkim movl (%edi),%edx 826299389Sjkim subl %eax,%ecx 827299389Sjkim movl $0,%eax 828299389Sjkim adcl %eax,%eax 829299389Sjkim subl %edx,%ecx 830299389Sjkim adcl $0,%eax 831299389Sjkim movl %ecx,(%ebx) 832299389Sjkim 833299389Sjkim movl 4(%esi),%ecx 834299389Sjkim movl 4(%edi),%edx 835299389Sjkim subl %eax,%ecx 836299389Sjkim movl $0,%eax 837299389Sjkim adcl %eax,%eax 838299389Sjkim subl %edx,%ecx 839299389Sjkim adcl $0,%eax 840299389Sjkim movl %ecx,4(%ebx) 841299389Sjkim 842299389Sjkim movl 8(%esi),%ecx 843299389Sjkim movl 8(%edi),%edx 844299389Sjkim subl %eax,%ecx 845299389Sjkim movl $0,%eax 846299389Sjkim adcl %eax,%eax 847299389Sjkim subl %edx,%ecx 848299389Sjkim adcl $0,%eax 849299389Sjkim movl %ecx,8(%ebx) 850299389Sjkim 851299389Sjkim movl 12(%esi),%ecx 852299389Sjkim movl 12(%edi),%edx 853299389Sjkim subl %eax,%ecx 854299389Sjkim movl $0,%eax 855299389Sjkim adcl %eax,%eax 856299389Sjkim subl %edx,%ecx 857299389Sjkim adcl $0,%eax 858299389Sjkim movl %ecx,12(%ebx) 859299389Sjkim 860299389Sjkim movl 16(%esi),%ecx 861299389Sjkim movl 16(%edi),%edx 862299389Sjkim subl %eax,%ecx 863299389Sjkim movl $0,%eax 864299389Sjkim adcl %eax,%eax 865299389Sjkim subl %edx,%ecx 866299389Sjkim adcl $0,%eax 867299389Sjkim movl %ecx,16(%ebx) 868299389Sjkim 869299389Sjkim movl 20(%esi),%ecx 870299389Sjkim movl 20(%edi),%edx 871299389Sjkim subl %eax,%ecx 872299389Sjkim movl $0,%eax 873299389Sjkim adcl %eax,%eax 874299389Sjkim subl %edx,%ecx 875299389Sjkim adcl $0,%eax 876299389Sjkim movl %ecx,20(%ebx) 877299389Sjkim 878299389Sjkim movl 24(%esi),%ecx 879299389Sjkim movl 24(%edi),%edx 880299389Sjkim subl %eax,%ecx 881299389Sjkim movl $0,%eax 882299389Sjkim adcl %eax,%eax 883299389Sjkim subl %edx,%ecx 884299389Sjkim adcl $0,%eax 885299389Sjkim movl %ecx,24(%ebx) 886299389Sjkim 887299389Sjkim movl 28(%esi),%ecx 888299389Sjkim movl 28(%edi),%edx 889299389Sjkim subl %eax,%ecx 890299389Sjkim movl $0,%eax 891299389Sjkim adcl %eax,%eax 892299389Sjkim subl %edx,%ecx 893299389Sjkim adcl $0,%eax 894299389Sjkim movl %ecx,28(%ebx) 895299389Sjkim 896299389Sjkim addl $32,%esi 897299389Sjkim addl $32,%edi 898299389Sjkim addl $32,%ebx 899299389Sjkim subl $8,%ebp 900299389Sjkim jnz .L027aw_loop 901299389Sjkim.L026aw_finish: 902299389Sjkim movl 32(%esp),%ebp 903299389Sjkim andl $7,%ebp 904299389Sjkim jz .L028aw_end 905299389Sjkim 906299389Sjkim movl (%esi),%ecx 907299389Sjkim movl (%edi),%edx 908299389Sjkim subl %eax,%ecx 909299389Sjkim movl $0,%eax 910299389Sjkim adcl %eax,%eax 911299389Sjkim subl %edx,%ecx 912299389Sjkim adcl $0,%eax 913299389Sjkim decl %ebp 914299389Sjkim movl %ecx,(%ebx) 915299389Sjkim jz .L028aw_end 916299389Sjkim 917299389Sjkim movl 4(%esi),%ecx 918299389Sjkim movl 4(%edi),%edx 919299389Sjkim subl %eax,%ecx 920299389Sjkim movl $0,%eax 921299389Sjkim adcl %eax,%eax 922299389Sjkim subl %edx,%ecx 923299389Sjkim adcl $0,%eax 924299389Sjkim decl %ebp 925299389Sjkim movl %ecx,4(%ebx) 926299389Sjkim jz .L028aw_end 927299389Sjkim 928299389Sjkim movl 8(%esi),%ecx 929299389Sjkim movl 8(%edi),%edx 930299389Sjkim subl %eax,%ecx 931299389Sjkim movl $0,%eax 932299389Sjkim adcl %eax,%eax 933299389Sjkim subl %edx,%ecx 934299389Sjkim adcl $0,%eax 935299389Sjkim decl %ebp 936299389Sjkim movl %ecx,8(%ebx) 937299389Sjkim jz .L028aw_end 938299389Sjkim 939299389Sjkim movl 12(%esi),%ecx 940299389Sjkim movl 12(%edi),%edx 941299389Sjkim subl %eax,%ecx 942299389Sjkim movl $0,%eax 943299389Sjkim adcl %eax,%eax 944299389Sjkim subl %edx,%ecx 945299389Sjkim adcl $0,%eax 946299389Sjkim decl %ebp 947299389Sjkim movl %ecx,12(%ebx) 948299389Sjkim jz .L028aw_end 949299389Sjkim 950299389Sjkim movl 16(%esi),%ecx 951299389Sjkim movl 16(%edi),%edx 952299389Sjkim subl %eax,%ecx 953299389Sjkim movl $0,%eax 954299389Sjkim adcl %eax,%eax 955299389Sjkim subl %edx,%ecx 956299389Sjkim adcl $0,%eax 957299389Sjkim decl %ebp 958299389Sjkim movl %ecx,16(%ebx) 959299389Sjkim jz .L028aw_end 960299389Sjkim 961299389Sjkim movl 20(%esi),%ecx 962299389Sjkim movl 20(%edi),%edx 963299389Sjkim subl %eax,%ecx 964299389Sjkim movl $0,%eax 965299389Sjkim adcl %eax,%eax 966299389Sjkim subl %edx,%ecx 967299389Sjkim adcl $0,%eax 968299389Sjkim decl %ebp 969299389Sjkim movl %ecx,20(%ebx) 970299389Sjkim jz .L028aw_end 971299389Sjkim 972299389Sjkim movl 24(%esi),%ecx 973299389Sjkim movl 24(%edi),%edx 974299389Sjkim subl %eax,%ecx 975299389Sjkim movl $0,%eax 976299389Sjkim adcl %eax,%eax 977299389Sjkim subl %edx,%ecx 978299389Sjkim adcl $0,%eax 979299389Sjkim movl %ecx,24(%ebx) 980299389Sjkim.L028aw_end: 981299389Sjkim popl %edi 982299389Sjkim popl %esi 983299389Sjkim popl %ebx 984299389Sjkim popl %ebp 985299389Sjkim ret 986299389Sjkim.size bn_sub_words,.-.L_bn_sub_words_begin 987299389Sjkim.globl bn_sub_part_words 988299389Sjkim.type bn_sub_part_words,@function 989299389Sjkim.align 16 990299389Sjkimbn_sub_part_words: 991299389Sjkim.L_bn_sub_part_words_begin: 992299389Sjkim pushl %ebp 993299389Sjkim pushl %ebx 994299389Sjkim pushl %esi 995299389Sjkim pushl %edi 996299389Sjkim 997299389Sjkim movl 20(%esp),%ebx 998299389Sjkim movl 24(%esp),%esi 999299389Sjkim movl 28(%esp),%edi 1000299389Sjkim movl 32(%esp),%ebp 1001299389Sjkim xorl %eax,%eax 1002299389Sjkim andl $4294967288,%ebp 1003299389Sjkim jz .L029aw_finish 1004299389Sjkim.L030aw_loop: 1005299389Sjkim 1006299389Sjkim movl (%esi),%ecx 1007299389Sjkim movl (%edi),%edx 1008299389Sjkim subl %eax,%ecx 1009299389Sjkim movl $0,%eax 1010299389Sjkim adcl %eax,%eax 1011299389Sjkim subl %edx,%ecx 1012299389Sjkim adcl $0,%eax 1013299389Sjkim movl %ecx,(%ebx) 1014299389Sjkim 1015299389Sjkim movl 4(%esi),%ecx 1016299389Sjkim movl 4(%edi),%edx 1017299389Sjkim subl %eax,%ecx 1018299389Sjkim movl $0,%eax 1019299389Sjkim adcl %eax,%eax 1020299389Sjkim subl %edx,%ecx 1021299389Sjkim adcl $0,%eax 1022299389Sjkim movl %ecx,4(%ebx) 1023299389Sjkim 1024299389Sjkim movl 8(%esi),%ecx 1025299389Sjkim movl 8(%edi),%edx 1026299389Sjkim subl %eax,%ecx 1027299389Sjkim movl $0,%eax 1028299389Sjkim adcl %eax,%eax 1029299389Sjkim subl %edx,%ecx 1030299389Sjkim adcl $0,%eax 1031299389Sjkim movl %ecx,8(%ebx) 1032299389Sjkim 1033299389Sjkim movl 12(%esi),%ecx 1034299389Sjkim movl 12(%edi),%edx 1035299389Sjkim subl %eax,%ecx 1036299389Sjkim movl $0,%eax 1037299389Sjkim adcl %eax,%eax 1038299389Sjkim subl %edx,%ecx 1039299389Sjkim adcl $0,%eax 1040299389Sjkim movl %ecx,12(%ebx) 1041299389Sjkim 1042299389Sjkim movl 16(%esi),%ecx 1043299389Sjkim movl 16(%edi),%edx 1044299389Sjkim subl %eax,%ecx 1045299389Sjkim movl $0,%eax 1046299389Sjkim adcl %eax,%eax 1047299389Sjkim subl %edx,%ecx 1048299389Sjkim adcl $0,%eax 1049299389Sjkim movl %ecx,16(%ebx) 1050299389Sjkim 1051299389Sjkim movl 20(%esi),%ecx 1052299389Sjkim movl 20(%edi),%edx 1053299389Sjkim subl %eax,%ecx 1054299389Sjkim movl $0,%eax 1055299389Sjkim adcl %eax,%eax 1056299389Sjkim subl %edx,%ecx 1057299389Sjkim adcl $0,%eax 1058299389Sjkim movl %ecx,20(%ebx) 1059299389Sjkim 1060299389Sjkim movl 24(%esi),%ecx 1061299389Sjkim movl 24(%edi),%edx 1062299389Sjkim subl %eax,%ecx 1063299389Sjkim movl $0,%eax 1064299389Sjkim adcl %eax,%eax 1065299389Sjkim subl %edx,%ecx 1066299389Sjkim adcl $0,%eax 1067299389Sjkim movl %ecx,24(%ebx) 1068299389Sjkim 1069299389Sjkim movl 28(%esi),%ecx 1070299389Sjkim movl 28(%edi),%edx 1071299389Sjkim subl %eax,%ecx 1072299389Sjkim movl $0,%eax 1073299389Sjkim adcl %eax,%eax 1074299389Sjkim subl %edx,%ecx 1075299389Sjkim adcl $0,%eax 1076299389Sjkim movl %ecx,28(%ebx) 1077299389Sjkim 1078299389Sjkim addl $32,%esi 1079299389Sjkim addl $32,%edi 1080299389Sjkim addl $32,%ebx 1081299389Sjkim subl $8,%ebp 1082299389Sjkim jnz .L030aw_loop 1083299389Sjkim.L029aw_finish: 1084299389Sjkim movl 32(%esp),%ebp 1085299389Sjkim andl $7,%ebp 1086299389Sjkim jz .L031aw_end 1087299389Sjkim 1088299389Sjkim movl (%esi),%ecx 1089299389Sjkim movl (%edi),%edx 1090299389Sjkim subl %eax,%ecx 1091299389Sjkim movl $0,%eax 1092299389Sjkim adcl %eax,%eax 1093299389Sjkim subl %edx,%ecx 1094299389Sjkim adcl $0,%eax 1095299389Sjkim movl %ecx,(%ebx) 1096299389Sjkim addl $4,%esi 1097299389Sjkim addl $4,%edi 1098299389Sjkim addl $4,%ebx 1099299389Sjkim decl %ebp 1100299389Sjkim jz .L031aw_end 1101299389Sjkim 1102299389Sjkim movl (%esi),%ecx 1103299389Sjkim movl (%edi),%edx 1104299389Sjkim subl %eax,%ecx 1105299389Sjkim movl $0,%eax 1106299389Sjkim adcl %eax,%eax 1107299389Sjkim subl %edx,%ecx 1108299389Sjkim adcl $0,%eax 1109299389Sjkim movl %ecx,(%ebx) 1110299389Sjkim addl $4,%esi 1111299389Sjkim addl $4,%edi 1112299389Sjkim addl $4,%ebx 1113299389Sjkim decl %ebp 1114299389Sjkim jz .L031aw_end 1115299389Sjkim 1116299389Sjkim movl (%esi),%ecx 1117299389Sjkim movl (%edi),%edx 1118299389Sjkim subl %eax,%ecx 1119299389Sjkim movl $0,%eax 1120299389Sjkim adcl %eax,%eax 1121299389Sjkim subl %edx,%ecx 1122299389Sjkim adcl $0,%eax 1123299389Sjkim movl %ecx,(%ebx) 1124299389Sjkim addl $4,%esi 1125299389Sjkim addl $4,%edi 1126299389Sjkim addl $4,%ebx 1127299389Sjkim decl %ebp 1128299389Sjkim jz .L031aw_end 1129299389Sjkim 1130299389Sjkim movl (%esi),%ecx 1131299389Sjkim movl (%edi),%edx 1132299389Sjkim subl %eax,%ecx 1133299389Sjkim movl $0,%eax 1134299389Sjkim adcl %eax,%eax 1135299389Sjkim subl %edx,%ecx 1136299389Sjkim adcl $0,%eax 1137299389Sjkim movl %ecx,(%ebx) 1138299389Sjkim addl $4,%esi 1139299389Sjkim addl $4,%edi 1140299389Sjkim addl $4,%ebx 1141299389Sjkim decl %ebp 1142299389Sjkim jz .L031aw_end 1143299389Sjkim 1144299389Sjkim movl (%esi),%ecx 1145299389Sjkim movl (%edi),%edx 1146299389Sjkim subl %eax,%ecx 1147299389Sjkim movl $0,%eax 1148299389Sjkim adcl %eax,%eax 1149299389Sjkim subl %edx,%ecx 1150299389Sjkim adcl $0,%eax 1151299389Sjkim movl %ecx,(%ebx) 1152299389Sjkim addl $4,%esi 1153299389Sjkim addl $4,%edi 1154299389Sjkim addl $4,%ebx 1155299389Sjkim decl %ebp 1156299389Sjkim jz .L031aw_end 1157299389Sjkim 1158299389Sjkim movl (%esi),%ecx 1159299389Sjkim movl (%edi),%edx 1160299389Sjkim subl %eax,%ecx 1161299389Sjkim movl $0,%eax 1162299389Sjkim adcl %eax,%eax 1163299389Sjkim subl %edx,%ecx 1164299389Sjkim adcl $0,%eax 1165299389Sjkim movl %ecx,(%ebx) 1166299389Sjkim addl $4,%esi 1167299389Sjkim addl $4,%edi 1168299389Sjkim addl $4,%ebx 1169299389Sjkim decl %ebp 1170299389Sjkim jz .L031aw_end 1171299389Sjkim 1172299389Sjkim movl (%esi),%ecx 1173299389Sjkim movl (%edi),%edx 1174299389Sjkim subl %eax,%ecx 1175299389Sjkim movl $0,%eax 1176299389Sjkim adcl %eax,%eax 1177299389Sjkim subl %edx,%ecx 1178299389Sjkim adcl $0,%eax 1179299389Sjkim movl %ecx,(%ebx) 1180299389Sjkim addl $4,%esi 1181299389Sjkim addl $4,%edi 1182299389Sjkim addl $4,%ebx 1183299389Sjkim.L031aw_end: 1184299389Sjkim cmpl $0,36(%esp) 1185299389Sjkim je .L032pw_end 1186299389Sjkim movl 36(%esp),%ebp 1187299389Sjkim cmpl $0,%ebp 1188299389Sjkim je .L032pw_end 1189299389Sjkim jge .L033pw_pos 1190299389Sjkim 1191299389Sjkim movl $0,%edx 1192299389Sjkim subl %ebp,%edx 1193299389Sjkim movl %edx,%ebp 1194299389Sjkim andl $4294967288,%ebp 1195299389Sjkim jz .L034pw_neg_finish 1196299389Sjkim.L035pw_neg_loop: 1197299389Sjkim 1198299389Sjkim movl $0,%ecx 1199299389Sjkim movl (%edi),%edx 1200299389Sjkim subl %eax,%ecx 1201299389Sjkim movl $0,%eax 1202299389Sjkim adcl %eax,%eax 1203299389Sjkim subl %edx,%ecx 1204299389Sjkim adcl $0,%eax 1205299389Sjkim movl %ecx,(%ebx) 1206299389Sjkim 1207299389Sjkim movl $0,%ecx 1208299389Sjkim movl 4(%edi),%edx 1209299389Sjkim subl %eax,%ecx 1210299389Sjkim movl $0,%eax 1211299389Sjkim adcl %eax,%eax 1212299389Sjkim subl %edx,%ecx 1213299389Sjkim adcl $0,%eax 1214299389Sjkim movl %ecx,4(%ebx) 1215299389Sjkim 1216299389Sjkim movl $0,%ecx 1217299389Sjkim movl 8(%edi),%edx 1218299389Sjkim subl %eax,%ecx 1219299389Sjkim movl $0,%eax 1220299389Sjkim adcl %eax,%eax 1221299389Sjkim subl %edx,%ecx 1222299389Sjkim adcl $0,%eax 1223299389Sjkim movl %ecx,8(%ebx) 1224299389Sjkim 1225299389Sjkim movl $0,%ecx 1226299389Sjkim movl 12(%edi),%edx 1227299389Sjkim subl %eax,%ecx 1228299389Sjkim movl $0,%eax 1229299389Sjkim adcl %eax,%eax 1230299389Sjkim subl %edx,%ecx 1231299389Sjkim adcl $0,%eax 1232299389Sjkim movl %ecx,12(%ebx) 1233299389Sjkim 1234299389Sjkim movl $0,%ecx 1235299389Sjkim movl 16(%edi),%edx 1236299389Sjkim subl %eax,%ecx 1237299389Sjkim movl $0,%eax 1238299389Sjkim adcl %eax,%eax 1239299389Sjkim subl %edx,%ecx 1240299389Sjkim adcl $0,%eax 1241299389Sjkim movl %ecx,16(%ebx) 1242299389Sjkim 1243299389Sjkim movl $0,%ecx 1244299389Sjkim movl 20(%edi),%edx 1245299389Sjkim subl %eax,%ecx 1246299389Sjkim movl $0,%eax 1247299389Sjkim adcl %eax,%eax 1248299389Sjkim subl %edx,%ecx 1249299389Sjkim adcl $0,%eax 1250299389Sjkim movl %ecx,20(%ebx) 1251299389Sjkim 1252299389Sjkim movl $0,%ecx 1253299389Sjkim movl 24(%edi),%edx 1254299389Sjkim subl %eax,%ecx 1255299389Sjkim movl $0,%eax 1256299389Sjkim adcl %eax,%eax 1257299389Sjkim subl %edx,%ecx 1258299389Sjkim adcl $0,%eax 1259299389Sjkim movl %ecx,24(%ebx) 1260299389Sjkim 1261299389Sjkim movl $0,%ecx 1262299389Sjkim movl 28(%edi),%edx 1263299389Sjkim subl %eax,%ecx 1264299389Sjkim movl $0,%eax 1265299389Sjkim adcl %eax,%eax 1266299389Sjkim subl %edx,%ecx 1267299389Sjkim adcl $0,%eax 1268299389Sjkim movl %ecx,28(%ebx) 1269299389Sjkim 1270299389Sjkim addl $32,%edi 1271299389Sjkim addl $32,%ebx 1272299389Sjkim subl $8,%ebp 1273299389Sjkim jnz .L035pw_neg_loop 1274299389Sjkim.L034pw_neg_finish: 1275299389Sjkim movl 36(%esp),%edx 1276299389Sjkim movl $0,%ebp 1277299389Sjkim subl %edx,%ebp 1278299389Sjkim andl $7,%ebp 1279299389Sjkim jz .L032pw_end 1280299389Sjkim 1281299389Sjkim movl $0,%ecx 1282299389Sjkim movl (%edi),%edx 1283299389Sjkim subl %eax,%ecx 1284299389Sjkim movl $0,%eax 1285299389Sjkim adcl %eax,%eax 1286299389Sjkim subl %edx,%ecx 1287299389Sjkim adcl $0,%eax 1288299389Sjkim decl %ebp 1289299389Sjkim movl %ecx,(%ebx) 1290299389Sjkim jz .L032pw_end 1291299389Sjkim 1292299389Sjkim movl $0,%ecx 1293299389Sjkim movl 4(%edi),%edx 1294299389Sjkim subl %eax,%ecx 1295299389Sjkim movl $0,%eax 1296299389Sjkim adcl %eax,%eax 1297299389Sjkim subl %edx,%ecx 1298299389Sjkim adcl $0,%eax 1299299389Sjkim decl %ebp 1300299389Sjkim movl %ecx,4(%ebx) 1301299389Sjkim jz .L032pw_end 1302299389Sjkim 1303299389Sjkim movl $0,%ecx 1304299389Sjkim movl 8(%edi),%edx 1305299389Sjkim subl %eax,%ecx 1306299389Sjkim movl $0,%eax 1307299389Sjkim adcl %eax,%eax 1308299389Sjkim subl %edx,%ecx 1309299389Sjkim adcl $0,%eax 1310299389Sjkim decl %ebp 1311299389Sjkim movl %ecx,8(%ebx) 1312299389Sjkim jz .L032pw_end 1313299389Sjkim 1314299389Sjkim movl $0,%ecx 1315299389Sjkim movl 12(%edi),%edx 1316299389Sjkim subl %eax,%ecx 1317299389Sjkim movl $0,%eax 1318299389Sjkim adcl %eax,%eax 1319299389Sjkim subl %edx,%ecx 1320299389Sjkim adcl $0,%eax 1321299389Sjkim decl %ebp 1322299389Sjkim movl %ecx,12(%ebx) 1323299389Sjkim jz .L032pw_end 1324299389Sjkim 1325299389Sjkim movl $0,%ecx 1326299389Sjkim movl 16(%edi),%edx 1327299389Sjkim subl %eax,%ecx 1328299389Sjkim movl $0,%eax 1329299389Sjkim adcl %eax,%eax 1330299389Sjkim subl %edx,%ecx 1331299389Sjkim adcl $0,%eax 1332299389Sjkim decl %ebp 1333299389Sjkim movl %ecx,16(%ebx) 1334299389Sjkim jz .L032pw_end 1335299389Sjkim 1336299389Sjkim movl $0,%ecx 1337299389Sjkim movl 20(%edi),%edx 1338299389Sjkim subl %eax,%ecx 1339299389Sjkim movl $0,%eax 1340299389Sjkim adcl %eax,%eax 1341299389Sjkim subl %edx,%ecx 1342299389Sjkim adcl $0,%eax 1343299389Sjkim decl %ebp 1344299389Sjkim movl %ecx,20(%ebx) 1345299389Sjkim jz .L032pw_end 1346299389Sjkim 1347299389Sjkim movl $0,%ecx 1348299389Sjkim movl 24(%edi),%edx 1349299389Sjkim subl %eax,%ecx 1350299389Sjkim movl $0,%eax 1351299389Sjkim adcl %eax,%eax 1352299389Sjkim subl %edx,%ecx 1353299389Sjkim adcl $0,%eax 1354299389Sjkim movl %ecx,24(%ebx) 1355299389Sjkim jmp .L032pw_end 1356299389Sjkim.L033pw_pos: 1357299389Sjkim andl $4294967288,%ebp 1358299389Sjkim jz .L036pw_pos_finish 1359299389Sjkim.L037pw_pos_loop: 1360299389Sjkim 1361299389Sjkim movl (%esi),%ecx 1362299389Sjkim subl %eax,%ecx 1363299389Sjkim movl %ecx,(%ebx) 1364299389Sjkim jnc .L038pw_nc0 1365299389Sjkim 1366299389Sjkim movl 4(%esi),%ecx 1367299389Sjkim subl %eax,%ecx 1368299389Sjkim movl %ecx,4(%ebx) 1369299389Sjkim jnc .L039pw_nc1 1370299389Sjkim 1371299389Sjkim movl 8(%esi),%ecx 1372299389Sjkim subl %eax,%ecx 1373299389Sjkim movl %ecx,8(%ebx) 1374299389Sjkim jnc .L040pw_nc2 1375299389Sjkim 1376299389Sjkim movl 12(%esi),%ecx 1377299389Sjkim subl %eax,%ecx 1378299389Sjkim movl %ecx,12(%ebx) 1379299389Sjkim jnc .L041pw_nc3 1380299389Sjkim 1381299389Sjkim movl 16(%esi),%ecx 1382299389Sjkim subl %eax,%ecx 1383299389Sjkim movl %ecx,16(%ebx) 1384299389Sjkim jnc .L042pw_nc4 1385299389Sjkim 1386299389Sjkim movl 20(%esi),%ecx 1387299389Sjkim subl %eax,%ecx 1388299389Sjkim movl %ecx,20(%ebx) 1389299389Sjkim jnc .L043pw_nc5 1390299389Sjkim 1391299389Sjkim movl 24(%esi),%ecx 1392299389Sjkim subl %eax,%ecx 1393299389Sjkim movl %ecx,24(%ebx) 1394299389Sjkim jnc .L044pw_nc6 1395299389Sjkim 1396299389Sjkim movl 28(%esi),%ecx 1397299389Sjkim subl %eax,%ecx 1398299389Sjkim movl %ecx,28(%ebx) 1399299389Sjkim jnc .L045pw_nc7 1400299389Sjkim 1401299389Sjkim addl $32,%esi 1402299389Sjkim addl $32,%ebx 1403299389Sjkim subl $8,%ebp 1404299389Sjkim jnz .L037pw_pos_loop 1405299389Sjkim.L036pw_pos_finish: 1406299389Sjkim movl 36(%esp),%ebp 1407299389Sjkim andl $7,%ebp 1408299389Sjkim jz .L032pw_end 1409299389Sjkim 1410299389Sjkim movl (%esi),%ecx 1411299389Sjkim subl %eax,%ecx 1412299389Sjkim movl %ecx,(%ebx) 1413299389Sjkim jnc .L046pw_tail_nc0 1414299389Sjkim decl %ebp 1415299389Sjkim jz .L032pw_end 1416299389Sjkim 1417299389Sjkim movl 4(%esi),%ecx 1418299389Sjkim subl %eax,%ecx 1419299389Sjkim movl %ecx,4(%ebx) 1420299389Sjkim jnc .L047pw_tail_nc1 1421299389Sjkim decl %ebp 1422299389Sjkim jz .L032pw_end 1423299389Sjkim 1424299389Sjkim movl 8(%esi),%ecx 1425299389Sjkim subl %eax,%ecx 1426299389Sjkim movl %ecx,8(%ebx) 1427299389Sjkim jnc .L048pw_tail_nc2 1428299389Sjkim decl %ebp 1429299389Sjkim jz .L032pw_end 1430299389Sjkim 1431299389Sjkim movl 12(%esi),%ecx 1432299389Sjkim subl %eax,%ecx 1433299389Sjkim movl %ecx,12(%ebx) 1434299389Sjkim jnc .L049pw_tail_nc3 1435299389Sjkim decl %ebp 1436299389Sjkim jz .L032pw_end 1437299389Sjkim 1438299389Sjkim movl 16(%esi),%ecx 1439299389Sjkim subl %eax,%ecx 1440299389Sjkim movl %ecx,16(%ebx) 1441299389Sjkim jnc .L050pw_tail_nc4 1442299389Sjkim decl %ebp 1443299389Sjkim jz .L032pw_end 1444299389Sjkim 1445299389Sjkim movl 20(%esi),%ecx 1446299389Sjkim subl %eax,%ecx 1447299389Sjkim movl %ecx,20(%ebx) 1448299389Sjkim jnc .L051pw_tail_nc5 1449299389Sjkim decl %ebp 1450299389Sjkim jz .L032pw_end 1451299389Sjkim 1452299389Sjkim movl 24(%esi),%ecx 1453299389Sjkim subl %eax,%ecx 1454299389Sjkim movl %ecx,24(%ebx) 1455299389Sjkim jnc .L052pw_tail_nc6 1456299389Sjkim movl $1,%eax 1457299389Sjkim jmp .L032pw_end 1458299389Sjkim.L053pw_nc_loop: 1459299389Sjkim movl (%esi),%ecx 1460299389Sjkim movl %ecx,(%ebx) 1461299389Sjkim.L038pw_nc0: 1462299389Sjkim movl 4(%esi),%ecx 1463299389Sjkim movl %ecx,4(%ebx) 1464299389Sjkim.L039pw_nc1: 1465299389Sjkim movl 8(%esi),%ecx 1466299389Sjkim movl %ecx,8(%ebx) 1467299389Sjkim.L040pw_nc2: 1468299389Sjkim movl 12(%esi),%ecx 1469299389Sjkim movl %ecx,12(%ebx) 1470299389Sjkim.L041pw_nc3: 1471299389Sjkim movl 16(%esi),%ecx 1472299389Sjkim movl %ecx,16(%ebx) 1473299389Sjkim.L042pw_nc4: 1474299389Sjkim movl 20(%esi),%ecx 1475299389Sjkim movl %ecx,20(%ebx) 1476299389Sjkim.L043pw_nc5: 1477299389Sjkim movl 24(%esi),%ecx 1478299389Sjkim movl %ecx,24(%ebx) 1479299389Sjkim.L044pw_nc6: 1480299389Sjkim movl 28(%esi),%ecx 1481299389Sjkim movl %ecx,28(%ebx) 1482299389Sjkim.L045pw_nc7: 1483299389Sjkim 1484299389Sjkim addl $32,%esi 1485299389Sjkim addl $32,%ebx 1486299389Sjkim subl $8,%ebp 1487299389Sjkim jnz .L053pw_nc_loop 1488299389Sjkim movl 36(%esp),%ebp 1489299389Sjkim andl $7,%ebp 1490299389Sjkim jz .L054pw_nc_end 1491299389Sjkim movl (%esi),%ecx 1492299389Sjkim movl %ecx,(%ebx) 1493299389Sjkim.L046pw_tail_nc0: 1494299389Sjkim decl %ebp 1495299389Sjkim jz .L054pw_nc_end 1496299389Sjkim movl 4(%esi),%ecx 1497299389Sjkim movl %ecx,4(%ebx) 1498299389Sjkim.L047pw_tail_nc1: 1499299389Sjkim decl %ebp 1500299389Sjkim jz .L054pw_nc_end 1501299389Sjkim movl 8(%esi),%ecx 1502299389Sjkim movl %ecx,8(%ebx) 1503299389Sjkim.L048pw_tail_nc2: 1504299389Sjkim decl %ebp 1505299389Sjkim jz .L054pw_nc_end 1506299389Sjkim movl 12(%esi),%ecx 1507299389Sjkim movl %ecx,12(%ebx) 1508299389Sjkim.L049pw_tail_nc3: 1509299389Sjkim decl %ebp 1510299389Sjkim jz .L054pw_nc_end 1511299389Sjkim movl 16(%esi),%ecx 1512299389Sjkim movl %ecx,16(%ebx) 1513299389Sjkim.L050pw_tail_nc4: 1514299389Sjkim decl %ebp 1515299389Sjkim jz .L054pw_nc_end 1516299389Sjkim movl 20(%esi),%ecx 1517299389Sjkim movl %ecx,20(%ebx) 1518299389Sjkim.L051pw_tail_nc5: 1519299389Sjkim decl %ebp 1520299389Sjkim jz .L054pw_nc_end 1521299389Sjkim movl 24(%esi),%ecx 1522299389Sjkim movl %ecx,24(%ebx) 1523299389Sjkim.L052pw_tail_nc6: 1524299389Sjkim.L054pw_nc_end: 1525299389Sjkim movl $0,%eax 1526299389Sjkim.L032pw_end: 1527299389Sjkim popl %edi 1528299389Sjkim popl %esi 1529299389Sjkim popl %ebx 1530299389Sjkim popl %ebp 1531299389Sjkim ret 1532299389Sjkim.size bn_sub_part_words,.-.L_bn_sub_part_words_begin 1533299389Sjkim.comm OPENSSL_ia32cap_P,16,4 1534299389Sjkim#else 1535299389Sjkim.file "bn-586.S" 1536299389Sjkim.text 1537299389Sjkim.globl bn_mul_add_words 1538299389Sjkim.type bn_mul_add_words,@function 1539299389Sjkim.align 16 1540299389Sjkimbn_mul_add_words: 1541299389Sjkim.L_bn_mul_add_words_begin: 1542238405Sjkim leal OPENSSL_ia32cap_P,%eax 1543238405Sjkim btl $26,(%eax) 1544238405Sjkim jnc .L000maw_non_sse2 1545238405Sjkim movl 4(%esp),%eax 1546238405Sjkim movl 8(%esp),%edx 1547238405Sjkim movl 12(%esp),%ecx 1548238405Sjkim movd 16(%esp),%mm0 1549238405Sjkim pxor %mm1,%mm1 1550238405Sjkim jmp .L001maw_sse2_entry 1551238405Sjkim.align 16 1552238405Sjkim.L002maw_sse2_unrolled: 1553238405Sjkim movd (%eax),%mm3 1554238405Sjkim paddq %mm3,%mm1 1555238405Sjkim movd (%edx),%mm2 1556238405Sjkim pmuludq %mm0,%mm2 1557238405Sjkim movd 4(%edx),%mm4 1558238405Sjkim pmuludq %mm0,%mm4 1559238405Sjkim movd 8(%edx),%mm6 1560238405Sjkim pmuludq %mm0,%mm6 1561238405Sjkim movd 12(%edx),%mm7 1562238405Sjkim pmuludq %mm0,%mm7 1563238405Sjkim paddq %mm2,%mm1 1564238405Sjkim movd 4(%eax),%mm3 1565238405Sjkim paddq %mm4,%mm3 1566238405Sjkim movd 8(%eax),%mm5 1567238405Sjkim paddq %mm6,%mm5 1568238405Sjkim movd 12(%eax),%mm4 1569238405Sjkim paddq %mm4,%mm7 1570238405Sjkim movd %mm1,(%eax) 1571238405Sjkim movd 16(%edx),%mm2 1572238405Sjkim pmuludq %mm0,%mm2 1573238405Sjkim psrlq $32,%mm1 1574238405Sjkim movd 20(%edx),%mm4 1575238405Sjkim pmuludq %mm0,%mm4 1576238405Sjkim paddq %mm3,%mm1 1577238405Sjkim movd 24(%edx),%mm6 1578238405Sjkim pmuludq %mm0,%mm6 1579238405Sjkim movd %mm1,4(%eax) 1580238405Sjkim psrlq $32,%mm1 1581238405Sjkim movd 28(%edx),%mm3 1582238405Sjkim addl $32,%edx 1583238405Sjkim pmuludq %mm0,%mm3 1584238405Sjkim paddq %mm5,%mm1 1585238405Sjkim movd 16(%eax),%mm5 1586238405Sjkim paddq %mm5,%mm2 1587238405Sjkim movd %mm1,8(%eax) 1588238405Sjkim psrlq $32,%mm1 1589238405Sjkim paddq %mm7,%mm1 1590238405Sjkim movd 20(%eax),%mm5 1591238405Sjkim paddq %mm5,%mm4 1592238405Sjkim movd %mm1,12(%eax) 1593238405Sjkim psrlq $32,%mm1 1594238405Sjkim paddq %mm2,%mm1 1595238405Sjkim movd 24(%eax),%mm5 1596238405Sjkim paddq %mm5,%mm6 1597238405Sjkim movd %mm1,16(%eax) 1598238405Sjkim psrlq $32,%mm1 1599238405Sjkim paddq %mm4,%mm1 1600238405Sjkim movd 28(%eax),%mm5 1601238405Sjkim paddq %mm5,%mm3 1602238405Sjkim movd %mm1,20(%eax) 1603238405Sjkim psrlq $32,%mm1 1604238405Sjkim paddq %mm6,%mm1 1605238405Sjkim movd %mm1,24(%eax) 1606238405Sjkim psrlq $32,%mm1 1607238405Sjkim paddq %mm3,%mm1 1608238405Sjkim movd %mm1,28(%eax) 1609238405Sjkim leal 32(%eax),%eax 1610238405Sjkim psrlq $32,%mm1 1611238405Sjkim subl $8,%ecx 1612238405Sjkim jz .L003maw_sse2_exit 1613238405Sjkim.L001maw_sse2_entry: 1614238405Sjkim testl $4294967288,%ecx 1615238405Sjkim jnz .L002maw_sse2_unrolled 1616238405Sjkim.align 4 1617238405Sjkim.L004maw_sse2_loop: 1618238405Sjkim movd (%edx),%mm2 1619238405Sjkim movd (%eax),%mm3 1620238405Sjkim pmuludq %mm0,%mm2 1621238405Sjkim leal 4(%edx),%edx 1622238405Sjkim paddq %mm3,%mm1 1623238405Sjkim paddq %mm2,%mm1 1624238405Sjkim movd %mm1,(%eax) 1625238405Sjkim subl $1,%ecx 1626238405Sjkim psrlq $32,%mm1 1627238405Sjkim leal 4(%eax),%eax 1628238405Sjkim jnz .L004maw_sse2_loop 1629238405Sjkim.L003maw_sse2_exit: 1630238405Sjkim movd %mm1,%eax 1631238405Sjkim emms 1632238405Sjkim ret 1633238405Sjkim.align 16 1634238405Sjkim.L000maw_non_sse2: 163595967Speter pushl %ebp 163695967Speter pushl %ebx 163795967Speter pushl %esi 163895967Speter pushl %edi 163995967Speter 1640238405Sjkim xorl %esi,%esi 1641238405Sjkim movl 20(%esp),%edi 1642238405Sjkim movl 28(%esp),%ecx 1643238405Sjkim movl 24(%esp),%ebx 1644238405Sjkim andl $4294967288,%ecx 1645238405Sjkim movl 32(%esp),%ebp 164695967Speter pushl %ecx 1647238405Sjkim jz .L005maw_finish 1648238405Sjkim.align 16 1649238405Sjkim.L006maw_loop: 1650127326Smarkm 1651238405Sjkim movl (%ebx),%eax 165295967Speter mull %ebp 1653238405Sjkim addl %esi,%eax 1654238405Sjkim adcl $0,%edx 1655238405Sjkim addl (%edi),%eax 1656238405Sjkim adcl $0,%edx 1657238405Sjkim movl %eax,(%edi) 1658238405Sjkim movl %edx,%esi 1659127326Smarkm 1660238405Sjkim movl 4(%ebx),%eax 166195967Speter mull %ebp 1662238405Sjkim addl %esi,%eax 1663238405Sjkim adcl $0,%edx 1664238405Sjkim addl 4(%edi),%eax 1665238405Sjkim adcl $0,%edx 1666238405Sjkim movl %eax,4(%edi) 1667238405Sjkim movl %edx,%esi 1668127326Smarkm 1669238405Sjkim movl 8(%ebx),%eax 167095967Speter mull %ebp 1671238405Sjkim addl %esi,%eax 1672238405Sjkim adcl $0,%edx 1673238405Sjkim addl 8(%edi),%eax 1674238405Sjkim adcl $0,%edx 1675238405Sjkim movl %eax,8(%edi) 1676238405Sjkim movl %edx,%esi 1677127326Smarkm 1678238405Sjkim movl 12(%ebx),%eax 167995967Speter mull %ebp 1680238405Sjkim addl %esi,%eax 1681238405Sjkim adcl $0,%edx 1682238405Sjkim addl 12(%edi),%eax 1683238405Sjkim adcl $0,%edx 1684238405Sjkim movl %eax,12(%edi) 1685238405Sjkim movl %edx,%esi 1686127326Smarkm 1687238405Sjkim movl 16(%ebx),%eax 168895967Speter mull %ebp 1689238405Sjkim addl %esi,%eax 1690238405Sjkim adcl $0,%edx 1691238405Sjkim addl 16(%edi),%eax 1692238405Sjkim adcl $0,%edx 1693238405Sjkim movl %eax,16(%edi) 1694238405Sjkim movl %edx,%esi 1695127326Smarkm 1696238405Sjkim movl 20(%ebx),%eax 169795967Speter mull %ebp 1698238405Sjkim addl %esi,%eax 1699238405Sjkim adcl $0,%edx 1700238405Sjkim addl 20(%edi),%eax 1701238405Sjkim adcl $0,%edx 1702238405Sjkim movl %eax,20(%edi) 1703238405Sjkim movl %edx,%esi 1704127326Smarkm 1705238405Sjkim movl 24(%ebx),%eax 170695967Speter mull %ebp 1707238405Sjkim addl %esi,%eax 1708238405Sjkim adcl $0,%edx 1709238405Sjkim addl 24(%edi),%eax 1710238405Sjkim adcl $0,%edx 1711238405Sjkim movl %eax,24(%edi) 1712238405Sjkim movl %edx,%esi 1713127326Smarkm 1714238405Sjkim movl 28(%ebx),%eax 171595967Speter mull %ebp 1716238405Sjkim addl %esi,%eax 1717238405Sjkim adcl $0,%edx 1718238405Sjkim addl 28(%edi),%eax 1719238405Sjkim adcl $0,%edx 1720238405Sjkim movl %eax,28(%edi) 1721238405Sjkim movl %edx,%esi 172295967Speter 1723238405Sjkim subl $8,%ecx 1724238405Sjkim leal 32(%ebx),%ebx 1725238405Sjkim leal 32(%edi),%edi 1726238405Sjkim jnz .L006maw_loop 1727238405Sjkim.L005maw_finish: 1728238405Sjkim movl 32(%esp),%ecx 1729238405Sjkim andl $7,%ecx 1730238405Sjkim jnz .L007maw_finish2 1731238405Sjkim jmp .L008maw_end 1732238405Sjkim.L007maw_finish2: 1733127326Smarkm 1734238405Sjkim movl (%ebx),%eax 173595967Speter mull %ebp 1736238405Sjkim addl %esi,%eax 1737238405Sjkim adcl $0,%edx 1738238405Sjkim addl (%edi),%eax 1739238405Sjkim adcl $0,%edx 174095967Speter decl %ecx 1741238405Sjkim movl %eax,(%edi) 1742238405Sjkim movl %edx,%esi 1743238405Sjkim jz .L008maw_end 1744127326Smarkm 1745238405Sjkim movl 4(%ebx),%eax 174695967Speter mull %ebp 1747238405Sjkim addl %esi,%eax 1748238405Sjkim adcl $0,%edx 1749238405Sjkim addl 4(%edi),%eax 1750238405Sjkim adcl $0,%edx 175195967Speter decl %ecx 1752238405Sjkim movl %eax,4(%edi) 1753238405Sjkim movl %edx,%esi 1754238405Sjkim jz .L008maw_end 1755127326Smarkm 1756238405Sjkim movl 8(%ebx),%eax 175795967Speter mull %ebp 1758238405Sjkim addl %esi,%eax 1759238405Sjkim adcl $0,%edx 1760238405Sjkim addl 8(%edi),%eax 1761238405Sjkim adcl $0,%edx 176295967Speter decl %ecx 1763238405Sjkim movl %eax,8(%edi) 1764238405Sjkim movl %edx,%esi 1765238405Sjkim jz .L008maw_end 1766127326Smarkm 1767238405Sjkim movl 12(%ebx),%eax 176895967Speter mull %ebp 1769238405Sjkim addl %esi,%eax 1770238405Sjkim adcl $0,%edx 1771238405Sjkim addl 12(%edi),%eax 1772238405Sjkim adcl $0,%edx 177395967Speter decl %ecx 1774238405Sjkim movl %eax,12(%edi) 1775238405Sjkim movl %edx,%esi 1776238405Sjkim jz .L008maw_end 1777127326Smarkm 1778238405Sjkim movl 16(%ebx),%eax 177995967Speter mull %ebp 1780238405Sjkim addl %esi,%eax 1781238405Sjkim adcl $0,%edx 1782238405Sjkim addl 16(%edi),%eax 1783238405Sjkim adcl $0,%edx 178495967Speter decl %ecx 1785238405Sjkim movl %eax,16(%edi) 1786238405Sjkim movl %edx,%esi 1787238405Sjkim jz .L008maw_end 1788127326Smarkm 1789238405Sjkim movl 20(%ebx),%eax 179095967Speter mull %ebp 1791238405Sjkim addl %esi,%eax 1792238405Sjkim adcl $0,%edx 1793238405Sjkim addl 20(%edi),%eax 1794238405Sjkim adcl $0,%edx 179595967Speter decl %ecx 1796238405Sjkim movl %eax,20(%edi) 1797238405Sjkim movl %edx,%esi 1798238405Sjkim jz .L008maw_end 1799127326Smarkm 1800238405Sjkim movl 24(%ebx),%eax 180195967Speter mull %ebp 1802238405Sjkim addl %esi,%eax 1803238405Sjkim adcl $0,%edx 1804238405Sjkim addl 24(%edi),%eax 1805238405Sjkim adcl $0,%edx 1806238405Sjkim movl %eax,24(%edi) 1807238405Sjkim movl %edx,%esi 1808238405Sjkim.L008maw_end: 1809238405Sjkim movl %esi,%eax 181095967Speter popl %ecx 181195967Speter popl %edi 181295967Speter popl %esi 181395967Speter popl %ebx 181495967Speter popl %ebp 181595967Speter ret 1816238405Sjkim.size bn_mul_add_words,.-.L_bn_mul_add_words_begin 1817238405Sjkim.globl bn_mul_words 1818238405Sjkim.type bn_mul_words,@function 1819238405Sjkim.align 16 182095967Speterbn_mul_words: 1821238405Sjkim.L_bn_mul_words_begin: 1822238405Sjkim leal OPENSSL_ia32cap_P,%eax 1823238405Sjkim btl $26,(%eax) 1824238405Sjkim jnc .L009mw_non_sse2 1825238405Sjkim movl 4(%esp),%eax 1826238405Sjkim movl 8(%esp),%edx 1827238405Sjkim movl 12(%esp),%ecx 1828238405Sjkim movd 16(%esp),%mm0 1829238405Sjkim pxor %mm1,%mm1 1830238405Sjkim.align 16 1831238405Sjkim.L010mw_sse2_loop: 1832238405Sjkim movd (%edx),%mm2 1833238405Sjkim pmuludq %mm0,%mm2 1834238405Sjkim leal 4(%edx),%edx 1835238405Sjkim paddq %mm2,%mm1 1836238405Sjkim movd %mm1,(%eax) 1837238405Sjkim subl $1,%ecx 1838238405Sjkim psrlq $32,%mm1 1839238405Sjkim leal 4(%eax),%eax 1840238405Sjkim jnz .L010mw_sse2_loop 1841238405Sjkim movd %mm1,%eax 1842238405Sjkim emms 1843238405Sjkim ret 1844238405Sjkim.align 16 1845238405Sjkim.L009mw_non_sse2: 184695967Speter pushl %ebp 184795967Speter pushl %ebx 184895967Speter pushl %esi 184995967Speter pushl %edi 185095967Speter 1851238405Sjkim xorl %esi,%esi 1852238405Sjkim movl 20(%esp),%edi 1853238405Sjkim movl 24(%esp),%ebx 1854238405Sjkim movl 28(%esp),%ebp 1855238405Sjkim movl 32(%esp),%ecx 1856238405Sjkim andl $4294967288,%ebp 1857238405Sjkim jz .L011mw_finish 1858238405Sjkim.L012mw_loop: 185995967Speter 1860238405Sjkim movl (%ebx),%eax 186195967Speter mull %ecx 1862238405Sjkim addl %esi,%eax 1863238405Sjkim adcl $0,%edx 1864238405Sjkim movl %eax,(%edi) 1865238405Sjkim movl %edx,%esi 1866127326Smarkm 1867238405Sjkim movl 4(%ebx),%eax 186895967Speter mull %ecx 1869238405Sjkim addl %esi,%eax 1870238405Sjkim adcl $0,%edx 1871238405Sjkim movl %eax,4(%edi) 1872238405Sjkim movl %edx,%esi 1873127326Smarkm 1874238405Sjkim movl 8(%ebx),%eax 187595967Speter mull %ecx 1876238405Sjkim addl %esi,%eax 1877238405Sjkim adcl $0,%edx 1878238405Sjkim movl %eax,8(%edi) 1879238405Sjkim movl %edx,%esi 1880127326Smarkm 1881238405Sjkim movl 12(%ebx),%eax 188295967Speter mull %ecx 1883238405Sjkim addl %esi,%eax 1884238405Sjkim adcl $0,%edx 1885238405Sjkim movl %eax,12(%edi) 1886238405Sjkim movl %edx,%esi 1887127326Smarkm 1888238405Sjkim movl 16(%ebx),%eax 188995967Speter mull %ecx 1890238405Sjkim addl %esi,%eax 1891238405Sjkim adcl $0,%edx 1892238405Sjkim movl %eax,16(%edi) 1893238405Sjkim movl %edx,%esi 1894127326Smarkm 1895238405Sjkim movl 20(%ebx),%eax 189695967Speter mull %ecx 1897238405Sjkim addl %esi,%eax 1898238405Sjkim adcl $0,%edx 1899238405Sjkim movl %eax,20(%edi) 1900238405Sjkim movl %edx,%esi 1901127326Smarkm 1902238405Sjkim movl 24(%ebx),%eax 190395967Speter mull %ecx 1904238405Sjkim addl %esi,%eax 1905238405Sjkim adcl $0,%edx 1906238405Sjkim movl %eax,24(%edi) 1907238405Sjkim movl %edx,%esi 1908127326Smarkm 1909238405Sjkim movl 28(%ebx),%eax 191095967Speter mull %ecx 1911238405Sjkim addl %esi,%eax 1912238405Sjkim adcl $0,%edx 1913238405Sjkim movl %eax,28(%edi) 1914238405Sjkim movl %edx,%esi 191595967Speter 1916238405Sjkim addl $32,%ebx 1917238405Sjkim addl $32,%edi 1918238405Sjkim subl $8,%ebp 1919238405Sjkim jz .L011mw_finish 1920238405Sjkim jmp .L012mw_loop 1921238405Sjkim.L011mw_finish: 1922238405Sjkim movl 28(%esp),%ebp 1923238405Sjkim andl $7,%ebp 1924238405Sjkim jnz .L013mw_finish2 1925238405Sjkim jmp .L014mw_end 1926238405Sjkim.L013mw_finish2: 1927127326Smarkm 1928238405Sjkim movl (%ebx),%eax 192995967Speter mull %ecx 1930238405Sjkim addl %esi,%eax 1931238405Sjkim adcl $0,%edx 1932238405Sjkim movl %eax,(%edi) 1933238405Sjkim movl %edx,%esi 193495967Speter decl %ebp 1935238405Sjkim jz .L014mw_end 1936127326Smarkm 1937238405Sjkim movl 4(%ebx),%eax 193895967Speter mull %ecx 1939238405Sjkim addl %esi,%eax 1940238405Sjkim adcl $0,%edx 1941238405Sjkim movl %eax,4(%edi) 1942238405Sjkim movl %edx,%esi 194395967Speter decl %ebp 1944238405Sjkim jz .L014mw_end 1945127326Smarkm 1946238405Sjkim movl 8(%ebx),%eax 194795967Speter mull %ecx 1948238405Sjkim addl %esi,%eax 1949238405Sjkim adcl $0,%edx 1950238405Sjkim movl %eax,8(%edi) 1951238405Sjkim movl %edx,%esi 195295967Speter decl %ebp 1953238405Sjkim jz .L014mw_end 1954127326Smarkm 1955238405Sjkim movl 12(%ebx),%eax 195695967Speter mull %ecx 1957238405Sjkim addl %esi,%eax 1958238405Sjkim adcl $0,%edx 1959238405Sjkim movl %eax,12(%edi) 1960238405Sjkim movl %edx,%esi 196195967Speter decl %ebp 1962238405Sjkim jz .L014mw_end 1963127326Smarkm 1964238405Sjkim movl 16(%ebx),%eax 196595967Speter mull %ecx 1966238405Sjkim addl %esi,%eax 1967238405Sjkim adcl $0,%edx 1968238405Sjkim movl %eax,16(%edi) 1969238405Sjkim movl %edx,%esi 197095967Speter decl %ebp 1971238405Sjkim jz .L014mw_end 1972127326Smarkm 1973238405Sjkim movl 20(%ebx),%eax 197495967Speter mull %ecx 1975238405Sjkim addl %esi,%eax 1976238405Sjkim adcl $0,%edx 1977238405Sjkim movl %eax,20(%edi) 1978238405Sjkim movl %edx,%esi 197995967Speter decl %ebp 1980238405Sjkim jz .L014mw_end 1981127326Smarkm 1982238405Sjkim movl 24(%ebx),%eax 198395967Speter mull %ecx 1984238405Sjkim addl %esi,%eax 1985238405Sjkim adcl $0,%edx 1986238405Sjkim movl %eax,24(%edi) 1987238405Sjkim movl %edx,%esi 1988238405Sjkim.L014mw_end: 1989238405Sjkim movl %esi,%eax 199095967Speter popl %edi 199195967Speter popl %esi 199295967Speter popl %ebx 199395967Speter popl %ebp 199495967Speter ret 1995238405Sjkim.size bn_mul_words,.-.L_bn_mul_words_begin 1996238405Sjkim.globl bn_sqr_words 1997238405Sjkim.type bn_sqr_words,@function 1998238405Sjkim.align 16 199995967Speterbn_sqr_words: 2000238405Sjkim.L_bn_sqr_words_begin: 2001238405Sjkim leal OPENSSL_ia32cap_P,%eax 2002238405Sjkim btl $26,(%eax) 2003238405Sjkim jnc .L015sqr_non_sse2 2004238405Sjkim movl 4(%esp),%eax 2005238405Sjkim movl 8(%esp),%edx 2006238405Sjkim movl 12(%esp),%ecx 2007238405Sjkim.align 16 2008238405Sjkim.L016sqr_sse2_loop: 2009238405Sjkim movd (%edx),%mm0 2010238405Sjkim pmuludq %mm0,%mm0 2011238405Sjkim leal 4(%edx),%edx 2012238405Sjkim movq %mm0,(%eax) 2013238405Sjkim subl $1,%ecx 2014238405Sjkim leal 8(%eax),%eax 2015238405Sjkim jnz .L016sqr_sse2_loop 2016238405Sjkim emms 2017238405Sjkim ret 2018238405Sjkim.align 16 2019238405Sjkim.L015sqr_non_sse2: 202095967Speter pushl %ebp 202195967Speter pushl %ebx 202295967Speter pushl %esi 202395967Speter pushl %edi 202495967Speter 2025238405Sjkim movl 20(%esp),%esi 2026238405Sjkim movl 24(%esp),%edi 2027238405Sjkim movl 28(%esp),%ebx 2028238405Sjkim andl $4294967288,%ebx 2029238405Sjkim jz .L017sw_finish 2030238405Sjkim.L018sw_loop: 203195967Speter 2032238405Sjkim movl (%edi),%eax 203395967Speter mull %eax 2034238405Sjkim movl %eax,(%esi) 2035238405Sjkim movl %edx,4(%esi) 2036127326Smarkm 2037238405Sjkim movl 4(%edi),%eax 203895967Speter mull %eax 2039238405Sjkim movl %eax,8(%esi) 2040238405Sjkim movl %edx,12(%esi) 2041127326Smarkm 2042238405Sjkim movl 8(%edi),%eax 204395967Speter mull %eax 2044238405Sjkim movl %eax,16(%esi) 2045238405Sjkim movl %edx,20(%esi) 2046127326Smarkm 2047238405Sjkim movl 12(%edi),%eax 204895967Speter mull %eax 2049238405Sjkim movl %eax,24(%esi) 2050238405Sjkim movl %edx,28(%esi) 2051127326Smarkm 2052238405Sjkim movl 16(%edi),%eax 205395967Speter mull %eax 2054238405Sjkim movl %eax,32(%esi) 2055238405Sjkim movl %edx,36(%esi) 2056127326Smarkm 2057238405Sjkim movl 20(%edi),%eax 205895967Speter mull %eax 2059238405Sjkim movl %eax,40(%esi) 2060238405Sjkim movl %edx,44(%esi) 2061127326Smarkm 2062238405Sjkim movl 24(%edi),%eax 206395967Speter mull %eax 2064238405Sjkim movl %eax,48(%esi) 2065238405Sjkim movl %edx,52(%esi) 2066127326Smarkm 2067238405Sjkim movl 28(%edi),%eax 206895967Speter mull %eax 2069238405Sjkim movl %eax,56(%esi) 2070238405Sjkim movl %edx,60(%esi) 207195967Speter 2072238405Sjkim addl $32,%edi 2073238405Sjkim addl $64,%esi 2074238405Sjkim subl $8,%ebx 2075238405Sjkim jnz .L018sw_loop 2076238405Sjkim.L017sw_finish: 2077238405Sjkim movl 28(%esp),%ebx 2078238405Sjkim andl $7,%ebx 2079238405Sjkim jz .L019sw_end 2080127326Smarkm 2081238405Sjkim movl (%edi),%eax 208295967Speter mull %eax 2083238405Sjkim movl %eax,(%esi) 208495967Speter decl %ebx 2085238405Sjkim movl %edx,4(%esi) 2086238405Sjkim jz .L019sw_end 2087127326Smarkm 2088238405Sjkim movl 4(%edi),%eax 208995967Speter mull %eax 2090238405Sjkim movl %eax,8(%esi) 209195967Speter decl %ebx 2092238405Sjkim movl %edx,12(%esi) 2093238405Sjkim jz .L019sw_end 2094127326Smarkm 2095238405Sjkim movl 8(%edi),%eax 209695967Speter mull %eax 2097238405Sjkim movl %eax,16(%esi) 209895967Speter decl %ebx 2099238405Sjkim movl %edx,20(%esi) 2100238405Sjkim jz .L019sw_end 2101127326Smarkm 2102238405Sjkim movl 12(%edi),%eax 210395967Speter mull %eax 2104238405Sjkim movl %eax,24(%esi) 210595967Speter decl %ebx 2106238405Sjkim movl %edx,28(%esi) 2107238405Sjkim jz .L019sw_end 2108127326Smarkm 2109238405Sjkim movl 16(%edi),%eax 211095967Speter mull %eax 2111238405Sjkim movl %eax,32(%esi) 211295967Speter decl %ebx 2113238405Sjkim movl %edx,36(%esi) 2114238405Sjkim jz .L019sw_end 2115127326Smarkm 2116238405Sjkim movl 20(%edi),%eax 211795967Speter mull %eax 2118238405Sjkim movl %eax,40(%esi) 211995967Speter decl %ebx 2120238405Sjkim movl %edx,44(%esi) 2121238405Sjkim jz .L019sw_end 2122127326Smarkm 2123238405Sjkim movl 24(%edi),%eax 212495967Speter mull %eax 2125238405Sjkim movl %eax,48(%esi) 2126238405Sjkim movl %edx,52(%esi) 2127238405Sjkim.L019sw_end: 212895967Speter popl %edi 212995967Speter popl %esi 213095967Speter popl %ebx 213195967Speter popl %ebp 213295967Speter ret 2133238405Sjkim.size bn_sqr_words,.-.L_bn_sqr_words_begin 2134238405Sjkim.globl bn_div_words 2135238405Sjkim.type bn_div_words,@function 2136238405Sjkim.align 16 213795967Speterbn_div_words: 2138238405Sjkim.L_bn_div_words_begin: 2139238405Sjkim movl 4(%esp),%edx 2140238405Sjkim movl 8(%esp),%eax 2141238405Sjkim movl 12(%esp),%ecx 2142238405Sjkim divl %ecx 2143238405Sjkim ret 2144238405Sjkim.size bn_div_words,.-.L_bn_div_words_begin 2145238405Sjkim.globl bn_add_words 2146238405Sjkim.type bn_add_words,@function 2147238405Sjkim.align 16 2148238405Sjkimbn_add_words: 2149238405Sjkim.L_bn_add_words_begin: 215095967Speter pushl %ebp 215195967Speter pushl %ebx 215295967Speter pushl %esi 215395967Speter pushl %edi 215495967Speter 2155238405Sjkim movl 20(%esp),%ebx 2156238405Sjkim movl 24(%esp),%esi 2157238405Sjkim movl 28(%esp),%edi 2158238405Sjkim movl 32(%esp),%ebp 2159238405Sjkim xorl %eax,%eax 2160238405Sjkim andl $4294967288,%ebp 2161238405Sjkim jz .L020aw_finish 2162238405Sjkim.L021aw_loop: 2163238405Sjkim 2164238405Sjkim movl (%esi),%ecx 2165238405Sjkim movl (%edi),%edx 2166238405Sjkim addl %eax,%ecx 2167238405Sjkim movl $0,%eax 2168238405Sjkim adcl %eax,%eax 2169238405Sjkim addl %edx,%ecx 2170238405Sjkim adcl $0,%eax 2171238405Sjkim movl %ecx,(%ebx) 2172238405Sjkim 2173238405Sjkim movl 4(%esi),%ecx 2174238405Sjkim movl 4(%edi),%edx 2175238405Sjkim addl %eax,%ecx 2176238405Sjkim movl $0,%eax 2177238405Sjkim adcl %eax,%eax 2178238405Sjkim addl %edx,%ecx 2179238405Sjkim adcl $0,%eax 2180238405Sjkim movl %ecx,4(%ebx) 2181238405Sjkim 2182238405Sjkim movl 8(%esi),%ecx 2183238405Sjkim movl 8(%edi),%edx 2184238405Sjkim addl %eax,%ecx 2185238405Sjkim movl $0,%eax 2186238405Sjkim adcl %eax,%eax 2187238405Sjkim addl %edx,%ecx 2188238405Sjkim adcl $0,%eax 2189238405Sjkim movl %ecx,8(%ebx) 2190238405Sjkim 2191238405Sjkim movl 12(%esi),%ecx 2192238405Sjkim movl 12(%edi),%edx 2193238405Sjkim addl %eax,%ecx 2194238405Sjkim movl $0,%eax 2195238405Sjkim adcl %eax,%eax 2196238405Sjkim addl %edx,%ecx 2197238405Sjkim adcl $0,%eax 2198238405Sjkim movl %ecx,12(%ebx) 2199238405Sjkim 2200238405Sjkim movl 16(%esi),%ecx 2201238405Sjkim movl 16(%edi),%edx 2202238405Sjkim addl %eax,%ecx 2203238405Sjkim movl $0,%eax 2204238405Sjkim adcl %eax,%eax 2205238405Sjkim addl %edx,%ecx 2206238405Sjkim adcl $0,%eax 2207238405Sjkim movl %ecx,16(%ebx) 2208238405Sjkim 2209238405Sjkim movl 20(%esi),%ecx 2210238405Sjkim movl 20(%edi),%edx 2211238405Sjkim addl %eax,%ecx 2212238405Sjkim movl $0,%eax 2213238405Sjkim adcl %eax,%eax 2214238405Sjkim addl %edx,%ecx 2215238405Sjkim adcl $0,%eax 2216238405Sjkim movl %ecx,20(%ebx) 2217238405Sjkim 2218238405Sjkim movl 24(%esi),%ecx 2219238405Sjkim movl 24(%edi),%edx 2220238405Sjkim addl %eax,%ecx 2221238405Sjkim movl $0,%eax 2222238405Sjkim adcl %eax,%eax 2223238405Sjkim addl %edx,%ecx 2224238405Sjkim adcl $0,%eax 2225238405Sjkim movl %ecx,24(%ebx) 2226238405Sjkim 2227238405Sjkim movl 28(%esi),%ecx 2228238405Sjkim movl 28(%edi),%edx 2229238405Sjkim addl %eax,%ecx 2230238405Sjkim movl $0,%eax 2231238405Sjkim adcl %eax,%eax 2232238405Sjkim addl %edx,%ecx 2233238405Sjkim adcl $0,%eax 2234238405Sjkim movl %ecx,28(%ebx) 2235238405Sjkim 2236238405Sjkim addl $32,%esi 2237238405Sjkim addl $32,%edi 2238238405Sjkim addl $32,%ebx 2239238405Sjkim subl $8,%ebp 2240238405Sjkim jnz .L021aw_loop 2241238405Sjkim.L020aw_finish: 2242238405Sjkim movl 32(%esp),%ebp 2243238405Sjkim andl $7,%ebp 2244238405Sjkim jz .L022aw_end 2245238405Sjkim 2246238405Sjkim movl (%esi),%ecx 2247238405Sjkim movl (%edi),%edx 2248238405Sjkim addl %eax,%ecx 2249238405Sjkim movl $0,%eax 2250238405Sjkim adcl %eax,%eax 2251238405Sjkim addl %edx,%ecx 2252238405Sjkim adcl $0,%eax 2253238405Sjkim decl %ebp 2254238405Sjkim movl %ecx,(%ebx) 2255238405Sjkim jz .L022aw_end 2256238405Sjkim 2257238405Sjkim movl 4(%esi),%ecx 2258238405Sjkim movl 4(%edi),%edx 2259238405Sjkim addl %eax,%ecx 2260238405Sjkim movl $0,%eax 2261238405Sjkim adcl %eax,%eax 2262238405Sjkim addl %edx,%ecx 2263238405Sjkim adcl $0,%eax 2264238405Sjkim decl %ebp 2265238405Sjkim movl %ecx,4(%ebx) 2266238405Sjkim jz .L022aw_end 2267238405Sjkim 2268238405Sjkim movl 8(%esi),%ecx 2269238405Sjkim movl 8(%edi),%edx 2270238405Sjkim addl %eax,%ecx 2271238405Sjkim movl $0,%eax 2272238405Sjkim adcl %eax,%eax 2273238405Sjkim addl %edx,%ecx 2274238405Sjkim adcl $0,%eax 2275238405Sjkim decl %ebp 2276238405Sjkim movl %ecx,8(%ebx) 2277238405Sjkim jz .L022aw_end 2278238405Sjkim 2279238405Sjkim movl 12(%esi),%ecx 2280238405Sjkim movl 12(%edi),%edx 2281238405Sjkim addl %eax,%ecx 2282238405Sjkim movl $0,%eax 2283238405Sjkim adcl %eax,%eax 2284238405Sjkim addl %edx,%ecx 2285238405Sjkim adcl $0,%eax 2286238405Sjkim decl %ebp 2287238405Sjkim movl %ecx,12(%ebx) 2288238405Sjkim jz .L022aw_end 2289238405Sjkim 2290238405Sjkim movl 16(%esi),%ecx 2291238405Sjkim movl 16(%edi),%edx 2292238405Sjkim addl %eax,%ecx 2293238405Sjkim movl $0,%eax 2294238405Sjkim adcl %eax,%eax 2295238405Sjkim addl %edx,%ecx 2296238405Sjkim adcl $0,%eax 2297238405Sjkim decl %ebp 2298238405Sjkim movl %ecx,16(%ebx) 2299238405Sjkim jz .L022aw_end 2300238405Sjkim 2301238405Sjkim movl 20(%esi),%ecx 2302238405Sjkim movl 20(%edi),%edx 2303238405Sjkim addl %eax,%ecx 2304238405Sjkim movl $0,%eax 2305238405Sjkim adcl %eax,%eax 2306238405Sjkim addl %edx,%ecx 2307238405Sjkim adcl $0,%eax 2308238405Sjkim decl %ebp 2309238405Sjkim movl %ecx,20(%ebx) 2310238405Sjkim jz .L022aw_end 2311238405Sjkim 2312238405Sjkim movl 24(%esi),%ecx 2313238405Sjkim movl 24(%edi),%edx 2314238405Sjkim addl %eax,%ecx 2315238405Sjkim movl $0,%eax 2316238405Sjkim adcl %eax,%eax 2317238405Sjkim addl %edx,%ecx 2318238405Sjkim adcl $0,%eax 2319238405Sjkim movl %ecx,24(%ebx) 2320238405Sjkim.L022aw_end: 232195967Speter popl %edi 232295967Speter popl %esi 232395967Speter popl %ebx 232495967Speter popl %ebp 232595967Speter ret 2326238405Sjkim.size bn_add_words,.-.L_bn_add_words_begin 2327238405Sjkim.globl bn_sub_words 2328238405Sjkim.type bn_sub_words,@function 2329238405Sjkim.align 16 2330238405Sjkimbn_sub_words: 2331238405Sjkim.L_bn_sub_words_begin: 233295967Speter pushl %ebp 233395967Speter pushl %ebx 233495967Speter pushl %esi 233595967Speter pushl %edi 233695967Speter 2337238405Sjkim movl 20(%esp),%ebx 2338238405Sjkim movl 24(%esp),%esi 2339238405Sjkim movl 28(%esp),%edi 2340238405Sjkim movl 32(%esp),%ebp 2341238405Sjkim xorl %eax,%eax 2342238405Sjkim andl $4294967288,%ebp 2343238405Sjkim jz .L023aw_finish 2344238405Sjkim.L024aw_loop: 234595967Speter 2346238405Sjkim movl (%esi),%ecx 2347238405Sjkim movl (%edi),%edx 2348238405Sjkim subl %eax,%ecx 2349238405Sjkim movl $0,%eax 2350238405Sjkim adcl %eax,%eax 2351238405Sjkim subl %edx,%ecx 2352238405Sjkim adcl $0,%eax 2353238405Sjkim movl %ecx,(%ebx) 2354127326Smarkm 2355238405Sjkim movl 4(%esi),%ecx 2356238405Sjkim movl 4(%edi),%edx 2357238405Sjkim subl %eax,%ecx 2358238405Sjkim movl $0,%eax 2359238405Sjkim adcl %eax,%eax 2360238405Sjkim subl %edx,%ecx 2361238405Sjkim adcl $0,%eax 2362238405Sjkim movl %ecx,4(%ebx) 2363127326Smarkm 2364238405Sjkim movl 8(%esi),%ecx 2365238405Sjkim movl 8(%edi),%edx 2366238405Sjkim subl %eax,%ecx 2367238405Sjkim movl $0,%eax 2368238405Sjkim adcl %eax,%eax 2369238405Sjkim subl %edx,%ecx 2370238405Sjkim adcl $0,%eax 2371238405Sjkim movl %ecx,8(%ebx) 2372127326Smarkm 2373238405Sjkim movl 12(%esi),%ecx 2374238405Sjkim movl 12(%edi),%edx 2375238405Sjkim subl %eax,%ecx 2376238405Sjkim movl $0,%eax 2377238405Sjkim adcl %eax,%eax 2378238405Sjkim subl %edx,%ecx 2379238405Sjkim adcl $0,%eax 2380238405Sjkim movl %ecx,12(%ebx) 2381127326Smarkm 2382238405Sjkim movl 16(%esi),%ecx 2383238405Sjkim movl 16(%edi),%edx 2384238405Sjkim subl %eax,%ecx 2385238405Sjkim movl $0,%eax 2386238405Sjkim adcl %eax,%eax 2387238405Sjkim subl %edx,%ecx 2388238405Sjkim adcl $0,%eax 2389238405Sjkim movl %ecx,16(%ebx) 2390127326Smarkm 2391238405Sjkim movl 20(%esi),%ecx 2392238405Sjkim movl 20(%edi),%edx 2393238405Sjkim subl %eax,%ecx 2394238405Sjkim movl $0,%eax 2395238405Sjkim adcl %eax,%eax 2396238405Sjkim subl %edx,%ecx 2397238405Sjkim adcl $0,%eax 2398238405Sjkim movl %ecx,20(%ebx) 2399127326Smarkm 2400238405Sjkim movl 24(%esi),%ecx 2401238405Sjkim movl 24(%edi),%edx 2402238405Sjkim subl %eax,%ecx 2403238405Sjkim movl $0,%eax 2404238405Sjkim adcl %eax,%eax 2405238405Sjkim subl %edx,%ecx 2406238405Sjkim adcl $0,%eax 2407238405Sjkim movl %ecx,24(%ebx) 2408127326Smarkm 2409238405Sjkim movl 28(%esi),%ecx 2410238405Sjkim movl 28(%edi),%edx 2411238405Sjkim subl %eax,%ecx 2412238405Sjkim movl $0,%eax 2413238405Sjkim adcl %eax,%eax 2414238405Sjkim subl %edx,%ecx 2415238405Sjkim adcl $0,%eax 2416238405Sjkim movl %ecx,28(%ebx) 2417127326Smarkm 2418238405Sjkim addl $32,%esi 2419238405Sjkim addl $32,%edi 2420238405Sjkim addl $32,%ebx 2421238405Sjkim subl $8,%ebp 2422238405Sjkim jnz .L024aw_loop 2423238405Sjkim.L023aw_finish: 2424238405Sjkim movl 32(%esp),%ebp 2425238405Sjkim andl $7,%ebp 2426238405Sjkim jz .L025aw_end 242795967Speter 2428238405Sjkim movl (%esi),%ecx 2429238405Sjkim movl (%edi),%edx 2430238405Sjkim subl %eax,%ecx 2431238405Sjkim movl $0,%eax 2432238405Sjkim adcl %eax,%eax 2433238405Sjkim subl %edx,%ecx 2434238405Sjkim adcl $0,%eax 243595967Speter decl %ebp 2436238405Sjkim movl %ecx,(%ebx) 2437238405Sjkim jz .L025aw_end 2438127326Smarkm 2439238405Sjkim movl 4(%esi),%ecx 2440238405Sjkim movl 4(%edi),%edx 2441238405Sjkim subl %eax,%ecx 2442238405Sjkim movl $0,%eax 2443238405Sjkim adcl %eax,%eax 2444238405Sjkim subl %edx,%ecx 2445238405Sjkim adcl $0,%eax 244695967Speter decl %ebp 2447238405Sjkim movl %ecx,4(%ebx) 2448238405Sjkim jz .L025aw_end 2449127326Smarkm 2450238405Sjkim movl 8(%esi),%ecx 2451238405Sjkim movl 8(%edi),%edx 2452238405Sjkim subl %eax,%ecx 2453238405Sjkim movl $0,%eax 2454238405Sjkim adcl %eax,%eax 2455238405Sjkim subl %edx,%ecx 2456238405Sjkim adcl $0,%eax 245795967Speter decl %ebp 2458238405Sjkim movl %ecx,8(%ebx) 2459238405Sjkim jz .L025aw_end 2460127326Smarkm 2461238405Sjkim movl 12(%esi),%ecx 2462238405Sjkim movl 12(%edi),%edx 2463238405Sjkim subl %eax,%ecx 2464238405Sjkim movl $0,%eax 2465238405Sjkim adcl %eax,%eax 2466238405Sjkim subl %edx,%ecx 2467238405Sjkim adcl $0,%eax 246895967Speter decl %ebp 2469238405Sjkim movl %ecx,12(%ebx) 2470238405Sjkim jz .L025aw_end 2471127326Smarkm 2472238405Sjkim movl 16(%esi),%ecx 2473238405Sjkim movl 16(%edi),%edx 2474238405Sjkim subl %eax,%ecx 2475238405Sjkim movl $0,%eax 2476238405Sjkim adcl %eax,%eax 2477238405Sjkim subl %edx,%ecx 2478238405Sjkim adcl $0,%eax 247995967Speter decl %ebp 2480238405Sjkim movl %ecx,16(%ebx) 2481238405Sjkim jz .L025aw_end 2482127326Smarkm 2483238405Sjkim movl 20(%esi),%ecx 2484238405Sjkim movl 20(%edi),%edx 2485238405Sjkim subl %eax,%ecx 2486238405Sjkim movl $0,%eax 2487238405Sjkim adcl %eax,%eax 2488238405Sjkim subl %edx,%ecx 2489238405Sjkim adcl $0,%eax 249095967Speter decl %ebp 2491238405Sjkim movl %ecx,20(%ebx) 2492238405Sjkim jz .L025aw_end 2493127326Smarkm 2494238405Sjkim movl 24(%esi),%ecx 2495238405Sjkim movl 24(%edi),%edx 2496238405Sjkim subl %eax,%ecx 2497238405Sjkim movl $0,%eax 2498238405Sjkim adcl %eax,%eax 2499238405Sjkim subl %edx,%ecx 2500238405Sjkim adcl $0,%eax 2501238405Sjkim movl %ecx,24(%ebx) 2502238405Sjkim.L025aw_end: 250395967Speter popl %edi 250495967Speter popl %esi 250595967Speter popl %ebx 250695967Speter popl %ebp 250795967Speter ret 2508238405Sjkim.size bn_sub_words,.-.L_bn_sub_words_begin 2509238405Sjkim.globl bn_sub_part_words 2510238405Sjkim.type bn_sub_part_words,@function 2511238405Sjkim.align 16 2512238405Sjkimbn_sub_part_words: 2513238405Sjkim.L_bn_sub_part_words_begin: 251495967Speter pushl %ebp 251595967Speter pushl %ebx 251695967Speter pushl %esi 251795967Speter pushl %edi 251895967Speter 2519238405Sjkim movl 20(%esp),%ebx 2520238405Sjkim movl 24(%esp),%esi 2521238405Sjkim movl 28(%esp),%edi 2522238405Sjkim movl 32(%esp),%ebp 2523238405Sjkim xorl %eax,%eax 2524238405Sjkim andl $4294967288,%ebp 2525238405Sjkim jz .L026aw_finish 2526238405Sjkim.L027aw_loop: 252795967Speter 2528238405Sjkim movl (%esi),%ecx 2529238405Sjkim movl (%edi),%edx 2530238405Sjkim subl %eax,%ecx 2531238405Sjkim movl $0,%eax 2532238405Sjkim adcl %eax,%eax 2533238405Sjkim subl %edx,%ecx 2534238405Sjkim adcl $0,%eax 2535238405Sjkim movl %ecx,(%ebx) 2536127326Smarkm 2537238405Sjkim movl 4(%esi),%ecx 2538238405Sjkim movl 4(%edi),%edx 2539238405Sjkim subl %eax,%ecx 2540238405Sjkim movl $0,%eax 2541238405Sjkim adcl %eax,%eax 2542238405Sjkim subl %edx,%ecx 2543238405Sjkim adcl $0,%eax 2544238405Sjkim movl %ecx,4(%ebx) 2545127326Smarkm 2546238405Sjkim movl 8(%esi),%ecx 2547238405Sjkim movl 8(%edi),%edx 2548238405Sjkim subl %eax,%ecx 2549238405Sjkim movl $0,%eax 2550238405Sjkim adcl %eax,%eax 2551238405Sjkim subl %edx,%ecx 2552238405Sjkim adcl $0,%eax 2553238405Sjkim movl %ecx,8(%ebx) 2554127326Smarkm 2555238405Sjkim movl 12(%esi),%ecx 2556238405Sjkim movl 12(%edi),%edx 2557238405Sjkim subl %eax,%ecx 2558238405Sjkim movl $0,%eax 2559238405Sjkim adcl %eax,%eax 2560238405Sjkim subl %edx,%ecx 2561238405Sjkim adcl $0,%eax 2562238405Sjkim movl %ecx,12(%ebx) 2563127326Smarkm 2564238405Sjkim movl 16(%esi),%ecx 2565238405Sjkim movl 16(%edi),%edx 2566238405Sjkim subl %eax,%ecx 2567238405Sjkim movl $0,%eax 2568238405Sjkim adcl %eax,%eax 2569238405Sjkim subl %edx,%ecx 2570238405Sjkim adcl $0,%eax 2571238405Sjkim movl %ecx,16(%ebx) 2572127326Smarkm 2573238405Sjkim movl 20(%esi),%ecx 2574238405Sjkim movl 20(%edi),%edx 2575238405Sjkim subl %eax,%ecx 2576238405Sjkim movl $0,%eax 2577238405Sjkim adcl %eax,%eax 2578238405Sjkim subl %edx,%ecx 2579238405Sjkim adcl $0,%eax 2580238405Sjkim movl %ecx,20(%ebx) 2581127326Smarkm 2582238405Sjkim movl 24(%esi),%ecx 2583238405Sjkim movl 24(%edi),%edx 2584238405Sjkim subl %eax,%ecx 2585238405Sjkim movl $0,%eax 2586238405Sjkim adcl %eax,%eax 2587238405Sjkim subl %edx,%ecx 2588238405Sjkim adcl $0,%eax 2589238405Sjkim movl %ecx,24(%ebx) 2590127326Smarkm 2591238405Sjkim movl 28(%esi),%ecx 2592238405Sjkim movl 28(%edi),%edx 2593238405Sjkim subl %eax,%ecx 2594238405Sjkim movl $0,%eax 2595238405Sjkim adcl %eax,%eax 2596238405Sjkim subl %edx,%ecx 2597238405Sjkim adcl $0,%eax 2598238405Sjkim movl %ecx,28(%ebx) 2599127326Smarkm 2600238405Sjkim addl $32,%esi 2601238405Sjkim addl $32,%edi 2602238405Sjkim addl $32,%ebx 2603238405Sjkim subl $8,%ebp 2604238405Sjkim jnz .L027aw_loop 2605238405Sjkim.L026aw_finish: 2606238405Sjkim movl 32(%esp),%ebp 2607238405Sjkim andl $7,%ebp 2608238405Sjkim jz .L028aw_end 260995967Speter 2610238405Sjkim movl (%esi),%ecx 2611238405Sjkim movl (%edi),%edx 2612238405Sjkim subl %eax,%ecx 2613238405Sjkim movl $0,%eax 2614238405Sjkim adcl %eax,%eax 2615238405Sjkim subl %edx,%ecx 2616238405Sjkim adcl $0,%eax 2617238405Sjkim movl %ecx,(%ebx) 2618238405Sjkim addl $4,%esi 2619238405Sjkim addl $4,%edi 2620238405Sjkim addl $4,%ebx 2621238405Sjkim decl %ebp 2622238405Sjkim jz .L028aw_end 2623127326Smarkm 2624238405Sjkim movl (%esi),%ecx 2625238405Sjkim movl (%edi),%edx 2626238405Sjkim subl %eax,%ecx 2627238405Sjkim movl $0,%eax 2628238405Sjkim adcl %eax,%eax 2629238405Sjkim subl %edx,%ecx 2630238405Sjkim adcl $0,%eax 2631238405Sjkim movl %ecx,(%ebx) 2632238405Sjkim addl $4,%esi 2633238405Sjkim addl $4,%edi 2634238405Sjkim addl $4,%ebx 263595967Speter decl %ebp 2636238405Sjkim jz .L028aw_end 2637127326Smarkm 2638238405Sjkim movl (%esi),%ecx 2639238405Sjkim movl (%edi),%edx 2640238405Sjkim subl %eax,%ecx 2641238405Sjkim movl $0,%eax 2642238405Sjkim adcl %eax,%eax 2643238405Sjkim subl %edx,%ecx 2644238405Sjkim adcl $0,%eax 2645238405Sjkim movl %ecx,(%ebx) 2646238405Sjkim addl $4,%esi 2647238405Sjkim addl $4,%edi 2648238405Sjkim addl $4,%ebx 264995967Speter decl %ebp 2650238405Sjkim jz .L028aw_end 2651127326Smarkm 2652238405Sjkim movl (%esi),%ecx 2653238405Sjkim movl (%edi),%edx 2654238405Sjkim subl %eax,%ecx 2655238405Sjkim movl $0,%eax 2656238405Sjkim adcl %eax,%eax 2657238405Sjkim subl %edx,%ecx 2658238405Sjkim adcl $0,%eax 2659238405Sjkim movl %ecx,(%ebx) 2660238405Sjkim addl $4,%esi 2661238405Sjkim addl $4,%edi 2662238405Sjkim addl $4,%ebx 266395967Speter decl %ebp 2664238405Sjkim jz .L028aw_end 2665127326Smarkm 2666238405Sjkim movl (%esi),%ecx 2667238405Sjkim movl (%edi),%edx 2668238405Sjkim subl %eax,%ecx 2669238405Sjkim movl $0,%eax 2670238405Sjkim adcl %eax,%eax 2671238405Sjkim subl %edx,%ecx 2672238405Sjkim adcl $0,%eax 2673238405Sjkim movl %ecx,(%ebx) 2674238405Sjkim addl $4,%esi 2675238405Sjkim addl $4,%edi 2676238405Sjkim addl $4,%ebx 267795967Speter decl %ebp 2678238405Sjkim jz .L028aw_end 2679127326Smarkm 2680238405Sjkim movl (%esi),%ecx 2681238405Sjkim movl (%edi),%edx 2682238405Sjkim subl %eax,%ecx 2683238405Sjkim movl $0,%eax 2684238405Sjkim adcl %eax,%eax 2685238405Sjkim subl %edx,%ecx 2686238405Sjkim adcl $0,%eax 2687238405Sjkim movl %ecx,(%ebx) 2688238405Sjkim addl $4,%esi 2689238405Sjkim addl $4,%edi 2690238405Sjkim addl $4,%ebx 269195967Speter decl %ebp 2692238405Sjkim jz .L028aw_end 2693127326Smarkm 2694238405Sjkim movl (%esi),%ecx 2695238405Sjkim movl (%edi),%edx 2696238405Sjkim subl %eax,%ecx 2697238405Sjkim movl $0,%eax 2698238405Sjkim adcl %eax,%eax 2699238405Sjkim subl %edx,%ecx 2700238405Sjkim adcl $0,%eax 2701238405Sjkim movl %ecx,(%ebx) 2702238405Sjkim addl $4,%esi 2703238405Sjkim addl $4,%edi 2704238405Sjkim addl $4,%ebx 2705238405Sjkim.L028aw_end: 2706238405Sjkim cmpl $0,36(%esp) 2707238405Sjkim je .L029pw_end 2708238405Sjkim movl 36(%esp),%ebp 2709238405Sjkim cmpl $0,%ebp 2710238405Sjkim je .L029pw_end 2711238405Sjkim jge .L030pw_pos 2712238405Sjkim 2713238405Sjkim movl $0,%edx 2714238405Sjkim subl %ebp,%edx 2715238405Sjkim movl %edx,%ebp 2716238405Sjkim andl $4294967288,%ebp 2717238405Sjkim jz .L031pw_neg_finish 2718238405Sjkim.L032pw_neg_loop: 2719238405Sjkim 2720238405Sjkim movl $0,%ecx 2721238405Sjkim movl (%edi),%edx 2722238405Sjkim subl %eax,%ecx 2723238405Sjkim movl $0,%eax 2724238405Sjkim adcl %eax,%eax 2725238405Sjkim subl %edx,%ecx 2726238405Sjkim adcl $0,%eax 2727238405Sjkim movl %ecx,(%ebx) 2728238405Sjkim 2729238405Sjkim movl $0,%ecx 2730238405Sjkim movl 4(%edi),%edx 2731238405Sjkim subl %eax,%ecx 2732238405Sjkim movl $0,%eax 2733238405Sjkim adcl %eax,%eax 2734238405Sjkim subl %edx,%ecx 2735238405Sjkim adcl $0,%eax 2736238405Sjkim movl %ecx,4(%ebx) 2737238405Sjkim 2738238405Sjkim movl $0,%ecx 2739238405Sjkim movl 8(%edi),%edx 2740238405Sjkim subl %eax,%ecx 2741238405Sjkim movl $0,%eax 2742238405Sjkim adcl %eax,%eax 2743238405Sjkim subl %edx,%ecx 2744238405Sjkim adcl $0,%eax 2745238405Sjkim movl %ecx,8(%ebx) 2746238405Sjkim 2747238405Sjkim movl $0,%ecx 2748238405Sjkim movl 12(%edi),%edx 2749238405Sjkim subl %eax,%ecx 2750238405Sjkim movl $0,%eax 2751238405Sjkim adcl %eax,%eax 2752238405Sjkim subl %edx,%ecx 2753238405Sjkim adcl $0,%eax 2754238405Sjkim movl %ecx,12(%ebx) 2755238405Sjkim 2756238405Sjkim movl $0,%ecx 2757238405Sjkim movl 16(%edi),%edx 2758238405Sjkim subl %eax,%ecx 2759238405Sjkim movl $0,%eax 2760238405Sjkim adcl %eax,%eax 2761238405Sjkim subl %edx,%ecx 2762238405Sjkim adcl $0,%eax 2763238405Sjkim movl %ecx,16(%ebx) 2764238405Sjkim 2765238405Sjkim movl $0,%ecx 2766238405Sjkim movl 20(%edi),%edx 2767238405Sjkim subl %eax,%ecx 2768238405Sjkim movl $0,%eax 2769238405Sjkim adcl %eax,%eax 2770238405Sjkim subl %edx,%ecx 2771238405Sjkim adcl $0,%eax 2772238405Sjkim movl %ecx,20(%ebx) 2773238405Sjkim 2774238405Sjkim movl $0,%ecx 2775238405Sjkim movl 24(%edi),%edx 2776238405Sjkim subl %eax,%ecx 2777238405Sjkim movl $0,%eax 2778238405Sjkim adcl %eax,%eax 2779238405Sjkim subl %edx,%ecx 2780238405Sjkim adcl $0,%eax 2781238405Sjkim movl %ecx,24(%ebx) 2782238405Sjkim 2783238405Sjkim movl $0,%ecx 2784238405Sjkim movl 28(%edi),%edx 2785238405Sjkim subl %eax,%ecx 2786238405Sjkim movl $0,%eax 2787238405Sjkim adcl %eax,%eax 2788238405Sjkim subl %edx,%ecx 2789238405Sjkim adcl $0,%eax 2790238405Sjkim movl %ecx,28(%ebx) 2791238405Sjkim 2792238405Sjkim addl $32,%edi 2793238405Sjkim addl $32,%ebx 2794238405Sjkim subl $8,%ebp 2795238405Sjkim jnz .L032pw_neg_loop 2796238405Sjkim.L031pw_neg_finish: 2797238405Sjkim movl 36(%esp),%edx 2798238405Sjkim movl $0,%ebp 2799238405Sjkim subl %edx,%ebp 2800238405Sjkim andl $7,%ebp 2801238405Sjkim jz .L029pw_end 2802238405Sjkim 2803238405Sjkim movl $0,%ecx 2804238405Sjkim movl (%edi),%edx 2805238405Sjkim subl %eax,%ecx 2806238405Sjkim movl $0,%eax 2807238405Sjkim adcl %eax,%eax 2808238405Sjkim subl %edx,%ecx 2809238405Sjkim adcl $0,%eax 281095967Speter decl %ebp 2811238405Sjkim movl %ecx,(%ebx) 2812238405Sjkim jz .L029pw_end 2813127326Smarkm 2814238405Sjkim movl $0,%ecx 2815238405Sjkim movl 4(%edi),%edx 2816238405Sjkim subl %eax,%ecx 2817238405Sjkim movl $0,%eax 2818238405Sjkim adcl %eax,%eax 2819238405Sjkim subl %edx,%ecx 2820238405Sjkim adcl $0,%eax 2821238405Sjkim decl %ebp 2822238405Sjkim movl %ecx,4(%ebx) 2823238405Sjkim jz .L029pw_end 2824238405Sjkim 2825238405Sjkim movl $0,%ecx 2826238405Sjkim movl 8(%edi),%edx 2827238405Sjkim subl %eax,%ecx 2828238405Sjkim movl $0,%eax 2829238405Sjkim adcl %eax,%eax 2830238405Sjkim subl %edx,%ecx 2831238405Sjkim adcl $0,%eax 2832238405Sjkim decl %ebp 2833238405Sjkim movl %ecx,8(%ebx) 2834238405Sjkim jz .L029pw_end 2835238405Sjkim 2836238405Sjkim movl $0,%ecx 2837238405Sjkim movl 12(%edi),%edx 2838238405Sjkim subl %eax,%ecx 2839238405Sjkim movl $0,%eax 2840238405Sjkim adcl %eax,%eax 2841238405Sjkim subl %edx,%ecx 2842238405Sjkim adcl $0,%eax 2843238405Sjkim decl %ebp 2844238405Sjkim movl %ecx,12(%ebx) 2845238405Sjkim jz .L029pw_end 2846238405Sjkim 2847238405Sjkim movl $0,%ecx 2848238405Sjkim movl 16(%edi),%edx 2849238405Sjkim subl %eax,%ecx 2850238405Sjkim movl $0,%eax 2851238405Sjkim adcl %eax,%eax 2852238405Sjkim subl %edx,%ecx 2853238405Sjkim adcl $0,%eax 2854238405Sjkim decl %ebp 2855238405Sjkim movl %ecx,16(%ebx) 2856238405Sjkim jz .L029pw_end 2857238405Sjkim 2858238405Sjkim movl $0,%ecx 2859238405Sjkim movl 20(%edi),%edx 2860238405Sjkim subl %eax,%ecx 2861238405Sjkim movl $0,%eax 2862238405Sjkim adcl %eax,%eax 2863238405Sjkim subl %edx,%ecx 2864238405Sjkim adcl $0,%eax 2865238405Sjkim decl %ebp 2866238405Sjkim movl %ecx,20(%ebx) 2867238405Sjkim jz .L029pw_end 2868238405Sjkim 2869238405Sjkim movl $0,%ecx 2870238405Sjkim movl 24(%edi),%edx 2871238405Sjkim subl %eax,%ecx 2872238405Sjkim movl $0,%eax 2873238405Sjkim adcl %eax,%eax 2874238405Sjkim subl %edx,%ecx 2875238405Sjkim adcl $0,%eax 2876238405Sjkim movl %ecx,24(%ebx) 2877238405Sjkim jmp .L029pw_end 2878238405Sjkim.L030pw_pos: 2879238405Sjkim andl $4294967288,%ebp 2880238405Sjkim jz .L033pw_pos_finish 2881238405Sjkim.L034pw_pos_loop: 2882238405Sjkim 2883238405Sjkim movl (%esi),%ecx 2884238405Sjkim subl %eax,%ecx 2885238405Sjkim movl %ecx,(%ebx) 2886238405Sjkim jnc .L035pw_nc0 2887238405Sjkim 2888238405Sjkim movl 4(%esi),%ecx 2889238405Sjkim subl %eax,%ecx 2890238405Sjkim movl %ecx,4(%ebx) 2891238405Sjkim jnc .L036pw_nc1 2892238405Sjkim 2893238405Sjkim movl 8(%esi),%ecx 2894238405Sjkim subl %eax,%ecx 2895238405Sjkim movl %ecx,8(%ebx) 2896238405Sjkim jnc .L037pw_nc2 2897238405Sjkim 2898238405Sjkim movl 12(%esi),%ecx 2899238405Sjkim subl %eax,%ecx 2900238405Sjkim movl %ecx,12(%ebx) 2901238405Sjkim jnc .L038pw_nc3 2902238405Sjkim 2903238405Sjkim movl 16(%esi),%ecx 2904238405Sjkim subl %eax,%ecx 2905238405Sjkim movl %ecx,16(%ebx) 2906238405Sjkim jnc .L039pw_nc4 2907238405Sjkim 2908238405Sjkim movl 20(%esi),%ecx 2909238405Sjkim subl %eax,%ecx 2910238405Sjkim movl %ecx,20(%ebx) 2911238405Sjkim jnc .L040pw_nc5 2912238405Sjkim 2913238405Sjkim movl 24(%esi),%ecx 2914238405Sjkim subl %eax,%ecx 2915238405Sjkim movl %ecx,24(%ebx) 2916238405Sjkim jnc .L041pw_nc6 2917238405Sjkim 2918238405Sjkim movl 28(%esi),%ecx 2919238405Sjkim subl %eax,%ecx 2920238405Sjkim movl %ecx,28(%ebx) 2921238405Sjkim jnc .L042pw_nc7 2922238405Sjkim 2923238405Sjkim addl $32,%esi 2924238405Sjkim addl $32,%ebx 2925238405Sjkim subl $8,%ebp 2926238405Sjkim jnz .L034pw_pos_loop 2927238405Sjkim.L033pw_pos_finish: 2928238405Sjkim movl 36(%esp),%ebp 2929238405Sjkim andl $7,%ebp 2930238405Sjkim jz .L029pw_end 2931238405Sjkim 2932238405Sjkim movl (%esi),%ecx 2933238405Sjkim subl %eax,%ecx 2934238405Sjkim movl %ecx,(%ebx) 2935238405Sjkim jnc .L043pw_tail_nc0 2936238405Sjkim decl %ebp 2937238405Sjkim jz .L029pw_end 2938238405Sjkim 2939238405Sjkim movl 4(%esi),%ecx 2940238405Sjkim subl %eax,%ecx 2941238405Sjkim movl %ecx,4(%ebx) 2942238405Sjkim jnc .L044pw_tail_nc1 2943238405Sjkim decl %ebp 2944238405Sjkim jz .L029pw_end 2945238405Sjkim 2946238405Sjkim movl 8(%esi),%ecx 2947238405Sjkim subl %eax,%ecx 2948238405Sjkim movl %ecx,8(%ebx) 2949238405Sjkim jnc .L045pw_tail_nc2 2950238405Sjkim decl %ebp 2951238405Sjkim jz .L029pw_end 2952238405Sjkim 2953238405Sjkim movl 12(%esi),%ecx 2954238405Sjkim subl %eax,%ecx 2955238405Sjkim movl %ecx,12(%ebx) 2956238405Sjkim jnc .L046pw_tail_nc3 2957238405Sjkim decl %ebp 2958238405Sjkim jz .L029pw_end 2959238405Sjkim 2960238405Sjkim movl 16(%esi),%ecx 2961238405Sjkim subl %eax,%ecx 2962238405Sjkim movl %ecx,16(%ebx) 2963238405Sjkim jnc .L047pw_tail_nc4 2964238405Sjkim decl %ebp 2965238405Sjkim jz .L029pw_end 2966238405Sjkim 2967238405Sjkim movl 20(%esi),%ecx 2968238405Sjkim subl %eax,%ecx 2969238405Sjkim movl %ecx,20(%ebx) 2970238405Sjkim jnc .L048pw_tail_nc5 2971238405Sjkim decl %ebp 2972238405Sjkim jz .L029pw_end 2973238405Sjkim 2974238405Sjkim movl 24(%esi),%ecx 2975238405Sjkim subl %eax,%ecx 2976238405Sjkim movl %ecx,24(%ebx) 2977238405Sjkim jnc .L049pw_tail_nc6 2978238405Sjkim movl $1,%eax 2979238405Sjkim jmp .L029pw_end 2980238405Sjkim.L050pw_nc_loop: 2981238405Sjkim movl (%esi),%ecx 2982238405Sjkim movl %ecx,(%ebx) 2983238405Sjkim.L035pw_nc0: 2984238405Sjkim movl 4(%esi),%ecx 2985238405Sjkim movl %ecx,4(%ebx) 2986238405Sjkim.L036pw_nc1: 2987238405Sjkim movl 8(%esi),%ecx 2988238405Sjkim movl %ecx,8(%ebx) 2989238405Sjkim.L037pw_nc2: 2990238405Sjkim movl 12(%esi),%ecx 2991238405Sjkim movl %ecx,12(%ebx) 2992238405Sjkim.L038pw_nc3: 2993238405Sjkim movl 16(%esi),%ecx 2994238405Sjkim movl %ecx,16(%ebx) 2995238405Sjkim.L039pw_nc4: 2996238405Sjkim movl 20(%esi),%ecx 2997238405Sjkim movl %ecx,20(%ebx) 2998238405Sjkim.L040pw_nc5: 2999238405Sjkim movl 24(%esi),%ecx 3000238405Sjkim movl %ecx,24(%ebx) 3001238405Sjkim.L041pw_nc6: 3002238405Sjkim movl 28(%esi),%ecx 3003238405Sjkim movl %ecx,28(%ebx) 3004238405Sjkim.L042pw_nc7: 3005238405Sjkim 3006238405Sjkim addl $32,%esi 3007238405Sjkim addl $32,%ebx 3008238405Sjkim subl $8,%ebp 3009238405Sjkim jnz .L050pw_nc_loop 3010238405Sjkim movl 36(%esp),%ebp 3011238405Sjkim andl $7,%ebp 3012238405Sjkim jz .L051pw_nc_end 3013238405Sjkim movl (%esi),%ecx 3014238405Sjkim movl %ecx,(%ebx) 3015238405Sjkim.L043pw_tail_nc0: 3016238405Sjkim decl %ebp 3017238405Sjkim jz .L051pw_nc_end 3018238405Sjkim movl 4(%esi),%ecx 3019238405Sjkim movl %ecx,4(%ebx) 3020238405Sjkim.L044pw_tail_nc1: 3021238405Sjkim decl %ebp 3022238405Sjkim jz .L051pw_nc_end 3023238405Sjkim movl 8(%esi),%ecx 3024238405Sjkim movl %ecx,8(%ebx) 3025238405Sjkim.L045pw_tail_nc2: 3026238405Sjkim decl %ebp 3027238405Sjkim jz .L051pw_nc_end 3028238405Sjkim movl 12(%esi),%ecx 3029238405Sjkim movl %ecx,12(%ebx) 3030238405Sjkim.L046pw_tail_nc3: 3031238405Sjkim decl %ebp 3032238405Sjkim jz .L051pw_nc_end 3033238405Sjkim movl 16(%esi),%ecx 3034238405Sjkim movl %ecx,16(%ebx) 3035238405Sjkim.L047pw_tail_nc4: 3036238405Sjkim decl %ebp 3037238405Sjkim jz .L051pw_nc_end 3038238405Sjkim movl 20(%esi),%ecx 3039238405Sjkim movl %ecx,20(%ebx) 3040238405Sjkim.L048pw_tail_nc5: 3041238405Sjkim decl %ebp 3042238405Sjkim jz .L051pw_nc_end 3043238405Sjkim movl 24(%esi),%ecx 3044238405Sjkim movl %ecx,24(%ebx) 3045238405Sjkim.L049pw_tail_nc6: 3046238405Sjkim.L051pw_nc_end: 3047238405Sjkim movl $0,%eax 3048238405Sjkim.L029pw_end: 304995967Speter popl %edi 305095967Speter popl %esi 305195967Speter popl %ebx 305295967Speter popl %ebp 305395967Speter ret 3054238405Sjkim.size bn_sub_part_words,.-.L_bn_sub_part_words_begin 3055290207Sjkim.comm OPENSSL_ia32cap_P,16,4 3056299389Sjkim#endif 3057