https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112430
--- Comment #3 from Sam James <sjames at gcc dot gnu.org> ---
Better reduction without uninit:
```
int secp256k1_scalar_reduce_512_r_0_0, secp256k1_scalar_reduce_512_m6,
secp256k1_scalar_reduce_512_m9, secp256k1_scalar_reduce_512_th,
secp256k1_scalar_reduce_512_tl;
unsigned int secp256k1_scalar_reduce_512_c0;
void secp256k1_scalar_reduce_512(unsigned int c1) {
unsigned int c2 = c1 < secp256k1_scalar_reduce_512_th;
int over = secp256k1_scalar_reduce_512_c0 < secp256k1_scalar_reduce_512_m9;
c1 += over;
c2 += c1 < over;
secp256k1_scalar_reduce_512_c0 = c1;
c1 = c2;
c2 = secp256k1_scalar_reduce_512_c0 += secp256k1_scalar_reduce_512_m6;
over = secp256k1_scalar_reduce_512_c0 < secp256k1_scalar_reduce_512_m6;
c1 += over;
secp256k1_scalar_reduce_512_th +=
secp256k1_scalar_reduce_512_c0 < secp256k1_scalar_reduce_512_tl;
c1 += secp256k1_scalar_reduce_512_th;
c2 += c1 < secp256k1_scalar_reduce_512_th;
secp256k1_scalar_reduce_512_r_0_0 = c2;
}
void secp256k1_ecdsa_sig_sign(unsigned int c1) {
secp256k1_scalar_reduce_512(c1); }
```