warning: use of deprecated intrinsic
SamplerState x_10 : register(s0, space0);
Texture2DArray<float4> x_20 : register(t1, space2);
SamplerState x_30 : register(s1, space0);

void main_1() {
  const float f1 = 1.0f;
  const float2 vf12 = float2(1.0f, 2.0f);
  const float2 vf21 = float2(2.0f, 1.0f);
  const float3 vf123 = float3(1.0f, 2.0f, 3.0f);
  const float4 vf1234 = float4(1.0f, 2.0f, 3.0f, 4.0f);
  const int i1 = 1;
  const int2 vi12 = int2(1, 2);
  const int3 vi123 = int3(1, 2, 3);
  const int4 vi1234 = int4(1, 2, 3, 4);
  const uint u1 = 1u;
  const uint2 vu12 = uint2(1u, 2u);
  const uint3 vu123 = uint3(1u, 2u, 3u);
  const uint4 vu1234 = uint4(1u, 2u, 3u, 4u);
  const float coords1 = 1.0f;
  const float2 coords12 = vf12;
  const float3 coords123 = vf123;
  const float4 coords1234 = vf1234;
  int3 tint_tmp;
  x_20.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
  int3 tint_tmp_1;
  x_20.GetDimensions(tint_tmp_1.x, tint_tmp_1.y, tint_tmp_1.z);
  const int3 x_99 = int3(tint_tmp.xy, tint_tmp_1.z);
  const float4 x_98 = x_20.Load(int4(int3(vi123.xy, vi123.z), 0));
  return;
}

void main() {
  main_1();
  return;
}
