Another option that does not involve ASM, EXT, or altering files (but should work even though it is slightly contrived.)... You are low on Data Ram but big on Program Space (200 of 512 words used) right?

1) Change the IF-AND-THEN to nested IF-THENs as noted by Steve and Bruce

2) b0 ranges from 0-3 (2 bits). Drop the b0 variable and stash the values in OPTION_REG<1:0> (with the prescaler pointed to the Timer, which you are not using)

3)Time2 ranges from 0-73 (7 bits). Drop the Time2 variable and store the lower 5 bits in the FSR register, the 6th bit in OPTION_REG<2>, and the 7th bit in OPTION_REG<4>.

The rest of your variables fit – the code to deal with the above changes adds some complexity but would not be hard to implement.

Yet another option (you said commercial product – the price difference between the 202 and the 629 in quantity is about 0.30USD). Live with the loss or charge your customer a little more and have a clean solution with the 12F629.

Yet another option – take a week to learn ASM if you do not already know it. This part (10F202) has little complexity and it would not be difficult to convert your code to ASM. Bruce has a good ASM example posted in the example code section plus there are lots of good tutorials out there.