mod_sub
#define BN_MOD_INV(out, in, mod_div, mod_sub, mod) \
mod_sub(x1, x1, x2); \
mod_sub(x2, x2, x1); \
uint32_t z = mod_sub(4, *in++);
#define mod_sub_64(a, b) ((uint64_t)mod_sub(a, b))
*out++ = z | (mod_sub(4, *in++) << 4);
*out++ = mod_sub(4, v & 15);
*out++ = mod_sub(4, (v >> 4) & 15);
*out++ = mod_sub(4, (v >> 8) & 15);
*out++ = mod_sub(4, (v >> 12) & 15);
*out++ = mod_sub(4, (v >> 16) & 15);
*out++ = mod_sub(4, (v >> 20) & 15);
*out++ = mod_sub(4, (v >> 24) & 15);
*out++ = mod_sub(4, v >> 28);
z = mod_sub(2, *in++);
z |= mod_sub(2, *in++) << 3;
z |= mod_sub(2, *in++) << 6;
z |= mod_sub(2, *in++) << 9;
z |= mod_sub(2, *in++) << 12;
z |= mod_sub(2, *in++) << 15;
z |= mod_sub(2, *in++) << 18;
z |= mod_sub(2, *in++) << 21;
*out++ = mod_sub(2, v & 7);
*out++ = mod_sub(2, (v >> 3) & 7);
*out++ = mod_sub(2, (v >> 6) & 7);
*out++ = mod_sub(2, (v >> 9) & 7);
*out++ = mod_sub(2, (v >> 12) & 7);
*out++ = mod_sub(2, (v >> 15) & 7);
*out++ = mod_sub(2, (v >> 18) & 7);
*out++ = mod_sub(2, (v >> 21) & 7);
*out++ = mod_sub(range, a1 & mask_13_bits);
*out++ = mod_sub(range, (a1 >> 13) & mask_13_bits);
*out++ = mod_sub(range, (a1 >> 26) & mask_13_bits);
*out++ = mod_sub(range, (a1 >> 39) & mask_13_bits);
*out++ = mod_sub(range, (a1 >> 52) | ((a2 << 12) & mask_13_bits));
*out++ = mod_sub(range, (a2 >> 1) & mask_13_bits);
*out++ = mod_sub(range, (a2 >> 14) & mask_13_bits);
*out++ = mod_sub(range, (a2 >> 27) | (b13 << 5));
z0 = mod_sub(range, *in++);
z0 |= (z1 = mod_sub(range, *in++)) << 20;
z1 = (z1 >> 12) | (mod_sub(range, *in++) << 8);
z1 |= (z2 = mod_sub(range, *in++)) << 28;
*out++ = mod_sub(range, a1 & mask_20_bits);
*out++ = mod_sub(range, (a1 >> 20) | ((a2 & 0xFF) << 12));
*out++ = mod_sub(range, (a2 >> 8) & mask_20_bits);
*out++ = mod_sub(range, (a2 >> 28) | (a3 << 4));
z0 = mod_sub(range, *in++);
z0 |= (z1 = mod_sub(range, *in++)) << 18;
z1 = (z1 >> 14) | (mod_sub(range, *in++) << 4);
z1 |= (z2 = mod_sub(range, *in++)) << 22;
*out++ = mod_sub(range, a1 & mask_18_bits);
*out++ = mod_sub(range, (a1 >> 18) | ((a2 & 0xF) << 14));
*out++ = mod_sub(range, (a2 >> 4) & mask_18_bits);
*out++ = mod_sub(range, (a2 >> 22) | (a3 << 10));
uint32_t r_plus_z = mod_sub(w, cs2);
r0_adjusted = mod_sub(*r0, 1 << ML_DSA_D_BITS);
p->coeff[j + offset] = mod_sub(w_even, t_odd);
out->coeff[i] = mod_sub(lhs->coeff[i], rhs->coeff[i]);
out_c->coeff[index] = mod_sub(1, 2 * (signs & 1));
*out = mod_sub(4, nibble);
*out = mod_sub(2, MOD5(nibble));