-rw-r--r-- 733 lib25519-20230630/crypto_nG/merged25519/amd64-64/fe25519_cmov.c raw
// linker define fe25519_cmov
#include "fe25519.h"
void fe25519_cmov(fe25519 *f,const fe25519 *g,unsigned char b)
{
unsigned long long f0 = f->v[0];
unsigned long long f1 = f->v[1];
unsigned long long f2 = f->v[2];
unsigned long long f3 = f->v[3];
unsigned long long g0 = g->v[0];
unsigned long long g1 = g->v[1];
unsigned long long g2 = g->v[2];
unsigned long long g3 = g->v[3];
unsigned long long x0 = f0 ^ g0;
unsigned long long x1 = f1 ^ g1;
unsigned long long x2 = f2 ^ g2;
unsigned long long x3 = f3 ^ g3;
unsigned long long mask = -(unsigned long long) b;
x0 &= mask;
x1 &= mask;
x2 &= mask;
x3 &= mask;
f->v[0] = f0 ^ x0;
f->v[1] = f1 ^ x1;
f->v[2] = f2 ^ x2;
f->v[3] = f3 ^ x3;
}