If (for some reason) the var-list is empty, there is no code generated that uses the reg-starts and reg-ends variables, and hence they become unused. And without the bindings, the substr-fn is also not necessary.