2 пуша должно быть. на крйняк в случае изуверской оптимизации которую мс компилер любит делать - хотяб в регистрах или не далеко в стеке - тут же - анус
Ну а кто тебе не дает отключить оптимизацию для тестов? Просто адреса функций GetTickCount - они динамически пропишутся во время импорта. так что тут оптимизировать ничего не получится особо. А вот адрес функции твоей - он статический и по этому можно оптимизировать работу с ним типа не передавать через стек, извлекать и записывать число, а сразу записать куда надо это число.
кстати не решило - еще часа полтора протрахался (уже устал и не соображал) - прога валилась с BoF после вызова dprintf которую я сделал как форматированный вывод для OutputDebugString. ошибка прозаичная - dprintf вызывалась в хандлере перехваченной сплайсом HeapAlloc, что конечно же приводило к уходу в рекурсию (выделение памяти в сабе OutputDebugString) в самом обработчике. учитесь на чужих ошибках