INNER CODE UNIT · Rust
gen_word
RustCrypto/stream-ciphers · hc-256/src/lib.rs:163
fn gen_word(&mut self) -> u32 {
let i = self.idx as usize;
let j = self.idx as usize & TABLE_MASK;
self.idx = (self.idx + 1) & (2048 - 1);
if i < 1024 {
self.ptable[j] = self.ptable[j]
.wrapping_add(self.ptable[j.wrapping_sub(10) & TABLE_MASK])
.wrapping_add(self.g1(
self.ptable[j.wrapping_sub(3) & TABLE_MASK],
self.ptable[j.wrapping_sub(1023) & TABLE_MASK],
));
self.h1(self.ptable[j.wrapping_sub(12) & TABLE_MASK]) ^ self.ptable[j]
} else {
self.qtable[j] = self.qtable[j]
.wrapping_add(self.qtable[j.wrapping_sub(10) & TABLE_MASK])