Often times extremely large, complicated code bases don't start out that way. They "organically" grow to such nauseating behemoths over time and change requests. That said the one thing I would make sure I had an absolute grasp of before I began to rewrite the application is What is it supposed to do?.

Since you have nobody around, and apparently little to no useable documentation, you run the risk of the documented requirements not being synchronized with the final requirements that the existing code attempted to satisfy.