#include <metal_stdlib>

using namespace metal;
struct theSSBO {
  /* 0x0000 */ int out_data;
};

void main_1(device theSSBO& x_4) {
  float2x2 x_30 = float2x2(0.0f);
  float2x2 x_30_phi = float2x2(0.0f);
  int x_32_phi = 0;
  x_4.out_data = 42;
  x_30_phi = float2x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f));
  x_32_phi = 1;
  while (true) {
    int x_33 = 0;
    x_30 = x_30_phi;
    int const x_32 = x_32_phi;
    if ((x_32 > 0)) {
    } else {
      break;
    }
    {
      x_33 = as_type<int>((as_type<uint>(x_32) - as_type<uint>(1)));
      x_30_phi = float2x2(float2(1.0f, 0.0f), float2(0.0f, 1.0f));
      x_32_phi = x_33;
    }
  }
  float2 const x_41 = (float2(1.0f, 1.0f) * float2x2((x_30[0u] - float2(1.0f, 0.0f)), (x_30[1u] - float2(0.0f, 1.0f))));
  while (true) {
    if ((1.0f < x_41.x)) {
      break;
    }
    threadgroup_barrier(mem_flags::mem_threadgroup);
    break;
  }
  return;
}

kernel void tint_symbol(device theSSBO& x_4 [[buffer(0)]]) {
  main_1(x_4);
  return;
}

