Void loop not looping with cycles

Because you don't read the button there. You only use the value that was read at the beginning of loop(). The situation will improve (but not be perfect), if you actually read the button in cycleMaintenance().

The search term that you need to solve your problem is something like "arduino multiple things at the same time".

@aneesh_321, do not cross-post. Threads merged.

See Using millis() for timing. A beginners guide, Several things at the same time and the BlinkWithoutDelay example in the IDE