Guidance needed in setting up a timing system

Sorry, no clue what you're trying to do, really.

Timing is normally done using millis(), and variables to hold a start time, an interval, and the iterations. So I guess something like this:

uint32_t startSequence;
uint32_t intervals[3];
uint8_t stage, totalStages;
uint8_t iter, totalIters;

void loop() {

// Starting the sequence
if (startSequence) {
  startTime = millis()
  stage = 0;
  totalStages = 3;
  intervals = {4*60*1000, 10*1000, 4*60*1000);
  iter = 0;
  totalIters = 12;
}
if (iter < totalIters) {
  if (handleCountDown()) {
    iter++;
    handleNextIter();
  }
}
// Rest of the loop() jobs.
}

bool handleCountDown() {
// handling the countdowns.
if (millis() - startTime > intervals[stage]) {
  startTime += intervals[stage];
  handleStage(stage);
  stage++
  if (stage == stages) {
    handleLastStage();
    stage = 0;
    return true;
  }
}
return false;
}