M function
Implementation
void M(final List<int> o, final List<int> a, final List<int> b) {
int i;
final List<int> t = List.filled(31, 0);
for (i = 0; i < 16; ++i) {
for (int j = 0; j < 16; ++j) {
t[i + j] += a[i] * b[j];
}
}
const int len = 16 - 1;
for (i = 0; i < len; i++) {
t[i] += 38 * t[i + 16];
}
for (i = 0; i < 16; i++) {
o[i] = t[i];
}
car25519(o);
car25519(o);
}