Preserve input string and return it as per userlevel spec.
Uses negative register offsets in memory writes, to avoid r4k silicon bugs.