10 years ago I worked on a large project to re-write a code base written in C. Our approach was to forget about the code and document everything it did from the user's perspective.
Once everything was mapped out we decided on what we were going to keep, modify or remove, and then started building everything from scratch.
You can always go back to the original code to see how a particular feature was implemented and perhaps re-use the same logic.