More straws slip through my grasp
OK, so what you've posted shows that there's no word-level usage of O:9.
And I'm willing to take your word on the lack of a JMP instruction in any of the LAD 8 rungs above 8:9.
An MCR would turn the output off, not leave it on. (just thinking out loud here).
A TND instruction would leave it on (even if the TND was in any ladder file called before LAD 8), but surely you would have noticed one.
Same with a RET instruction in rungs 8:0 through 8:8.
That just leaves indirect addressing. The cross-reference that you show is the "Usage Report" (a handy feature). But I need to see the REAL cross-reference (such as what OG had you turn on). Select O:9/0 (from anywhere), right click, and select Cross-reference O:9/0.
The list for O:9/0 will only show that which is displayed below the output. But if you scroll through the list, you might find an entry that looks like this:
[attachment]
The "trouble" may not be in the O:9 word. If, in my picture, N100:30 had a value of 32, I belive that O:3.0 would be affected, since it comes after O:2.31.
It's not good practice to code this way, but you never know.
I can understand your reluctance to post your code, but I assure you, it wouldn't make much sense without knowing how the machine is put together.
If you really want to make the code make no sense, then go to the Address/Symbol Database (available at the bottom of the Project Tree), and delete all the annotation. That will make it completely incomprehensible. (It goes without saying - do this on a copy of your program).