diff --git a/rust/src/low_level_il/operation.rs b/rust/src/low_level_il/operation.rs index 419a0dcd9..fa320060f 100644 --- a/rust/src/low_level_il/operation.rs +++ b/rust/src/low_level_il/operation.rs @@ -1754,12 +1754,14 @@ where } } - let mut mask = -1i64 as u64; - - if self.op.size < mem::size_of::() { - mask <<= self.op.size * 8; - mask = !mask; - } + let mask: u64 = if self.op.size == 0 { + 1 + } else if self.op.size < mem::size_of::() { + let m = -1i64 << (self.op.size * 8); + !m as u64 + } else { + (-1i64) as u64 + }; self.op.operands[0] & mask }