#include <metal_stdlib>
#include <simd/simd.h>

using namespace metal;

struct SSBO
{
    float4x4 mvp;
    float4 in_data[1];
};

struct SSBO2
{
    float4 out_data[1];
};

constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(1u);

kernel void main0(const device SSBO& _24 [[buffer(0)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]])
{
    uint ident = gl_GlobalInvocationID.x;
    float4 idat = _24.in_data[ident];
    int k = 0;
    uint i = 0u;
    if (idat.y == 20.0)
    {
        do
        {
            k *= 2;
            i++;
        } while (i < ident);
    }
    switch (k)
    {
        case 10:
        {
            for (;;)
            {
                i++;
                if (i > 10u)
                {
                    break;
                }
                continue;
            }
            break;
        }
        default:
        {
            for (;;)
            {
                i += 2u;
                if (i > 20u)
                {
                    break;
                }
                continue;
            }
            break;
        }
    }
    while (k < 10)
    {
        idat *= 2.0;
        k++;
    }
    for (uint i_1 = 0u; i_1 < 16u; i_1++, k++)
    {
        for (uint j = 0u; j < 30u; j++)
        {
            idat = _24.mvp * idat;
        }
    }
    k = 0;
    for (;;)
    {
        k++;
        if (k > 10)
        {
            k += 2;
        }
        else
        {
            k += 3;
            continue;
        }
        k += 10;
        continue;
    }
}

