#include <metal_stdlib>

using namespace metal;
struct S {
};
struct tint_array_wrapper_0 {
  float array[4];
};

kernel void tint_symbol() {
  thread bool tint_symbol_4 = bool();
  thread bool* const tint_symbol_3 = &(tint_symbol_4);
  thread int tint_symbol_6 = int();
  thread int* const tint_symbol_5 = &(tint_symbol_6);
  thread uint tint_symbol_8 = uint();
  thread uint* const tint_symbol_7 = &(tint_symbol_8);
  thread float tint_symbol_10 = float();
  thread float* const tint_symbol_9 = &(tint_symbol_10);
  thread int2 tint_symbol_12 = int2();
  thread int2* const tint_symbol_11 = &(tint_symbol_12);
  thread uint3 tint_symbol_14 = uint3();
  thread uint3* const tint_symbol_13 = &(tint_symbol_14);
  thread float4 tint_symbol_16 = float4();
  thread float4* const tint_symbol_15 = &(tint_symbol_16);
  thread float2x3 tint_symbol_18 = float2x3();
  thread float2x3* const tint_symbol_17 = &(tint_symbol_18);
  thread tint_array_wrapper_0 tint_symbol_20 = {};
  thread tint_array_wrapper_0* const tint_symbol_19 = &(tint_symbol_20);
  thread S tint_symbol_22 = {};
  thread S* const tint_symbol_21 = &(tint_symbol_22);
  *(tint_symbol_3) = bool();
  *(tint_symbol_5) = int();
  *(tint_symbol_7) = uint();
  *(tint_symbol_9) = float();
  *(tint_symbol_11) = int2();
  *(tint_symbol_13) = uint3();
  *(tint_symbol_15) = float4();
  *(tint_symbol_17) = float2x3();
  tint_array_wrapper_0 const tint_symbol_1 = {};
  *(tint_symbol_19) = tint_symbol_1;
  S const tint_symbol_2 = {};
  *(tint_symbol_21) = tint_symbol_2;
  return;
}

