(self, live_defs, variable)
return prevdefs
This is a backward lookup in the previous defs.

        :param addr_list: a list of normalized addresses.
                        Note that, as we are using VSA, it is possible that @a is affected by several definitions.
        :returns:        a dict {stmt:labels} where label is the number of individual addresses of addr_list (or the
                        actual set of addresses depending on the keep_addrs flag) that are definted by stmt.
This is a backward lookup in the previous defs.
This is a backward lookup in the previous defs .
def _def_lookup(self, live_defs, variable):
        """
        This is a backward lookup in the previous defs.

        :param addr_list: a list of normalized addresses.
                        Note that, as we are using VSA, it is possible that @a is affected by several definitions.
        :returns:        a dict {stmt:labels} where label is the number of individual addresses of addr_list (or the
                        actual set of addresses depending on the keep_addrs flag) that are definted by stmt.
        """

        prevdefs = { }

        if variable in live_defs:
            code_loc_set = live_defs[variable]
            for code_loc in code_loc_set:
                # Label edges with cardinality or actual sets of addresses
                if isinstance(variable, SimMemoryVariable):
                    type_ = 'mem'
                elif isinstance(variable, SimRegisterVariable):
                    type_ = 'reg'
                else:
                    raise AngrDDGError('Unknown variable type %s' % type(variable))

                if self.keep_data is True:
                    data = variable

                    prevdefs[code_loc] = {
                        'type': type_,
                        'data': data
                    }

                else:
                    if code_loc in prevdefs:
                        count = prevdefs[code_loc]['count'] + 1
                    else:
                        count = 0
                    prevdefs[code_loc] = {
                        'type': type_,
                        'count': count
                    }
        return prevdefs
def _def_lookup ( self , live_defs , variable ) : prevdefs = { } if variable in live_defs : code_loc_set = live_defs [ variable ] for code_loc in code_loc_set : # Label edges with cardinality or actual sets of addresses if isinstance ( variable , SimMemoryVariable ) : type_ = 'mem' elif isinstance ( variable , SimRegisterVariable ) : type_ = 'reg' else : raise AngrDDGError ( 'Unknown variable type %s' % type ( variable ) ) if self . keep_data is True : data = variable prevdefs [ code_loc ] = { 'type' : type_ , 'data' : data } else : if code_loc in prevdefs : count = prevdefs [ code_loc ] [ 'count' ] + 1 else : count = 0 prevdefs [ code_loc ] = { 'type' : type_ , 'count' : count } return prevdefs