I've had this happen often enough that when refactoring something tricky I like to copy the function and rework it. Then I'll change references from the old method to the new one one at a time and test. One of my favorite methods returned a Map<Long, Map<Long, Map<Long, Map<Long, Long>>>> with no comment explaining what any of those Long values were...
My thoughts exactly. Needs to be done though unfortunately. I'm going to get some chainsaws and duct tape and attack it on Monday. Mondays suck anyway so it can't make the day much worse.