def _get_addr(self, v):
        """
        Get address of the basic block or CFG node specified by v.
        :param v: Can be one of the following: a simuvex.SimIRSB, a simuvex.SimProcedure, a CFGNode, or an address.
        :return: The address.
        :rtype: int
        """

        if isinstance(v, simuvex.SimIRSB) or isinstance(v, simuvex.SimProcedure):
            if type(self._graph.nodes()[0]) in (int, long):
                return v.addr
            else:
                return v
        elif isinstance(v, CFGNode):
            return v.addr
        elif type(v) in (int, long):
            return v
        else:
            raise AngrBladeError('Unsupported SimRun argument type %s', type(v))
dataset/ETHPy150Open angr/angr/angr/blade.py/Blade._get_addr/original