#include <metal_stdlib>
using namespace metal;
struct tint_module_vars_struct {
  texture2d_array<int, access::write> arg_0;
};

void textureStore_1a7d35(tint_module_vars_struct tint_module_vars) {
  uint2 arg_1 = uint2(1u);
  uint arg_2 = 1u;
  int4 arg_3 = int4(1);
  tint_module_vars.arg_0.write(arg_3, arg_1, arg_2);
}
fragment void fragment_main(texture2d_array<int, access::write> arg_0 [[texture(0)]]) {
  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.arg_0=arg_0};
  textureStore_1a7d35(tint_module_vars);
}
kernel void compute_main(texture2d_array<int, access::write> arg_0 [[texture(0)]]) {
  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.arg_0=arg_0};
  textureStore_1a7d35(tint_module_vars);
}
