#include <metal_stdlib>

using namespace metal;
void textureSample_85c4ba(texture2d<float, access::sample> tint_symbol, sampler tint_symbol_1, device float4* const tint_symbol_2) {
  float2 arg_2 = float2(1.0f);
  float4 res = tint_symbol.sample(tint_symbol_1, arg_2, int2(1));
  *(tint_symbol_2) = res;
}

fragment void fragment_main(texture2d<float, access::sample> tint_symbol_3 [[texture(0)]], sampler tint_symbol_4 [[sampler(0)]], device float4* tint_symbol_5 [[buffer(0)]]) {
  textureSample_85c4ba(tint_symbol_3, tint_symbol_4, tint_symbol_5);
  return;
}

