#include <metal_stdlib>

using namespace metal;
struct main_out {
  float4 x_1_1;
  float4 x_1_2;
  float4 x_2_1;
};
struct tint_symbol_1 {
  float4 x_1_1 [[user(locn9)]];
  float4 x_1_2 [[user(locn10)]];
  float4 x_2_1 [[position]];
};

void main_1() {
  return;
}

main_out tint_symbol_inner(thread float2x4* const tint_symbol_3, thread float4* const tint_symbol_4) {
  main_1();
  main_out const tint_symbol_2 = {.x_1_1=(*(tint_symbol_3))[0], .x_1_2=(*(tint_symbol_3))[1], .x_2_1=*(tint_symbol_4)};
  return tint_symbol_2;
}

vertex tint_symbol_1 tint_symbol() {
  thread float2x4 tint_symbol_5 = float2x4(0.0f);
  thread float4 tint_symbol_6 = 0.0f;
  main_out const inner_result = tint_symbol_inner(&(tint_symbol_5), &(tint_symbol_6));
  tint_symbol_1 wrapper_result = {};
  wrapper_result.x_1_1 = inner_result.x_1_1;
  wrapper_result.x_1_2 = inner_result.x_1_2;
  wrapper_result.x_2_1 = inner_result.x_2_1;
  return wrapper_result;
}

