class String

def undump_badly

def undump_badly
  hex = /[0-9a-fA-F]/
  esctable = {
    '\n' => "\n",
    '\r' => "\r",
    '\t' => "\t",
    '\f' => "\f",
    '\v' => "\v",
    '\b' => "\b",
    '\a' => "\a",
    '\e' => "\e",
  }
  e = self.encoding
  s = if self[0] == '"' && self[-1] == '"'
      self[1..-2]
    else
      self.dup
    end
  s.gsub!(/\\\#\$/, '#$')
  s.gsub!(/\\\#@/, '#@')
  s.gsub!(/\\\#{/, '#{')
  s.gsub!(/\\"/, '"')
  s.gsub!(/\\\\/, '\\')
  s.gsub!(/\\[nrtfvbae]/) {|m| esctable[m]}
  s.gsub!(/\\u#{hex}{4}/) {|m| m[2..-1].hex.chr(e)}
  s.gsub!(/\\u{#{hex}+}/) {|m| m[3..-1].hex.chr(e)}
  s.gsub!(/(?:\\x#{hex}{2})+/) {|m|
    m.gsub(/\\x/, '').scan(/../).map(&:hex).pack("C*").force_encoding(e)
  }
  s
end