This parsing code was incorrectly checking for invalid characters, so an invalid instruction like:
msr spsr_w, r0
would be emitted as:
msr spsr_cxsf, r0
Ouch! LGTM. Thanks!