code: def mark_nonreturning_calls_endpoints(self):
          
  
          for src, dst, data in self.transition_graph.edges(data=True):
              if 'type' in data and data['type'] == 'call':
                  func_addr = dst.addr
                  if func_addr in self._function_manager:
                      function = self._function_manager[func_addr]
                      if function.returning is False:
                          # the target function does not return
                          the_node = self.get_node(src.addr)
                          self._callout_sites.add(the_node)
                          self._add_endpoint(the_node, 'call')
docs: Iterate through all call edges in transition graph. For each call a non-returning function, mark the source
          basic block as an endpoint.
  
          This method should only be executed once all functions are recovered and analyzed by CFG recovery, so we know
          whether each function returns or not.
  
          :return: None