code: def simple_paths_by_address(self, start_address, end_address):
          
          cfg_start = self.find_function_by_address(start_address)
          cfg_end = self.find_function_by_address(end_address)
  
          if not cfg_start or not cfg_end:
              raise Exception("Start/End function not found.")
  
          start_address = cfg_start.start_address
          end_address = cfg_end.start_address
  
          paths = networkx.all_simple_paths(self._graph, source=start_address, target=end_address)
  
          return ([self._cfg_by_addr[addr] for addr in path] for path in paths)
docs: Return a list of paths between start and end functions.