struct block0 {
  in_color : vec4<f32>;
};

var<private> position : vec4<f32>;

var<private> frag_color : vec4<f32>;

@group(0) @binding(1) var<uniform> x_8 : block0;

var<private> gl_Position : vec4<f32>;

fn main_1() {
  let x_24 : vec4<f32> = position;
  gl_Position = x_24;
  let x_27 : vec4<f32> = x_8.in_color;
  frag_color = x_27;
  return;
}

struct main_out {
  @builtin(position)
  gl_Position : vec4<f32>;
  @location(0)
  frag_color_1 : vec4<f32>;
};

@stage(vertex)
fn main(@location(0) position_param : vec4<f32>) -> main_out {
  position = position_param;
  main_1();
  return main_out(gl_Position, frag_color);
}
