docs: def add_retout_site(self, node):
          """
          Add a custom retout site.
  
          Retout (returning to outside of the function) sites are very rare. It mostly occurs during CFG recovery when we
          incorrectly identify the beginning of a function in the first iteration, and then correctly identify that
          function later in the same iteration (function alignments can lead to this bizarre case). We will mark all edges
          going out of the header of that function as a outside edge, because all successors now belong to the
          incorrectly-identified function. This identification error will be fixed in the second iteration of CFG
          recovery. However, we still want to keep track of jumpouts/retouts during the first iteration so other logic in
          CFG recovery still work.
  
          :param node: The address of the basic block that control flow leaves the current function after a call.
          :return:     None
          """
  
          self._register_nodes(True, node)
          self._retout_sites.add(node)
          self._add_endpoint(node, 'return')