union dual { volatile int vol; int nonvol; }; union dual var; while (var.vol) ; var.vol = var.nonvol * var.nonvol + var.nonvol;