#include <metal_stdlib>

using namespace metal;
struct str {
  int i;
};

void tint_zero_workgroup_memory(uint local_idx, threadgroup str* const tint_symbol_2) {
  if ((local_idx < 1u)) {
    str const tint_symbol_1 = str{};
    *(tint_symbol_2) = tint_symbol_1;
  }
  threadgroup_barrier(mem_flags::mem_threadgroup);
}

void func(threadgroup int* const pointer) {
  *(pointer) = 42;
}

void tint_symbol_inner(uint local_invocation_index, threadgroup str* const tint_symbol_3) {
  tint_zero_workgroup_memory(local_invocation_index, tint_symbol_3);
  func(&((*(tint_symbol_3)).i));
}

kernel void tint_symbol(uint local_invocation_index [[thread_index_in_threadgroup]]) {
  threadgroup str tint_symbol_4;
  tint_symbol_inner(local_invocation_index, &(tint_symbol_4));
  return;
}

