crypto/ec/curve448/scalar.c:161: error: INTEGER_OVERFLOW_L1
  (0 - 1):unsigned64 by call to `word_is_zero`.
Showing all 5 steps of the trace


crypto/ec/curve448/scalar.c:151:5: Assignment
149.   ) {
150.       unsigned int i;
151.       decaf_dsword_t accum = 0;
           ^
152.   
153.       scalar_decode_short(s, ser, DECAF_448_SCALAR_BYTES);

crypto/ec/curve448/scalar.c:161:30: Call
159.       curve448_scalar_mul(s,s,curve448_scalar_one); /* ham-handed reduce */
160.       
161.       return decaf_succeed_if(~word_is_zero(accum));
                                    ^
162.   }
163.   

crypto/ec/curve448/arch_32/arch_intrinsics.h:10:1: <LHS trace>
8.   #define ARCH_WORD_BITS 32
9.   
10. > static __inline__ __attribute((always_inline,unused))
11.   uint32_t word_is_zero(uint32_t a) {
12.       /* let's hope the compiler isn't clever enough to optimize this. */

crypto/ec/curve448/arch_32/arch_intrinsics.h:10:1: Parameter `a`
  8.   #define ARCH_WORD_BITS 32
  9.   
  10. > static __inline__ __attribute((always_inline,unused))
  11.   uint32_t word_is_zero(uint32_t a) {
  12.       /* let's hope the compiler isn't clever enough to optimize this. */

crypto/ec/curve448/arch_32/arch_intrinsics.h:13:5: Binary operation: (0 - 1):unsigned64 by call to `word_is_zero` 
  11.   uint32_t word_is_zero(uint32_t a) {
  12.       /* let's hope the compiler isn't clever enough to optimize this. */
  13.       return (((uint64_t)a)-1)>>32;
            ^
  14.   }
  15.   

static __inline__ __attribute((always_inline,unused))
uint32_t word_is_zero(uint32_t a) {
    return (((uint64_t)a)-1)>>32;
}
['decaf_error_t curve448_scalar_decode(\n    curve448_scalar_t s,\n    const unsigned char ser[DECAF_448_SCALAR_BYTES]\n) {\n    unsigned int i;\n    decaf_dsword_t accum = 0;\n    scalar_decode_short(s, ser, DECAF_448_SCALAR_BYTES);\n    for (i=0; i<DECAF_448_SCALAR_LIMBS; i++) {\n        accum = (accum + s->limb[i] - sc_p->limb[i]) >> WBITS;\n    }\n    curve448_scalar_mul(s,s,curve448_scalar_one);\n    return decaf_succeed_if(~word_is_zero(accum));\n}', 'static __inline__ __attribute((always_inline,unused))\nuint32_t word_is_zero(uint32_t a) {\n    return (((uint64_t)a)-1)>>32;\n}']