One problem with saying they had written it was that clients would report bugs which they would forward to Quantum (much later renamed to QNX Software Systems) but nothing would happen. When I produced the decompiled sources it took me a single afternoon to fix the pending bugs and implement the feature requests.
The first step was to disassemble the binaries. As an OEM Softec had access to the .obj files so they could link in new drivers if needed, and those included the symbol tables giving me at least the function names. The C compiler didn't do any optimizations, so compiling a few sample programs was enough for me to then read through the assembler while typing in C and adding comments as I went along.
The version I worked on was called 1.1e even though versions 1.2 and 2.0 (which was just 1.2 plus networking) were available.
The overall idea for QNX (originally QUNIX) was solid, but early implementations were not so nice. In 1.1e it was possible to see that a lot had been fixed from earlier versions, but there still were a lot of problems. The File Manager was responsible for decoding executable files (the Task Manager should have done that instead), for example, and most of the functionality that should have been in the shell were hardwired into the Task Manager instead. This was greatly improved in version 1.2 which I looked at though I didn't decompile.
Even in version 1.1e, running QNX on a 256KB PC with floppies only was way nicer than other Unixes on much beefier machines. Each version was much better than the previous ones so by the 1990s the QNX people saw was a different experience than what was on those old machines.