@hubert2
Ich sag mal es wird vermutlich darauf hinauslaufen Stück für Stück zu entscheiden was man macht.
Teile werden mehr oder weniger OK sein, die übernimmt man erstmal 1:1, andere Teile werden kleinerer Reparaturen bedürfen, die repariert man dann halt, und andere Teile wird man gröber refactoren bis u.U. ganz neu schreiben müssen.
Wo ich SeppJ zustimme: neu Schreiben geht schneller als einen Ball of Mud sukzessive, in mehreren Runden zu refactoren bis alles halbwegs OK ist.
Geht allerdings nur wenn man "die Spec" entweder hat (interne Doku, sehr genaues und gut gewartetes Benutzerhandbuch, ...), leicht aus dem bestehenden Code rauslesen kann oder neu erfinden darf.
Wo das nicht geht muss man mit Refactoring ran, um den Code erstmal soweit kennen zu lernen und aufzuräumen dass man rauslesen kann was er eigentlich tut. Was hoffentlich nicht weit von dem entfernt ist was es tun soll.
Und weil du nach Tools gefragt hast:
Ich würde mal die Clang Sanitizer drüber lassen. Soweit ich weiss sind die speziell darauf optimiert keine false positives zu melden.
http://clang.llvm.org/docs/index.html
Da euer Code mit GCC baut, sind die Chancen denke ich gut dass er ebenfalls mit Clang baut.