It's not clear from your decryption what the algorithm is used for.
But you should be aware that while at first glance it provides privacy : it's a weird mode CFB with md5 used as a block cipher ; it doesn't provide authenticity. A simple bit flip of the ciphertext will result in the corresponding bit being flipped in the plaintext and such a bit flip won't be noticeable if it happens on the last block of input.
Addendum : I just recalled that long before your question I had read something a bit like your proposal that would enjoy both privacy and authenticity Hash CFB (see slide 5)