Delay

Gostaria de saber como faço para converter esse código para não usar delay:
OUT é uma saida setada no pino 1!
digitalWrite(OUT, LOW);
delay(600000);
digitalWrite(OUT, HIGH);
delay(300000);
Pode ser usando millis, timer0, etc.
Estou usando interrupções do timer1 e o delay não está ajudando nessa parte
É um ATTINY85 com clock interno de 8 MHz!

O segundo delay não faz sentido sem ver o código inteiro...
Algo assim, por exemplo?

unsigned char state = 0; 
unsigned long start = 0; 
unsigned long longTime = 0; 

if (condicao && start == 0) {
  digitalWrite(OUT, LOW);
  start=millis();
  state = 1;
}

if (state == 1 && (millis() - start > 600000) ) {
   digitalWrite(OUT, HIGH);
   state = 2;
}

if (state == 2 && (millis() - start > 900000)) {
  //Nao sei que pretendes aqui...
  start = 0; 
}