On the latest version of Objdiff (3.4.0), something fails in the disassembler and causes this function to be interpreted incorrectly.
Here's what the function looked like in 3.3.1:
Here's what it looks like in 3.4.0:
Here is the relevant C code/asm/object file from decomp.me:
_CVAOS__sub_08023368.zip