Yes, the read/write engine produces an in-memory data model with a usable API and it does not have any dependencies on commercial components. But I have not spend any time documenting it. As everything else, that core engine is written in Delphi. It's possible that it can be compiled with FPC (free pascal), but I've not attempted that. Using that core engine it should be relatively simple to write a program that loads and esp, makes modifications to it, and saves the esp again.