Path: blob/main/sys/crypto/openssl/i386/x86-mont.S
39482 views
/* Do not modify. This file is auto-generated from x86-mont.pl. */1#ifdef PIC2.text3.globl bn_mul_mont4.type bn_mul_mont,@function5.align 166bn_mul_mont:7.L_bn_mul_mont_begin:8#ifdef __CET__910.byte 243,15,30,25111#endif1213pushl %ebp14pushl %ebx15pushl %esi16pushl %edi17xorl %eax,%eax18movl 40(%esp),%edi19cmpl $4,%edi20jl .L000just_leave21leal 20(%esp),%esi22leal 24(%esp),%edx23addl $2,%edi24negl %edi25leal -32(%esp,%edi,4),%ebp26negl %edi27movl %ebp,%eax28subl %edx,%eax29andl $2047,%eax30subl %eax,%ebp31xorl %ebp,%edx32andl $2048,%edx33xorl $2048,%edx34subl %edx,%ebp35andl $-64,%ebp36movl %esp,%eax37subl %ebp,%eax38andl $-4096,%eax39movl %esp,%edx40leal (%ebp,%eax,1),%esp41movl (%esp),%eax42cmpl %ebp,%esp43ja .L001page_walk44jmp .L002page_walk_done45.align 1646.L001page_walk:47leal -4096(%esp),%esp48movl (%esp),%eax49cmpl %ebp,%esp50ja .L001page_walk51.L002page_walk_done:52movl (%esi),%eax53movl 4(%esi),%ebx54movl 8(%esi),%ecx55movl 12(%esi),%ebp56movl 16(%esi),%esi57movl (%esi),%esi58movl %eax,4(%esp)59movl %ebx,8(%esp)60movl %ecx,12(%esp)61movl %ebp,16(%esp)62movl %esi,20(%esp)63leal -3(%edi),%ebx64movl %edx,24(%esp)65call .L003PIC_me_up66.L003PIC_me_up:67popl %eax68leal OPENSSL_ia32cap_P-.L003PIC_me_up(%eax),%eax69btl $26,(%eax)70jnc .L004non_sse271movl $-1,%eax72movd %eax,%mm773movl 8(%esp),%esi74movl 12(%esp),%edi75movl 16(%esp),%ebp76xorl %edx,%edx77xorl %ecx,%ecx78movd (%edi),%mm479movd (%esi),%mm580movd (%ebp),%mm381pmuludq %mm4,%mm582movq %mm5,%mm283movq %mm5,%mm084pand %mm7,%mm085pmuludq 20(%esp),%mm586pmuludq %mm5,%mm387paddq %mm0,%mm388movd 4(%ebp),%mm189movd 4(%esi),%mm090psrlq $32,%mm291psrlq $32,%mm392incl %ecx93.align 1694.L0051st:95pmuludq %mm4,%mm096pmuludq %mm5,%mm197paddq %mm0,%mm298paddq %mm1,%mm399movq %mm2,%mm0100pand %mm7,%mm0101movd 4(%ebp,%ecx,4),%mm1102paddq %mm0,%mm3103movd 4(%esi,%ecx,4),%mm0104psrlq $32,%mm2105movd %mm3,28(%esp,%ecx,4)106psrlq $32,%mm3107leal 1(%ecx),%ecx108cmpl %ebx,%ecx109jl .L0051st110pmuludq %mm4,%mm0111pmuludq %mm5,%mm1112paddq %mm0,%mm2113paddq %mm1,%mm3114movq %mm2,%mm0115pand %mm7,%mm0116paddq %mm0,%mm3117movd %mm3,28(%esp,%ecx,4)118psrlq $32,%mm2119psrlq $32,%mm3120paddq %mm2,%mm3121movq %mm3,32(%esp,%ebx,4)122incl %edx123.L006outer:124xorl %ecx,%ecx125movd (%edi,%edx,4),%mm4126movd (%esi),%mm5127movd 32(%esp),%mm6128movd (%ebp),%mm3129pmuludq %mm4,%mm5130paddq %mm6,%mm5131movq %mm5,%mm0132movq %mm5,%mm2133pand %mm7,%mm0134pmuludq 20(%esp),%mm5135pmuludq %mm5,%mm3136paddq %mm0,%mm3137movd 36(%esp),%mm6138movd 4(%ebp),%mm1139movd 4(%esi),%mm0140psrlq $32,%mm2141psrlq $32,%mm3142paddq %mm6,%mm2143incl %ecx144decl %ebx145.L007inner:146pmuludq %mm4,%mm0147pmuludq %mm5,%mm1148paddq %mm0,%mm2149paddq %mm1,%mm3150movq %mm2,%mm0151movd 36(%esp,%ecx,4),%mm6152pand %mm7,%mm0153movd 4(%ebp,%ecx,4),%mm1154paddq %mm0,%mm3155movd 4(%esi,%ecx,4),%mm0156psrlq $32,%mm2157movd %mm3,28(%esp,%ecx,4)158psrlq $32,%mm3159paddq %mm6,%mm2160decl %ebx161leal 1(%ecx),%ecx162jnz .L007inner163movl %ecx,%ebx164pmuludq %mm4,%mm0165pmuludq %mm5,%mm1166paddq %mm0,%mm2167paddq %mm1,%mm3168movq %mm2,%mm0169pand %mm7,%mm0170paddq %mm0,%mm3171movd %mm3,28(%esp,%ecx,4)172psrlq $32,%mm2173psrlq $32,%mm3174movd 36(%esp,%ebx,4),%mm6175paddq %mm2,%mm3176paddq %mm6,%mm3177movq %mm3,32(%esp,%ebx,4)178leal 1(%edx),%edx179cmpl %ebx,%edx180jle .L006outer181emms182jmp .L008common_tail183.align 16184.L004non_sse2:185movl 8(%esp),%esi186leal 1(%ebx),%ebp187movl 12(%esp),%edi188xorl %ecx,%ecx189movl %esi,%edx190andl $1,%ebp191subl %edi,%edx192leal 4(%edi,%ebx,4),%eax193orl %edx,%ebp194movl (%edi),%edi195jz .L009bn_sqr_mont196movl %eax,28(%esp)197movl (%esi),%eax198xorl %edx,%edx199.align 16200.L010mull:201movl %edx,%ebp202mull %edi203addl %eax,%ebp204leal 1(%ecx),%ecx205adcl $0,%edx206movl (%esi,%ecx,4),%eax207cmpl %ebx,%ecx208movl %ebp,28(%esp,%ecx,4)209jl .L010mull210movl %edx,%ebp211mull %edi212movl 20(%esp),%edi213addl %ebp,%eax214movl 16(%esp),%esi215adcl $0,%edx216imull 32(%esp),%edi217movl %eax,32(%esp,%ebx,4)218xorl %ecx,%ecx219movl %edx,36(%esp,%ebx,4)220movl %ecx,40(%esp,%ebx,4)221movl (%esi),%eax222mull %edi223addl 32(%esp),%eax224movl 4(%esi),%eax225adcl $0,%edx226incl %ecx227jmp .L0112ndmadd228.align 16229.L0121stmadd:230movl %edx,%ebp231mull %edi232addl 32(%esp,%ecx,4),%ebp233leal 1(%ecx),%ecx234adcl $0,%edx235addl %eax,%ebp236movl (%esi,%ecx,4),%eax237adcl $0,%edx238cmpl %ebx,%ecx239movl %ebp,28(%esp,%ecx,4)240jl .L0121stmadd241movl %edx,%ebp242mull %edi243addl 32(%esp,%ebx,4),%eax244movl 20(%esp),%edi245adcl $0,%edx246movl 16(%esp),%esi247addl %eax,%ebp248adcl $0,%edx249imull 32(%esp),%edi250xorl %ecx,%ecx251addl 36(%esp,%ebx,4),%edx252movl %ebp,32(%esp,%ebx,4)253adcl $0,%ecx254movl (%esi),%eax255movl %edx,36(%esp,%ebx,4)256movl %ecx,40(%esp,%ebx,4)257mull %edi258addl 32(%esp),%eax259movl 4(%esi),%eax260adcl $0,%edx261movl $1,%ecx262.align 16263.L0112ndmadd:264movl %edx,%ebp265mull %edi266addl 32(%esp,%ecx,4),%ebp267leal 1(%ecx),%ecx268adcl $0,%edx269addl %eax,%ebp270movl (%esi,%ecx,4),%eax271adcl $0,%edx272cmpl %ebx,%ecx273movl %ebp,24(%esp,%ecx,4)274jl .L0112ndmadd275movl %edx,%ebp276mull %edi277addl 32(%esp,%ebx,4),%ebp278adcl $0,%edx279addl %eax,%ebp280adcl $0,%edx281movl %ebp,28(%esp,%ebx,4)282xorl %eax,%eax283movl 12(%esp),%ecx284addl 36(%esp,%ebx,4),%edx285adcl 40(%esp,%ebx,4),%eax286leal 4(%ecx),%ecx287movl %edx,32(%esp,%ebx,4)288cmpl 28(%esp),%ecx289movl %eax,36(%esp,%ebx,4)290je .L008common_tail291movl (%ecx),%edi292movl 8(%esp),%esi293movl %ecx,12(%esp)294xorl %ecx,%ecx295xorl %edx,%edx296movl (%esi),%eax297jmp .L0121stmadd298.align 16299.L009bn_sqr_mont:300movl %ebx,(%esp)301movl %ecx,12(%esp)302movl %edi,%eax303mull %edi304movl %eax,32(%esp)305movl %edx,%ebx306shrl $1,%edx307andl $1,%ebx308incl %ecx309.align 16310.L013sqr:311movl (%esi,%ecx,4),%eax312movl %edx,%ebp313mull %edi314addl %ebp,%eax315leal 1(%ecx),%ecx316adcl $0,%edx317leal (%ebx,%eax,2),%ebp318shrl $31,%eax319cmpl (%esp),%ecx320movl %eax,%ebx321movl %ebp,28(%esp,%ecx,4)322jl .L013sqr323movl (%esi,%ecx,4),%eax324movl %edx,%ebp325mull %edi326addl %ebp,%eax327movl 20(%esp),%edi328adcl $0,%edx329movl 16(%esp),%esi330leal (%ebx,%eax,2),%ebp331imull 32(%esp),%edi332shrl $31,%eax333movl %ebp,32(%esp,%ecx,4)334leal (%eax,%edx,2),%ebp335movl (%esi),%eax336shrl $31,%edx337movl %ebp,36(%esp,%ecx,4)338movl %edx,40(%esp,%ecx,4)339mull %edi340addl 32(%esp),%eax341movl %ecx,%ebx342adcl $0,%edx343movl 4(%esi),%eax344movl $1,%ecx345.align 16346.L0143rdmadd:347movl %edx,%ebp348mull %edi349addl 32(%esp,%ecx,4),%ebp350adcl $0,%edx351addl %eax,%ebp352movl 4(%esi,%ecx,4),%eax353adcl $0,%edx354movl %ebp,28(%esp,%ecx,4)355movl %edx,%ebp356mull %edi357addl 36(%esp,%ecx,4),%ebp358leal 2(%ecx),%ecx359adcl $0,%edx360addl %eax,%ebp361movl (%esi,%ecx,4),%eax362adcl $0,%edx363cmpl %ebx,%ecx364movl %ebp,24(%esp,%ecx,4)365jl .L0143rdmadd366movl %edx,%ebp367mull %edi368addl 32(%esp,%ebx,4),%ebp369adcl $0,%edx370addl %eax,%ebp371adcl $0,%edx372movl %ebp,28(%esp,%ebx,4)373movl 12(%esp),%ecx374xorl %eax,%eax375movl 8(%esp),%esi376addl 36(%esp,%ebx,4),%edx377adcl 40(%esp,%ebx,4),%eax378movl %edx,32(%esp,%ebx,4)379cmpl %ebx,%ecx380movl %eax,36(%esp,%ebx,4)381je .L008common_tail382movl 4(%esi,%ecx,4),%edi383leal 1(%ecx),%ecx384movl %edi,%eax385movl %ecx,12(%esp)386mull %edi387addl 32(%esp,%ecx,4),%eax388adcl $0,%edx389movl %eax,32(%esp,%ecx,4)390xorl %ebp,%ebp391cmpl %ebx,%ecx392leal 1(%ecx),%ecx393je .L015sqrlast394movl %edx,%ebx395shrl $1,%edx396andl $1,%ebx397.align 16398.L016sqradd:399movl (%esi,%ecx,4),%eax400movl %edx,%ebp401mull %edi402addl %ebp,%eax403leal (%eax,%eax,1),%ebp404adcl $0,%edx405shrl $31,%eax406addl 32(%esp,%ecx,4),%ebp407leal 1(%ecx),%ecx408adcl $0,%eax409addl %ebx,%ebp410adcl $0,%eax411cmpl (%esp),%ecx412movl %ebp,28(%esp,%ecx,4)413movl %eax,%ebx414jle .L016sqradd415movl %edx,%ebp416addl %edx,%edx417shrl $31,%ebp418addl %ebx,%edx419adcl $0,%ebp420.L015sqrlast:421movl 20(%esp),%edi422movl 16(%esp),%esi423imull 32(%esp),%edi424addl 32(%esp,%ecx,4),%edx425movl (%esi),%eax426adcl $0,%ebp427movl %edx,32(%esp,%ecx,4)428movl %ebp,36(%esp,%ecx,4)429mull %edi430addl 32(%esp),%eax431leal -1(%ecx),%ebx432adcl $0,%edx433movl $1,%ecx434movl 4(%esi),%eax435jmp .L0143rdmadd436.align 16437.L008common_tail:438movl 16(%esp),%ebp439movl 4(%esp),%edi440leal 32(%esp),%esi441movl (%esi),%eax442movl %ebx,%ecx443xorl %edx,%edx444.align 16445.L017sub:446sbbl (%ebp,%edx,4),%eax447movl %eax,(%edi,%edx,4)448decl %ecx449movl 4(%esi,%edx,4),%eax450leal 1(%edx),%edx451jge .L017sub452sbbl $0,%eax453movl $-1,%edx454xorl %eax,%edx455jmp .L018copy456.align 16457.L018copy:458movl 32(%esp,%ebx,4),%esi459movl (%edi,%ebx,4),%ebp460movl %ecx,32(%esp,%ebx,4)461andl %eax,%esi462andl %edx,%ebp463orl %esi,%ebp464movl %ebp,(%edi,%ebx,4)465decl %ebx466jge .L018copy467movl 24(%esp),%esp468movl $1,%eax469.L000just_leave:470popl %edi471popl %esi472popl %ebx473popl %ebp474ret475.size bn_mul_mont,.-.L_bn_mul_mont_begin476.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105477.byte 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56478.byte 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121479.byte 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46480.byte 111,114,103,62,0481.comm OPENSSL_ia32cap_P,40,4482483.section ".note.gnu.property", "a"484.p2align 2485.long 1f - 0f486.long 4f - 1f487.long 54880:489.asciz "GNU"4901:491.p2align 2492.long 0xc0000002493.long 3f - 2f4942:495.long 34963:497.p2align 24984:499#else500.text501.globl bn_mul_mont502.type bn_mul_mont,@function503.align 16504bn_mul_mont:505.L_bn_mul_mont_begin:506#ifdef __CET__507508.byte 243,15,30,251509#endif510511pushl %ebp512pushl %ebx513pushl %esi514pushl %edi515xorl %eax,%eax516movl 40(%esp),%edi517cmpl $4,%edi518jl .L000just_leave519leal 20(%esp),%esi520leal 24(%esp),%edx521addl $2,%edi522negl %edi523leal -32(%esp,%edi,4),%ebp524negl %edi525movl %ebp,%eax526subl %edx,%eax527andl $2047,%eax528subl %eax,%ebp529xorl %ebp,%edx530andl $2048,%edx531xorl $2048,%edx532subl %edx,%ebp533andl $-64,%ebp534movl %esp,%eax535subl %ebp,%eax536andl $-4096,%eax537movl %esp,%edx538leal (%ebp,%eax,1),%esp539movl (%esp),%eax540cmpl %ebp,%esp541ja .L001page_walk542jmp .L002page_walk_done543.align 16544.L001page_walk:545leal -4096(%esp),%esp546movl (%esp),%eax547cmpl %ebp,%esp548ja .L001page_walk549.L002page_walk_done:550movl (%esi),%eax551movl 4(%esi),%ebx552movl 8(%esi),%ecx553movl 12(%esi),%ebp554movl 16(%esi),%esi555movl (%esi),%esi556movl %eax,4(%esp)557movl %ebx,8(%esp)558movl %ecx,12(%esp)559movl %ebp,16(%esp)560movl %esi,20(%esp)561leal -3(%edi),%ebx562movl %edx,24(%esp)563leal OPENSSL_ia32cap_P,%eax564btl $26,(%eax)565jnc .L003non_sse2566movl $-1,%eax567movd %eax,%mm7568movl 8(%esp),%esi569movl 12(%esp),%edi570movl 16(%esp),%ebp571xorl %edx,%edx572xorl %ecx,%ecx573movd (%edi),%mm4574movd (%esi),%mm5575movd (%ebp),%mm3576pmuludq %mm4,%mm5577movq %mm5,%mm2578movq %mm5,%mm0579pand %mm7,%mm0580pmuludq 20(%esp),%mm5581pmuludq %mm5,%mm3582paddq %mm0,%mm3583movd 4(%ebp),%mm1584movd 4(%esi),%mm0585psrlq $32,%mm2586psrlq $32,%mm3587incl %ecx588.align 16589.L0041st:590pmuludq %mm4,%mm0591pmuludq %mm5,%mm1592paddq %mm0,%mm2593paddq %mm1,%mm3594movq %mm2,%mm0595pand %mm7,%mm0596movd 4(%ebp,%ecx,4),%mm1597paddq %mm0,%mm3598movd 4(%esi,%ecx,4),%mm0599psrlq $32,%mm2600movd %mm3,28(%esp,%ecx,4)601psrlq $32,%mm3602leal 1(%ecx),%ecx603cmpl %ebx,%ecx604jl .L0041st605pmuludq %mm4,%mm0606pmuludq %mm5,%mm1607paddq %mm0,%mm2608paddq %mm1,%mm3609movq %mm2,%mm0610pand %mm7,%mm0611paddq %mm0,%mm3612movd %mm3,28(%esp,%ecx,4)613psrlq $32,%mm2614psrlq $32,%mm3615paddq %mm2,%mm3616movq %mm3,32(%esp,%ebx,4)617incl %edx618.L005outer:619xorl %ecx,%ecx620movd (%edi,%edx,4),%mm4621movd (%esi),%mm5622movd 32(%esp),%mm6623movd (%ebp),%mm3624pmuludq %mm4,%mm5625paddq %mm6,%mm5626movq %mm5,%mm0627movq %mm5,%mm2628pand %mm7,%mm0629pmuludq 20(%esp),%mm5630pmuludq %mm5,%mm3631paddq %mm0,%mm3632movd 36(%esp),%mm6633movd 4(%ebp),%mm1634movd 4(%esi),%mm0635psrlq $32,%mm2636psrlq $32,%mm3637paddq %mm6,%mm2638incl %ecx639decl %ebx640.L006inner:641pmuludq %mm4,%mm0642pmuludq %mm5,%mm1643paddq %mm0,%mm2644paddq %mm1,%mm3645movq %mm2,%mm0646movd 36(%esp,%ecx,4),%mm6647pand %mm7,%mm0648movd 4(%ebp,%ecx,4),%mm1649paddq %mm0,%mm3650movd 4(%esi,%ecx,4),%mm0651psrlq $32,%mm2652movd %mm3,28(%esp,%ecx,4)653psrlq $32,%mm3654paddq %mm6,%mm2655decl %ebx656leal 1(%ecx),%ecx657jnz .L006inner658movl %ecx,%ebx659pmuludq %mm4,%mm0660pmuludq %mm5,%mm1661paddq %mm0,%mm2662paddq %mm1,%mm3663movq %mm2,%mm0664pand %mm7,%mm0665paddq %mm0,%mm3666movd %mm3,28(%esp,%ecx,4)667psrlq $32,%mm2668psrlq $32,%mm3669movd 36(%esp,%ebx,4),%mm6670paddq %mm2,%mm3671paddq %mm6,%mm3672movq %mm3,32(%esp,%ebx,4)673leal 1(%edx),%edx674cmpl %ebx,%edx675jle .L005outer676emms677jmp .L007common_tail678.align 16679.L003non_sse2:680movl 8(%esp),%esi681leal 1(%ebx),%ebp682movl 12(%esp),%edi683xorl %ecx,%ecx684movl %esi,%edx685andl $1,%ebp686subl %edi,%edx687leal 4(%edi,%ebx,4),%eax688orl %edx,%ebp689movl (%edi),%edi690jz .L008bn_sqr_mont691movl %eax,28(%esp)692movl (%esi),%eax693xorl %edx,%edx694.align 16695.L009mull:696movl %edx,%ebp697mull %edi698addl %eax,%ebp699leal 1(%ecx),%ecx700adcl $0,%edx701movl (%esi,%ecx,4),%eax702cmpl %ebx,%ecx703movl %ebp,28(%esp,%ecx,4)704jl .L009mull705movl %edx,%ebp706mull %edi707movl 20(%esp),%edi708addl %ebp,%eax709movl 16(%esp),%esi710adcl $0,%edx711imull 32(%esp),%edi712movl %eax,32(%esp,%ebx,4)713xorl %ecx,%ecx714movl %edx,36(%esp,%ebx,4)715movl %ecx,40(%esp,%ebx,4)716movl (%esi),%eax717mull %edi718addl 32(%esp),%eax719movl 4(%esi),%eax720adcl $0,%edx721incl %ecx722jmp .L0102ndmadd723.align 16724.L0111stmadd:725movl %edx,%ebp726mull %edi727addl 32(%esp,%ecx,4),%ebp728leal 1(%ecx),%ecx729adcl $0,%edx730addl %eax,%ebp731movl (%esi,%ecx,4),%eax732adcl $0,%edx733cmpl %ebx,%ecx734movl %ebp,28(%esp,%ecx,4)735jl .L0111stmadd736movl %edx,%ebp737mull %edi738addl 32(%esp,%ebx,4),%eax739movl 20(%esp),%edi740adcl $0,%edx741movl 16(%esp),%esi742addl %eax,%ebp743adcl $0,%edx744imull 32(%esp),%edi745xorl %ecx,%ecx746addl 36(%esp,%ebx,4),%edx747movl %ebp,32(%esp,%ebx,4)748adcl $0,%ecx749movl (%esi),%eax750movl %edx,36(%esp,%ebx,4)751movl %ecx,40(%esp,%ebx,4)752mull %edi753addl 32(%esp),%eax754movl 4(%esi),%eax755adcl $0,%edx756movl $1,%ecx757.align 16758.L0102ndmadd:759movl %edx,%ebp760mull %edi761addl 32(%esp,%ecx,4),%ebp762leal 1(%ecx),%ecx763adcl $0,%edx764addl %eax,%ebp765movl (%esi,%ecx,4),%eax766adcl $0,%edx767cmpl %ebx,%ecx768movl %ebp,24(%esp,%ecx,4)769jl .L0102ndmadd770movl %edx,%ebp771mull %edi772addl 32(%esp,%ebx,4),%ebp773adcl $0,%edx774addl %eax,%ebp775adcl $0,%edx776movl %ebp,28(%esp,%ebx,4)777xorl %eax,%eax778movl 12(%esp),%ecx779addl 36(%esp,%ebx,4),%edx780adcl 40(%esp,%ebx,4),%eax781leal 4(%ecx),%ecx782movl %edx,32(%esp,%ebx,4)783cmpl 28(%esp),%ecx784movl %eax,36(%esp,%ebx,4)785je .L007common_tail786movl (%ecx),%edi787movl 8(%esp),%esi788movl %ecx,12(%esp)789xorl %ecx,%ecx790xorl %edx,%edx791movl (%esi),%eax792jmp .L0111stmadd793.align 16794.L008bn_sqr_mont:795movl %ebx,(%esp)796movl %ecx,12(%esp)797movl %edi,%eax798mull %edi799movl %eax,32(%esp)800movl %edx,%ebx801shrl $1,%edx802andl $1,%ebx803incl %ecx804.align 16805.L012sqr:806movl (%esi,%ecx,4),%eax807movl %edx,%ebp808mull %edi809addl %ebp,%eax810leal 1(%ecx),%ecx811adcl $0,%edx812leal (%ebx,%eax,2),%ebp813shrl $31,%eax814cmpl (%esp),%ecx815movl %eax,%ebx816movl %ebp,28(%esp,%ecx,4)817jl .L012sqr818movl (%esi,%ecx,4),%eax819movl %edx,%ebp820mull %edi821addl %ebp,%eax822movl 20(%esp),%edi823adcl $0,%edx824movl 16(%esp),%esi825leal (%ebx,%eax,2),%ebp826imull 32(%esp),%edi827shrl $31,%eax828movl %ebp,32(%esp,%ecx,4)829leal (%eax,%edx,2),%ebp830movl (%esi),%eax831shrl $31,%edx832movl %ebp,36(%esp,%ecx,4)833movl %edx,40(%esp,%ecx,4)834mull %edi835addl 32(%esp),%eax836movl %ecx,%ebx837adcl $0,%edx838movl 4(%esi),%eax839movl $1,%ecx840.align 16841.L0133rdmadd:842movl %edx,%ebp843mull %edi844addl 32(%esp,%ecx,4),%ebp845adcl $0,%edx846addl %eax,%ebp847movl 4(%esi,%ecx,4),%eax848adcl $0,%edx849movl %ebp,28(%esp,%ecx,4)850movl %edx,%ebp851mull %edi852addl 36(%esp,%ecx,4),%ebp853leal 2(%ecx),%ecx854adcl $0,%edx855addl %eax,%ebp856movl (%esi,%ecx,4),%eax857adcl $0,%edx858cmpl %ebx,%ecx859movl %ebp,24(%esp,%ecx,4)860jl .L0133rdmadd861movl %edx,%ebp862mull %edi863addl 32(%esp,%ebx,4),%ebp864adcl $0,%edx865addl %eax,%ebp866adcl $0,%edx867movl %ebp,28(%esp,%ebx,4)868movl 12(%esp),%ecx869xorl %eax,%eax870movl 8(%esp),%esi871addl 36(%esp,%ebx,4),%edx872adcl 40(%esp,%ebx,4),%eax873movl %edx,32(%esp,%ebx,4)874cmpl %ebx,%ecx875movl %eax,36(%esp,%ebx,4)876je .L007common_tail877movl 4(%esi,%ecx,4),%edi878leal 1(%ecx),%ecx879movl %edi,%eax880movl %ecx,12(%esp)881mull %edi882addl 32(%esp,%ecx,4),%eax883adcl $0,%edx884movl %eax,32(%esp,%ecx,4)885xorl %ebp,%ebp886cmpl %ebx,%ecx887leal 1(%ecx),%ecx888je .L014sqrlast889movl %edx,%ebx890shrl $1,%edx891andl $1,%ebx892.align 16893.L015sqradd:894movl (%esi,%ecx,4),%eax895movl %edx,%ebp896mull %edi897addl %ebp,%eax898leal (%eax,%eax,1),%ebp899adcl $0,%edx900shrl $31,%eax901addl 32(%esp,%ecx,4),%ebp902leal 1(%ecx),%ecx903adcl $0,%eax904addl %ebx,%ebp905adcl $0,%eax906cmpl (%esp),%ecx907movl %ebp,28(%esp,%ecx,4)908movl %eax,%ebx909jle .L015sqradd910movl %edx,%ebp911addl %edx,%edx912shrl $31,%ebp913addl %ebx,%edx914adcl $0,%ebp915.L014sqrlast:916movl 20(%esp),%edi917movl 16(%esp),%esi918imull 32(%esp),%edi919addl 32(%esp,%ecx,4),%edx920movl (%esi),%eax921adcl $0,%ebp922movl %edx,32(%esp,%ecx,4)923movl %ebp,36(%esp,%ecx,4)924mull %edi925addl 32(%esp),%eax926leal -1(%ecx),%ebx927adcl $0,%edx928movl $1,%ecx929movl 4(%esi),%eax930jmp .L0133rdmadd931.align 16932.L007common_tail:933movl 16(%esp),%ebp934movl 4(%esp),%edi935leal 32(%esp),%esi936movl (%esi),%eax937movl %ebx,%ecx938xorl %edx,%edx939.align 16940.L016sub:941sbbl (%ebp,%edx,4),%eax942movl %eax,(%edi,%edx,4)943decl %ecx944movl 4(%esi,%edx,4),%eax945leal 1(%edx),%edx946jge .L016sub947sbbl $0,%eax948movl $-1,%edx949xorl %eax,%edx950jmp .L017copy951.align 16952.L017copy:953movl 32(%esp,%ebx,4),%esi954movl (%edi,%ebx,4),%ebp955movl %ecx,32(%esp,%ebx,4)956andl %eax,%esi957andl %edx,%ebp958orl %esi,%ebp959movl %ebp,(%edi,%ebx,4)960decl %ebx961jge .L017copy962movl 24(%esp),%esp963movl $1,%eax964.L000just_leave:965popl %edi966popl %esi967popl %ebx968popl %ebp969ret970.size bn_mul_mont,.-.L_bn_mul_mont_begin971.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105972.byte 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56973.byte 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121974.byte 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46975.byte 111,114,103,62,0976.comm OPENSSL_ia32cap_P,40,4977978.section ".note.gnu.property", "a"979.p2align 2980.long 1f - 0f981.long 4f - 1f982.long 59830:984.asciz "GNU"9851:986.p2align 2987.long 0xc0000002988.long 3f - 2f9892:990.long 39913:992.p2align 29934:994#endif995996997