#include <metal_stdlib>

using namespace metal;
struct tint_array_wrapper {
  /* 0x0000 */ int arr[6];
};
struct sspp962805860buildInformationS {
  /* 0x0000 */ float4 footprint;
  /* 0x0010 */ float4 offset;
  /* 0x0020 */ int essence;
  /* 0x0024 */ tint_array_wrapper orientation;
};
struct x_B4_BuildInformation {
  /* 0x0000 */ sspp962805860buildInformationS passthru;
};

void main_1(const device x_B4_BuildInformation* const tint_symbol_1) {
  tint_array_wrapper orientation = {};
  tint_array_wrapper const x_23 = (*(tint_symbol_1)).passthru.orientation;
  orientation.arr[0] = x_23.arr[0u];
  orientation.arr[1] = x_23.arr[1u];
  orientation.arr[2] = x_23.arr[2u];
  orientation.arr[3] = x_23.arr[3u];
  orientation.arr[4] = x_23.arr[4u];
  orientation.arr[5] = x_23.arr[5u];
  return;
}

fragment void tint_symbol(const device x_B4_BuildInformation* tint_symbol_2 [[buffer(0)]]) {
  main_1(tint_symbol_2);
  return;
}

