code: def _get_constrs_move_register(self, gadget):
          
          # *src* register has to have the same value of *dst* for all
          # possibles assignments of *dst*.
  
          dst = self.analyzer.get_register_expr(gadget.destination[0].name, mode="post")
          src = self.analyzer.get_register_expr(gadget.sources[0].name, mode="pre")
  
          # Check all non-modified registers don't change.
          constrs_mod = []
  
          for name in self._arch_info.registers_gp_base:
              if name not in [r.name for r in gadget.modified_registers]:
                  var_initial = self.analyzer.get_register_expr(name, mode="pre")
                  var_final = self.analyzer.get_register_expr(name, mode="post")
  
                  constrs_mod += [var_initial != var_final]
  
          if constrs_mod:
              constrs_mod = [reduce(lambda c, acc: acc | c, constrs_mod[1:], constrs_mod[0])]
  
          return [dst != src] + constrs_mod
docs: Generate constraints for the MoveRegister gadgets:
              dst <- src