let get_data is_affected =
  let file = Benl_clflags.get_cache_file () in
  if !Benl_clflags.use_cache && Sys.file_exists file then
    filter_affected (Marshal.load file) is_affected
  else
    let origin =
      if !use_projectb then Projectb.mk_origin () else file_origin
    in
    let src_raw = origin.get_sources M.empty in
    let bin_raw = List.fold_left
      origin.get_binaries PAMap.empty !Benl_clflags.architectures
    in
    let bin_raw = if !run_debcheck
      then inject_debcheck_data bin_raw !Benl_clflags.architectures
      else bin_raw
    in
    let data = { src_map = src_raw; bin_map = bin_raw; } in
    Marshal.dump file data;
    filter_affected data is_affected