I am not sure this works. If we add, in (low, high) format:

(1, 1) + (4294967295, 4294967295)

then h is equal to 4294967295+1+1 (last +1 from the carry from the lower 32 bits) which is equal to 1. But then 1 is not smaller than b which is also 1. That is why the current code has "two possibilities to overflow".