If we do not change the start address, there is no reason to retry when the previous attempt failed.
I believe that the loop iterations there should not occur more that twice, but I prefer to check for the start modifications instead, to keep the loop structure for further changes.