The CallConvLower code has a lot of jumps and incongruity in respect to the code's behavior despite there being functions that have identical behavior. For readability, and to highlight this, I refactored this file to better reflect that.
Not to mention, we do not need to assign to HaveRegParm until we go into the do-while loop.