#include <metal_stdlib>

using namespace metal;
void main_1(texturecube_array<float, access::sample> tint_symbol_1) {
  float const f1 = 1.0f;
  float2 const vf12 = float2(1.0f, 2.0f);
  float2 const vf21 = float2(2.0f, 1.0f);
  float3 const vf123 = float3(1.0f, 2.0f, 3.0f);
  float4 const vf1234 = float4(1.0f, 2.0f, 3.0f, 4.0f);
  int const i1 = 1;
  int2 const vi12 = int2(1, 2);
  int3 const vi123 = int3(1, 2, 3);
  int4 const vi1234 = int4(1, 2, 3, 4);
  uint const u1 = 1u;
  uint2 const vu12 = uint2(1u, 2u);
  uint3 const vu123 = uint3(1u, 2u, 3u);
  uint4 const vu1234 = uint4(1u, 2u, 3u, 4u);
  float const coords1 = 1.0f;
  float2 const coords12 = vf12;
  float3 const coords123 = vf123;
  float4 const coords1234 = vf1234;
  int3 const x_99 = int3(int2(tint_symbol_1.get_width(i1), tint_symbol_1.get_height(i1)).xy, int(tint_symbol_1.get_array_size()));
  return;
}

fragment void tint_symbol(texturecube_array<float, access::sample> tint_symbol_2 [[texture(1)]]) {
  main_1(tint_symbol_2);
  return;
}

