use crate::memory_aobscan::pattern::Pattern;
#[inline]
pub fn verify_pattern_scalar(buffer: &[u8], offset: usize, pattern: &Pattern) -> bool {
let len = pattern.bytes.len();
if offset + len > buffer.len() {
return false;
}
if offset + len + 64 < buffer.len() {
#[cfg(target_arch = "x86_64")]
unsafe {
std::arch::x86_64::_mm_prefetch(
buffer.as_ptr().add(offset + len + 64) as *const i8,
std::arch::x86_64::_MM_HINT_T0,
);
}
}
for i in 0..len {
if pattern.mask[i] && buffer[offset + i] != pattern.bytes[i] {
return false;
}
}
true
}