(self, node_key, terminator_for_nonexistent_node=False)
return self._nodes[node_key]
:param node_key:
        :return:
def _graph_get_node(self, node_key, terminator_for_nonexistent_node=False):
        """

        :param node_key:
        :return:
        """

        if node_key not in self._nodes:
            if not terminator_for_nonexistent_node:
                return None
            # Generate a PathTerminator node
            addr = self._block_id_addr(node_key)
            func_addr = self._block_id_current_func_addr(node_key)
            if func_addr is None:
                # We'll have to use the current block address instead
                # TODO: Is it really OK?
                func_addr = self._block_id_addr(node_key)

            is_thumb = isinstance(self.project.arch, ArchARM) and addr % 2 == 1

            pt = CFGENode(self._block_id_addr(node_key),
                          None,
                          self.model,
                          input_state=None,
                          simprocedure_name="PathTerminator",
                          function_address=func_addr,
                          callstack_key=self._block_id_callstack_key(node_key),
                          thumb=is_thumb
                          )
            if self._keep_state:
                # We don't have an input state available for it (otherwise we won't have to create a
                # PathTerminator). This is just a trick to make get_any_irsb() happy.
                pt.input_state = self.project.factory.entry_state()
                pt.input_state.ip = pt.addr
            self._model.add_node(node_key, pt)

            if is_thumb:
                self._thumb_addrs.add(addr)
                self._thumb_addrs.add(addr - 1)

            l.debug("Block ID %s does not exist. Create a PathTerminator instead.",
                    self._block_id_repr(node_key))

        return self._nodes[node_key]
def _graph_get_node ( self , node_key , terminator_for_nonexistent_node = False ) : if node_key not in self . _nodes : if not terminator_for_nonexistent_node : return None # Generate a PathTerminator node addr = self . _block_id_addr ( node_key ) func_addr = self . _block_id_current_func_addr ( node_key ) if func_addr is None : # We'll have to use the current block address instead # TODO: Is it really OK? func_addr = self . _block_id_addr ( node_key ) is_thumb = isinstance ( self . project . arch , ArchARM ) and addr % 2 == 1 pt = CFGENode ( self . _block_id_addr ( node_key ) , None , self . model , input_state = None , simprocedure_name = "PathTerminator" , function_address = func_addr , callstack_key = self . _block_id_callstack_key ( node_key ) , thumb = is_thumb ) if self . _keep_state : # We don't have an input state available for it (otherwise we won't have to create a # PathTerminator). This is just a trick to make get_any_irsb() happy. pt . input_state = self . project . factory . entry_state ( ) pt . input_state . ip = pt . addr self . _model . add_node ( node_key , pt ) if is_thumb : self . _thumb_addrs . add ( addr ) self . _thumb_addrs . add ( addr - 1 ) l . debug ( "Block ID %s does not exist. Create a PathTerminator instead." , self . _block_id_repr ( node_key ) ) return self . _nodes [ node_key ]