#include <metal_stdlib>

using namespace metal;
struct strided_arr {
  /* 0x0000 */ float el;
  /* 0x0004 */ int8_t tint_pad[4];
};

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

struct tint_array_wrapper_1 {
  /* 0x0000 */ tint_array_wrapper arr[3];
};

struct strided_arr_1 {
  /* 0x0000 */ tint_array_wrapper_1 el;
  /* 0x0030 */ int8_t tint_pad_1[80];
};

struct tint_array_wrapper_2 {
  /* 0x0000 */ strided_arr_1 arr[4];
};

struct S {
  /* 0x0000 */ tint_array_wrapper_2 a;
};

void f_1(device S* const tint_symbol_1) {
  tint_array_wrapper_2 const x_19 = (*(tint_symbol_1)).a;
  tint_array_wrapper_1 const x_24 = (*(tint_symbol_1)).a.arr[3].el;
  tint_array_wrapper const x_28 = (*(tint_symbol_1)).a.arr[3].el.arr[2];
  float const x_32 = (*(tint_symbol_1)).a.arr[3].el.arr[2].arr[1].el;
  tint_array_wrapper_2 const tint_symbol = {.arr={}};
  (*(tint_symbol_1)).a = tint_symbol;
  (*(tint_symbol_1)).a.arr[3].el.arr[2].arr[1].el = 5.0f;
  return;
}

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

