Мы не можем понять, что не так с вашим кодом, потому что мы не можем увидеть ваш код (не всегда достаточно опубликовать исходный код, используя который вы создали свой собственный код).
В любом случае, вы можете попробовать это: Создайте файл с некоторым легко обнаруживаемым битовым шаблоном (например, 0101010101010101 ...), используя некоторый hex-редактор, и попытайтесь увидеть, где он ломается.
Если, например, вторая часть загрузки продолжает работать над несколькими последними битами первой части, это даст вам некоторую подсказку.