Das Zerlegen wuerde ich in mehrere TStringList's machen. Fuer die Werkzeuge sogar in ein array of TStringList (jeweils ohne $ Zeilen).
Das eigentliche Programm geht in eine eigene TStringList (die %%3000 Zeile faellt dabei weg).
Damit werden die Programmteile nun als eine Serie von TStringLists's repraesentiert bei denen jede Liste nur den eigentlichen Inhalt vorhaelt. Das nennt sich teile und herrsche
Jetzt kann man das gleiche Prinzip auf eventuelle Teile des Programms anwenden oder die Zeilen des Programms einzeln analysieren.
Hinterher alles zusammenzusetzen ist dann sicher recht einfach.