More information now apparent…
Instead of converting everything to hexadecimal (which would allow one-pass decoding) they converted some things to hexadecimal and some to standard HL7 escape sequences. Now all I have to do is figure out what order to decode things in so that the files come out clean.