#version 400

in float u;

int foo(int a, const int b, in int c, const in int d, out int e, inout int f)
{
    int sum = a + b + c + d + f; // no e, it is out only
	// sum should be 47 now

	a *= 64;
	// no b, it is read only
	c *= 64;
	// no d, it is read only
	e = 64 * 16; // e starts undefined
	f *= 64;

	sum += a + 64 * b + c + 64 * d + e + f; // everything has a value now, totaling of 64(1+2+4+8+16+32) = 64*63 = 4032
	// sum should be 4032 + 47  = 4079
	
	return sum;
}

int foo2(float a, vec3 b, out int r)
{
    r = int(3.0 * a);
    return int(5.0 * b.y);
}

int foo3()
{
    if (u > 3.2) {
        discard;
        return 1000000;
    }

    return 2000000;
}

void main()
{
    int e;
	int t = 2;
	struct s {
	    ivec4 t;
	} f;
	f.t.y = 32;

    // test the different qualifers
    int color = foo(1, 2, t+t, 8, e, f.t.y);

	color += 128 * (e + f.t.y); // right side should be 128(64(16 + 32)) = 393216
	// sum should be 4079 + 393216 = 397295
    
    // test conversions
    float arg;
    float ret;
    ret = foo2(4, ivec3(1,2,3), arg);  // ret = 10, param = 12.0
    color += int(ret + arg); // adds 22, for total of 397317

    color += foo3();         // theoretically, add 2000000, for total of 2397317

    gl_FragColor = vec4(color);
}
