This:
xfcstart:
buttonState =digitalRead(xfcbutton);
if (buttonState ==HIGH) goto xfcstart;
is just the same as while (digitalRead(xfcbutton) == HIGH) { }.
Instead of 'goto' use do/while
This is not the same as a while loop - a "do..while" will always execute the body of the loop at least once, but a "while" may not execute the body of the loop at all.