#version 310 es
layout(local_size_x = 1) in;

layout(std430, binding = 0) readonly buffer SSBO
{
    mat4 mvp;
    vec4 in_data[];
};

layout(std430, binding = 1) writeonly buffer SSBO2
{
    vec4 out_data[];
};

void main()
{
    uint ident = gl_GlobalInvocationID.x;
    vec4 idat = in_data[ident];

    int k = 0;
    uint i = 0u;

    if (idat.y == 20.0)
    {
        do
        {
            k = k * 2;
            i++;
        } while (i < ident);
    }

    switch (k)
    {
        case 10:
            for (;;)
            {
                i++;
                if (i > 10u)
                    break;
            }
            break;

        default:
            for (;;)
            {
               i += 2u;
               if (i > 20u)
                  break;
            }
            break;
    }

    while (k < 10)
    {
        idat *= 2.0;
        k++;
    }

    for (uint i = 0u; i < 16u; i++, k++)
        for (uint j = 0u; j < 30u; j++)
            idat = mvp * idat;

    k = 0;
    for (;;)
    {
        k++;
        if (k > 10)
        {
            k += 2;
        }
        else
        {
            k += 3;
            continue;
        }

        k += 10;
    }

    k = 0;
    do
    {
        k++;
    } while (k > 10);

    int l = 0;
    for (;; l++)
    {
        if (l == 5)
        {
            continue;
        }
        
        idat += 1.0;
    }
    out_data[ident] = idat;
}

