#include <metal_stdlib>

using namespace metal;
struct strided_arr {
  /* 0x0000 */ float2 el;
  /* 0x0008 */ int8_t tint_pad[8];
};

struct tint_array_wrapper {
  /* 0x0000 */ strided_arr arr[2];
};

struct SSBO {
  /* 0x0000 */ tint_array_wrapper m;
};

float2x2 arr_to_mat2x2_stride_16(tint_array_wrapper arr) {
  return float2x2(arr.arr[0u].el, arr.arr[1u].el);
}

tint_array_wrapper mat2x2_stride_16_to_arr(float2x2 mat) {
  strided_arr const tint_symbol = {.el=mat[0u]};
  strided_arr const tint_symbol_1 = {.el=mat[1u]};
  tint_array_wrapper const tint_symbol_2 = {.arr={tint_symbol, tint_symbol_1}};
  return tint_symbol_2;
}

void f_1(device SSBO* const tint_symbol_3) {
  float2x2 const x_15 = arr_to_mat2x2_stride_16((*(tint_symbol_3)).m);
  (*(tint_symbol_3)).m = mat2x2_stride_16_to_arr(x_15);
  return;
}

kernel void f(device SSBO* tint_symbol_4 [[buffer(0)]]) {
  f_1(tint_symbol_4);
  return;
}

