fn mul_assign(&mut self, scalar: &[u32]) {
        debug_assert!(scalar.len() == N / 2);

        let mut res: Self = Self::identity();
        let mut temp = self.clone();

        for &words in scalar.iter() {
            for i in 0..32 {
                if (words >> i) & 1 == 1 {
                    res.complete_add_assign(&temp);
                }
                temp.double();
            }
        }

        *self = res;
    }
Multiplies `self` by the given scalar.
crates/zkvm/lib/src/utils.rs