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

