Program not working as intended

What is connected to pin3 and triggers the interrupt? Why have you chosen CHANGE mode?

The interrupt service routine function has many issues, and will not run as you intend. The timed routines depend on millis() changing during the interrupt and the value will not change inside the isr. A review of Nick Gammons tutorial on interrupts will be helpful.

Your best option is to set a volatile boolean flag variable =true in the isr and react to the flag being set in loop() with code like

if(flag==true)
{ //execute all the stuff you want, then set the flag = false}

There is an example of that process in the Gammon tutorial.