-rw-r--r-- 11323 lib25519-20221222/crypto_nP/montgomery25519/amd64-51/work_cswap.S raw
// linker define work_cswap
# qhasm: int64 workp
# qhasm: int64 swap
# qhasm: input workp
# qhasm: input swap
# qhasm: int64 w0
# qhasm: int64 w1
# qhasm: int64 w2
# qhasm: int64 w3
# qhasm: int64 w4
# qhasm: int64 w5
# qhasm: int64 w6
# qhasm: int64 w7
# qhasm: int64 w8
# qhasm: int64 w9
# qhasm: int64 w10
# qhasm: int64 w11
# qhasm: int64 w12
# qhasm: int64 w13
# qhasm: int64 w14
# qhasm: int64 w15
# qhasm: int64 w16
# qhasm: int64 w17
# qhasm: int64 w18
# qhasm: int64 w19
# qhasm: int64 t0
# qhasm: int64 t1
# qhasm: int64 t2
# qhasm: int64 t3
# qhasm: int64 t4
# qhasm: int64 t5
# qhasm: int64 t6
# qhasm: int64 t7
# qhasm: int64 t8
# qhasm: int64 t9
# qhasm: int64 caller1
# qhasm: int64 caller2
# qhasm: int64 caller3
# qhasm: int64 caller4
# qhasm: int64 caller5
# qhasm: int64 caller6
# qhasm: int64 caller7
# qhasm: caller caller1
# qhasm: caller caller2
# qhasm: caller caller3
# qhasm: caller caller4
# qhasm: caller caller5
# qhasm: caller caller6
# qhasm: caller caller7
# qhasm: stack64 caller1_stack
# qhasm: stack64 caller2_stack
# qhasm: stack64 caller3_stack
# qhasm: stack64 caller4_stack
# qhasm: stack64 caller5_stack
# qhasm: stack64 caller6_stack
# qhasm: stack64 caller7_stack
# qhasm: enter CRYPTO_SHARED_NAMESPACE(work_cswap)
.text
.p2align 5
.globl _CRYPTO_SHARED_NAMESPACE(work_cswap)
.globl CRYPTO_SHARED_NAMESPACE(work_cswap)
_CRYPTO_SHARED_NAMESPACE(work_cswap):
CRYPTO_SHARED_NAMESPACE(work_cswap):
mov %rsp,%r11
and $31,%r11
add $0,%r11
sub %r11,%rsp
# qhasm: =? swap - 1
# asm 1: cmp $1,<swap=int64#2
# asm 2: cmp $1,<swap=%rsi
cmp $1,%rsi
# qhasm: w0 = *(uint64 *)(workp + 0)
# asm 1: movq 0(<workp=int64#1),>w0=int64#2
# asm 2: movq 0(<workp=%rdi),>w0=%rsi
movq 0(%rdi),%rsi
# qhasm: w10 = *(uint64 *)(workp + 80)
# asm 1: movq 80(<workp=int64#1),>w10=int64#3
# asm 2: movq 80(<workp=%rdi),>w10=%rdx
movq 80(%rdi),%rdx
# qhasm: w1 = *(uint64 *)(workp + 8)
# asm 1: movq 8(<workp=int64#1),>w1=int64#4
# asm 2: movq 8(<workp=%rdi),>w1=%rcx
movq 8(%rdi),%rcx
# qhasm: w11 = *(uint64 *)(workp + 88)
# asm 1: movq 88(<workp=int64#1),>w11=int64#5
# asm 2: movq 88(<workp=%rdi),>w11=%r8
movq 88(%rdi),%r8
# qhasm: t0 = w0
# asm 1: mov <w0=int64#2,>t0=int64#6
# asm 2: mov <w0=%rsi,>t0=%r9
mov %rsi,%r9
# qhasm: w0 = w10 if =
# asm 1: cmove <w10=int64#3,<w0=int64#2
# asm 2: cmove <w10=%rdx,<w0=%rsi
cmove %rdx,%rsi
# qhasm: w10 = t0 if =
# asm 1: cmove <t0=int64#6,<w10=int64#3
# asm 2: cmove <t0=%r9,<w10=%rdx
cmove %r9,%rdx
# qhasm: t1 = w1
# asm 1: mov <w1=int64#4,>t1=int64#6
# asm 2: mov <w1=%rcx,>t1=%r9
mov %rcx,%r9
# qhasm: w1 = w11 if =
# asm 1: cmove <w11=int64#5,<w1=int64#4
# asm 2: cmove <w11=%r8,<w1=%rcx
cmove %r8,%rcx
# qhasm: w11 = t1 if =
# asm 1: cmove <t1=int64#6,<w11=int64#5
# asm 2: cmove <t1=%r9,<w11=%r8
cmove %r9,%r8
# qhasm: *(uint64 *)(workp + 0) = w0
# asm 1: movq <w0=int64#2,0(<workp=int64#1)
# asm 2: movq <w0=%rsi,0(<workp=%rdi)
movq %rsi,0(%rdi)
# qhasm: *(uint64 *)(workp + 80) = w10
# asm 1: movq <w10=int64#3,80(<workp=int64#1)
# asm 2: movq <w10=%rdx,80(<workp=%rdi)
movq %rdx,80(%rdi)
# qhasm: *(uint64 *)(workp + 8) = w1
# asm 1: movq <w1=int64#4,8(<workp=int64#1)
# asm 2: movq <w1=%rcx,8(<workp=%rdi)
movq %rcx,8(%rdi)
# qhasm: *(uint64 *)(workp + 88) = w11
# asm 1: movq <w11=int64#5,88(<workp=int64#1)
# asm 2: movq <w11=%r8,88(<workp=%rdi)
movq %r8,88(%rdi)
# qhasm: w2 = *(uint64 *)(workp + 16)
# asm 1: movq 16(<workp=int64#1),>w2=int64#2
# asm 2: movq 16(<workp=%rdi),>w2=%rsi
movq 16(%rdi),%rsi
# qhasm: w12 = *(uint64 *)(workp + 96)
# asm 1: movq 96(<workp=int64#1),>w12=int64#3
# asm 2: movq 96(<workp=%rdi),>w12=%rdx
movq 96(%rdi),%rdx
# qhasm: w3 = *(uint64 *)(workp + 24)
# asm 1: movq 24(<workp=int64#1),>w3=int64#4
# asm 2: movq 24(<workp=%rdi),>w3=%rcx
movq 24(%rdi),%rcx
# qhasm: w13 = *(uint64 *)(workp + 104)
# asm 1: movq 104(<workp=int64#1),>w13=int64#5
# asm 2: movq 104(<workp=%rdi),>w13=%r8
movq 104(%rdi),%r8
# qhasm: t2 = w2
# asm 1: mov <w2=int64#2,>t2=int64#6
# asm 2: mov <w2=%rsi,>t2=%r9
mov %rsi,%r9
# qhasm: w2 = w12 if =
# asm 1: cmove <w12=int64#3,<w2=int64#2
# asm 2: cmove <w12=%rdx,<w2=%rsi
cmove %rdx,%rsi
# qhasm: w12 = t2 if =
# asm 1: cmove <t2=int64#6,<w12=int64#3
# asm 2: cmove <t2=%r9,<w12=%rdx
cmove %r9,%rdx
# qhasm: t3 = w3
# asm 1: mov <w3=int64#4,>t3=int64#6
# asm 2: mov <w3=%rcx,>t3=%r9
mov %rcx,%r9
# qhasm: w3 = w13 if =
# asm 1: cmove <w13=int64#5,<w3=int64#4
# asm 2: cmove <w13=%r8,<w3=%rcx
cmove %r8,%rcx
# qhasm: w13 = t3 if =
# asm 1: cmove <t3=int64#6,<w13=int64#5
# asm 2: cmove <t3=%r9,<w13=%r8
cmove %r9,%r8
# qhasm: *(uint64 *)(workp + 16) = w2
# asm 1: movq <w2=int64#2,16(<workp=int64#1)
# asm 2: movq <w2=%rsi,16(<workp=%rdi)
movq %rsi,16(%rdi)
# qhasm: *(uint64 *)(workp + 96) = w12
# asm 1: movq <w12=int64#3,96(<workp=int64#1)
# asm 2: movq <w12=%rdx,96(<workp=%rdi)
movq %rdx,96(%rdi)
# qhasm: *(uint64 *)(workp + 24) = w3
# asm 1: movq <w3=int64#4,24(<workp=int64#1)
# asm 2: movq <w3=%rcx,24(<workp=%rdi)
movq %rcx,24(%rdi)
# qhasm: *(uint64 *)(workp + 104) = w13
# asm 1: movq <w13=int64#5,104(<workp=int64#1)
# asm 2: movq <w13=%r8,104(<workp=%rdi)
movq %r8,104(%rdi)
# qhasm: w4 = *(uint64 *)(workp + 32)
# asm 1: movq 32(<workp=int64#1),>w4=int64#2
# asm 2: movq 32(<workp=%rdi),>w4=%rsi
movq 32(%rdi),%rsi
# qhasm: w14 = *(uint64 *)(workp + 112)
# asm 1: movq 112(<workp=int64#1),>w14=int64#3
# asm 2: movq 112(<workp=%rdi),>w14=%rdx
movq 112(%rdi),%rdx
# qhasm: w5 = *(uint64 *)(workp + 40)
# asm 1: movq 40(<workp=int64#1),>w5=int64#4
# asm 2: movq 40(<workp=%rdi),>w5=%rcx
movq 40(%rdi),%rcx
# qhasm: w15 = *(uint64 *)(workp + 120)
# asm 1: movq 120(<workp=int64#1),>w15=int64#5
# asm 2: movq 120(<workp=%rdi),>w15=%r8
movq 120(%rdi),%r8
# qhasm: t4 = w4
# asm 1: mov <w4=int64#2,>t4=int64#6
# asm 2: mov <w4=%rsi,>t4=%r9
mov %rsi,%r9
# qhasm: w4 = w14 if =
# asm 1: cmove <w14=int64#3,<w4=int64#2
# asm 2: cmove <w14=%rdx,<w4=%rsi
cmove %rdx,%rsi
# qhasm: w14 = t4 if =
# asm 1: cmove <t4=int64#6,<w14=int64#3
# asm 2: cmove <t4=%r9,<w14=%rdx
cmove %r9,%rdx
# qhasm: t5 = w5
# asm 1: mov <w5=int64#4,>t5=int64#6
# asm 2: mov <w5=%rcx,>t5=%r9
mov %rcx,%r9
# qhasm: w5 = w15 if =
# asm 1: cmove <w15=int64#5,<w5=int64#4
# asm 2: cmove <w15=%r8,<w5=%rcx
cmove %r8,%rcx
# qhasm: w15 = t5 if =
# asm 1: cmove <t5=int64#6,<w15=int64#5
# asm 2: cmove <t5=%r9,<w15=%r8
cmove %r9,%r8
# qhasm: *(uint64 *)(workp + 32) = w4
# asm 1: movq <w4=int64#2,32(<workp=int64#1)
# asm 2: movq <w4=%rsi,32(<workp=%rdi)
movq %rsi,32(%rdi)
# qhasm: *(uint64 *)(workp + 112) = w14
# asm 1: movq <w14=int64#3,112(<workp=int64#1)
# asm 2: movq <w14=%rdx,112(<workp=%rdi)
movq %rdx,112(%rdi)
# qhasm: *(uint64 *)(workp + 40) = w5
# asm 1: movq <w5=int64#4,40(<workp=int64#1)
# asm 2: movq <w5=%rcx,40(<workp=%rdi)
movq %rcx,40(%rdi)
# qhasm: *(uint64 *)(workp + 120) = w15
# asm 1: movq <w15=int64#5,120(<workp=int64#1)
# asm 2: movq <w15=%r8,120(<workp=%rdi)
movq %r8,120(%rdi)
# qhasm: w6 = *(uint64 *)(workp + 48)
# asm 1: movq 48(<workp=int64#1),>w6=int64#2
# asm 2: movq 48(<workp=%rdi),>w6=%rsi
movq 48(%rdi),%rsi
# qhasm: w16 = *(uint64 *)(workp + 128)
# asm 1: movq 128(<workp=int64#1),>w16=int64#3
# asm 2: movq 128(<workp=%rdi),>w16=%rdx
movq 128(%rdi),%rdx
# qhasm: w7 = *(uint64 *)(workp + 56)
# asm 1: movq 56(<workp=int64#1),>w7=int64#4
# asm 2: movq 56(<workp=%rdi),>w7=%rcx
movq 56(%rdi),%rcx
# qhasm: w17 = *(uint64 *)(workp + 136)
# asm 1: movq 136(<workp=int64#1),>w17=int64#5
# asm 2: movq 136(<workp=%rdi),>w17=%r8
movq 136(%rdi),%r8
# qhasm: t6 = w6
# asm 1: mov <w6=int64#2,>t6=int64#6
# asm 2: mov <w6=%rsi,>t6=%r9
mov %rsi,%r9
# qhasm: w6 = w16 if =
# asm 1: cmove <w16=int64#3,<w6=int64#2
# asm 2: cmove <w16=%rdx,<w6=%rsi
cmove %rdx,%rsi
# qhasm: w16 = t6 if =
# asm 1: cmove <t6=int64#6,<w16=int64#3
# asm 2: cmove <t6=%r9,<w16=%rdx
cmove %r9,%rdx
# qhasm: t7 = w7
# asm 1: mov <w7=int64#4,>t7=int64#6
# asm 2: mov <w7=%rcx,>t7=%r9
mov %rcx,%r9
# qhasm: w7 = w17 if =
# asm 1: cmove <w17=int64#5,<w7=int64#4
# asm 2: cmove <w17=%r8,<w7=%rcx
cmove %r8,%rcx
# qhasm: w17 = t7 if =
# asm 1: cmove <t7=int64#6,<w17=int64#5
# asm 2: cmove <t7=%r9,<w17=%r8
cmove %r9,%r8
# qhasm: *(uint64 *)(workp + 48) = w6
# asm 1: movq <w6=int64#2,48(<workp=int64#1)
# asm 2: movq <w6=%rsi,48(<workp=%rdi)
movq %rsi,48(%rdi)
# qhasm: *(uint64 *)(workp + 128) = w16
# asm 1: movq <w16=int64#3,128(<workp=int64#1)
# asm 2: movq <w16=%rdx,128(<workp=%rdi)
movq %rdx,128(%rdi)
# qhasm: *(uint64 *)(workp + 56) = w7
# asm 1: movq <w7=int64#4,56(<workp=int64#1)
# asm 2: movq <w7=%rcx,56(<workp=%rdi)
movq %rcx,56(%rdi)
# qhasm: *(uint64 *)(workp + 136) = w17
# asm 1: movq <w17=int64#5,136(<workp=int64#1)
# asm 2: movq <w17=%r8,136(<workp=%rdi)
movq %r8,136(%rdi)
# qhasm: w8 = *(uint64 *)(workp + 64)
# asm 1: movq 64(<workp=int64#1),>w8=int64#2
# asm 2: movq 64(<workp=%rdi),>w8=%rsi
movq 64(%rdi),%rsi
# qhasm: w18 = *(uint64 *)(workp + 144)
# asm 1: movq 144(<workp=int64#1),>w18=int64#3
# asm 2: movq 144(<workp=%rdi),>w18=%rdx
movq 144(%rdi),%rdx
# qhasm: w9 = *(uint64 *)(workp + 72)
# asm 1: movq 72(<workp=int64#1),>w9=int64#4
# asm 2: movq 72(<workp=%rdi),>w9=%rcx
movq 72(%rdi),%rcx
# qhasm: w19 = *(uint64 *)(workp + 152)
# asm 1: movq 152(<workp=int64#1),>w19=int64#5
# asm 2: movq 152(<workp=%rdi),>w19=%r8
movq 152(%rdi),%r8
# qhasm: t8 = w8
# asm 1: mov <w8=int64#2,>t8=int64#6
# asm 2: mov <w8=%rsi,>t8=%r9
mov %rsi,%r9
# qhasm: w8 = w18 if =
# asm 1: cmove <w18=int64#3,<w8=int64#2
# asm 2: cmove <w18=%rdx,<w8=%rsi
cmove %rdx,%rsi
# qhasm: w18 = t8 if =
# asm 1: cmove <t8=int64#6,<w18=int64#3
# asm 2: cmove <t8=%r9,<w18=%rdx
cmove %r9,%rdx
# qhasm: t9 = w9
# asm 1: mov <w9=int64#4,>t9=int64#6
# asm 2: mov <w9=%rcx,>t9=%r9
mov %rcx,%r9
# qhasm: w9 = w19 if =
# asm 1: cmove <w19=int64#5,<w9=int64#4
# asm 2: cmove <w19=%r8,<w9=%rcx
cmove %r8,%rcx
# qhasm: w19 = t9 if =
# asm 1: cmove <t9=int64#6,<w19=int64#5
# asm 2: cmove <t9=%r9,<w19=%r8
cmove %r9,%r8
# qhasm: *(uint64 *)(workp + 64) = w8
# asm 1: movq <w8=int64#2,64(<workp=int64#1)
# asm 2: movq <w8=%rsi,64(<workp=%rdi)
movq %rsi,64(%rdi)
# qhasm: *(uint64 *)(workp + 144) = w18
# asm 1: movq <w18=int64#3,144(<workp=int64#1)
# asm 2: movq <w18=%rdx,144(<workp=%rdi)
movq %rdx,144(%rdi)
# qhasm: *(uint64 *)(workp + 72) = w9
# asm 1: movq <w9=int64#4,72(<workp=int64#1)
# asm 2: movq <w9=%rcx,72(<workp=%rdi)
movq %rcx,72(%rdi)
# qhasm: *(uint64 *)(workp + 152) = w19
# asm 1: movq <w19=int64#5,152(<workp=int64#1)
# asm 2: movq <w19=%r8,152(<workp=%rdi)
movq %r8,152(%rdi)
# qhasm: leave
add %r11,%rsp
mov %rdi,%rax
mov %rsi,%rdx
ret