Another view is that the innards of burone() are nearly the conjugate of the four confusing loops, but the conjugacy is not explicitly developed here. In fact, the present treatment of weighting functions is not conjugate.
The approach in this paper assumes a single plane wave at every location. Although this assumption will surely be wrong in some places (where there will be none, or two, or more) it may be the most sensible launching pad for nonlinear iteration. An inversion that launches itself from zero-valued missing data, for example, might be doomed by the nonlinearity and distance from the final solution. It might be worthwhile to formally extend the model in that way in the direction of chapter 8 in PVI 1992 which handles several simultaneous dips.