va_arg_fn = fn [cc(c)] (first_arg: u32, ...) void
{
    if (first_arg != 123456789)
    {
        #trap();
    }

    >va = #va_start();

    >a = #va_arg(&va, u32);
    if (a != 987654321)
    {
        #trap();
    }

    >first_arg_b = #va_arg(&va, u32);
    if (first_arg_b != 123456789)
    {
        #trap();
    }
}

[export] main = fn [cc(c)] () s32
{
    >first_arg: u32 = 123456789;
    >a: u32 = 987654321;
    va_arg_fn(first_arg, a, first_arg);
    return 0;
}