int __stdcall f_std (int i, long long j, char k, long z)
{
    return i + j + k + z;
}

int __fastcall f_fast (int i, long long j, char k, long z)
{
    return i + j + k + z;
}

int __cdecl f_cdecl (int i, long long j, char k, long z)
{
    return i + j + k + z;
}

class CallConv {
public:
    int m_native (int i, long long j, char k, long z)
    {
        return i + j + k + z;
    }

    int __stdcall m_std (int i, long long j, char k, long z)
    {
        return i + j + k + z;
    }

    int __fastcall m_fast (int i, long long j, char k, long z)
    {
        return i + j + k + z;
    }

    int __cdecl m_cdecl (int i, long long j, char k, long z)
    {
        return i + j + k + z;
    }
};

int main (void)
{
        CallConv    cc;

    /* Functions */
    f_std (1, 2, 3, 4); /* __stdcall */
    f_fast (1, 2, 3, 4); /* __fastcall */
    f_cdecl (1, 2, 3, 4); /* __cdecl */

    /* Methods */
    cc.m_native (1, 2, 3, 4); /* native method */
    cc.m_std (1, 2, 3, 4); /* __stdcall method */
    cc.m_fast (1, 2, 3, 4); /* __fast method */
    cc.m_cdecl (1, 2, 3, 4); /* __cdecl method */
}


