Конвертировать встроенный ассемблерный код в C ++

Я работаю над проектом cpp. Проект необходимо перенести на 64 бит. Он содержит некоторый встроенный ассемблерный код, который не может быть скомпилирован на x64. Это функция, которая содержит код сборки:

void ExternalFunctionCall::callFunction(ArgType resultType, void* resultBuffer)
{
#if defined(_NT_) || defined(__OS2__)

    // I386

    // just copy the args buffer to the stack (it's already layed out correctly)
    int* begin = m_argsBegin;
    int* ptr = m_argsEnd;
    int arr[1000], i=0;
    while (ptr > begin) {
        int val = *(--ptr);

        __asm push val
    }

    void* functionAddress = m_functionAddress;

    // call the function & handle the return value.  use __stdcall calling convention
    switch (resultType) {
    case voidType:
        __asm {
            call functionAddress
        }
        break;
    case pointerType:
    case int32Type:
        __asm {
            call functionAddress
            mov ebx, resultBuffer
            mov dword ptr [ebx],eax
        }
        break;
    case floatType:
        __asm {
            call functionAddress
            mov ebx, resultBuffer
            fstp dword ptr [ebx]
        }
        break;
    case doubleType:
        __asm {
            call functionAddress
            mov ebx, resultBuffer
            fstp qword ptr [ebx]
        }
        break;
    }

Я использовал стек, массив для переноса этого «asm push val», но не работал. Хотя, это не выдает никакой ошибки компиляции, но логика не сработала.

Итак, я хочу спросить, что я могу использовать в C ++ вместо "__asm push val". Любая помощь будет оценена.