func AddAfterBasic(out, a, b *Bignum25519) {
	out[0] = a[0] + b[0]
	out[1] = a[1] + b[1]
	out[2] = a[2] + b[2]
	out[3] = a[3] + b[3]
	out[4] = a[4] + b[4]
}
out = a + b, where a and/or b are the result of a basic op (add,sub)
package curve25519
import (
	"encoding/binary"
	"math/bits"
)
const (
	reduceMask51 = (uint64(1) << 51) - 1
	twoP0     = 0x0fffffffffffda
	twoP1234  = 0x0ffffffffffffe
	fourP0    = 0x1fffffffffffb4
	fourP1234 = 0x1ffffffffffffc
)
type Bignum25519 [5]uint64
func (out *Bignum25519) Reset() {
	for i := range out {
		out[i] = 0
	}
}
func Copy(out, in *Bignum25519) {
	out[0] = in[0]
	out[1] = in[1]
	out[2] = in[2]
	out[3] = in[3]
	out[4] = in[4]
}
func Add(out, a, b *Bignum25519) {
	out[0] = a[0] + b[0]
	out[1] = a[1] + b[1]
	out[2] = a[2] + b[2]
	out[3] = a[3] + b[3]
	out[4] = a[4] + b[4]
}