(self, action, prog_var)
:param SimAction action:
        :param ProgramVariable prog_var:
        :return:
def _make_edges(self, action, prog_var):
        """

        :param SimAction action:
        :param ProgramVariable prog_var:
        :return:
        """

        # For each of its register dependency and data dependency, we annotate the corresponding edge
        for reg_offset in action.addr.reg_deps:
            self._stmt_graph_annotate_edges(self._register_edges[reg_offset], subtype='mem_addr')
            reg_variable = SimRegisterVariable(reg_offset, self._get_register_size(reg_offset))
            prev_defs = self._def_lookup(reg_variable)
            for loc, _ in prev_defs.items():
                v = ProgramVariable(reg_variable, loc, arch=self.project.arch)
                self._data_graph_add_edge(v, prog_var, type='mem_addr')

        for tmp in action.addr.tmp_deps:
            self._stmt_graph_annotate_edges(self._temp_edges[tmp], subtype='mem_addr')
            if tmp in self._temp_variables:
                self._data_graph_add_edge(self._temp_variables[tmp], prog_var, type='mem_addr')

        if not action.data.reg_deps and not action.data.tmp_deps:
            # might be a constant assignment
            v = action.data.ast
            if not v.symbolic:
                const_var = SimConstantVariable(v._model_concrete.value)
                const_progvar = ProgramVariable(const_var, prog_var.location)
                self._data_graph_add_edge(const_progvar, prog_var, type='mem_data')

        else:
            for reg_offset in action.data.reg_deps:
                self._stmt_graph_annotate_edges(self._register_edges[reg_offset], subtype='mem_data')
                reg_variable = SimRegisterVariable(reg_offset, self._get_register_size(reg_offset))
                prev_defs = self._def_lookup(reg_variable)
                for loc, _ in prev_defs.items():
                    v = ProgramVariable(reg_variable, loc, arch=self.project.arch)
                    self._data_graph_add_edge(v, prog_var, type='mem_data')

            for tmp in action.data.tmp_deps:
                self._stmt_graph_annotate_edges(self._temp_edges[tmp], subtype='mem_data')
                if tmp in self._temp_variables:
                    self._data_graph_add_edge(self._temp_variables[tmp], prog_var, type='mem_data')
def _make_edges ( self , action , prog_var ) : # For each of its register dependency and data dependency, we annotate the corresponding edge for reg_offset in action . addr . reg_deps : self . _stmt_graph_annotate_edges ( self . _register_edges [ reg_offset ] , subtype = 'mem_addr' ) reg_variable = SimRegisterVariable ( reg_offset , self . _get_register_size ( reg_offset ) ) prev_defs = self . _def_lookup ( reg_variable ) for loc , _ in prev_defs . items ( ) : v = ProgramVariable ( reg_variable , loc , arch = self . project . arch ) self . _data_graph_add_edge ( v , prog_var , type = 'mem_addr' ) for tmp in action . addr . tmp_deps : self . _stmt_graph_annotate_edges ( self . _temp_edges [ tmp ] , subtype = 'mem_addr' ) if tmp in self . _temp_variables : self . _data_graph_add_edge ( self . _temp_variables [ tmp ] , prog_var , type = 'mem_addr' ) if not action . data . reg_deps and not action . data . tmp_deps : # might be a constant assignment v = action . data . ast if not v . symbolic : const_var = SimConstantVariable ( v . _model_concrete . value ) const_progvar = ProgramVariable ( const_var , prog_var . location ) self . _data_graph_add_edge ( const_progvar , prog_var , type = 'mem_data' ) else : for reg_offset in action . data . reg_deps : self . _stmt_graph_annotate_edges ( self . _register_edges [ reg_offset ] , subtype = 'mem_data' ) reg_variable = SimRegisterVariable ( reg_offset , self . _get_register_size ( reg_offset ) ) prev_defs = self . _def_lookup ( reg_variable ) for loc , _ in prev_defs . items ( ) : v = ProgramVariable ( reg_variable , loc , arch = self . project . arch ) self . _data_graph_add_edge ( v , prog_var , type = 'mem_data' ) for tmp in action . data . tmp_deps : self . _stmt_graph_annotate_edges ( self . _temp_edges [ tmp ] , subtype = 'mem_data' ) if tmp in self . _temp_variables : self . _data_graph_add_edge ( self . _temp_variables [ tmp ] , prog_var , type = 'mem_data' )