nuevo en programacion necesita ayda

buenas miren este es mi programa el objetivo es que aplanes un boton y el led prenda y despues de 3 veces que prenda el led, encienda otro ese led va a parpader hasta que tu le aplanes a otro botón y lo “recetees” y puedas hacer la secuencia de nuevo, otra cosa tambien si aplanas los dos botones al mismo tiempo el que hace que el led de fail encienda y tengas que recetearlo, bueno aquí esta mi proyecto, nada mas que me sale un error que dice así:

experimento_1.ino: In function ‘void loop()’:
experimento_1:40: error: jump to label ‘fail01’ [-fpermissive]
experimento_1:21: error: from here [-fpermissive]
experimento_1:23: error: crosses initialization of ‘int contador’
experimento_1:41: error: ‘button’ was not declared in this scope
jump to label ‘fail01’ [-fpermissive]

espero que me ayuden no se mucho de programacion asi que si me podrian ayudar aqui esta el programa por adelantado gracias

int estado = 0;
int salida = 0;
int botton = 0;
int fail = 0;
int estadoanterior =0;
void setup()
{
pinMode (8,INPUT);
pinMode (4,OUTPUT);
pinMode (2,INPUT);
pinMode (10,OUTPUT);
}

void loop()
{
estado = digitalRead(8);
botton = digitalRead(2);
ok:
if ((estado==HIGH)&&(botton==HIGH))
{
goto fail01;
}
for (int contador=0; contador < 3;contador++)
{
if ((estado==HIGH)&&(estadoanterior==LOW))
{
salida=1-salida;
delay(25);
}
estadoanterior=estado;
if (salida==1)
{
digitalWrite(4,HIGH);
}
else
{
digitalWrite(4,LOW);

}

fail01: // aqui tengo el problema pero en realidad no se si tengo otra cosa mal

while (button==LOW)
{
digitalWrite(10,HIGH);
delay(500);
digitalWrite(10,LOW);
delay(500);
if (botton==HIGH)
{
goto ok;
}
}
}
}

There is NO reason to be using goto and labels. So, stop it. End of problem!

"No hay razón para estar usando instrucciones goto y etiquetas. Deja de hacerlo. Fin del problema"

Es lo que dice el usuario de arriba y tiene razón.

Pd. Lee las normas del foro por favor para darte una idea de como postear códigos en el futuro. Suerte

Prueba con esta versión modificada, a ver si cumple con lo que esperas que haga.
No existen las funciones goto ETIQUETA como has planteado en Arduino.

int estado 			= 0;
int salida 			= 0;
int botton 			= 0;
int fail 			= 0;
int estadoanterior 	= 0;

void setup() {
	pinMode (8,INPUT);
	pinMode (4,OUTPUT);
	pinMode (2,INPUT);
	pinMode (10,OUTPUT);  
}

void loop() {

	estado = digitalRead(8);
	botton = digitalRead(2);
	
	if (!(estado == HIGH) && (botton == HIGH)) {
		
		for (int contador=0; contador < 3; contador++) {
			if ((estado==HIGH)&&(estadoanterior==LOW)) {
				salida = !salida;
				delay(25);
			}
		
			estadoanterior = estado;

			if (salida)  
				digitalWrite(4,HIGH);
			else 	
				digitalWrite(4,LOW);
		}
    }

    while (botton == LOW)    {
    	botton = digitalRead(2);
       	digitalWrite(10,HIGH);
    	delay(500);
    	digitalWrite(10,LOW);
    	delay(500);
    }
}