code: def make_symbolic(self, name, addr, length=None):
          
          l.debug("making %s bytes symbolic", length)
  
          if isinstance(addr, str):
              addr, length = self.state.arch.registers[addr]
          else:
              if length is None:
                  raise Exception("Unspecified length!")
  
          r = self.load(addr, length)
  
          v = self.get_unconstrained_bytes(name, r.size())
          self.store(addr, v)
          self.state.add_constraints(r == v)
          l.debug("... eq constraints: %s", r == v)
          return v
docs: Replaces `length` bytes starting at `addr` with a symbolic variable named name. Adds a constraint equaling that
          symbolic variable to the value previously at `addr`, and returns the variable.