warning: use of deprecated intrinsic
#include <metal_stdlib>

using namespace metal;
void main_1(texture2d<float, access::read> tint_symbol_1) {
  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_71 = tint_symbol_1.read(uint2(vi12));
  uint const x_1000 = 0u;
  return;
}

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

