Я отключил оптимизацию кода, теперь переменная len (которая во втором видео) не изменяется. Но проблема с размером буфера осталась, если вызывать printf.
Ну так ты смотрел на EAX - это просто регистр, там может лежать что угодно. Открой стек и смотри ESI+2 это указатель на стек + сдвиг. Оттуда идет загрузка в EAX, потом push положили параметр вызова функци в стек. call вызов функции. и дальше уже проверка на 0 и далее по коду.