We have different types of op DepositToNew DepositToOld Transfer etc.
As we all know the if else in circuits is not same to if else in common programming languages where either if branch or else branch will run. if else in circuits run both branch. It will take more resources ( constraints/gates here ).
So there may be a method to split the op by type then combine them using recursion... More research is needed here.