да мне тоже не нравится, двойное копирование но так в книжке было указано, так вроде макрос этот proc работает, он сначала копирует данные или адреса(что положишь) из аргументов в стэк, потом делает фрейм и потом из под фрейма копирует из стека уже эти данные в локальные свои переменные уже во фрейме а размер фрейма какраз определяется этими locals их размером и колличеством