Это, блядь, не баг.
Это БАЖИЩЕ нахуй!
Царь-баг ёбаный!
На самом видном месте, практически всё время в пределах видимой области экрана примостился коварны, хорошо подготовленный и совершенно немыслимый с своей материальности БАГ. На поиски которого (точнее, по следам его проделок) я потратил три дня.
А я еще на линковщик грешил, в дизассемблированном коде ковырялся.
Соль в том, что процедура читала данные из массива, в который же потом и писала. Это сделано не из-за рукожопия, а для экономии памяти - каждый байт на счету!
Так вот в одном месте она в него не писала, хотя и должна была. И в итоге там оставались старые данные. А поскольку их формат и размер был тот же самый, баг не вылезал до тех самых пор, пока итоговые данные не стали сдвигаться относительно исходных.
Мда.