struct Inner {
  float scalar_f32;
  float3 vec3_f32;
  float2x4 mat2x4_f32;
};
struct S {
  Inner inner;
};

cbuffer cbuffer_u : register(b0, space0) {
  uint4 u[4];
};

float2x4 u_load_4(uint offset) {
  const uint scalar_offset = ((offset + 0u)) / 4;
  const uint scalar_offset_1 = ((offset + 16u)) / 4;
  return float2x4(asfloat(u[scalar_offset / 4]), asfloat(u[scalar_offset_1 / 4]));
}

Inner u_load_1(uint offset) {
  const uint scalar_offset_2 = ((offset + 0u)) / 4;
  const uint scalar_offset_3 = ((offset + 16u)) / 4;
  const Inner tint_symbol = {asfloat(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), asfloat(u[scalar_offset_3 / 4].xyz), u_load_4((offset + 32u))};
  return tint_symbol;
}

S u_load(uint offset) {
  const S tint_symbol_1 = {u_load_1((offset + 0u))};
  return tint_symbol_1;
}

[numthreads(1, 1, 1)]
void main() {
  const S x = u_load(0u);
  return;
}
