///|
pub fn PEImage::exception_entries(
self : Self,
) -> Array[ExceptionEntry] raise PeError {
let directory = match self.directory(3) {
Some(directory) if directory.virtual_address != 0UL && directory.size > 0 =>
directory
_ => return []
}
let start = self.rva_to_offset(directory.virtual_address)
ensure_range(self.data, start, directory.size)
let entry_size = if directory.size % 12 == 0 {
12
} else if directory.size % 8 == 0 {
8
} else {
raise PeError(start, "exception directory size is not aligned")
}
let count = directory.size / entry_size
let limit = if count < 65536 { count } else { 65536 }
let entries = []
for index in 0..