struct Foo
{
    float3 a;
    float3 b;
    float3 c;
};

struct VertexOut
{
    float3 color;
    float3 foo;
};

static float4 gl_Position;
static float4 Input2;
static float4 Input4;
static float4 Input0;
static float vLocation0;
static float vLocation1;
static float vLocation2[2];
static Foo vLocation4;
static float vLocation9;
static VertexOut vout;

struct SPIRV_Cross_Input
{
    float4 Input0 : TEXCOORD0;
    float4 Input2 : TEXCOORD2;
    float4 Input4 : TEXCOORD4;
};

struct SPIRV_Cross_Output
{
    float vLocation0 : TEXCOORD0;
    float vLocation1 : TEXCOORD1;
    float vLocation2[2] : TEXCOORD2;
    Foo vLocation4 : TEXCOORD4;
    float3 VertexOut_color : TEXCOORD7;
    float3 VertexOut_foo : TEXCOORD8;
    float vLocation9 : TEXCOORD9;
    float4 gl_Position : SV_Position;
};

void vert_main()
{
    gl_Position = ((1.0f.xxxx + Input2) + Input4) + Input0;
    vLocation0 = 0.0f;
    vLocation1 = 1.0f;
    vLocation2[0] = 2.0f;
    vLocation2[1] = 2.0f;
    Foo foo;
    foo.a = 1.0f.xxx;
    foo.b = 1.0f.xxx;
    foo.c = 1.0f.xxx;
    vLocation4 = foo;
    vLocation9 = 9.0f;
    vout.color = 2.0f.xxx;
    vout.foo = 4.0f.xxx;
}

SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
    Input2 = stage_input.Input2;
    Input4 = stage_input.Input4;
    Input0 = stage_input.Input0;
    vert_main();
    SPIRV_Cross_Output stage_output;
    stage_output.gl_Position = gl_Position;
    stage_output.vLocation0 = vLocation0;
    stage_output.vLocation1 = vLocation1;
    stage_output.vLocation2 = vLocation2;
    stage_output.vLocation4 = vLocation4;
    stage_output.vLocation9 = vLocation9;
    stage_output.VertexOut_color = vout.color;
    stage_output.VertexOut_foo = vout.foo;
    return stage_output;
}
