Move some of the logic to a separate function to enable use of `return` instead of a `break` from a composite loop.