docs: def _def_lookup(self, variable):  # pylint:disable=no-self-use
          """
          This is a backward lookup in the previous defs. Note that, as we are using VSA, it is possible that `variable`
          is affected by several definitions.
  
          :param angr.analyses.ddg.LiveDefinitions live_defs:
                              The collection of live definitions.
          :param SimVariable: The variable to lookup for 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 = {}
  
          for code_loc in self._live_defs.lookup_defs(variable):
              # 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))
  
              prevdefs[code_loc] = {
                  'type': type_,
                  'data': variable
              }
  
          return prevdefs