Path: blob/main/sys/crypto/openssl/amd64/x86_64-mont5.S
39482 views
/* Do not modify. This file is auto-generated from x86_64-mont5.pl. */1.text2345.globl bn_mul_mont_gather56.type bn_mul_mont_gather5,@function7.align 648bn_mul_mont_gather5:9.cfi_startproc10movl %r9d,%r9d11movq %rsp,%rax12.cfi_def_cfa_register %rax13testl $7,%r9d14jnz .Lmul_enter15movl OPENSSL_ia32cap_P+8(%rip),%r11d16jmp .Lmul4x_enter1718.align 1619.Lmul_enter:20movd 8(%rsp),%xmm521pushq %rbx22.cfi_offset %rbx,-1623pushq %rbp24.cfi_offset %rbp,-2425pushq %r1226.cfi_offset %r12,-3227pushq %r1328.cfi_offset %r13,-4029pushq %r1430.cfi_offset %r14,-4831pushq %r1532.cfi_offset %r15,-563334negq %r935movq %rsp,%r1136leaq -280(%rsp,%r9,8),%r1037negq %r938andq $-1024,%r1039404142434445464748subq %r10,%r1149andq $-4096,%r1150leaq (%r10,%r11,1),%rsp51movq (%rsp),%r1152cmpq %r10,%rsp53ja .Lmul_page_walk54jmp .Lmul_page_walk_done5556.Lmul_page_walk:57leaq -4096(%rsp),%rsp58movq (%rsp),%r1159cmpq %r10,%rsp60ja .Lmul_page_walk61.Lmul_page_walk_done:6263leaq .Linc(%rip),%r1064movq %rax,8(%rsp,%r9,8)65.cfi_escape 0x0f,0x0a,0x77,0x08,0x79,0x00,0x38,0x1e,0x22,0x06,0x23,0x0866.Lmul_body:6768leaq 128(%rdx),%r1269movdqa 0(%r10),%xmm070movdqa 16(%r10),%xmm171leaq 24-112(%rsp,%r9,8),%r1072andq $-16,%r107374pshufd $0,%xmm5,%xmm575movdqa %xmm1,%xmm476movdqa %xmm1,%xmm277paddd %xmm0,%xmm178pcmpeqd %xmm5,%xmm079.byte 0x6780movdqa %xmm4,%xmm381paddd %xmm1,%xmm282pcmpeqd %xmm5,%xmm183movdqa %xmm0,112(%r10)84movdqa %xmm4,%xmm08586paddd %xmm2,%xmm387pcmpeqd %xmm5,%xmm288movdqa %xmm1,128(%r10)89movdqa %xmm4,%xmm19091paddd %xmm3,%xmm092pcmpeqd %xmm5,%xmm393movdqa %xmm2,144(%r10)94movdqa %xmm4,%xmm29596paddd %xmm0,%xmm197pcmpeqd %xmm5,%xmm098movdqa %xmm3,160(%r10)99movdqa %xmm4,%xmm3100paddd %xmm1,%xmm2101pcmpeqd %xmm5,%xmm1102movdqa %xmm0,176(%r10)103movdqa %xmm4,%xmm0104105paddd %xmm2,%xmm3106pcmpeqd %xmm5,%xmm2107movdqa %xmm1,192(%r10)108movdqa %xmm4,%xmm1109110paddd %xmm3,%xmm0111pcmpeqd %xmm5,%xmm3112movdqa %xmm2,208(%r10)113movdqa %xmm4,%xmm2114115paddd %xmm0,%xmm1116pcmpeqd %xmm5,%xmm0117movdqa %xmm3,224(%r10)118movdqa %xmm4,%xmm3119paddd %xmm1,%xmm2120pcmpeqd %xmm5,%xmm1121movdqa %xmm0,240(%r10)122movdqa %xmm4,%xmm0123124paddd %xmm2,%xmm3125pcmpeqd %xmm5,%xmm2126movdqa %xmm1,256(%r10)127movdqa %xmm4,%xmm1128129paddd %xmm3,%xmm0130pcmpeqd %xmm5,%xmm3131movdqa %xmm2,272(%r10)132movdqa %xmm4,%xmm2133134paddd %xmm0,%xmm1135pcmpeqd %xmm5,%xmm0136movdqa %xmm3,288(%r10)137movdqa %xmm4,%xmm3138paddd %xmm1,%xmm2139pcmpeqd %xmm5,%xmm1140movdqa %xmm0,304(%r10)141142paddd %xmm2,%xmm3143.byte 0x67144pcmpeqd %xmm5,%xmm2145movdqa %xmm1,320(%r10)146147pcmpeqd %xmm5,%xmm3148movdqa %xmm2,336(%r10)149pand 64(%r12),%xmm0150151pand 80(%r12),%xmm1152pand 96(%r12),%xmm2153movdqa %xmm3,352(%r10)154pand 112(%r12),%xmm3155por %xmm2,%xmm0156por %xmm3,%xmm1157movdqa -128(%r12),%xmm4158movdqa -112(%r12),%xmm5159movdqa -96(%r12),%xmm2160pand 112(%r10),%xmm4161movdqa -80(%r12),%xmm3162pand 128(%r10),%xmm5163por %xmm4,%xmm0164pand 144(%r10),%xmm2165por %xmm5,%xmm1166pand 160(%r10),%xmm3167por %xmm2,%xmm0168por %xmm3,%xmm1169movdqa -64(%r12),%xmm4170movdqa -48(%r12),%xmm5171movdqa -32(%r12),%xmm2172pand 176(%r10),%xmm4173movdqa -16(%r12),%xmm3174pand 192(%r10),%xmm5175por %xmm4,%xmm0176pand 208(%r10),%xmm2177por %xmm5,%xmm1178pand 224(%r10),%xmm3179por %xmm2,%xmm0180por %xmm3,%xmm1181movdqa 0(%r12),%xmm4182movdqa 16(%r12),%xmm5183movdqa 32(%r12),%xmm2184pand 240(%r10),%xmm4185movdqa 48(%r12),%xmm3186pand 256(%r10),%xmm5187por %xmm4,%xmm0188pand 272(%r10),%xmm2189por %xmm5,%xmm1190pand 288(%r10),%xmm3191por %xmm2,%xmm0192por %xmm3,%xmm1193por %xmm1,%xmm0194pshufd $0x4e,%xmm0,%xmm1195por %xmm1,%xmm0196leaq 256(%r12),%r12197.byte 102,72,15,126,195198199movq (%r8),%r8200movq (%rsi),%rax201202xorq %r14,%r14203xorq %r15,%r15204205movq %r8,%rbp206mulq %rbx207movq %rax,%r10208movq (%rcx),%rax209210imulq %r10,%rbp211movq %rdx,%r11212213mulq %rbp214addq %rax,%r10215movq 8(%rsi),%rax216adcq $0,%rdx217movq %rdx,%r13218219leaq 1(%r15),%r15220jmp .L1st_enter221222.align 16223.L1st:224addq %rax,%r13225movq (%rsi,%r15,8),%rax226adcq $0,%rdx227addq %r11,%r13228movq %r10,%r11229adcq $0,%rdx230movq %r13,-16(%rsp,%r15,8)231movq %rdx,%r13232233.L1st_enter:234mulq %rbx235addq %rax,%r11236movq (%rcx,%r15,8),%rax237adcq $0,%rdx238leaq 1(%r15),%r15239movq %rdx,%r10240241mulq %rbp242cmpq %r9,%r15243jne .L1st244245246addq %rax,%r13247adcq $0,%rdx248addq %r11,%r13249adcq $0,%rdx250movq %r13,-16(%rsp,%r9,8)251movq %rdx,%r13252movq %r10,%r11253254xorq %rdx,%rdx255addq %r11,%r13256adcq $0,%rdx257movq %r13,-8(%rsp,%r9,8)258movq %rdx,(%rsp,%r9,8)259260leaq 1(%r14),%r14261jmp .Louter262.align 16263.Louter:264leaq 24+128(%rsp,%r9,8),%rdx265andq $-16,%rdx266pxor %xmm4,%xmm4267pxor %xmm5,%xmm5268movdqa -128(%r12),%xmm0269movdqa -112(%r12),%xmm1270movdqa -96(%r12),%xmm2271movdqa -80(%r12),%xmm3272pand -128(%rdx),%xmm0273pand -112(%rdx),%xmm1274por %xmm0,%xmm4275pand -96(%rdx),%xmm2276por %xmm1,%xmm5277pand -80(%rdx),%xmm3278por %xmm2,%xmm4279por %xmm3,%xmm5280movdqa -64(%r12),%xmm0281movdqa -48(%r12),%xmm1282movdqa -32(%r12),%xmm2283movdqa -16(%r12),%xmm3284pand -64(%rdx),%xmm0285pand -48(%rdx),%xmm1286por %xmm0,%xmm4287pand -32(%rdx),%xmm2288por %xmm1,%xmm5289pand -16(%rdx),%xmm3290por %xmm2,%xmm4291por %xmm3,%xmm5292movdqa 0(%r12),%xmm0293movdqa 16(%r12),%xmm1294movdqa 32(%r12),%xmm2295movdqa 48(%r12),%xmm3296pand 0(%rdx),%xmm0297pand 16(%rdx),%xmm1298por %xmm0,%xmm4299pand 32(%rdx),%xmm2300por %xmm1,%xmm5301pand 48(%rdx),%xmm3302por %xmm2,%xmm4303por %xmm3,%xmm5304movdqa 64(%r12),%xmm0305movdqa 80(%r12),%xmm1306movdqa 96(%r12),%xmm2307movdqa 112(%r12),%xmm3308pand 64(%rdx),%xmm0309pand 80(%rdx),%xmm1310por %xmm0,%xmm4311pand 96(%rdx),%xmm2312por %xmm1,%xmm5313pand 112(%rdx),%xmm3314por %xmm2,%xmm4315por %xmm3,%xmm5316por %xmm5,%xmm4317pshufd $0x4e,%xmm4,%xmm0318por %xmm4,%xmm0319leaq 256(%r12),%r12320321movq (%rsi),%rax322.byte 102,72,15,126,195323324xorq %r15,%r15325movq %r8,%rbp326movq (%rsp),%r10327328mulq %rbx329addq %rax,%r10330movq (%rcx),%rax331adcq $0,%rdx332333imulq %r10,%rbp334movq %rdx,%r11335336mulq %rbp337addq %rax,%r10338movq 8(%rsi),%rax339adcq $0,%rdx340movq 8(%rsp),%r10341movq %rdx,%r13342343leaq 1(%r15),%r15344jmp .Linner_enter345346.align 16347.Linner:348addq %rax,%r13349movq (%rsi,%r15,8),%rax350adcq $0,%rdx351addq %r10,%r13352movq (%rsp,%r15,8),%r10353adcq $0,%rdx354movq %r13,-16(%rsp,%r15,8)355movq %rdx,%r13356357.Linner_enter:358mulq %rbx359addq %rax,%r11360movq (%rcx,%r15,8),%rax361adcq $0,%rdx362addq %r11,%r10363movq %rdx,%r11364adcq $0,%r11365leaq 1(%r15),%r15366367mulq %rbp368cmpq %r9,%r15369jne .Linner370371addq %rax,%r13372adcq $0,%rdx373addq %r10,%r13374movq (%rsp,%r9,8),%r10375adcq $0,%rdx376movq %r13,-16(%rsp,%r9,8)377movq %rdx,%r13378379xorq %rdx,%rdx380addq %r11,%r13381adcq $0,%rdx382addq %r10,%r13383adcq $0,%rdx384movq %r13,-8(%rsp,%r9,8)385movq %rdx,(%rsp,%r9,8)386387leaq 1(%r14),%r14388cmpq %r9,%r14389jb .Louter390391xorq %r14,%r14392movq (%rsp),%rax393leaq (%rsp),%rsi394movq %r9,%r15395jmp .Lsub396.align 16397.Lsub: sbbq (%rcx,%r14,8),%rax398movq %rax,(%rdi,%r14,8)399movq 8(%rsi,%r14,8),%rax400leaq 1(%r14),%r14401decq %r15402jnz .Lsub403404sbbq $0,%rax405movq $-1,%rbx406xorq %rax,%rbx407xorq %r14,%r14408movq %r9,%r15409410.Lcopy:411movq (%rdi,%r14,8),%rcx412movq (%rsp,%r14,8),%rdx413andq %rbx,%rcx414andq %rax,%rdx415movq %r14,(%rsp,%r14,8)416orq %rcx,%rdx417movq %rdx,(%rdi,%r14,8)418leaq 1(%r14),%r14419subq $1,%r15420jnz .Lcopy421422movq 8(%rsp,%r9,8),%rsi423.cfi_def_cfa %rsi,8424movq $1,%rax425426movq -48(%rsi),%r15427.cfi_restore %r15428movq -40(%rsi),%r14429.cfi_restore %r14430movq -32(%rsi),%r13431.cfi_restore %r13432movq -24(%rsi),%r12433.cfi_restore %r12434movq -16(%rsi),%rbp435.cfi_restore %rbp436movq -8(%rsi),%rbx437.cfi_restore %rbx438leaq (%rsi),%rsp439.cfi_def_cfa_register %rsp440.Lmul_epilogue:441.byte 0xf3,0xc3442.cfi_endproc443.size bn_mul_mont_gather5,.-bn_mul_mont_gather5444.type bn_mul4x_mont_gather5,@function445.align 32446bn_mul4x_mont_gather5:447.cfi_startproc448.byte 0x67449movq %rsp,%rax450.cfi_def_cfa_register %rax451.Lmul4x_enter:452andl $0x80108,%r11d453cmpl $0x80108,%r11d454je .Lmulx4x_enter455pushq %rbx456.cfi_offset %rbx,-16457pushq %rbp458.cfi_offset %rbp,-24459pushq %r12460.cfi_offset %r12,-32461pushq %r13462.cfi_offset %r13,-40463pushq %r14464.cfi_offset %r14,-48465pushq %r15466.cfi_offset %r15,-56467.Lmul4x_prologue:468469.byte 0x67470shll $3,%r9d471leaq (%r9,%r9,2),%r10472negq %r9473474475476477478479480481482483leaq -320(%rsp,%r9,2),%r11484movq %rsp,%rbp485subq %rdi,%r11486andq $4095,%r11487cmpq %r11,%r10488jb .Lmul4xsp_alt489subq %r11,%rbp490leaq -320(%rbp,%r9,2),%rbp491jmp .Lmul4xsp_done492493.align 32494.Lmul4xsp_alt:495leaq 4096-320(,%r9,2),%r10496leaq -320(%rbp,%r9,2),%rbp497subq %r10,%r11498movq $0,%r10499cmovcq %r10,%r11500subq %r11,%rbp501.Lmul4xsp_done:502andq $-64,%rbp503movq %rsp,%r11504subq %rbp,%r11505andq $-4096,%r11506leaq (%r11,%rbp,1),%rsp507movq (%rsp),%r10508cmpq %rbp,%rsp509ja .Lmul4x_page_walk510jmp .Lmul4x_page_walk_done511512.Lmul4x_page_walk:513leaq -4096(%rsp),%rsp514movq (%rsp),%r10515cmpq %rbp,%rsp516ja .Lmul4x_page_walk517.Lmul4x_page_walk_done:518519negq %r9520521movq %rax,40(%rsp)522.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x08523.Lmul4x_body:524525call mul4x_internal526527movq 40(%rsp),%rsi528.cfi_def_cfa %rsi,8529movq $1,%rax530531movq -48(%rsi),%r15532.cfi_restore %r15533movq -40(%rsi),%r14534.cfi_restore %r14535movq -32(%rsi),%r13536.cfi_restore %r13537movq -24(%rsi),%r12538.cfi_restore %r12539movq -16(%rsi),%rbp540.cfi_restore %rbp541movq -8(%rsi),%rbx542.cfi_restore %rbx543leaq (%rsi),%rsp544.cfi_def_cfa_register %rsp545.Lmul4x_epilogue:546.byte 0xf3,0xc3547.cfi_endproc548.size bn_mul4x_mont_gather5,.-bn_mul4x_mont_gather5549550.type mul4x_internal,@function551.align 32552mul4x_internal:553.cfi_startproc554shlq $5,%r9555movd 8(%rax),%xmm5556leaq .Linc(%rip),%rax557leaq 128(%rdx,%r9,1),%r13558shrq $5,%r9559movdqa 0(%rax),%xmm0560movdqa 16(%rax),%xmm1561leaq 88-112(%rsp,%r9,1),%r10562leaq 128(%rdx),%r12563564pshufd $0,%xmm5,%xmm5565movdqa %xmm1,%xmm4566.byte 0x67,0x67567movdqa %xmm1,%xmm2568paddd %xmm0,%xmm1569pcmpeqd %xmm5,%xmm0570.byte 0x67571movdqa %xmm4,%xmm3572paddd %xmm1,%xmm2573pcmpeqd %xmm5,%xmm1574movdqa %xmm0,112(%r10)575movdqa %xmm4,%xmm0576577paddd %xmm2,%xmm3578pcmpeqd %xmm5,%xmm2579movdqa %xmm1,128(%r10)580movdqa %xmm4,%xmm1581582paddd %xmm3,%xmm0583pcmpeqd %xmm5,%xmm3584movdqa %xmm2,144(%r10)585movdqa %xmm4,%xmm2586587paddd %xmm0,%xmm1588pcmpeqd %xmm5,%xmm0589movdqa %xmm3,160(%r10)590movdqa %xmm4,%xmm3591paddd %xmm1,%xmm2592pcmpeqd %xmm5,%xmm1593movdqa %xmm0,176(%r10)594movdqa %xmm4,%xmm0595596paddd %xmm2,%xmm3597pcmpeqd %xmm5,%xmm2598movdqa %xmm1,192(%r10)599movdqa %xmm4,%xmm1600601paddd %xmm3,%xmm0602pcmpeqd %xmm5,%xmm3603movdqa %xmm2,208(%r10)604movdqa %xmm4,%xmm2605606paddd %xmm0,%xmm1607pcmpeqd %xmm5,%xmm0608movdqa %xmm3,224(%r10)609movdqa %xmm4,%xmm3610paddd %xmm1,%xmm2611pcmpeqd %xmm5,%xmm1612movdqa %xmm0,240(%r10)613movdqa %xmm4,%xmm0614615paddd %xmm2,%xmm3616pcmpeqd %xmm5,%xmm2617movdqa %xmm1,256(%r10)618movdqa %xmm4,%xmm1619620paddd %xmm3,%xmm0621pcmpeqd %xmm5,%xmm3622movdqa %xmm2,272(%r10)623movdqa %xmm4,%xmm2624625paddd %xmm0,%xmm1626pcmpeqd %xmm5,%xmm0627movdqa %xmm3,288(%r10)628movdqa %xmm4,%xmm3629paddd %xmm1,%xmm2630pcmpeqd %xmm5,%xmm1631movdqa %xmm0,304(%r10)632633paddd %xmm2,%xmm3634.byte 0x67635pcmpeqd %xmm5,%xmm2636movdqa %xmm1,320(%r10)637638pcmpeqd %xmm5,%xmm3639movdqa %xmm2,336(%r10)640pand 64(%r12),%xmm0641642pand 80(%r12),%xmm1643pand 96(%r12),%xmm2644movdqa %xmm3,352(%r10)645pand 112(%r12),%xmm3646por %xmm2,%xmm0647por %xmm3,%xmm1648movdqa -128(%r12),%xmm4649movdqa -112(%r12),%xmm5650movdqa -96(%r12),%xmm2651pand 112(%r10),%xmm4652movdqa -80(%r12),%xmm3653pand 128(%r10),%xmm5654por %xmm4,%xmm0655pand 144(%r10),%xmm2656por %xmm5,%xmm1657pand 160(%r10),%xmm3658por %xmm2,%xmm0659por %xmm3,%xmm1660movdqa -64(%r12),%xmm4661movdqa -48(%r12),%xmm5662movdqa -32(%r12),%xmm2663pand 176(%r10),%xmm4664movdqa -16(%r12),%xmm3665pand 192(%r10),%xmm5666por %xmm4,%xmm0667pand 208(%r10),%xmm2668por %xmm5,%xmm1669pand 224(%r10),%xmm3670por %xmm2,%xmm0671por %xmm3,%xmm1672movdqa 0(%r12),%xmm4673movdqa 16(%r12),%xmm5674movdqa 32(%r12),%xmm2675pand 240(%r10),%xmm4676movdqa 48(%r12),%xmm3677pand 256(%r10),%xmm5678por %xmm4,%xmm0679pand 272(%r10),%xmm2680por %xmm5,%xmm1681pand 288(%r10),%xmm3682por %xmm2,%xmm0683por %xmm3,%xmm1684por %xmm1,%xmm0685pshufd $0x4e,%xmm0,%xmm1686por %xmm1,%xmm0687leaq 256(%r12),%r12688.byte 102,72,15,126,195689690movq %r13,16+8(%rsp)691movq %rdi,56+8(%rsp)692693movq (%r8),%r8694movq (%rsi),%rax695leaq (%rsi,%r9,1),%rsi696negq %r9697698movq %r8,%rbp699mulq %rbx700movq %rax,%r10701movq (%rcx),%rax702703imulq %r10,%rbp704leaq 64+8(%rsp),%r14705movq %rdx,%r11706707mulq %rbp708addq %rax,%r10709movq 8(%rsi,%r9,1),%rax710adcq $0,%rdx711movq %rdx,%rdi712713mulq %rbx714addq %rax,%r11715movq 8(%rcx),%rax716adcq $0,%rdx717movq %rdx,%r10718719mulq %rbp720addq %rax,%rdi721movq 16(%rsi,%r9,1),%rax722adcq $0,%rdx723addq %r11,%rdi724leaq 32(%r9),%r15725leaq 32(%rcx),%rcx726adcq $0,%rdx727movq %rdi,(%r14)728movq %rdx,%r13729jmp .L1st4x730731.align 32732.L1st4x:733mulq %rbx734addq %rax,%r10735movq -16(%rcx),%rax736leaq 32(%r14),%r14737adcq $0,%rdx738movq %rdx,%r11739740mulq %rbp741addq %rax,%r13742movq -8(%rsi,%r15,1),%rax743adcq $0,%rdx744addq %r10,%r13745adcq $0,%rdx746movq %r13,-24(%r14)747movq %rdx,%rdi748749mulq %rbx750addq %rax,%r11751movq -8(%rcx),%rax752adcq $0,%rdx753movq %rdx,%r10754755mulq %rbp756addq %rax,%rdi757movq (%rsi,%r15,1),%rax758adcq $0,%rdx759addq %r11,%rdi760adcq $0,%rdx761movq %rdi,-16(%r14)762movq %rdx,%r13763764mulq %rbx765addq %rax,%r10766movq 0(%rcx),%rax767adcq $0,%rdx768movq %rdx,%r11769770mulq %rbp771addq %rax,%r13772movq 8(%rsi,%r15,1),%rax773adcq $0,%rdx774addq %r10,%r13775adcq $0,%rdx776movq %r13,-8(%r14)777movq %rdx,%rdi778779mulq %rbx780addq %rax,%r11781movq 8(%rcx),%rax782adcq $0,%rdx783movq %rdx,%r10784785mulq %rbp786addq %rax,%rdi787movq 16(%rsi,%r15,1),%rax788adcq $0,%rdx789addq %r11,%rdi790leaq 32(%rcx),%rcx791adcq $0,%rdx792movq %rdi,(%r14)793movq %rdx,%r13794795addq $32,%r15796jnz .L1st4x797798mulq %rbx799addq %rax,%r10800movq -16(%rcx),%rax801leaq 32(%r14),%r14802adcq $0,%rdx803movq %rdx,%r11804805mulq %rbp806addq %rax,%r13807movq -8(%rsi),%rax808adcq $0,%rdx809addq %r10,%r13810adcq $0,%rdx811movq %r13,-24(%r14)812movq %rdx,%rdi813814mulq %rbx815addq %rax,%r11816movq -8(%rcx),%rax817adcq $0,%rdx818movq %rdx,%r10819820mulq %rbp821addq %rax,%rdi822movq (%rsi,%r9,1),%rax823adcq $0,%rdx824addq %r11,%rdi825adcq $0,%rdx826movq %rdi,-16(%r14)827movq %rdx,%r13828829leaq (%rcx,%r9,1),%rcx830831xorq %rdi,%rdi832addq %r10,%r13833adcq $0,%rdi834movq %r13,-8(%r14)835836jmp .Louter4x837838.align 32839.Louter4x:840leaq 16+128(%r14),%rdx841pxor %xmm4,%xmm4842pxor %xmm5,%xmm5843movdqa -128(%r12),%xmm0844movdqa -112(%r12),%xmm1845movdqa -96(%r12),%xmm2846movdqa -80(%r12),%xmm3847pand -128(%rdx),%xmm0848pand -112(%rdx),%xmm1849por %xmm0,%xmm4850pand -96(%rdx),%xmm2851por %xmm1,%xmm5852pand -80(%rdx),%xmm3853por %xmm2,%xmm4854por %xmm3,%xmm5855movdqa -64(%r12),%xmm0856movdqa -48(%r12),%xmm1857movdqa -32(%r12),%xmm2858movdqa -16(%r12),%xmm3859pand -64(%rdx),%xmm0860pand -48(%rdx),%xmm1861por %xmm0,%xmm4862pand -32(%rdx),%xmm2863por %xmm1,%xmm5864pand -16(%rdx),%xmm3865por %xmm2,%xmm4866por %xmm3,%xmm5867movdqa 0(%r12),%xmm0868movdqa 16(%r12),%xmm1869movdqa 32(%r12),%xmm2870movdqa 48(%r12),%xmm3871pand 0(%rdx),%xmm0872pand 16(%rdx),%xmm1873por %xmm0,%xmm4874pand 32(%rdx),%xmm2875por %xmm1,%xmm5876pand 48(%rdx),%xmm3877por %xmm2,%xmm4878por %xmm3,%xmm5879movdqa 64(%r12),%xmm0880movdqa 80(%r12),%xmm1881movdqa 96(%r12),%xmm2882movdqa 112(%r12),%xmm3883pand 64(%rdx),%xmm0884pand 80(%rdx),%xmm1885por %xmm0,%xmm4886pand 96(%rdx),%xmm2887por %xmm1,%xmm5888pand 112(%rdx),%xmm3889por %xmm2,%xmm4890por %xmm3,%xmm5891por %xmm5,%xmm4892pshufd $0x4e,%xmm4,%xmm0893por %xmm4,%xmm0894leaq 256(%r12),%r12895.byte 102,72,15,126,195896897movq (%r14,%r9,1),%r10898movq %r8,%rbp899mulq %rbx900addq %rax,%r10901movq (%rcx),%rax902adcq $0,%rdx903904imulq %r10,%rbp905movq %rdx,%r11906movq %rdi,(%r14)907908leaq (%r14,%r9,1),%r14909910mulq %rbp911addq %rax,%r10912movq 8(%rsi,%r9,1),%rax913adcq $0,%rdx914movq %rdx,%rdi915916mulq %rbx917addq %rax,%r11918movq 8(%rcx),%rax919adcq $0,%rdx920addq 8(%r14),%r11921adcq $0,%rdx922movq %rdx,%r10923924mulq %rbp925addq %rax,%rdi926movq 16(%rsi,%r9,1),%rax927adcq $0,%rdx928addq %r11,%rdi929leaq 32(%r9),%r15930leaq 32(%rcx),%rcx931adcq $0,%rdx932movq %rdx,%r13933jmp .Linner4x934935.align 32936.Linner4x:937mulq %rbx938addq %rax,%r10939movq -16(%rcx),%rax940adcq $0,%rdx941addq 16(%r14),%r10942leaq 32(%r14),%r14943adcq $0,%rdx944movq %rdx,%r11945946mulq %rbp947addq %rax,%r13948movq -8(%rsi,%r15,1),%rax949adcq $0,%rdx950addq %r10,%r13951adcq $0,%rdx952movq %rdi,-32(%r14)953movq %rdx,%rdi954955mulq %rbx956addq %rax,%r11957movq -8(%rcx),%rax958adcq $0,%rdx959addq -8(%r14),%r11960adcq $0,%rdx961movq %rdx,%r10962963mulq %rbp964addq %rax,%rdi965movq (%rsi,%r15,1),%rax966adcq $0,%rdx967addq %r11,%rdi968adcq $0,%rdx969movq %r13,-24(%r14)970movq %rdx,%r13971972mulq %rbx973addq %rax,%r10974movq 0(%rcx),%rax975adcq $0,%rdx976addq (%r14),%r10977adcq $0,%rdx978movq %rdx,%r11979980mulq %rbp981addq %rax,%r13982movq 8(%rsi,%r15,1),%rax983adcq $0,%rdx984addq %r10,%r13985adcq $0,%rdx986movq %rdi,-16(%r14)987movq %rdx,%rdi988989mulq %rbx990addq %rax,%r11991movq 8(%rcx),%rax992adcq $0,%rdx993addq 8(%r14),%r11994adcq $0,%rdx995movq %rdx,%r10996997mulq %rbp998addq %rax,%rdi999movq 16(%rsi,%r15,1),%rax1000adcq $0,%rdx1001addq %r11,%rdi1002leaq 32(%rcx),%rcx1003adcq $0,%rdx1004movq %r13,-8(%r14)1005movq %rdx,%r1310061007addq $32,%r151008jnz .Linner4x10091010mulq %rbx1011addq %rax,%r101012movq -16(%rcx),%rax1013adcq $0,%rdx1014addq 16(%r14),%r101015leaq 32(%r14),%r141016adcq $0,%rdx1017movq %rdx,%r1110181019mulq %rbp1020addq %rax,%r131021movq -8(%rsi),%rax1022adcq $0,%rdx1023addq %r10,%r131024adcq $0,%rdx1025movq %rdi,-32(%r14)1026movq %rdx,%rdi10271028mulq %rbx1029addq %rax,%r111030movq %rbp,%rax1031movq -8(%rcx),%rbp1032adcq $0,%rdx1033addq -8(%r14),%r111034adcq $0,%rdx1035movq %rdx,%r1010361037mulq %rbp1038addq %rax,%rdi1039movq (%rsi,%r9,1),%rax1040adcq $0,%rdx1041addq %r11,%rdi1042adcq $0,%rdx1043movq %r13,-24(%r14)1044movq %rdx,%r1310451046movq %rdi,-16(%r14)1047leaq (%rcx,%r9,1),%rcx10481049xorq %rdi,%rdi1050addq %r10,%r131051adcq $0,%rdi1052addq (%r14),%r131053adcq $0,%rdi1054movq %r13,-8(%r14)10551056cmpq 16+8(%rsp),%r121057jb .Louter4x1058xorq %rax,%rax1059subq %r13,%rbp1060adcq %r15,%r151061orq %r15,%rdi1062subq %rdi,%rax1063leaq (%r14,%r9,1),%rbx1064movq (%rcx),%r121065leaq (%rcx),%rbp1066movq %r9,%rcx1067sarq $3+2,%rcx1068movq 56+8(%rsp),%rdi1069decq %r121070xorq %r10,%r101071movq 8(%rbp),%r131072movq 16(%rbp),%r141073movq 24(%rbp),%r151074jmp .Lsqr4x_sub_entry1075.cfi_endproc1076.size mul4x_internal,.-mul4x_internal1077.globl bn_power51078.type bn_power5,@function1079.align 321080bn_power5:1081.cfi_startproc1082movq %rsp,%rax1083.cfi_def_cfa_register %rax1084movl OPENSSL_ia32cap_P+8(%rip),%r11d1085andl $0x80108,%r11d1086cmpl $0x80108,%r11d1087je .Lpowerx5_enter1088pushq %rbx1089.cfi_offset %rbx,-161090pushq %rbp1091.cfi_offset %rbp,-241092pushq %r121093.cfi_offset %r12,-321094pushq %r131095.cfi_offset %r13,-401096pushq %r141097.cfi_offset %r14,-481098pushq %r151099.cfi_offset %r15,-561100.Lpower5_prologue:11011102shll $3,%r9d1103leal (%r9,%r9,2),%r10d1104negq %r91105movq (%r8),%r8110611071108110911101111111211131114leaq -320(%rsp,%r9,2),%r111115movq %rsp,%rbp1116subq %rdi,%r111117andq $4095,%r111118cmpq %r11,%r101119jb .Lpwr_sp_alt1120subq %r11,%rbp1121leaq -320(%rbp,%r9,2),%rbp1122jmp .Lpwr_sp_done11231124.align 321125.Lpwr_sp_alt:1126leaq 4096-320(,%r9,2),%r101127leaq -320(%rbp,%r9,2),%rbp1128subq %r10,%r111129movq $0,%r101130cmovcq %r10,%r111131subq %r11,%rbp1132.Lpwr_sp_done:1133andq $-64,%rbp1134movq %rsp,%r111135subq %rbp,%r111136andq $-4096,%r111137leaq (%r11,%rbp,1),%rsp1138movq (%rsp),%r101139cmpq %rbp,%rsp1140ja .Lpwr_page_walk1141jmp .Lpwr_page_walk_done11421143.Lpwr_page_walk:1144leaq -4096(%rsp),%rsp1145movq (%rsp),%r101146cmpq %rbp,%rsp1147ja .Lpwr_page_walk1148.Lpwr_page_walk_done:11491150movq %r9,%r101151negq %r911521153115411551156115711581159116011611162movq %r8,32(%rsp)1163movq %rax,40(%rsp)1164.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x081165.Lpower5_body:1166.byte 102,72,15,110,2071167.byte 102,72,15,110,2091168.byte 102,73,15,110,2181169.byte 102,72,15,110,22611701171call __bn_sqr8x_internal1172call __bn_post4x_internal1173call __bn_sqr8x_internal1174call __bn_post4x_internal1175call __bn_sqr8x_internal1176call __bn_post4x_internal1177call __bn_sqr8x_internal1178call __bn_post4x_internal1179call __bn_sqr8x_internal1180call __bn_post4x_internal11811182.byte 102,72,15,126,2091183.byte 102,72,15,126,2261184movq %rsi,%rdi1185movq 40(%rsp),%rax1186leaq 32(%rsp),%r811871188call mul4x_internal11891190movq 40(%rsp),%rsi1191.cfi_def_cfa %rsi,81192movq $1,%rax1193movq -48(%rsi),%r151194.cfi_restore %r151195movq -40(%rsi),%r141196.cfi_restore %r141197movq -32(%rsi),%r131198.cfi_restore %r131199movq -24(%rsi),%r121200.cfi_restore %r121201movq -16(%rsi),%rbp1202.cfi_restore %rbp1203movq -8(%rsi),%rbx1204.cfi_restore %rbx1205leaq (%rsi),%rsp1206.cfi_def_cfa_register %rsp1207.Lpower5_epilogue:1208.byte 0xf3,0xc31209.cfi_endproc1210.size bn_power5,.-bn_power512111212.globl bn_sqr8x_internal1213.hidden bn_sqr8x_internal1214.type bn_sqr8x_internal,@function1215.align 321216bn_sqr8x_internal:1217__bn_sqr8x_internal:1218.cfi_startproc12191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292leaq 32(%r10),%rbp1293leaq (%rsi,%r9,1),%rsi12941295movq %r9,%rcx129612971298movq -32(%rsi,%rbp,1),%r141299leaq 48+8(%rsp,%r9,2),%rdi1300movq -24(%rsi,%rbp,1),%rax1301leaq -32(%rdi,%rbp,1),%rdi1302movq -16(%rsi,%rbp,1),%rbx1303movq %rax,%r1513041305mulq %r141306movq %rax,%r101307movq %rbx,%rax1308movq %rdx,%r111309movq %r10,-24(%rdi,%rbp,1)13101311mulq %r141312addq %rax,%r111313movq %rbx,%rax1314adcq $0,%rdx1315movq %r11,-16(%rdi,%rbp,1)1316movq %rdx,%r10131713181319movq -8(%rsi,%rbp,1),%rbx1320mulq %r151321movq %rax,%r121322movq %rbx,%rax1323movq %rdx,%r1313241325leaq (%rbp),%rcx1326mulq %r141327addq %rax,%r101328movq %rbx,%rax1329movq %rdx,%r111330adcq $0,%r111331addq %r12,%r101332adcq $0,%r111333movq %r10,-8(%rdi,%rcx,1)1334jmp .Lsqr4x_1st13351336.align 321337.Lsqr4x_1st:1338movq (%rsi,%rcx,1),%rbx1339mulq %r151340addq %rax,%r131341movq %rbx,%rax1342movq %rdx,%r121343adcq $0,%r1213441345mulq %r141346addq %rax,%r111347movq %rbx,%rax1348movq 8(%rsi,%rcx,1),%rbx1349movq %rdx,%r101350adcq $0,%r101351addq %r13,%r111352adcq $0,%r10135313541355mulq %r151356addq %rax,%r121357movq %rbx,%rax1358movq %r11,(%rdi,%rcx,1)1359movq %rdx,%r131360adcq $0,%r1313611362mulq %r141363addq %rax,%r101364movq %rbx,%rax1365movq 16(%rsi,%rcx,1),%rbx1366movq %rdx,%r111367adcq $0,%r111368addq %r12,%r101369adcq $0,%r1113701371mulq %r151372addq %rax,%r131373movq %rbx,%rax1374movq %r10,8(%rdi,%rcx,1)1375movq %rdx,%r121376adcq $0,%r1213771378mulq %r141379addq %rax,%r111380movq %rbx,%rax1381movq 24(%rsi,%rcx,1),%rbx1382movq %rdx,%r101383adcq $0,%r101384addq %r13,%r111385adcq $0,%r10138613871388mulq %r151389addq %rax,%r121390movq %rbx,%rax1391movq %r11,16(%rdi,%rcx,1)1392movq %rdx,%r131393adcq $0,%r131394leaq 32(%rcx),%rcx13951396mulq %r141397addq %rax,%r101398movq %rbx,%rax1399movq %rdx,%r111400adcq $0,%r111401addq %r12,%r101402adcq $0,%r111403movq %r10,-8(%rdi,%rcx,1)14041405cmpq $0,%rcx1406jne .Lsqr4x_1st14071408mulq %r151409addq %rax,%r131410leaq 16(%rbp),%rbp1411adcq $0,%rdx1412addq %r11,%r131413adcq $0,%rdx14141415movq %r13,(%rdi)1416movq %rdx,%r121417movq %rdx,8(%rdi)1418jmp .Lsqr4x_outer14191420.align 321421.Lsqr4x_outer:1422movq -32(%rsi,%rbp,1),%r141423leaq 48+8(%rsp,%r9,2),%rdi1424movq -24(%rsi,%rbp,1),%rax1425leaq -32(%rdi,%rbp,1),%rdi1426movq -16(%rsi,%rbp,1),%rbx1427movq %rax,%r1514281429mulq %r141430movq -24(%rdi,%rbp,1),%r101431addq %rax,%r101432movq %rbx,%rax1433adcq $0,%rdx1434movq %r10,-24(%rdi,%rbp,1)1435movq %rdx,%r1114361437mulq %r141438addq %rax,%r111439movq %rbx,%rax1440adcq $0,%rdx1441addq -16(%rdi,%rbp,1),%r111442movq %rdx,%r101443adcq $0,%r101444movq %r11,-16(%rdi,%rbp,1)14451446xorq %r12,%r1214471448movq -8(%rsi,%rbp,1),%rbx1449mulq %r151450addq %rax,%r121451movq %rbx,%rax1452adcq $0,%rdx1453addq -8(%rdi,%rbp,1),%r121454movq %rdx,%r131455adcq $0,%r1314561457mulq %r141458addq %rax,%r101459movq %rbx,%rax1460adcq $0,%rdx1461addq %r12,%r101462movq %rdx,%r111463adcq $0,%r111464movq %r10,-8(%rdi,%rbp,1)14651466leaq (%rbp),%rcx1467jmp .Lsqr4x_inner14681469.align 321470.Lsqr4x_inner:1471movq (%rsi,%rcx,1),%rbx1472mulq %r151473addq %rax,%r131474movq %rbx,%rax1475movq %rdx,%r121476adcq $0,%r121477addq (%rdi,%rcx,1),%r131478adcq $0,%r1214791480.byte 0x671481mulq %r141482addq %rax,%r111483movq %rbx,%rax1484movq 8(%rsi,%rcx,1),%rbx1485movq %rdx,%r101486adcq $0,%r101487addq %r13,%r111488adcq $0,%r1014891490mulq %r151491addq %rax,%r121492movq %r11,(%rdi,%rcx,1)1493movq %rbx,%rax1494movq %rdx,%r131495adcq $0,%r131496addq 8(%rdi,%rcx,1),%r121497leaq 16(%rcx),%rcx1498adcq $0,%r1314991500mulq %r141501addq %rax,%r101502movq %rbx,%rax1503adcq $0,%rdx1504addq %r12,%r101505movq %rdx,%r111506adcq $0,%r111507movq %r10,-8(%rdi,%rcx,1)15081509cmpq $0,%rcx1510jne .Lsqr4x_inner15111512.byte 0x671513mulq %r151514addq %rax,%r131515adcq $0,%rdx1516addq %r11,%r131517adcq $0,%rdx15181519movq %r13,(%rdi)1520movq %rdx,%r121521movq %rdx,8(%rdi)15221523addq $16,%rbp1524jnz .Lsqr4x_outer152515261527movq -32(%rsi),%r141528leaq 48+8(%rsp,%r9,2),%rdi1529movq -24(%rsi),%rax1530leaq -32(%rdi,%rbp,1),%rdi1531movq -16(%rsi),%rbx1532movq %rax,%r1515331534mulq %r141535addq %rax,%r101536movq %rbx,%rax1537movq %rdx,%r111538adcq $0,%r1115391540mulq %r141541addq %rax,%r111542movq %rbx,%rax1543movq %r10,-24(%rdi)1544movq %rdx,%r101545adcq $0,%r101546addq %r13,%r111547movq -8(%rsi),%rbx1548adcq $0,%r1015491550mulq %r151551addq %rax,%r121552movq %rbx,%rax1553movq %r11,-16(%rdi)1554movq %rdx,%r131555adcq $0,%r1315561557mulq %r141558addq %rax,%r101559movq %rbx,%rax1560movq %rdx,%r111561adcq $0,%r111562addq %r12,%r101563adcq $0,%r111564movq %r10,-8(%rdi)15651566mulq %r151567addq %rax,%r131568movq -16(%rsi),%rax1569adcq $0,%rdx1570addq %r11,%r131571adcq $0,%rdx15721573movq %r13,(%rdi)1574movq %rdx,%r121575movq %rdx,8(%rdi)15761577mulq %rbx1578addq $16,%rbp1579xorq %r14,%r141580subq %r9,%rbp1581xorq %r15,%r1515821583addq %r12,%rax1584adcq $0,%rdx1585movq %rax,8(%rdi)1586movq %rdx,16(%rdi)1587movq %r15,24(%rdi)15881589movq -16(%rsi,%rbp,1),%rax1590leaq 48+8(%rsp),%rdi1591xorq %r10,%r101592movq 8(%rdi),%r1115931594leaq (%r14,%r10,2),%r121595shrq $63,%r101596leaq (%rcx,%r11,2),%r131597shrq $63,%r111598orq %r10,%r131599movq 16(%rdi),%r101600movq %r11,%r141601mulq %rax1602negq %r151603movq 24(%rdi),%r111604adcq %rax,%r121605movq -8(%rsi,%rbp,1),%rax1606movq %r12,(%rdi)1607adcq %rdx,%r1316081609leaq (%r14,%r10,2),%rbx1610movq %r13,8(%rdi)1611sbbq %r15,%r151612shrq $63,%r101613leaq (%rcx,%r11,2),%r81614shrq $63,%r111615orq %r10,%r81616movq 32(%rdi),%r101617movq %r11,%r141618mulq %rax1619negq %r151620movq 40(%rdi),%r111621adcq %rax,%rbx1622movq 0(%rsi,%rbp,1),%rax1623movq %rbx,16(%rdi)1624adcq %rdx,%r81625leaq 16(%rbp),%rbp1626movq %r8,24(%rdi)1627sbbq %r15,%r151628leaq 64(%rdi),%rdi1629jmp .Lsqr4x_shift_n_add16301631.align 321632.Lsqr4x_shift_n_add:1633leaq (%r14,%r10,2),%r121634shrq $63,%r101635leaq (%rcx,%r11,2),%r131636shrq $63,%r111637orq %r10,%r131638movq -16(%rdi),%r101639movq %r11,%r141640mulq %rax1641negq %r151642movq -8(%rdi),%r111643adcq %rax,%r121644movq -8(%rsi,%rbp,1),%rax1645movq %r12,-32(%rdi)1646adcq %rdx,%r1316471648leaq (%r14,%r10,2),%rbx1649movq %r13,-24(%rdi)1650sbbq %r15,%r151651shrq $63,%r101652leaq (%rcx,%r11,2),%r81653shrq $63,%r111654orq %r10,%r81655movq 0(%rdi),%r101656movq %r11,%r141657mulq %rax1658negq %r151659movq 8(%rdi),%r111660adcq %rax,%rbx1661movq 0(%rsi,%rbp,1),%rax1662movq %rbx,-16(%rdi)1663adcq %rdx,%r816641665leaq (%r14,%r10,2),%r121666movq %r8,-8(%rdi)1667sbbq %r15,%r151668shrq $63,%r101669leaq (%rcx,%r11,2),%r131670shrq $63,%r111671orq %r10,%r131672movq 16(%rdi),%r101673movq %r11,%r141674mulq %rax1675negq %r151676movq 24(%rdi),%r111677adcq %rax,%r121678movq 8(%rsi,%rbp,1),%rax1679movq %r12,0(%rdi)1680adcq %rdx,%r1316811682leaq (%r14,%r10,2),%rbx1683movq %r13,8(%rdi)1684sbbq %r15,%r151685shrq $63,%r101686leaq (%rcx,%r11,2),%r81687shrq $63,%r111688orq %r10,%r81689movq 32(%rdi),%r101690movq %r11,%r141691mulq %rax1692negq %r151693movq 40(%rdi),%r111694adcq %rax,%rbx1695movq 16(%rsi,%rbp,1),%rax1696movq %rbx,16(%rdi)1697adcq %rdx,%r81698movq %r8,24(%rdi)1699sbbq %r15,%r151700leaq 64(%rdi),%rdi1701addq $32,%rbp1702jnz .Lsqr4x_shift_n_add17031704leaq (%r14,%r10,2),%r121705.byte 0x671706shrq $63,%r101707leaq (%rcx,%r11,2),%r131708shrq $63,%r111709orq %r10,%r131710movq -16(%rdi),%r101711movq %r11,%r141712mulq %rax1713negq %r151714movq -8(%rdi),%r111715adcq %rax,%r121716movq -8(%rsi),%rax1717movq %r12,-32(%rdi)1718adcq %rdx,%r1317191720leaq (%r14,%r10,2),%rbx1721movq %r13,-24(%rdi)1722sbbq %r15,%r151723shrq $63,%r101724leaq (%rcx,%r11,2),%r81725shrq $63,%r111726orq %r10,%r81727mulq %rax1728negq %r151729adcq %rax,%rbx1730adcq %rdx,%r81731movq %rbx,-16(%rdi)1732movq %r8,-8(%rdi)1733.byte 102,72,15,126,2131734__bn_sqr8x_reduction:1735xorq %rax,%rax1736leaq (%r9,%rbp,1),%rcx1737leaq 48+8(%rsp,%r9,2),%rdx1738movq %rcx,0+8(%rsp)1739leaq 48+8(%rsp,%r9,1),%rdi1740movq %rdx,8+8(%rsp)1741negq %r91742jmp .L8x_reduction_loop17431744.align 321745.L8x_reduction_loop:1746leaq (%rdi,%r9,1),%rdi1747.byte 0x661748movq 0(%rdi),%rbx1749movq 8(%rdi),%r91750movq 16(%rdi),%r101751movq 24(%rdi),%r111752movq 32(%rdi),%r121753movq 40(%rdi),%r131754movq 48(%rdi),%r141755movq 56(%rdi),%r151756movq %rax,(%rdx)1757leaq 64(%rdi),%rdi17581759.byte 0x671760movq %rbx,%r81761imulq 32+8(%rsp),%rbx1762movq 0(%rbp),%rax1763movl $8,%ecx1764jmp .L8x_reduce17651766.align 321767.L8x_reduce:1768mulq %rbx1769movq 8(%rbp),%rax1770negq %r81771movq %rdx,%r81772adcq $0,%r817731774mulq %rbx1775addq %rax,%r91776movq 16(%rbp),%rax1777adcq $0,%rdx1778addq %r9,%r81779movq %rbx,48-8+8(%rsp,%rcx,8)1780movq %rdx,%r91781adcq $0,%r917821783mulq %rbx1784addq %rax,%r101785movq 24(%rbp),%rax1786adcq $0,%rdx1787addq %r10,%r91788movq 32+8(%rsp),%rsi1789movq %rdx,%r101790adcq $0,%r1017911792mulq %rbx1793addq %rax,%r111794movq 32(%rbp),%rax1795adcq $0,%rdx1796imulq %r8,%rsi1797addq %r11,%r101798movq %rdx,%r111799adcq $0,%r1118001801mulq %rbx1802addq %rax,%r121803movq 40(%rbp),%rax1804adcq $0,%rdx1805addq %r12,%r111806movq %rdx,%r121807adcq $0,%r1218081809mulq %rbx1810addq %rax,%r131811movq 48(%rbp),%rax1812adcq $0,%rdx1813addq %r13,%r121814movq %rdx,%r131815adcq $0,%r1318161817mulq %rbx1818addq %rax,%r141819movq 56(%rbp),%rax1820adcq $0,%rdx1821addq %r14,%r131822movq %rdx,%r141823adcq $0,%r1418241825mulq %rbx1826movq %rsi,%rbx1827addq %rax,%r151828movq 0(%rbp),%rax1829adcq $0,%rdx1830addq %r15,%r141831movq %rdx,%r151832adcq $0,%r1518331834decl %ecx1835jnz .L8x_reduce18361837leaq 64(%rbp),%rbp1838xorq %rax,%rax1839movq 8+8(%rsp),%rdx1840cmpq 0+8(%rsp),%rbp1841jae .L8x_no_tail18421843.byte 0x661844addq 0(%rdi),%r81845adcq 8(%rdi),%r91846adcq 16(%rdi),%r101847adcq 24(%rdi),%r111848adcq 32(%rdi),%r121849adcq 40(%rdi),%r131850adcq 48(%rdi),%r141851adcq 56(%rdi),%r151852sbbq %rsi,%rsi18531854movq 48+56+8(%rsp),%rbx1855movl $8,%ecx1856movq 0(%rbp),%rax1857jmp .L8x_tail18581859.align 321860.L8x_tail:1861mulq %rbx1862addq %rax,%r81863movq 8(%rbp),%rax1864movq %r8,(%rdi)1865movq %rdx,%r81866adcq $0,%r818671868mulq %rbx1869addq %rax,%r91870movq 16(%rbp),%rax1871adcq $0,%rdx1872addq %r9,%r81873leaq 8(%rdi),%rdi1874movq %rdx,%r91875adcq $0,%r918761877mulq %rbx1878addq %rax,%r101879movq 24(%rbp),%rax1880adcq $0,%rdx1881addq %r10,%r91882movq %rdx,%r101883adcq $0,%r1018841885mulq %rbx1886addq %rax,%r111887movq 32(%rbp),%rax1888adcq $0,%rdx1889addq %r11,%r101890movq %rdx,%r111891adcq $0,%r1118921893mulq %rbx1894addq %rax,%r121895movq 40(%rbp),%rax1896adcq $0,%rdx1897addq %r12,%r111898movq %rdx,%r121899adcq $0,%r1219001901mulq %rbx1902addq %rax,%r131903movq 48(%rbp),%rax1904adcq $0,%rdx1905addq %r13,%r121906movq %rdx,%r131907adcq $0,%r1319081909mulq %rbx1910addq %rax,%r141911movq 56(%rbp),%rax1912adcq $0,%rdx1913addq %r14,%r131914movq %rdx,%r141915adcq $0,%r1419161917mulq %rbx1918movq 48-16+8(%rsp,%rcx,8),%rbx1919addq %rax,%r151920adcq $0,%rdx1921addq %r15,%r141922movq 0(%rbp),%rax1923movq %rdx,%r151924adcq $0,%r1519251926decl %ecx1927jnz .L8x_tail19281929leaq 64(%rbp),%rbp1930movq 8+8(%rsp),%rdx1931cmpq 0+8(%rsp),%rbp1932jae .L8x_tail_done19331934movq 48+56+8(%rsp),%rbx1935negq %rsi1936movq 0(%rbp),%rax1937adcq 0(%rdi),%r81938adcq 8(%rdi),%r91939adcq 16(%rdi),%r101940adcq 24(%rdi),%r111941adcq 32(%rdi),%r121942adcq 40(%rdi),%r131943adcq 48(%rdi),%r141944adcq 56(%rdi),%r151945sbbq %rsi,%rsi19461947movl $8,%ecx1948jmp .L8x_tail19491950.align 321951.L8x_tail_done:1952xorq %rax,%rax1953addq (%rdx),%r81954adcq $0,%r91955adcq $0,%r101956adcq $0,%r111957adcq $0,%r121958adcq $0,%r131959adcq $0,%r141960adcq $0,%r151961adcq $0,%rax19621963negq %rsi1964.L8x_no_tail:1965adcq 0(%rdi),%r81966adcq 8(%rdi),%r91967adcq 16(%rdi),%r101968adcq 24(%rdi),%r111969adcq 32(%rdi),%r121970adcq 40(%rdi),%r131971adcq 48(%rdi),%r141972adcq 56(%rdi),%r151973adcq $0,%rax1974movq -8(%rbp),%rcx1975xorq %rsi,%rsi19761977.byte 102,72,15,126,21319781979movq %r8,0(%rdi)1980movq %r9,8(%rdi)1981.byte 102,73,15,126,2171982movq %r10,16(%rdi)1983movq %r11,24(%rdi)1984movq %r12,32(%rdi)1985movq %r13,40(%rdi)1986movq %r14,48(%rdi)1987movq %r15,56(%rdi)1988leaq 64(%rdi),%rdi19891990cmpq %rdx,%rdi1991jb .L8x_reduction_loop1992.byte 0xf3,0xc31993.cfi_endproc1994.size bn_sqr8x_internal,.-bn_sqr8x_internal1995.type __bn_post4x_internal,@function1996.align 321997__bn_post4x_internal:1998.cfi_startproc1999movq 0(%rbp),%r122000leaq (%rdi,%r9,1),%rbx2001movq %r9,%rcx2002.byte 102,72,15,126,2072003negq %rax2004.byte 102,72,15,126,2062005sarq $3+2,%rcx2006decq %r122007xorq %r10,%r102008movq 8(%rbp),%r132009movq 16(%rbp),%r142010movq 24(%rbp),%r152011jmp .Lsqr4x_sub_entry20122013.align 162014.Lsqr4x_sub:2015movq 0(%rbp),%r122016movq 8(%rbp),%r132017movq 16(%rbp),%r142018movq 24(%rbp),%r152019.Lsqr4x_sub_entry:2020leaq 32(%rbp),%rbp2021notq %r122022notq %r132023notq %r142024notq %r152025andq %rax,%r122026andq %rax,%r132027andq %rax,%r142028andq %rax,%r1520292030negq %r102031adcq 0(%rbx),%r122032adcq 8(%rbx),%r132033adcq 16(%rbx),%r142034adcq 24(%rbx),%r152035movq %r12,0(%rdi)2036leaq 32(%rbx),%rbx2037movq %r13,8(%rdi)2038sbbq %r10,%r102039movq %r14,16(%rdi)2040movq %r15,24(%rdi)2041leaq 32(%rdi),%rdi20422043incq %rcx2044jnz .Lsqr4x_sub20452046movq %r9,%r102047negq %r92048.byte 0xf3,0xc32049.cfi_endproc2050.size __bn_post4x_internal,.-__bn_post4x_internal2051.type bn_mulx4x_mont_gather5,@function2052.align 322053bn_mulx4x_mont_gather5:2054.cfi_startproc2055movq %rsp,%rax2056.cfi_def_cfa_register %rax2057.Lmulx4x_enter:2058pushq %rbx2059.cfi_offset %rbx,-162060pushq %rbp2061.cfi_offset %rbp,-242062pushq %r122063.cfi_offset %r12,-322064pushq %r132065.cfi_offset %r13,-402066pushq %r142067.cfi_offset %r14,-482068pushq %r152069.cfi_offset %r15,-562070.Lmulx4x_prologue:20712072shll $3,%r9d2073leaq (%r9,%r9,2),%r102074negq %r92075movq (%r8),%r820762077207820792080208120822083208420852086leaq -320(%rsp,%r9,2),%r112087movq %rsp,%rbp2088subq %rdi,%r112089andq $4095,%r112090cmpq %r11,%r102091jb .Lmulx4xsp_alt2092subq %r11,%rbp2093leaq -320(%rbp,%r9,2),%rbp2094jmp .Lmulx4xsp_done20952096.Lmulx4xsp_alt:2097leaq 4096-320(,%r9,2),%r102098leaq -320(%rbp,%r9,2),%rbp2099subq %r10,%r112100movq $0,%r102101cmovcq %r10,%r112102subq %r11,%rbp2103.Lmulx4xsp_done:2104andq $-64,%rbp2105movq %rsp,%r112106subq %rbp,%r112107andq $-4096,%r112108leaq (%r11,%rbp,1),%rsp2109movq (%rsp),%r102110cmpq %rbp,%rsp2111ja .Lmulx4x_page_walk2112jmp .Lmulx4x_page_walk_done21132114.Lmulx4x_page_walk:2115leaq -4096(%rsp),%rsp2116movq (%rsp),%r102117cmpq %rbp,%rsp2118ja .Lmulx4x_page_walk2119.Lmulx4x_page_walk_done:21202121212221232124212521262127212821292130213121322133movq %r8,32(%rsp)2134movq %rax,40(%rsp)2135.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x082136.Lmulx4x_body:2137call mulx4x_internal21382139movq 40(%rsp),%rsi2140.cfi_def_cfa %rsi,82141movq $1,%rax21422143movq -48(%rsi),%r152144.cfi_restore %r152145movq -40(%rsi),%r142146.cfi_restore %r142147movq -32(%rsi),%r132148.cfi_restore %r132149movq -24(%rsi),%r122150.cfi_restore %r122151movq -16(%rsi),%rbp2152.cfi_restore %rbp2153movq -8(%rsi),%rbx2154.cfi_restore %rbx2155leaq (%rsi),%rsp2156.cfi_def_cfa_register %rsp2157.Lmulx4x_epilogue:2158.byte 0xf3,0xc32159.cfi_endproc2160.size bn_mulx4x_mont_gather5,.-bn_mulx4x_mont_gather521612162.type mulx4x_internal,@function2163.align 322164mulx4x_internal:2165.cfi_startproc2166movq %r9,8(%rsp)2167movq %r9,%r102168negq %r92169shlq $5,%r92170negq %r102171leaq 128(%rdx,%r9,1),%r132172shrq $5+5,%r92173movd 8(%rax),%xmm52174subq $1,%r92175leaq .Linc(%rip),%rax2176movq %r13,16+8(%rsp)2177movq %r9,24+8(%rsp)2178movq %rdi,56+8(%rsp)2179movdqa 0(%rax),%xmm02180movdqa 16(%rax),%xmm12181leaq 88-112(%rsp,%r10,1),%r102182leaq 128(%rdx),%rdi21832184pshufd $0,%xmm5,%xmm52185movdqa %xmm1,%xmm42186.byte 0x672187movdqa %xmm1,%xmm22188.byte 0x672189paddd %xmm0,%xmm12190pcmpeqd %xmm5,%xmm02191movdqa %xmm4,%xmm32192paddd %xmm1,%xmm22193pcmpeqd %xmm5,%xmm12194movdqa %xmm0,112(%r10)2195movdqa %xmm4,%xmm021962197paddd %xmm2,%xmm32198pcmpeqd %xmm5,%xmm22199movdqa %xmm1,128(%r10)2200movdqa %xmm4,%xmm122012202paddd %xmm3,%xmm02203pcmpeqd %xmm5,%xmm32204movdqa %xmm2,144(%r10)2205movdqa %xmm4,%xmm222062207paddd %xmm0,%xmm12208pcmpeqd %xmm5,%xmm02209movdqa %xmm3,160(%r10)2210movdqa %xmm4,%xmm32211paddd %xmm1,%xmm22212pcmpeqd %xmm5,%xmm12213movdqa %xmm0,176(%r10)2214movdqa %xmm4,%xmm022152216paddd %xmm2,%xmm32217pcmpeqd %xmm5,%xmm22218movdqa %xmm1,192(%r10)2219movdqa %xmm4,%xmm122202221paddd %xmm3,%xmm02222pcmpeqd %xmm5,%xmm32223movdqa %xmm2,208(%r10)2224movdqa %xmm4,%xmm222252226paddd %xmm0,%xmm12227pcmpeqd %xmm5,%xmm02228movdqa %xmm3,224(%r10)2229movdqa %xmm4,%xmm32230paddd %xmm1,%xmm22231pcmpeqd %xmm5,%xmm12232movdqa %xmm0,240(%r10)2233movdqa %xmm4,%xmm022342235paddd %xmm2,%xmm32236pcmpeqd %xmm5,%xmm22237movdqa %xmm1,256(%r10)2238movdqa %xmm4,%xmm122392240paddd %xmm3,%xmm02241pcmpeqd %xmm5,%xmm32242movdqa %xmm2,272(%r10)2243movdqa %xmm4,%xmm222442245paddd %xmm0,%xmm12246pcmpeqd %xmm5,%xmm02247movdqa %xmm3,288(%r10)2248movdqa %xmm4,%xmm32249.byte 0x672250paddd %xmm1,%xmm22251pcmpeqd %xmm5,%xmm12252movdqa %xmm0,304(%r10)22532254paddd %xmm2,%xmm32255pcmpeqd %xmm5,%xmm22256movdqa %xmm1,320(%r10)22572258pcmpeqd %xmm5,%xmm32259movdqa %xmm2,336(%r10)22602261pand 64(%rdi),%xmm02262pand 80(%rdi),%xmm12263pand 96(%rdi),%xmm22264movdqa %xmm3,352(%r10)2265pand 112(%rdi),%xmm32266por %xmm2,%xmm02267por %xmm3,%xmm12268movdqa -128(%rdi),%xmm42269movdqa -112(%rdi),%xmm52270movdqa -96(%rdi),%xmm22271pand 112(%r10),%xmm42272movdqa -80(%rdi),%xmm32273pand 128(%r10),%xmm52274por %xmm4,%xmm02275pand 144(%r10),%xmm22276por %xmm5,%xmm12277pand 160(%r10),%xmm32278por %xmm2,%xmm02279por %xmm3,%xmm12280movdqa -64(%rdi),%xmm42281movdqa -48(%rdi),%xmm52282movdqa -32(%rdi),%xmm22283pand 176(%r10),%xmm42284movdqa -16(%rdi),%xmm32285pand 192(%r10),%xmm52286por %xmm4,%xmm02287pand 208(%r10),%xmm22288por %xmm5,%xmm12289pand 224(%r10),%xmm32290por %xmm2,%xmm02291por %xmm3,%xmm12292movdqa 0(%rdi),%xmm42293movdqa 16(%rdi),%xmm52294movdqa 32(%rdi),%xmm22295pand 240(%r10),%xmm42296movdqa 48(%rdi),%xmm32297pand 256(%r10),%xmm52298por %xmm4,%xmm02299pand 272(%r10),%xmm22300por %xmm5,%xmm12301pand 288(%r10),%xmm32302por %xmm2,%xmm02303por %xmm3,%xmm12304pxor %xmm1,%xmm02305pshufd $0x4e,%xmm0,%xmm12306por %xmm1,%xmm02307leaq 256(%rdi),%rdi2308.byte 102,72,15,126,1942309leaq 64+32+8(%rsp),%rbx23102311movq %rdx,%r92312mulxq 0(%rsi),%r8,%rax2313mulxq 8(%rsi),%r11,%r122314addq %rax,%r112315mulxq 16(%rsi),%rax,%r132316adcq %rax,%r122317adcq $0,%r132318mulxq 24(%rsi),%rax,%r1423192320movq %r8,%r152321imulq 32+8(%rsp),%r82322xorq %rbp,%rbp2323movq %r8,%rdx23242325movq %rdi,8+8(%rsp)23262327leaq 32(%rsi),%rsi2328adcxq %rax,%r132329adcxq %rbp,%r1423302331mulxq 0(%rcx),%rax,%r102332adcxq %rax,%r152333adoxq %r11,%r102334mulxq 8(%rcx),%rax,%r112335adcxq %rax,%r102336adoxq %r12,%r112337mulxq 16(%rcx),%rax,%r122338movq 24+8(%rsp),%rdi2339movq %r10,-32(%rbx)2340adcxq %rax,%r112341adoxq %r13,%r122342mulxq 24(%rcx),%rax,%r152343movq %r9,%rdx2344movq %r11,-24(%rbx)2345adcxq %rax,%r122346adoxq %rbp,%r152347leaq 32(%rcx),%rcx2348movq %r12,-16(%rbx)2349jmp .Lmulx4x_1st23502351.align 322352.Lmulx4x_1st:2353adcxq %rbp,%r152354mulxq 0(%rsi),%r10,%rax2355adcxq %r14,%r102356mulxq 8(%rsi),%r11,%r142357adcxq %rax,%r112358mulxq 16(%rsi),%r12,%rax2359adcxq %r14,%r122360mulxq 24(%rsi),%r13,%r142361.byte 0x67,0x672362movq %r8,%rdx2363adcxq %rax,%r132364adcxq %rbp,%r142365leaq 32(%rsi),%rsi2366leaq 32(%rbx),%rbx23672368adoxq %r15,%r102369mulxq 0(%rcx),%rax,%r152370adcxq %rax,%r102371adoxq %r15,%r112372mulxq 8(%rcx),%rax,%r152373adcxq %rax,%r112374adoxq %r15,%r122375mulxq 16(%rcx),%rax,%r152376movq %r10,-40(%rbx)2377adcxq %rax,%r122378movq %r11,-32(%rbx)2379adoxq %r15,%r132380mulxq 24(%rcx),%rax,%r152381movq %r9,%rdx2382movq %r12,-24(%rbx)2383adcxq %rax,%r132384adoxq %rbp,%r152385leaq 32(%rcx),%rcx2386movq %r13,-16(%rbx)23872388decq %rdi2389jnz .Lmulx4x_1st23902391movq 8(%rsp),%rax2392adcq %rbp,%r152393leaq (%rsi,%rax,1),%rsi2394addq %r15,%r142395movq 8+8(%rsp),%rdi2396adcq %rbp,%rbp2397movq %r14,-8(%rbx)2398jmp .Lmulx4x_outer23992400.align 322401.Lmulx4x_outer:2402leaq 16-256(%rbx),%r102403pxor %xmm4,%xmm42404.byte 0x67,0x672405pxor %xmm5,%xmm52406movdqa -128(%rdi),%xmm02407movdqa -112(%rdi),%xmm12408movdqa -96(%rdi),%xmm22409pand 256(%r10),%xmm02410movdqa -80(%rdi),%xmm32411pand 272(%r10),%xmm12412por %xmm0,%xmm42413pand 288(%r10),%xmm22414por %xmm1,%xmm52415pand 304(%r10),%xmm32416por %xmm2,%xmm42417por %xmm3,%xmm52418movdqa -64(%rdi),%xmm02419movdqa -48(%rdi),%xmm12420movdqa -32(%rdi),%xmm22421pand 320(%r10),%xmm02422movdqa -16(%rdi),%xmm32423pand 336(%r10),%xmm12424por %xmm0,%xmm42425pand 352(%r10),%xmm22426por %xmm1,%xmm52427pand 368(%r10),%xmm32428por %xmm2,%xmm42429por %xmm3,%xmm52430movdqa 0(%rdi),%xmm02431movdqa 16(%rdi),%xmm12432movdqa 32(%rdi),%xmm22433pand 384(%r10),%xmm02434movdqa 48(%rdi),%xmm32435pand 400(%r10),%xmm12436por %xmm0,%xmm42437pand 416(%r10),%xmm22438por %xmm1,%xmm52439pand 432(%r10),%xmm32440por %xmm2,%xmm42441por %xmm3,%xmm52442movdqa 64(%rdi),%xmm02443movdqa 80(%rdi),%xmm12444movdqa 96(%rdi),%xmm22445pand 448(%r10),%xmm02446movdqa 112(%rdi),%xmm32447pand 464(%r10),%xmm12448por %xmm0,%xmm42449pand 480(%r10),%xmm22450por %xmm1,%xmm52451pand 496(%r10),%xmm32452por %xmm2,%xmm42453por %xmm3,%xmm52454por %xmm5,%xmm42455pshufd $0x4e,%xmm4,%xmm02456por %xmm4,%xmm02457leaq 256(%rdi),%rdi2458.byte 102,72,15,126,19424592460movq %rbp,(%rbx)2461leaq 32(%rbx,%rax,1),%rbx2462mulxq 0(%rsi),%r8,%r112463xorq %rbp,%rbp2464movq %rdx,%r92465mulxq 8(%rsi),%r14,%r122466adoxq -32(%rbx),%r82467adcxq %r14,%r112468mulxq 16(%rsi),%r15,%r132469adoxq -24(%rbx),%r112470adcxq %r15,%r122471mulxq 24(%rsi),%rdx,%r142472adoxq -16(%rbx),%r122473adcxq %rdx,%r132474leaq (%rcx,%rax,1),%rcx2475leaq 32(%rsi),%rsi2476adoxq -8(%rbx),%r132477adcxq %rbp,%r142478adoxq %rbp,%r1424792480movq %r8,%r152481imulq 32+8(%rsp),%r824822483movq %r8,%rdx2484xorq %rbp,%rbp2485movq %rdi,8+8(%rsp)24862487mulxq 0(%rcx),%rax,%r102488adcxq %rax,%r152489adoxq %r11,%r102490mulxq 8(%rcx),%rax,%r112491adcxq %rax,%r102492adoxq %r12,%r112493mulxq 16(%rcx),%rax,%r122494adcxq %rax,%r112495adoxq %r13,%r122496mulxq 24(%rcx),%rax,%r152497movq %r9,%rdx2498movq 24+8(%rsp),%rdi2499movq %r10,-32(%rbx)2500adcxq %rax,%r122501movq %r11,-24(%rbx)2502adoxq %rbp,%r152503movq %r12,-16(%rbx)2504leaq 32(%rcx),%rcx2505jmp .Lmulx4x_inner25062507.align 322508.Lmulx4x_inner:2509mulxq 0(%rsi),%r10,%rax2510adcxq %rbp,%r152511adoxq %r14,%r102512mulxq 8(%rsi),%r11,%r142513adcxq 0(%rbx),%r102514adoxq %rax,%r112515mulxq 16(%rsi),%r12,%rax2516adcxq 8(%rbx),%r112517adoxq %r14,%r122518mulxq 24(%rsi),%r13,%r142519movq %r8,%rdx2520adcxq 16(%rbx),%r122521adoxq %rax,%r132522adcxq 24(%rbx),%r132523adoxq %rbp,%r142524leaq 32(%rsi),%rsi2525leaq 32(%rbx),%rbx2526adcxq %rbp,%r1425272528adoxq %r15,%r102529mulxq 0(%rcx),%rax,%r152530adcxq %rax,%r102531adoxq %r15,%r112532mulxq 8(%rcx),%rax,%r152533adcxq %rax,%r112534adoxq %r15,%r122535mulxq 16(%rcx),%rax,%r152536movq %r10,-40(%rbx)2537adcxq %rax,%r122538adoxq %r15,%r132539movq %r11,-32(%rbx)2540mulxq 24(%rcx),%rax,%r152541movq %r9,%rdx2542leaq 32(%rcx),%rcx2543movq %r12,-24(%rbx)2544adcxq %rax,%r132545adoxq %rbp,%r152546movq %r13,-16(%rbx)25472548decq %rdi2549jnz .Lmulx4x_inner25502551movq 0+8(%rsp),%rax2552adcq %rbp,%r152553subq 0(%rbx),%rdi2554movq 8+8(%rsp),%rdi2555movq 16+8(%rsp),%r102556adcq %r15,%r142557leaq (%rsi,%rax,1),%rsi2558adcq %rbp,%rbp2559movq %r14,-8(%rbx)25602561cmpq %r10,%rdi2562jb .Lmulx4x_outer25632564movq -8(%rcx),%r102565movq %rbp,%r82566movq (%rcx,%rax,1),%r122567leaq (%rcx,%rax,1),%rbp2568movq %rax,%rcx2569leaq (%rbx,%rax,1),%rdi2570xorl %eax,%eax2571xorq %r15,%r152572subq %r14,%r102573adcq %r15,%r152574orq %r15,%r82575sarq $3+2,%rcx2576subq %r8,%rax2577movq 56+8(%rsp),%rdx2578decq %r122579movq 8(%rbp),%r132580xorq %r8,%r82581movq 16(%rbp),%r142582movq 24(%rbp),%r152583jmp .Lsqrx4x_sub_entry2584.cfi_endproc2585.size mulx4x_internal,.-mulx4x_internal2586.type bn_powerx5,@function2587.align 322588bn_powerx5:2589.cfi_startproc2590movq %rsp,%rax2591.cfi_def_cfa_register %rax2592.Lpowerx5_enter:2593pushq %rbx2594.cfi_offset %rbx,-162595pushq %rbp2596.cfi_offset %rbp,-242597pushq %r122598.cfi_offset %r12,-322599pushq %r132600.cfi_offset %r13,-402601pushq %r142602.cfi_offset %r14,-482603pushq %r152604.cfi_offset %r15,-562605.Lpowerx5_prologue:26062607shll $3,%r9d2608leaq (%r9,%r9,2),%r102609negq %r92610movq (%r8),%r8261126122613261426152616261726182619leaq -320(%rsp,%r9,2),%r112620movq %rsp,%rbp2621subq %rdi,%r112622andq $4095,%r112623cmpq %r11,%r102624jb .Lpwrx_sp_alt2625subq %r11,%rbp2626leaq -320(%rbp,%r9,2),%rbp2627jmp .Lpwrx_sp_done26282629.align 322630.Lpwrx_sp_alt:2631leaq 4096-320(,%r9,2),%r102632leaq -320(%rbp,%r9,2),%rbp2633subq %r10,%r112634movq $0,%r102635cmovcq %r10,%r112636subq %r11,%rbp2637.Lpwrx_sp_done:2638andq $-64,%rbp2639movq %rsp,%r112640subq %rbp,%r112641andq $-4096,%r112642leaq (%r11,%rbp,1),%rsp2643movq (%rsp),%r102644cmpq %rbp,%rsp2645ja .Lpwrx_page_walk2646jmp .Lpwrx_page_walk_done26472648.Lpwrx_page_walk:2649leaq -4096(%rsp),%rsp2650movq (%rsp),%r102651cmpq %rbp,%rsp2652ja .Lpwrx_page_walk2653.Lpwrx_page_walk_done:26542655movq %r9,%r102656negq %r92657265826592660266126622663266426652666266726682669pxor %xmm0,%xmm02670.byte 102,72,15,110,2072671.byte 102,72,15,110,2092672.byte 102,73,15,110,2182673.byte 102,72,15,110,2262674movq %r8,32(%rsp)2675movq %rax,40(%rsp)2676.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x082677.Lpowerx5_body:26782679call __bn_sqrx8x_internal2680call __bn_postx4x_internal2681call __bn_sqrx8x_internal2682call __bn_postx4x_internal2683call __bn_sqrx8x_internal2684call __bn_postx4x_internal2685call __bn_sqrx8x_internal2686call __bn_postx4x_internal2687call __bn_sqrx8x_internal2688call __bn_postx4x_internal26892690movq %r10,%r92691movq %rsi,%rdi2692.byte 102,72,15,126,2092693.byte 102,72,15,126,2262694movq 40(%rsp),%rax26952696call mulx4x_internal26972698movq 40(%rsp),%rsi2699.cfi_def_cfa %rsi,82700movq $1,%rax27012702movq -48(%rsi),%r152703.cfi_restore %r152704movq -40(%rsi),%r142705.cfi_restore %r142706movq -32(%rsi),%r132707.cfi_restore %r132708movq -24(%rsi),%r122709.cfi_restore %r122710movq -16(%rsi),%rbp2711.cfi_restore %rbp2712movq -8(%rsi),%rbx2713.cfi_restore %rbx2714leaq (%rsi),%rsp2715.cfi_def_cfa_register %rsp2716.Lpowerx5_epilogue:2717.byte 0xf3,0xc32718.cfi_endproc2719.size bn_powerx5,.-bn_powerx527202721.globl bn_sqrx8x_internal2722.hidden bn_sqrx8x_internal2723.type bn_sqrx8x_internal,@function2724.align 322725bn_sqrx8x_internal:2726__bn_sqrx8x_internal:2727.cfi_startproc27282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768leaq 48+8(%rsp),%rdi2769leaq (%rsi,%r9,1),%rbp2770movq %r9,0+8(%rsp)2771movq %rbp,8+8(%rsp)2772jmp .Lsqr8x_zero_start27732774.align 322775.byte 0x66,0x66,0x66,0x2e,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x002776.Lsqrx8x_zero:2777.byte 0x3e2778movdqa %xmm0,0(%rdi)2779movdqa %xmm0,16(%rdi)2780movdqa %xmm0,32(%rdi)2781movdqa %xmm0,48(%rdi)2782.Lsqr8x_zero_start:2783movdqa %xmm0,64(%rdi)2784movdqa %xmm0,80(%rdi)2785movdqa %xmm0,96(%rdi)2786movdqa %xmm0,112(%rdi)2787leaq 128(%rdi),%rdi2788subq $64,%r92789jnz .Lsqrx8x_zero27902791movq 0(%rsi),%rdx27922793xorq %r10,%r102794xorq %r11,%r112795xorq %r12,%r122796xorq %r13,%r132797xorq %r14,%r142798xorq %r15,%r152799leaq 48+8(%rsp),%rdi2800xorq %rbp,%rbp2801jmp .Lsqrx8x_outer_loop28022803.align 322804.Lsqrx8x_outer_loop:2805mulxq 8(%rsi),%r8,%rax2806adcxq %r9,%r82807adoxq %rax,%r102808mulxq 16(%rsi),%r9,%rax2809adcxq %r10,%r92810adoxq %rax,%r112811.byte 0xc4,0xe2,0xab,0xf6,0x86,0x18,0x00,0x00,0x002812adcxq %r11,%r102813adoxq %rax,%r122814.byte 0xc4,0xe2,0xa3,0xf6,0x86,0x20,0x00,0x00,0x002815adcxq %r12,%r112816adoxq %rax,%r132817mulxq 40(%rsi),%r12,%rax2818adcxq %r13,%r122819adoxq %rax,%r142820mulxq 48(%rsi),%r13,%rax2821adcxq %r14,%r132822adoxq %r15,%rax2823mulxq 56(%rsi),%r14,%r152824movq 8(%rsi),%rdx2825adcxq %rax,%r142826adoxq %rbp,%r152827adcq 64(%rdi),%r152828movq %r8,8(%rdi)2829movq %r9,16(%rdi)2830sbbq %rcx,%rcx2831xorq %rbp,%rbp283228332834mulxq 16(%rsi),%r8,%rbx2835mulxq 24(%rsi),%r9,%rax2836adcxq %r10,%r82837adoxq %rbx,%r92838mulxq 32(%rsi),%r10,%rbx2839adcxq %r11,%r92840adoxq %rax,%r102841.byte 0xc4,0xe2,0xa3,0xf6,0x86,0x28,0x00,0x00,0x002842adcxq %r12,%r102843adoxq %rbx,%r112844.byte 0xc4,0xe2,0x9b,0xf6,0x9e,0x30,0x00,0x00,0x002845adcxq %r13,%r112846adoxq %r14,%r122847.byte 0xc4,0x62,0x93,0xf6,0xb6,0x38,0x00,0x00,0x002848movq 16(%rsi),%rdx2849adcxq %rax,%r122850adoxq %rbx,%r132851adcxq %r15,%r132852adoxq %rbp,%r142853adcxq %rbp,%r1428542855movq %r8,24(%rdi)2856movq %r9,32(%rdi)28572858mulxq 24(%rsi),%r8,%rbx2859mulxq 32(%rsi),%r9,%rax2860adcxq %r10,%r82861adoxq %rbx,%r92862mulxq 40(%rsi),%r10,%rbx2863adcxq %r11,%r92864adoxq %rax,%r102865.byte 0xc4,0xe2,0xa3,0xf6,0x86,0x30,0x00,0x00,0x002866adcxq %r12,%r102867adoxq %r13,%r112868.byte 0xc4,0x62,0x9b,0xf6,0xae,0x38,0x00,0x00,0x002869.byte 0x3e2870movq 24(%rsi),%rdx2871adcxq %rbx,%r112872adoxq %rax,%r122873adcxq %r14,%r122874movq %r8,40(%rdi)2875movq %r9,48(%rdi)2876mulxq 32(%rsi),%r8,%rax2877adoxq %rbp,%r132878adcxq %rbp,%r1328792880mulxq 40(%rsi),%r9,%rbx2881adcxq %r10,%r82882adoxq %rax,%r92883mulxq 48(%rsi),%r10,%rax2884adcxq %r11,%r92885adoxq %r12,%r102886mulxq 56(%rsi),%r11,%r122887movq 32(%rsi),%rdx2888movq 40(%rsi),%r142889adcxq %rbx,%r102890adoxq %rax,%r112891movq 48(%rsi),%r152892adcxq %r13,%r112893adoxq %rbp,%r122894adcxq %rbp,%r1228952896movq %r8,56(%rdi)2897movq %r9,64(%rdi)28982899mulxq %r14,%r9,%rax2900movq 56(%rsi),%r82901adcxq %r10,%r92902mulxq %r15,%r10,%rbx2903adoxq %rax,%r102904adcxq %r11,%r102905mulxq %r8,%r11,%rax2906movq %r14,%rdx2907adoxq %rbx,%r112908adcxq %r12,%r1129092910adcxq %rbp,%rax29112912mulxq %r15,%r14,%rbx2913mulxq %r8,%r12,%r132914movq %r15,%rdx2915leaq 64(%rsi),%rsi2916adcxq %r14,%r112917adoxq %rbx,%r122918adcxq %rax,%r122919adoxq %rbp,%r1329202921.byte 0x67,0x672922mulxq %r8,%r8,%r142923adcxq %r8,%r132924adcxq %rbp,%r1429252926cmpq 8+8(%rsp),%rsi2927je .Lsqrx8x_outer_break29282929negq %rcx2930movq $-8,%rcx2931movq %rbp,%r152932movq 64(%rdi),%r82933adcxq 72(%rdi),%r92934adcxq 80(%rdi),%r102935adcxq 88(%rdi),%r112936adcq 96(%rdi),%r122937adcq 104(%rdi),%r132938adcq 112(%rdi),%r142939adcq 120(%rdi),%r152940leaq (%rsi),%rbp2941leaq 128(%rdi),%rdi2942sbbq %rax,%rax29432944movq -64(%rsi),%rdx2945movq %rax,16+8(%rsp)2946movq %rdi,24+8(%rsp)294729482949xorl %eax,%eax2950jmp .Lsqrx8x_loop29512952.align 322953.Lsqrx8x_loop:2954movq %r8,%rbx2955mulxq 0(%rbp),%rax,%r82956adcxq %rax,%rbx2957adoxq %r9,%r829582959mulxq 8(%rbp),%rax,%r92960adcxq %rax,%r82961adoxq %r10,%r929622963mulxq 16(%rbp),%rax,%r102964adcxq %rax,%r92965adoxq %r11,%r1029662967mulxq 24(%rbp),%rax,%r112968adcxq %rax,%r102969adoxq %r12,%r1129702971.byte 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x002972adcxq %rax,%r112973adoxq %r13,%r1229742975mulxq 40(%rbp),%rax,%r132976adcxq %rax,%r122977adoxq %r14,%r1329782979mulxq 48(%rbp),%rax,%r142980movq %rbx,(%rdi,%rcx,8)2981movl $0,%ebx2982adcxq %rax,%r132983adoxq %r15,%r1429842985.byte 0xc4,0x62,0xfb,0xf6,0xbd,0x38,0x00,0x00,0x002986movq 8(%rsi,%rcx,8),%rdx2987adcxq %rax,%r142988adoxq %rbx,%r152989adcxq %rbx,%r1529902991.byte 0x672992incq %rcx2993jnz .Lsqrx8x_loop29942995leaq 64(%rbp),%rbp2996movq $-8,%rcx2997cmpq 8+8(%rsp),%rbp2998je .Lsqrx8x_break29993000subq 16+8(%rsp),%rbx3001.byte 0x663002movq -64(%rsi),%rdx3003adcxq 0(%rdi),%r83004adcxq 8(%rdi),%r93005adcq 16(%rdi),%r103006adcq 24(%rdi),%r113007adcq 32(%rdi),%r123008adcq 40(%rdi),%r133009adcq 48(%rdi),%r143010adcq 56(%rdi),%r153011leaq 64(%rdi),%rdi3012.byte 0x673013sbbq %rax,%rax3014xorl %ebx,%ebx3015movq %rax,16+8(%rsp)3016jmp .Lsqrx8x_loop30173018.align 323019.Lsqrx8x_break:3020xorq %rbp,%rbp3021subq 16+8(%rsp),%rbx3022adcxq %rbp,%r83023movq 24+8(%rsp),%rcx3024adcxq %rbp,%r93025movq 0(%rsi),%rdx3026adcq $0,%r103027movq %r8,0(%rdi)3028adcq $0,%r113029adcq $0,%r123030adcq $0,%r133031adcq $0,%r143032adcq $0,%r153033cmpq %rcx,%rdi3034je .Lsqrx8x_outer_loop30353036movq %r9,8(%rdi)3037movq 8(%rcx),%r93038movq %r10,16(%rdi)3039movq 16(%rcx),%r103040movq %r11,24(%rdi)3041movq 24(%rcx),%r113042movq %r12,32(%rdi)3043movq 32(%rcx),%r123044movq %r13,40(%rdi)3045movq 40(%rcx),%r133046movq %r14,48(%rdi)3047movq 48(%rcx),%r143048movq %r15,56(%rdi)3049movq 56(%rcx),%r153050movq %rcx,%rdi3051jmp .Lsqrx8x_outer_loop30523053.align 323054.Lsqrx8x_outer_break:3055movq %r9,72(%rdi)3056.byte 102,72,15,126,2173057movq %r10,80(%rdi)3058movq %r11,88(%rdi)3059movq %r12,96(%rdi)3060movq %r13,104(%rdi)3061movq %r14,112(%rdi)3062leaq 48+8(%rsp),%rdi3063movq (%rsi,%rcx,1),%rdx30643065movq 8(%rdi),%r113066xorq %r10,%r103067movq 0+8(%rsp),%r93068adoxq %r11,%r113069movq 16(%rdi),%r123070movq 24(%rdi),%r13307130723073.align 323074.Lsqrx4x_shift_n_add:3075mulxq %rdx,%rax,%rbx3076adoxq %r12,%r123077adcxq %r10,%rax3078.byte 0x48,0x8b,0x94,0x0e,0x08,0x00,0x00,0x003079.byte 0x4c,0x8b,0x97,0x20,0x00,0x00,0x003080adoxq %r13,%r133081adcxq %r11,%rbx3082movq 40(%rdi),%r113083movq %rax,0(%rdi)3084movq %rbx,8(%rdi)30853086mulxq %rdx,%rax,%rbx3087adoxq %r10,%r103088adcxq %r12,%rax3089movq 16(%rsi,%rcx,1),%rdx3090movq 48(%rdi),%r123091adoxq %r11,%r113092adcxq %r13,%rbx3093movq 56(%rdi),%r133094movq %rax,16(%rdi)3095movq %rbx,24(%rdi)30963097mulxq %rdx,%rax,%rbx3098adoxq %r12,%r123099adcxq %r10,%rax3100movq 24(%rsi,%rcx,1),%rdx3101leaq 32(%rcx),%rcx3102movq 64(%rdi),%r103103adoxq %r13,%r133104adcxq %r11,%rbx3105movq 72(%rdi),%r113106movq %rax,32(%rdi)3107movq %rbx,40(%rdi)31083109mulxq %rdx,%rax,%rbx3110adoxq %r10,%r103111adcxq %r12,%rax3112jrcxz .Lsqrx4x_shift_n_add_break3113.byte 0x48,0x8b,0x94,0x0e,0x00,0x00,0x00,0x003114adoxq %r11,%r113115adcxq %r13,%rbx3116movq 80(%rdi),%r123117movq 88(%rdi),%r133118movq %rax,48(%rdi)3119movq %rbx,56(%rdi)3120leaq 64(%rdi),%rdi3121nop3122jmp .Lsqrx4x_shift_n_add31233124.align 323125.Lsqrx4x_shift_n_add_break:3126adcxq %r13,%rbx3127movq %rax,48(%rdi)3128movq %rbx,56(%rdi)3129leaq 64(%rdi),%rdi3130.byte 102,72,15,126,2133131__bn_sqrx8x_reduction:3132xorl %eax,%eax3133movq 32+8(%rsp),%rbx3134movq 48+8(%rsp),%rdx3135leaq -64(%rbp,%r9,1),%rcx31363137movq %rcx,0+8(%rsp)3138movq %rdi,8+8(%rsp)31393140leaq 48+8(%rsp),%rdi3141jmp .Lsqrx8x_reduction_loop31423143.align 323144.Lsqrx8x_reduction_loop:3145movq 8(%rdi),%r93146movq 16(%rdi),%r103147movq 24(%rdi),%r113148movq 32(%rdi),%r123149movq %rdx,%r83150imulq %rbx,%rdx3151movq 40(%rdi),%r133152movq 48(%rdi),%r143153movq 56(%rdi),%r153154movq %rax,24+8(%rsp)31553156leaq 64(%rdi),%rdi3157xorq %rsi,%rsi3158movq $-8,%rcx3159jmp .Lsqrx8x_reduce31603161.align 323162.Lsqrx8x_reduce:3163movq %r8,%rbx3164mulxq 0(%rbp),%rax,%r83165adcxq %rbx,%rax3166adoxq %r9,%r831673168mulxq 8(%rbp),%rbx,%r93169adcxq %rbx,%r83170adoxq %r10,%r931713172mulxq 16(%rbp),%rbx,%r103173adcxq %rbx,%r93174adoxq %r11,%r1031753176mulxq 24(%rbp),%rbx,%r113177adcxq %rbx,%r103178adoxq %r12,%r1131793180.byte 0xc4,0x62,0xe3,0xf6,0xa5,0x20,0x00,0x00,0x003181movq %rdx,%rax3182movq %r8,%rdx3183adcxq %rbx,%r113184adoxq %r13,%r1231853186mulxq 32+8(%rsp),%rbx,%rdx3187movq %rax,%rdx3188movq %rax,64+48+8(%rsp,%rcx,8)31893190mulxq 40(%rbp),%rax,%r133191adcxq %rax,%r123192adoxq %r14,%r1331933194mulxq 48(%rbp),%rax,%r143195adcxq %rax,%r133196adoxq %r15,%r1431973198mulxq 56(%rbp),%rax,%r153199movq %rbx,%rdx3200adcxq %rax,%r143201adoxq %rsi,%r153202adcxq %rsi,%r1532033204.byte 0x67,0x67,0x673205incq %rcx3206jnz .Lsqrx8x_reduce32073208movq %rsi,%rax3209cmpq 0+8(%rsp),%rbp3210jae .Lsqrx8x_no_tail32113212movq 48+8(%rsp),%rdx3213addq 0(%rdi),%r83214leaq 64(%rbp),%rbp3215movq $-8,%rcx3216adcxq 8(%rdi),%r93217adcxq 16(%rdi),%r103218adcq 24(%rdi),%r113219adcq 32(%rdi),%r123220adcq 40(%rdi),%r133221adcq 48(%rdi),%r143222adcq 56(%rdi),%r153223leaq 64(%rdi),%rdi3224sbbq %rax,%rax32253226xorq %rsi,%rsi3227movq %rax,16+8(%rsp)3228jmp .Lsqrx8x_tail32293230.align 323231.Lsqrx8x_tail:3232movq %r8,%rbx3233mulxq 0(%rbp),%rax,%r83234adcxq %rax,%rbx3235adoxq %r9,%r832363237mulxq 8(%rbp),%rax,%r93238adcxq %rax,%r83239adoxq %r10,%r932403241mulxq 16(%rbp),%rax,%r103242adcxq %rax,%r93243adoxq %r11,%r1032443245mulxq 24(%rbp),%rax,%r113246adcxq %rax,%r103247adoxq %r12,%r1132483249.byte 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x003250adcxq %rax,%r113251adoxq %r13,%r1232523253mulxq 40(%rbp),%rax,%r133254adcxq %rax,%r123255adoxq %r14,%r1332563257mulxq 48(%rbp),%rax,%r143258adcxq %rax,%r133259adoxq %r15,%r1432603261mulxq 56(%rbp),%rax,%r153262movq 72+48+8(%rsp,%rcx,8),%rdx3263adcxq %rax,%r143264adoxq %rsi,%r153265movq %rbx,(%rdi,%rcx,8)3266movq %r8,%rbx3267adcxq %rsi,%r1532683269incq %rcx3270jnz .Lsqrx8x_tail32713272cmpq 0+8(%rsp),%rbp3273jae .Lsqrx8x_tail_done32743275subq 16+8(%rsp),%rsi3276movq 48+8(%rsp),%rdx3277leaq 64(%rbp),%rbp3278adcq 0(%rdi),%r83279adcq 8(%rdi),%r93280adcq 16(%rdi),%r103281adcq 24(%rdi),%r113282adcq 32(%rdi),%r123283adcq 40(%rdi),%r133284adcq 48(%rdi),%r143285adcq 56(%rdi),%r153286leaq 64(%rdi),%rdi3287sbbq %rax,%rax3288subq $8,%rcx32893290xorq %rsi,%rsi3291movq %rax,16+8(%rsp)3292jmp .Lsqrx8x_tail32933294.align 323295.Lsqrx8x_tail_done:3296xorq %rax,%rax3297addq 24+8(%rsp),%r83298adcq $0,%r93299adcq $0,%r103300adcq $0,%r113301adcq $0,%r123302adcq $0,%r133303adcq $0,%r143304adcq $0,%r153305adcq $0,%rax33063307subq 16+8(%rsp),%rsi3308.Lsqrx8x_no_tail:3309adcq 0(%rdi),%r83310.byte 102,72,15,126,2173311adcq 8(%rdi),%r93312movq 56(%rbp),%rsi3313.byte 102,72,15,126,2133314adcq 16(%rdi),%r103315adcq 24(%rdi),%r113316adcq 32(%rdi),%r123317adcq 40(%rdi),%r133318adcq 48(%rdi),%r143319adcq 56(%rdi),%r153320adcq $0,%rax33213322movq 32+8(%rsp),%rbx3323movq 64(%rdi,%rcx,1),%rdx33243325movq %r8,0(%rdi)3326leaq 64(%rdi),%r83327movq %r9,8(%rdi)3328movq %r10,16(%rdi)3329movq %r11,24(%rdi)3330movq %r12,32(%rdi)3331movq %r13,40(%rdi)3332movq %r14,48(%rdi)3333movq %r15,56(%rdi)33343335leaq 64(%rdi,%rcx,1),%rdi3336cmpq 8+8(%rsp),%r83337jb .Lsqrx8x_reduction_loop3338.byte 0xf3,0xc33339.cfi_endproc3340.size bn_sqrx8x_internal,.-bn_sqrx8x_internal3341.align 323342__bn_postx4x_internal:3343.cfi_startproc3344movq 0(%rbp),%r123345movq %rcx,%r103346movq %rcx,%r93347negq %rax3348sarq $3+2,%rcx33493350.byte 102,72,15,126,2023351.byte 102,72,15,126,2063352decq %r123353movq 8(%rbp),%r133354xorq %r8,%r83355movq 16(%rbp),%r143356movq 24(%rbp),%r153357jmp .Lsqrx4x_sub_entry33583359.align 163360.Lsqrx4x_sub:3361movq 0(%rbp),%r123362movq 8(%rbp),%r133363movq 16(%rbp),%r143364movq 24(%rbp),%r153365.Lsqrx4x_sub_entry:3366andnq %rax,%r12,%r123367leaq 32(%rbp),%rbp3368andnq %rax,%r13,%r133369andnq %rax,%r14,%r143370andnq %rax,%r15,%r1533713372negq %r83373adcq 0(%rdi),%r123374adcq 8(%rdi),%r133375adcq 16(%rdi),%r143376adcq 24(%rdi),%r153377movq %r12,0(%rdx)3378leaq 32(%rdi),%rdi3379movq %r13,8(%rdx)3380sbbq %r8,%r83381movq %r14,16(%rdx)3382movq %r15,24(%rdx)3383leaq 32(%rdx),%rdx33843385incq %rcx3386jnz .Lsqrx4x_sub33873388negq %r933893390.byte 0xf3,0xc33391.cfi_endproc3392.size __bn_postx4x_internal,.-__bn_postx4x_internal3393.globl bn_get_bits53394.type bn_get_bits5,@function3395.align 163396bn_get_bits5:3397.cfi_startproc3398leaq 0(%rdi),%r103399leaq 1(%rdi),%r113400movl %esi,%ecx3401shrl $4,%esi3402andl $15,%ecx3403leal -8(%rcx),%eax3404cmpl $11,%ecx3405cmovaq %r11,%r103406cmoval %eax,%ecx3407movzwl (%r10,%rsi,2),%eax3408shrl %cl,%eax3409andl $31,%eax3410.byte 0xf3,0xc33411.cfi_endproc3412.size bn_get_bits5,.-bn_get_bits534133414.globl bn_scatter53415.type bn_scatter5,@function3416.align 163417bn_scatter5:3418.cfi_startproc3419cmpl $0,%esi3420jz .Lscatter_epilogue3421leaq (%rdx,%rcx,8),%rdx3422.Lscatter:3423movq (%rdi),%rax3424leaq 8(%rdi),%rdi3425movq %rax,(%rdx)3426leaq 256(%rdx),%rdx3427subl $1,%esi3428jnz .Lscatter3429.Lscatter_epilogue:3430.byte 0xf3,0xc33431.cfi_endproc3432.size bn_scatter5,.-bn_scatter534333434.globl bn_gather53435.type bn_gather5,@function3436.align 323437bn_gather5:3438.LSEH_begin_bn_gather5:3439.cfi_startproc34403441.byte 0x4c,0x8d,0x14,0x243442.byte 0x48,0x81,0xec,0x08,0x01,0x00,0x003443leaq .Linc(%rip),%rax3444andq $-16,%rsp34453446movd %ecx,%xmm53447movdqa 0(%rax),%xmm03448movdqa 16(%rax),%xmm13449leaq 128(%rdx),%r113450leaq 128(%rsp),%rax34513452pshufd $0,%xmm5,%xmm53453movdqa %xmm1,%xmm43454movdqa %xmm1,%xmm23455paddd %xmm0,%xmm13456pcmpeqd %xmm5,%xmm03457movdqa %xmm4,%xmm334583459paddd %xmm1,%xmm23460pcmpeqd %xmm5,%xmm13461movdqa %xmm0,-128(%rax)3462movdqa %xmm4,%xmm034633464paddd %xmm2,%xmm33465pcmpeqd %xmm5,%xmm23466movdqa %xmm1,-112(%rax)3467movdqa %xmm4,%xmm134683469paddd %xmm3,%xmm03470pcmpeqd %xmm5,%xmm33471movdqa %xmm2,-96(%rax)3472movdqa %xmm4,%xmm23473paddd %xmm0,%xmm13474pcmpeqd %xmm5,%xmm03475movdqa %xmm3,-80(%rax)3476movdqa %xmm4,%xmm334773478paddd %xmm1,%xmm23479pcmpeqd %xmm5,%xmm13480movdqa %xmm0,-64(%rax)3481movdqa %xmm4,%xmm034823483paddd %xmm2,%xmm33484pcmpeqd %xmm5,%xmm23485movdqa %xmm1,-48(%rax)3486movdqa %xmm4,%xmm134873488paddd %xmm3,%xmm03489pcmpeqd %xmm5,%xmm33490movdqa %xmm2,-32(%rax)3491movdqa %xmm4,%xmm23492paddd %xmm0,%xmm13493pcmpeqd %xmm5,%xmm03494movdqa %xmm3,-16(%rax)3495movdqa %xmm4,%xmm334963497paddd %xmm1,%xmm23498pcmpeqd %xmm5,%xmm13499movdqa %xmm0,0(%rax)3500movdqa %xmm4,%xmm035013502paddd %xmm2,%xmm33503pcmpeqd %xmm5,%xmm23504movdqa %xmm1,16(%rax)3505movdqa %xmm4,%xmm135063507paddd %xmm3,%xmm03508pcmpeqd %xmm5,%xmm33509movdqa %xmm2,32(%rax)3510movdqa %xmm4,%xmm23511paddd %xmm0,%xmm13512pcmpeqd %xmm5,%xmm03513movdqa %xmm3,48(%rax)3514movdqa %xmm4,%xmm335153516paddd %xmm1,%xmm23517pcmpeqd %xmm5,%xmm13518movdqa %xmm0,64(%rax)3519movdqa %xmm4,%xmm035203521paddd %xmm2,%xmm33522pcmpeqd %xmm5,%xmm23523movdqa %xmm1,80(%rax)3524movdqa %xmm4,%xmm135253526paddd %xmm3,%xmm03527pcmpeqd %xmm5,%xmm33528movdqa %xmm2,96(%rax)3529movdqa %xmm4,%xmm23530movdqa %xmm3,112(%rax)3531jmp .Lgather35323533.align 323534.Lgather:3535pxor %xmm4,%xmm43536pxor %xmm5,%xmm53537movdqa -128(%r11),%xmm03538movdqa -112(%r11),%xmm13539movdqa -96(%r11),%xmm23540pand -128(%rax),%xmm03541movdqa -80(%r11),%xmm33542pand -112(%rax),%xmm13543por %xmm0,%xmm43544pand -96(%rax),%xmm23545por %xmm1,%xmm53546pand -80(%rax),%xmm33547por %xmm2,%xmm43548por %xmm3,%xmm53549movdqa -64(%r11),%xmm03550movdqa -48(%r11),%xmm13551movdqa -32(%r11),%xmm23552pand -64(%rax),%xmm03553movdqa -16(%r11),%xmm33554pand -48(%rax),%xmm13555por %xmm0,%xmm43556pand -32(%rax),%xmm23557por %xmm1,%xmm53558pand -16(%rax),%xmm33559por %xmm2,%xmm43560por %xmm3,%xmm53561movdqa 0(%r11),%xmm03562movdqa 16(%r11),%xmm13563movdqa 32(%r11),%xmm23564pand 0(%rax),%xmm03565movdqa 48(%r11),%xmm33566pand 16(%rax),%xmm13567por %xmm0,%xmm43568pand 32(%rax),%xmm23569por %xmm1,%xmm53570pand 48(%rax),%xmm33571por %xmm2,%xmm43572por %xmm3,%xmm53573movdqa 64(%r11),%xmm03574movdqa 80(%r11),%xmm13575movdqa 96(%r11),%xmm23576pand 64(%rax),%xmm03577movdqa 112(%r11),%xmm33578pand 80(%rax),%xmm13579por %xmm0,%xmm43580pand 96(%rax),%xmm23581por %xmm1,%xmm53582pand 112(%rax),%xmm33583por %xmm2,%xmm43584por %xmm3,%xmm53585por %xmm5,%xmm43586leaq 256(%r11),%r113587pshufd $0x4e,%xmm4,%xmm03588por %xmm4,%xmm03589movq %xmm0,(%rdi)3590leaq 8(%rdi),%rdi3591subl $1,%esi3592jnz .Lgather35933594leaq (%r10),%rsp3595.byte 0xf3,0xc33596.LSEH_end_bn_gather5:3597.cfi_endproc3598.size bn_gather5,.-bn_gather53599.section .rodata3600.align 643601.Linc:3602.long 0,0, 1,13603.long 2,2, 2,23604.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,119,105,116,104,32,115,99,97,116,116,101,114,47,103,97,116,104,101,114,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,03605.previous3606.section ".note.gnu.property", "a"3607.p2align 33608.long 1f - 0f3609.long 4f - 1f3610.long 536110:3612# "GNU" encoded with .byte, since .asciz isn't supported3613# on Solaris.3614.byte 0x473615.byte 0x4e3616.byte 0x553617.byte 036181:3619.p2align 33620.long 0xc00000023621.long 3f - 2f36222:3623.long 336243:3625.p2align 336264:362736283629