Да, наверное, это были какие-то макросы были в надежде на то, что компилятор соптимизирует присваивания байтов на присваивание вордов, но этого почему-то не произошло.
Если этот чудесный макрос оперировал дайджестами, непонятно за каким смыслом он преобразовывал их количество в количество байт и обратно. Если макросу передавалось количество байт, он должен был после округления размера до 4 в меньшую сторону (потому что сдвиги) подмести остатки более мелкими пересылками, либо округлять в большую. Только идиот мог сделать макрос, который переносит сколько_получится_байт_не_больше_чем.
Там вероятно макрос, который вызывает макрос, который вызывает макрос... В линухе такая хрень сплошь и рядом.