struct vertexUniformBuffer1 {
  transform1 : mat2x2<f32>;
};

struct vertexUniformBuffer2 {
  transform2 : mat2x2<f32>;
};

[[group(0), binding(0)]] var<uniform> x_20 : vertexUniformBuffer1;

[[group(1), binding(0)]] var<uniform> x_26 : vertexUniformBuffer2;

[[stage(vertex)]]
fn main([[builtin(vertex_index)]] gl_VertexIndex : u32) -> [[builtin(position)]] vec4<f32> {
  var indexable : array<vec2<f32>, 3>;
  let x_23 : mat2x2<f32> = x_20.transform1;
  let x_28 : mat2x2<f32> = x_26.transform2;
  let x_46 : u32 = gl_VertexIndex;
  indexable = array<vec2<f32>, 3>(vec2<f32>(-1.0, 1.0), vec2<f32>(1.0, 1.0), vec2<f32>(-1.0, -1.0));
  let x_51 : vec2<f32> = indexable[x_46];
  let x_52 : vec2<f32> = (mat2x2<f32>((x_23[0u] + x_28[0u]), (x_23[1u] + x_28[1u])) * x_51);
  return vec4<f32>(x_52.x, x_52.y, 0.0, 1.0);
}
