In this case every new feature would have a predictable development size.
Trying to force bad C into some kind of hybrid language will give you the maintainability issues of both languages, and few of the benefits of either. I can understand your boss wanting you to modularize the code by moving parts of your code into new functions, but for you to suddenly force your code into C classes (or, using OO for the sake of using OO) seems foolish.
THAT would require you to pretty much go back to the drawing board, re-think your solution from an object-oriented perspective, then re-write the codebase around that model.
-------- It's recommended to have a support contract and to maintain a SW periodically.
It can be small bug-fixing, outdated components update etc.
I am resolved to do it if it can be done, I just have no idea how to begin.
Either refactor it into well structured C, or rewrite it in idiomatic C .
To facilitate this, the extracted models should enable, for example, formal analysis, testing, refactoring and code generation.
So, how can you learn and extract models from legacy code?
For software, such a glass-box analysis would boil down to analyzing the program source code.