Currently, if there is a value in "align" that is bigger than "source" or "target", the program will die with a segmentation fault. Because segmentation faults are not good, please add a check that the values of "align" are within the bounds of "source" and "target" and use the THROW_ERROR function if this check is violated.