struct S {
  f1 : i32;
  f2 : mat2x2<f32>;
};

var<private> gl_FragCoord : vec4<f32>;

var<private> x_GLF_color : vec4<f32>;

fn main_1() {
  var x_41 : mat2x2<f32>;
  var x_6 : i32;
  var x_42 : mat2x2<f32>;
  var x_49_phi : mat2x2<f32>;
  let x_44 : f32 = gl_FragCoord.x;
  if ((x_44 < 0.0)) {
    x_42 = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
    x_49_phi = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
  } else {
    x_42 = mat2x2<f32>(vec2<f32>(0.5, -0.5), vec2<f32>(-0.5, 0.5));
    x_49_phi = mat2x2<f32>(vec2<f32>(0.5, -0.5), vec2<f32>(-0.5, 0.5));
  }
  let x_49 : mat2x2<f32> = x_49_phi;
  let x_51 : S = S(1, transpose(x_49));
  let x_52 : i32 = x_51.f1;
  x_6 = x_52;
  x_41 = x_51.f2;
  let x_56 : mat2x2<f32> = x_41;
  let x_59 : mat2x2<f32> = x_41;
  let x_63 : mat2x2<f32> = x_41;
  let x_66 : mat2x2<f32> = x_41;
  x_GLF_color = vec4<f32>(f32(x_52), (x_56[0u].x + x_59[1u].x), (x_63[0u].y + x_66[1u].y), f32(x_52));
  return;
}

struct main_out {
  [[location(0)]]
  x_GLF_color_1 : vec4<f32>;
};

[[stage(fragment)]]
fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
  gl_FragCoord = gl_FragCoord_param;
  main_1();
  return main_out(x_GLF_color);
}
