Ok, I think that you want to detect two different press durations. You should be able to control all that in state three.
When the button is released, calculate diff. If it is less than debounce set state one else check whether it is greater than 1000. If it is, set state for long press, else set for short press.