All of the gyrations are essentially shifting the character right 13. To decrypt you need to subtract 13 from the ASCII of the character. If this is less than 32 then add 95.

I don't think the code will work. The "fnEncrypt = fnEncrypt . . . " will probably recursively (and incorrectly) call the function again. You should use a local variable to hold your string.