use crate::memory::source::MemorySource;
use byteorder::{ByteOrder, LE};
pub fn is_valid_uobject(source: &dyn MemorySource, addr: usize) -> bool {
if addr < 0x7ff000000000 || addr > 0x7fff00000000 {
return false; }
if let Ok(vtable_data) = source.read_bytes(addr, 8) {
let vtable = LE::read_u64(&vtable_data) as usize;
vtable >= 0x140000000 && vtable < 0x160000000
} else {
false
}
}
pub fn is_valid_property(source: &dyn MemorySource, addr: usize) -> bool {
if addr == 0 {
return false;
}
if let Ok(ffc_data) = source.read_bytes(addr, 8) {
let ffc = LE::read_u64(&ffc_data) as usize;
ffc >= 0x14e000000 && ffc < 0x152000000
} else {
false
}
}