Path: blob/main/sys/crypto/openssl/amd64/x25519-x86_64.S
39482 views
/* Do not modify. This file is auto-generated from x25519-x86_64.pl. */1.text23.globl x25519_fe51_mul4.type x25519_fe51_mul,@function5.align 326x25519_fe51_mul:7.cfi_startproc8pushq %rbp9.cfi_adjust_cfa_offset 810.cfi_offset %rbp,-1611pushq %rbx12.cfi_adjust_cfa_offset 813.cfi_offset %rbx,-2414pushq %r1215.cfi_adjust_cfa_offset 816.cfi_offset %r12,-3217pushq %r1318.cfi_adjust_cfa_offset 819.cfi_offset %r13,-4020pushq %r1421.cfi_adjust_cfa_offset 822.cfi_offset %r14,-4823pushq %r1524.cfi_adjust_cfa_offset 825.cfi_offset %r15,-5626leaq -40(%rsp),%rsp27.cfi_adjust_cfa_offset 4028.Lfe51_mul_body:2930movq 0(%rsi),%rax31movq 0(%rdx),%r1132movq 8(%rdx),%r1233movq 16(%rdx),%r1334movq 24(%rdx),%rbp35movq 32(%rdx),%r143637movq %rdi,32(%rsp)38movq %rax,%rdi39mulq %r1140movq %r11,0(%rsp)41movq %rax,%rbx42movq %rdi,%rax43movq %rdx,%rcx44mulq %r1245movq %r12,8(%rsp)46movq %rax,%r847movq %rdi,%rax48leaq (%r14,%r14,8),%r1549movq %rdx,%r950mulq %r1351movq %r13,16(%rsp)52movq %rax,%r1053movq %rdi,%rax54leaq (%r14,%r15,2),%rdi55movq %rdx,%r1156mulq %rbp57movq %rax,%r1258movq 0(%rsi),%rax59movq %rdx,%r1360mulq %r1461movq %rax,%r1462movq 8(%rsi),%rax63movq %rdx,%r156465mulq %rdi66addq %rax,%rbx67movq 16(%rsi),%rax68adcq %rdx,%rcx69mulq %rdi70addq %rax,%r871movq 24(%rsi),%rax72adcq %rdx,%r973mulq %rdi74addq %rax,%r1075movq 32(%rsi),%rax76adcq %rdx,%r1177mulq %rdi78imulq $19,%rbp,%rdi79addq %rax,%r1280movq 8(%rsi),%rax81adcq %rdx,%r1382mulq %rbp83movq 16(%rsp),%rbp84addq %rax,%r1485movq 16(%rsi),%rax86adcq %rdx,%r158788mulq %rdi89addq %rax,%rbx90movq 24(%rsi),%rax91adcq %rdx,%rcx92mulq %rdi93addq %rax,%r894movq 32(%rsi),%rax95adcq %rdx,%r996mulq %rdi97imulq $19,%rbp,%rdi98addq %rax,%r1099movq 8(%rsi),%rax100adcq %rdx,%r11101mulq %rbp102addq %rax,%r12103movq 16(%rsi),%rax104adcq %rdx,%r13105mulq %rbp106movq 8(%rsp),%rbp107addq %rax,%r14108movq 24(%rsi),%rax109adcq %rdx,%r15110111mulq %rdi112addq %rax,%rbx113movq 32(%rsi),%rax114adcq %rdx,%rcx115mulq %rdi116addq %rax,%r8117movq 8(%rsi),%rax118adcq %rdx,%r9119mulq %rbp120imulq $19,%rbp,%rdi121addq %rax,%r10122movq 16(%rsi),%rax123adcq %rdx,%r11124mulq %rbp125addq %rax,%r12126movq 24(%rsi),%rax127adcq %rdx,%r13128mulq %rbp129movq 0(%rsp),%rbp130addq %rax,%r14131movq 32(%rsi),%rax132adcq %rdx,%r15133134mulq %rdi135addq %rax,%rbx136movq 8(%rsi),%rax137adcq %rdx,%rcx138mulq %rbp139addq %rax,%r8140movq 16(%rsi),%rax141adcq %rdx,%r9142mulq %rbp143addq %rax,%r10144movq 24(%rsi),%rax145adcq %rdx,%r11146mulq %rbp147addq %rax,%r12148movq 32(%rsi),%rax149adcq %rdx,%r13150mulq %rbp151addq %rax,%r14152adcq %rdx,%r15153154movq 32(%rsp),%rdi155jmp .Lreduce51156.Lfe51_mul_epilogue:157.cfi_endproc158.size x25519_fe51_mul,.-x25519_fe51_mul159160.globl x25519_fe51_sqr161.type x25519_fe51_sqr,@function162.align 32163x25519_fe51_sqr:164.cfi_startproc165pushq %rbp166.cfi_adjust_cfa_offset 8167.cfi_offset %rbp,-16168pushq %rbx169.cfi_adjust_cfa_offset 8170.cfi_offset %rbx,-24171pushq %r12172.cfi_adjust_cfa_offset 8173.cfi_offset %r12,-32174pushq %r13175.cfi_adjust_cfa_offset 8176.cfi_offset %r13,-40177pushq %r14178.cfi_adjust_cfa_offset 8179.cfi_offset %r14,-48180pushq %r15181.cfi_adjust_cfa_offset 8182.cfi_offset %r15,-56183leaq -40(%rsp),%rsp184.cfi_adjust_cfa_offset 40185.Lfe51_sqr_body:186187movq 0(%rsi),%rax188movq 16(%rsi),%r15189movq 32(%rsi),%rbp190191movq %rdi,32(%rsp)192leaq (%rax,%rax,1),%r14193mulq %rax194movq %rax,%rbx195movq 8(%rsi),%rax196movq %rdx,%rcx197mulq %r14198movq %rax,%r8199movq %r15,%rax200movq %r15,0(%rsp)201movq %rdx,%r9202mulq %r14203movq %rax,%r10204movq 24(%rsi),%rax205movq %rdx,%r11206imulq $19,%rbp,%rdi207mulq %r14208movq %rax,%r12209movq %rbp,%rax210movq %rdx,%r13211mulq %r14212movq %rax,%r14213movq %rbp,%rax214movq %rdx,%r15215216mulq %rdi217addq %rax,%r12218movq 8(%rsi),%rax219adcq %rdx,%r13220221movq 24(%rsi),%rsi222leaq (%rax,%rax,1),%rbp223mulq %rax224addq %rax,%r10225movq 0(%rsp),%rax226adcq %rdx,%r11227mulq %rbp228addq %rax,%r12229movq %rbp,%rax230adcq %rdx,%r13231mulq %rsi232addq %rax,%r14233movq %rbp,%rax234adcq %rdx,%r15235imulq $19,%rsi,%rbp236mulq %rdi237addq %rax,%rbx238leaq (%rsi,%rsi,1),%rax239adcq %rdx,%rcx240241mulq %rdi242addq %rax,%r10243movq %rsi,%rax244adcq %rdx,%r11245mulq %rbp246addq %rax,%r8247movq 0(%rsp),%rax248adcq %rdx,%r9249250leaq (%rax,%rax,1),%rsi251mulq %rax252addq %rax,%r14253movq %rbp,%rax254adcq %rdx,%r15255mulq %rsi256addq %rax,%rbx257movq %rsi,%rax258adcq %rdx,%rcx259mulq %rdi260addq %rax,%r8261adcq %rdx,%r9262263movq 32(%rsp),%rdi264jmp .Lreduce51265266.align 32267.Lreduce51:268movq $0x7ffffffffffff,%rbp269270movq %r10,%rdx271shrq $51,%r10272shlq $13,%r11273andq %rbp,%rdx274orq %r10,%r11275addq %r11,%r12276adcq $0,%r13277278movq %rbx,%rax279shrq $51,%rbx280shlq $13,%rcx281andq %rbp,%rax282orq %rbx,%rcx283addq %rcx,%r8284adcq $0,%r9285286movq %r12,%rbx287shrq $51,%r12288shlq $13,%r13289andq %rbp,%rbx290orq %r12,%r13291addq %r13,%r14292adcq $0,%r15293294movq %r8,%rcx295shrq $51,%r8296shlq $13,%r9297andq %rbp,%rcx298orq %r8,%r9299addq %r9,%rdx300301movq %r14,%r10302shrq $51,%r14303shlq $13,%r15304andq %rbp,%r10305orq %r14,%r15306307leaq (%r15,%r15,8),%r14308leaq (%r15,%r14,2),%r15309addq %r15,%rax310311movq %rdx,%r8312andq %rbp,%rdx313shrq $51,%r8314addq %r8,%rbx315316movq %rax,%r9317andq %rbp,%rax318shrq $51,%r9319addq %r9,%rcx320321movq %rax,0(%rdi)322movq %rcx,8(%rdi)323movq %rdx,16(%rdi)324movq %rbx,24(%rdi)325movq %r10,32(%rdi)326327movq 40(%rsp),%r15328.cfi_restore %r15329movq 48(%rsp),%r14330.cfi_restore %r14331movq 56(%rsp),%r13332.cfi_restore %r13333movq 64(%rsp),%r12334.cfi_restore %r12335movq 72(%rsp),%rbx336.cfi_restore %rbx337movq 80(%rsp),%rbp338.cfi_restore %rbp339leaq 88(%rsp),%rsp340.cfi_adjust_cfa_offset 88341.Lfe51_sqr_epilogue:342.byte 0xf3,0xc3343.cfi_endproc344.size x25519_fe51_sqr,.-x25519_fe51_sqr345346.globl x25519_fe51_mul121666347.type x25519_fe51_mul121666,@function348.align 32349x25519_fe51_mul121666:350.cfi_startproc351pushq %rbp352.cfi_adjust_cfa_offset 8353.cfi_offset %rbp,-16354pushq %rbx355.cfi_adjust_cfa_offset 8356.cfi_offset %rbx,-24357pushq %r12358.cfi_adjust_cfa_offset 8359.cfi_offset %r12,-32360pushq %r13361.cfi_adjust_cfa_offset 8362.cfi_offset %r13,-40363pushq %r14364.cfi_adjust_cfa_offset 8365.cfi_offset %r14,-48366pushq %r15367.cfi_adjust_cfa_offset 8368.cfi_offset %r15,-56369leaq -40(%rsp),%rsp370.cfi_adjust_cfa_offset 40371.Lfe51_mul121666_body:372movl $121666,%eax373374mulq 0(%rsi)375movq %rax,%rbx376movl $121666,%eax377movq %rdx,%rcx378mulq 8(%rsi)379movq %rax,%r8380movl $121666,%eax381movq %rdx,%r9382mulq 16(%rsi)383movq %rax,%r10384movl $121666,%eax385movq %rdx,%r11386mulq 24(%rsi)387movq %rax,%r12388movl $121666,%eax389movq %rdx,%r13390mulq 32(%rsi)391movq %rax,%r14392movq %rdx,%r15393394jmp .Lreduce51395.Lfe51_mul121666_epilogue:396.cfi_endproc397.size x25519_fe51_mul121666,.-x25519_fe51_mul121666398399.globl x25519_fe64_eligible400.type x25519_fe64_eligible,@function401.align 32402x25519_fe64_eligible:403.cfi_startproc404movl OPENSSL_ia32cap_P+8(%rip),%ecx405xorl %eax,%eax406andl $0x80100,%ecx407cmpl $0x80100,%ecx408cmovel %ecx,%eax409.byte 0xf3,0xc3410.cfi_endproc411.size x25519_fe64_eligible,.-x25519_fe64_eligible412413.globl x25519_fe64_mul414.type x25519_fe64_mul,@function415.align 32416x25519_fe64_mul:417.cfi_startproc418pushq %rbp419.cfi_adjust_cfa_offset 8420.cfi_offset %rbp,-16421pushq %rbx422.cfi_adjust_cfa_offset 8423.cfi_offset %rbx,-24424pushq %r12425.cfi_adjust_cfa_offset 8426.cfi_offset %r12,-32427pushq %r13428.cfi_adjust_cfa_offset 8429.cfi_offset %r13,-40430pushq %r14431.cfi_adjust_cfa_offset 8432.cfi_offset %r14,-48433pushq %r15434.cfi_adjust_cfa_offset 8435.cfi_offset %r15,-56436pushq %rdi437.cfi_adjust_cfa_offset 8438.cfi_offset %rdi,-64439leaq -16(%rsp),%rsp440.cfi_adjust_cfa_offset 16441.Lfe64_mul_body:442443movq %rdx,%rax444movq 0(%rdx),%rbp445movq 0(%rsi),%rdx446movq 8(%rax),%rcx447movq 16(%rax),%r14448movq 24(%rax),%r15449450mulxq %rbp,%r8,%rax451xorl %edi,%edi452mulxq %rcx,%r9,%rbx453adcxq %rax,%r9454mulxq %r14,%r10,%rax455adcxq %rbx,%r10456mulxq %r15,%r11,%r12457movq 8(%rsi),%rdx458adcxq %rax,%r11459movq %r14,(%rsp)460adcxq %rdi,%r12461462mulxq %rbp,%rax,%rbx463adoxq %rax,%r9464adcxq %rbx,%r10465mulxq %rcx,%rax,%rbx466adoxq %rax,%r10467adcxq %rbx,%r11468mulxq %r14,%rax,%rbx469adoxq %rax,%r11470adcxq %rbx,%r12471mulxq %r15,%rax,%r13472movq 16(%rsi),%rdx473adoxq %rax,%r12474adcxq %rdi,%r13475adoxq %rdi,%r13476477mulxq %rbp,%rax,%rbx478adcxq %rax,%r10479adoxq %rbx,%r11480mulxq %rcx,%rax,%rbx481adcxq %rax,%r11482adoxq %rbx,%r12483mulxq %r14,%rax,%rbx484adcxq %rax,%r12485adoxq %rbx,%r13486mulxq %r15,%rax,%r14487movq 24(%rsi),%rdx488adcxq %rax,%r13489adoxq %rdi,%r14490adcxq %rdi,%r14491492mulxq %rbp,%rax,%rbx493adoxq %rax,%r11494adcxq %rbx,%r12495mulxq %rcx,%rax,%rbx496adoxq %rax,%r12497adcxq %rbx,%r13498mulxq (%rsp),%rax,%rbx499adoxq %rax,%r13500adcxq %rbx,%r14501mulxq %r15,%rax,%r15502movl $38,%edx503adoxq %rax,%r14504adcxq %rdi,%r15505adoxq %rdi,%r15506507jmp .Lreduce64508.Lfe64_mul_epilogue:509.cfi_endproc510.size x25519_fe64_mul,.-x25519_fe64_mul511512.globl x25519_fe64_sqr513.type x25519_fe64_sqr,@function514.align 32515x25519_fe64_sqr:516.cfi_startproc517pushq %rbp518.cfi_adjust_cfa_offset 8519.cfi_offset %rbp,-16520pushq %rbx521.cfi_adjust_cfa_offset 8522.cfi_offset %rbx,-24523pushq %r12524.cfi_adjust_cfa_offset 8525.cfi_offset %r12,-32526pushq %r13527.cfi_adjust_cfa_offset 8528.cfi_offset %r13,-40529pushq %r14530.cfi_adjust_cfa_offset 8531.cfi_offset %r14,-48532pushq %r15533.cfi_adjust_cfa_offset 8534.cfi_offset %r15,-56535pushq %rdi536.cfi_adjust_cfa_offset 8537.cfi_offset %rdi,-64538leaq -16(%rsp),%rsp539.cfi_adjust_cfa_offset 16540.Lfe64_sqr_body:541542movq 0(%rsi),%rdx543movq 8(%rsi),%rcx544movq 16(%rsi),%rbp545movq 24(%rsi),%rsi546547548mulxq %rdx,%r8,%r15549mulxq %rcx,%r9,%rax550xorl %edi,%edi551mulxq %rbp,%r10,%rbx552adcxq %rax,%r10553mulxq %rsi,%r11,%r12554movq %rcx,%rdx555adcxq %rbx,%r11556adcxq %rdi,%r12557558559mulxq %rbp,%rax,%rbx560adoxq %rax,%r11561adcxq %rbx,%r12562mulxq %rsi,%rax,%r13563movq %rbp,%rdx564adoxq %rax,%r12565adcxq %rdi,%r13566567568mulxq %rsi,%rax,%r14569movq %rcx,%rdx570adoxq %rax,%r13571adcxq %rdi,%r14572adoxq %rdi,%r14573574adcxq %r9,%r9575adoxq %r15,%r9576adcxq %r10,%r10577mulxq %rdx,%rax,%rbx578movq %rbp,%rdx579adcxq %r11,%r11580adoxq %rax,%r10581adcxq %r12,%r12582adoxq %rbx,%r11583mulxq %rdx,%rax,%rbx584movq %rsi,%rdx585adcxq %r13,%r13586adoxq %rax,%r12587adcxq %r14,%r14588adoxq %rbx,%r13589mulxq %rdx,%rax,%r15590movl $38,%edx591adoxq %rax,%r14592adcxq %rdi,%r15593adoxq %rdi,%r15594jmp .Lreduce64595596.align 32597.Lreduce64:598mulxq %r12,%rax,%rbx599adcxq %rax,%r8600adoxq %rbx,%r9601mulxq %r13,%rax,%rbx602adcxq %rax,%r9603adoxq %rbx,%r10604mulxq %r14,%rax,%rbx605adcxq %rax,%r10606adoxq %rbx,%r11607mulxq %r15,%rax,%r12608adcxq %rax,%r11609adoxq %rdi,%r12610adcxq %rdi,%r12611612movq 16(%rsp),%rdi613imulq %rdx,%r12614615addq %r12,%r8616adcq $0,%r9617adcq $0,%r10618adcq $0,%r11619620sbbq %rax,%rax621andq $38,%rax622623addq %rax,%r8624movq %r9,8(%rdi)625movq %r10,16(%rdi)626movq %r11,24(%rdi)627movq %r8,0(%rdi)628629movq 24(%rsp),%r15630.cfi_restore %r15631movq 32(%rsp),%r14632.cfi_restore %r14633movq 40(%rsp),%r13634.cfi_restore %r13635movq 48(%rsp),%r12636.cfi_restore %r12637movq 56(%rsp),%rbx638.cfi_restore %rbx639movq 64(%rsp),%rbp640.cfi_restore %rbp641leaq 72(%rsp),%rsp642.cfi_adjust_cfa_offset 88643.Lfe64_sqr_epilogue:644.byte 0xf3,0xc3645.cfi_endproc646.size x25519_fe64_sqr,.-x25519_fe64_sqr647648.globl x25519_fe64_mul121666649.type x25519_fe64_mul121666,@function650.align 32651x25519_fe64_mul121666:652.Lfe64_mul121666_body:653.cfi_startproc654movl $121666,%edx655mulxq 0(%rsi),%r8,%rcx656mulxq 8(%rsi),%r9,%rax657addq %rcx,%r9658mulxq 16(%rsi),%r10,%rcx659adcq %rax,%r10660mulxq 24(%rsi),%r11,%rax661adcq %rcx,%r11662adcq $0,%rax663664imulq $38,%rax,%rax665666addq %rax,%r8667adcq $0,%r9668adcq $0,%r10669adcq $0,%r11670671sbbq %rax,%rax672andq $38,%rax673674addq %rax,%r8675movq %r9,8(%rdi)676movq %r10,16(%rdi)677movq %r11,24(%rdi)678movq %r8,0(%rdi)679680.Lfe64_mul121666_epilogue:681.byte 0xf3,0xc3682.cfi_endproc683.size x25519_fe64_mul121666,.-x25519_fe64_mul121666684685.globl x25519_fe64_add686.type x25519_fe64_add,@function687.align 32688x25519_fe64_add:689.Lfe64_add_body:690.cfi_startproc691movq 0(%rsi),%r8692movq 8(%rsi),%r9693movq 16(%rsi),%r10694movq 24(%rsi),%r11695696addq 0(%rdx),%r8697adcq 8(%rdx),%r9698adcq 16(%rdx),%r10699adcq 24(%rdx),%r11700701sbbq %rax,%rax702andq $38,%rax703704addq %rax,%r8705adcq $0,%r9706adcq $0,%r10707movq %r9,8(%rdi)708adcq $0,%r11709movq %r10,16(%rdi)710sbbq %rax,%rax711movq %r11,24(%rdi)712andq $38,%rax713714addq %rax,%r8715movq %r8,0(%rdi)716717.Lfe64_add_epilogue:718.byte 0xf3,0xc3719.cfi_endproc720.size x25519_fe64_add,.-x25519_fe64_add721722.globl x25519_fe64_sub723.type x25519_fe64_sub,@function724.align 32725x25519_fe64_sub:726.Lfe64_sub_body:727.cfi_startproc728movq 0(%rsi),%r8729movq 8(%rsi),%r9730movq 16(%rsi),%r10731movq 24(%rsi),%r11732733subq 0(%rdx),%r8734sbbq 8(%rdx),%r9735sbbq 16(%rdx),%r10736sbbq 24(%rdx),%r11737738sbbq %rax,%rax739andq $38,%rax740741subq %rax,%r8742sbbq $0,%r9743sbbq $0,%r10744movq %r9,8(%rdi)745sbbq $0,%r11746movq %r10,16(%rdi)747sbbq %rax,%rax748movq %r11,24(%rdi)749andq $38,%rax750751subq %rax,%r8752movq %r8,0(%rdi)753754.Lfe64_sub_epilogue:755.byte 0xf3,0xc3756.cfi_endproc757.size x25519_fe64_sub,.-x25519_fe64_sub758759.globl x25519_fe64_tobytes760.type x25519_fe64_tobytes,@function761.align 32762x25519_fe64_tobytes:763.Lfe64_to_body:764.cfi_startproc765movq 0(%rsi),%r8766movq 8(%rsi),%r9767movq 16(%rsi),%r10768movq 24(%rsi),%r11769770771leaq (%r11,%r11,1),%rax772sarq $63,%r11773shrq $1,%rax774andq $19,%r11775addq $19,%r11776777addq %r11,%r8778adcq $0,%r9779adcq $0,%r10780adcq $0,%rax781782leaq (%rax,%rax,1),%r11783sarq $63,%rax784shrq $1,%r11785notq %rax786andq $19,%rax787788subq %rax,%r8789sbbq $0,%r9790sbbq $0,%r10791sbbq $0,%r11792793movq %r8,0(%rdi)794movq %r9,8(%rdi)795movq %r10,16(%rdi)796movq %r11,24(%rdi)797798.Lfe64_to_epilogue:799.byte 0xf3,0xc3800.cfi_endproc801.size x25519_fe64_tobytes,.-x25519_fe64_tobytes802.byte 88,50,53,53,49,57,32,112,114,105,109,105,116,105,118,101,115,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,0803.section ".note.gnu.property", "a"804.p2align 3805.long 1f - 0f806.long 4f - 1f807.long 58080:809# "GNU" encoded with .byte, since .asciz isn't supported810# on Solaris.811.byte 0x47812.byte 0x4e813.byte 0x55814.byte 08151:816.p2align 3817.long 0xc0000002818.long 3f - 2f8192:820.long 38213:822.p2align 38234:824825826