andersm I owe you a beer!
Old:
100803f4: 0xfb06c615 mls r6, r6, r5, r12
100803f8: 0xb3dd cbz r5, 0x10080472 <loopexit61>
100803fa: 0xf8883064 strb.w r3, [r8, #100] ; 0x64
New:
100803f4: 0xfb06c615 mls r6, r6, r5, r12
100803f8: 0xb905 cbnz r5, 0x100803fc <DownConvert6+72>
100803fa: 0xe03b b.n 0x10080474 <loopexit61>
100803fc: 0xf8883064 strb.w r3, [r8, #100] ; 0x64
Edit: had some time to think about this, and it feels like such a schoolboy error in retrospect, I was already aware of mixed Thumb and ARM code. Just need to figure out a reasonably maintainable and clear way to get this implemented.