Because the code is too deeply rooted, it's kind of like the problem with the Freespace 2 Engine in a way, limited or no encapsulation, it's hard to tell where the code ends and the interfaces begin, sometimes the interface is actually inside the code designed to use it etc, sometimes the interface is in an entirely different module, depending on whether a new interface was needed or whether an old one was being re-used, so it's hard to tell what it accessing where in order to achieve the required result.
That's a lot of what the decompiling is centring on, finding the 'link' points between the code and the hardware, and abstracting them so that new software can be written, and identifying the algorithms used for defining where signals are sent.