#include <metal_stdlib>

using namespace metal;
void main_1(texturecube<float, access::sample> tint_symbol_1, sampler tint_symbol_2) {
  float float_var = 0.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 f1 = 1.0f;
  float2 const vf12 = float2(1.0f, 2.0f);
  float3 const vf123 = float3(1.0f, 2.0f, 3.0f);
  float4 const vf1234 = float4(1.0f, 2.0f, 3.0f, 4.0f);
  float4 const x_73 = tint_symbol_1.sample(tint_symbol_2, vf123);
  uint const x_1000 = 0u;
  return;
}

fragment void tint_symbol(texturecube<float, access::sample> tint_symbol_3 [[texture(1)]], sampler tint_symbol_4 [[sampler(0)]]) {
  main_1(tint_symbol_3, tint_symbol_4);
  return;
}

