def __init__(self, function_manager, addr, name=None, syscall=False):
        self.transition_graph = networkx.DiGraph()
        self._local_transition_graph = None

        self._ret_sites = set()
        self._call_sites = {}
        self.addr = addr
        self._function_manager = function_manager
        self.is_syscall = syscall

        self._project = project = self._function_manager._kb._project

        if name is None:
            # Try to get a name from project.loader
            name = project.loader.find_symbol_name(addr)
        if name is None:
            name = project.loader.find_plt_stub_name(addr)
            if name is not None:
                name = 'plt.' + name
        if project.is_hooked(addr):
            hooker = project.hooked_by(addr)
            if hooker is simuvex.SimProcedures['stubs']['ReturnUnconstrained']:
                kwargs_dict = project._sim_procedures[addr][1]
                if 'resolves' in kwargs_dict:
                    name = kwargs_dict['resolves']
            else:
                name = hooker.__name__.split('.')[-1]
        if name is None:
            name = 'sub_%x' % addr

        self.name = name

        # Register offsets of those arguments passed in registers
        self._argument_registers = []
        # Stack offsets of those arguments passed in stack variables
        self._argument_stack_variables = []

        # These properties are set by VariableManager
        self.bp_on_stack = False
        self.retaddr_on_stack = False

        self.sp_delta = 0

        # Calling convention
        self.call_convention = None

        # Whether this function returns or not. `None` means it's not determined yet
        self.returning = None

        self.prepared_registers = set()
        self.prepared_stack_variables = set()
        self.registers_read_afterwards = set()

        self.startpoint = None

        self._addr_to_block_node = {}  # map addresses to nodes
        self._block_sizes = {}  # map addresses to block sizes
        self._block_cache = {}  # a cache of real, hard data Block objects
Function constructor
dataset/ETHPy150Open angr/angr/angr/knowledge/function.py/Function.__init__