; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 6
; Bound: 199
; Schema: 0
               OpCapability Geometry
               OpCapability GeometryPointSize
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
               OpEntryPoint Geometry %main "main" %gl_in %_ %out_interpolators %in_interpolators %_in_point_coord_unused %_in_point_size_unused %_out_point_coord_unused
               OpExecutionMode %main Triangles
               OpExecutionMode %main Invocations 1
               OpExecutionMode %main OutputTriangleStrip
               OpExecutionMode %main OutputVertices 6
               OpSource GLSL 450
               OpSourceExtension "GL_ARB_explicit_attrib_location"
               OpSourceExtension "GL_ARB_separate_shader_objects"
               OpName %main "main"
               OpName %left_aligned "left_aligned"
               OpName %gl_PerVertex "gl_PerVertex"
               OpMemberName %gl_PerVertex 0 "gl_Position"
               OpMemberName %gl_PerVertex 1 "gl_PointSize"
               OpName %gl_in "gl_in"
               OpName %gl_PerVertex_0 "gl_PerVertex"
               OpMemberName %gl_PerVertex_0 0 "gl_Position"
               OpMemberName %gl_PerVertex_0 1 "gl_PointSize"
               OpName %_ ""
               OpName %out_interpolators "out_interpolators"
               OpName %in_interpolators "in_interpolators"
               OpName %i "i"
               OpName %i_0 "i"
               OpName %_in_point_coord_unused "_in_point_coord_unused"
               OpName %_in_point_size_unused "_in_point_size_unused"
               OpName %_out_point_coord_unused "_out_point_coord_unused"
               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
               OpDecorate %gl_PerVertex Block
               OpMemberDecorate %gl_PerVertex_0 0 BuiltIn Position
               OpMemberDecorate %gl_PerVertex_0 1 BuiltIn PointSize
               OpDecorate %gl_PerVertex_0 Block
               OpDecorate %out_interpolators Location 0
               OpDecorate %in_interpolators Location 0
               OpDecorate %_in_point_coord_unused Location 16
               OpDecorate %_in_point_size_unused Location 17
               OpDecorate %_out_point_coord_unused Location 16
       %void = OpTypeVoid
          %3 = OpTypeFunction %void
       %bool = OpTypeBool
%_ptr_Function_bool = OpTypePointer Function %bool
      %float = OpTypeFloat 32
    %v4float = OpTypeVector %float 4
%gl_PerVertex = OpTypeStruct %v4float %float
       %uint = OpTypeInt 32 0
     %uint_3 = OpConstant %uint 3
%_arr_gl_PerVertex_uint_3 = OpTypeArray %gl_PerVertex %uint_3
%_ptr_Input__arr_gl_PerVertex_uint_3 = OpTypePointer Input %_arr_gl_PerVertex_uint_3
      %gl_in = OpVariable %_ptr_Input__arr_gl_PerVertex_uint_3 Input
        %int = OpTypeInt 32 1
      %int_0 = OpConstant %int 0
     %uint_0 = OpConstant %uint 0
%_ptr_Input_float = OpTypePointer Input %float
      %int_2 = OpConstant %int 2
%gl_PerVertex_0 = OpTypeStruct %v4float %float
%_ptr_Output_gl_PerVertex_0 = OpTypePointer Output %gl_PerVertex_0
          %_ = OpVariable %_ptr_Output_gl_PerVertex_0 Output
%_ptr_Input_v4float = OpTypePointer Input %v4float
%_ptr_Output_v4float = OpTypePointer Output %v4float
      %int_1 = OpConstant %int 1
%_ptr_Output_float = OpTypePointer Output %float
    %uint_16 = OpConstant %uint 16
%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
%_ptr_Output__arr_v4float_uint_16 = OpTypePointer Output %_arr_v4float_uint_16
%out_interpolators = OpVariable %_ptr_Output__arr_v4float_uint_16 Output
%_arr__arr_v4float_uint_16_uint_3 = OpTypeArray %_arr_v4float_uint_16 %uint_3
%_ptr_Input__arr__arr_v4float_uint_16_uint_3 = OpTypePointer Input %_arr__arr_v4float_uint_16_uint_3
%in_interpolators = OpVariable %_ptr_Input__arr__arr_v4float_uint_16_uint_3 Input
%_ptr_Input__arr_v4float_uint_16 = OpTypePointer Input %_arr_v4float_uint_16
    %v2float = OpTypeVector %float 2
%_ptr_Function_int = OpTypePointer Function %int
     %int_16 = OpConstant %int 16
%_arr_v2float_uint_3 = OpTypeArray %v2float %uint_3
%_ptr_Input__arr_v2float_uint_3 = OpTypePointer Input %_arr_v2float_uint_3
%_in_point_coord_unused = OpVariable %_ptr_Input__arr_v2float_uint_3 Input
%_arr_float_uint_3 = OpTypeArray %float %uint_3
%_ptr_Input__arr_float_uint_3 = OpTypePointer Input %_arr_float_uint_3
%_in_point_size_unused = OpVariable %_ptr_Input__arr_float_uint_3 Input
%_ptr_Output_v2float = OpTypePointer Output %v2float
%_out_point_coord_unused = OpVariable %_ptr_Output_v2float Output
       %main = OpFunction %void None %3
          %5 = OpLabel
%left_aligned = OpVariable %_ptr_Function_bool Function
          %i = OpVariable %_ptr_Function_int Function
        %i_0 = OpVariable %_ptr_Function_int Function
         %21 = OpAccessChain %_ptr_Input_float %gl_in %int_0 %int_0 %uint_0
         %22 = OpLoad %float %21
         %24 = OpAccessChain %_ptr_Input_float %gl_in %int_2 %int_0 %uint_0
         %25 = OpLoad %float %24
         %26 = OpFOrdEqual %bool %22 %25
               OpStore %left_aligned %26
         %27 = OpLoad %bool %left_aligned
               OpSelectionMerge %29 None
               OpBranchConditional %27 %28 %119
         %28 = OpLabel
         %34 = OpAccessChain %_ptr_Input_v4float %gl_in %int_0 %int_0
         %35 = OpLoad %v4float %34
         %37 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %37 %35
         %39 = OpAccessChain %_ptr_Input_float %gl_in %int_0 %int_1
         %40 = OpLoad %float %39
         %42 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %42 %40
         %51 = OpAccessChain %_ptr_Input__arr_v4float_uint_16 %in_interpolators %int_0
         %52 = OpLoad %_arr_v4float_uint_16 %51
               OpStore %out_interpolators %52
               OpEmitVertex
         %53 = OpAccessChain %_ptr_Input_v4float %gl_in %int_1 %int_0
         %54 = OpLoad %v4float %53
         %55 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %55 %54
         %56 = OpAccessChain %_ptr_Input_float %gl_in %int_1 %int_1
         %57 = OpLoad %float %56
         %58 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %58 %57
         %59 = OpAccessChain %_ptr_Input__arr_v4float_uint_16 %in_interpolators %int_1
         %60 = OpLoad %_arr_v4float_uint_16 %59
               OpStore %out_interpolators %60
               OpEmitVertex
         %61 = OpAccessChain %_ptr_Input_v4float %gl_in %int_2 %int_0
         %62 = OpLoad %v4float %61
         %63 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %63 %62
         %64 = OpAccessChain %_ptr_Input_float %gl_in %int_2 %int_1
         %65 = OpLoad %float %64
         %66 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %66 %65
         %67 = OpAccessChain %_ptr_Input__arr_v4float_uint_16 %in_interpolators %int_2
         %68 = OpLoad %_arr_v4float_uint_16 %67
               OpStore %out_interpolators %68
               OpEmitVertex
         %70 = OpAccessChain %_ptr_Input_v4float %gl_in %int_1 %int_0
         %71 = OpLoad %v4float %70
         %72 = OpVectorShuffle %v2float %71 %71 0 1
         %73 = OpAccessChain %_ptr_Input_v4float %gl_in %int_2 %int_0
         %74 = OpLoad %v4float %73
         %75 = OpVectorShuffle %v2float %74 %74 0 1
         %76 = OpFAdd %v2float %72 %75
         %77 = OpAccessChain %_ptr_Input_v4float %gl_in %int_0 %int_0
         %78 = OpLoad %v4float %77
         %79 = OpVectorShuffle %v2float %78 %78 0 1
         %80 = OpFSub %v2float %76 %79
         %81 = OpAccessChain %_ptr_Input_v4float %gl_in %int_2 %int_0
         %82 = OpLoad %v4float %81
         %83 = OpVectorShuffle %v2float %82 %82 2 3
         %84 = OpCompositeExtract %float %80 0
         %85 = OpCompositeExtract %float %80 1
         %86 = OpCompositeExtract %float %83 0
         %87 = OpCompositeExtract %float %83 1
         %88 = OpCompositeConstruct %v4float %84 %85 %86 %87
         %89 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %89 %88
         %90 = OpAccessChain %_ptr_Input_float %gl_in %int_2 %int_1
         %91 = OpLoad %float %90
         %92 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %92 %91
               OpStore %i %int_0
               OpBranch %95
         %95 = OpLabel
               OpLoopMerge %97 %98 None
               OpBranch %99
         %99 = OpLabel
        %100 = OpLoad %int %i
        %102 = OpSLessThan %bool %100 %int_16
               OpBranchConditional %102 %96 %97
         %96 = OpLabel
        %103 = OpLoad %int %i
        %104 = OpLoad %int %i
        %105 = OpAccessChain %_ptr_Input_v4float %in_interpolators %int_0 %104
        %106 = OpLoad %v4float %105
        %107 = OpFNegate %v4float %106
        %108 = OpLoad %int %i
        %109 = OpAccessChain %_ptr_Input_v4float %in_interpolators %int_1 %108
        %110 = OpLoad %v4float %109
        %111 = OpFAdd %v4float %107 %110
        %112 = OpLoad %int %i
        %113 = OpAccessChain %_ptr_Input_v4float %in_interpolators %int_2 %112
        %114 = OpLoad %v4float %113
        %115 = OpFAdd %v4float %111 %114
        %116 = OpAccessChain %_ptr_Output_v4float %out_interpolators %103
               OpStore %116 %115
               OpBranch %98
         %98 = OpLabel
        %117 = OpLoad %int %i
        %118 = OpIAdd %int %117 %int_1
               OpStore %i %118
               OpBranch %95
         %97 = OpLabel
               OpEmitVertex
               OpEndPrimitive
               OpBranch %29
        %119 = OpLabel
        %120 = OpAccessChain %_ptr_Input_v4float %gl_in %int_0 %int_0
        %121 = OpLoad %v4float %120
        %122 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %122 %121
        %123 = OpAccessChain %_ptr_Input_float %gl_in %int_0 %int_1
        %124 = OpLoad %float %123
        %125 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %125 %124
        %126 = OpAccessChain %_ptr_Input__arr_v4float_uint_16 %in_interpolators %int_0
        %127 = OpLoad %_arr_v4float_uint_16 %126
               OpStore %out_interpolators %127
               OpEmitVertex
        %128 = OpAccessChain %_ptr_Input_v4float %gl_in %int_1 %int_0
        %129 = OpLoad %v4float %128
        %130 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %130 %129
        %131 = OpAccessChain %_ptr_Input_float %gl_in %int_1 %int_1
        %132 = OpLoad %float %131
        %133 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %133 %132
        %134 = OpAccessChain %_ptr_Input__arr_v4float_uint_16 %in_interpolators %int_1
        %135 = OpLoad %_arr_v4float_uint_16 %134
               OpStore %out_interpolators %135
               OpEmitVertex
        %136 = OpAccessChain %_ptr_Input_v4float %gl_in %int_2 %int_0
        %137 = OpLoad %v4float %136
        %138 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %138 %137
        %139 = OpAccessChain %_ptr_Input_float %gl_in %int_2 %int_1
        %140 = OpLoad %float %139
        %141 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %141 %140
        %142 = OpAccessChain %_ptr_Input__arr_v4float_uint_16 %in_interpolators %int_2
        %143 = OpLoad %_arr_v4float_uint_16 %142
               OpStore %out_interpolators %143
               OpEmitVertex
        %144 = OpAccessChain %_ptr_Input_v4float %gl_in %int_0 %int_0
        %145 = OpLoad %v4float %144
        %146 = OpVectorShuffle %v2float %145 %145 0 1
        %147 = OpAccessChain %_ptr_Input_v4float %gl_in %int_2 %int_0
        %148 = OpLoad %v4float %147
        %149 = OpVectorShuffle %v2float %148 %148 0 1
        %150 = OpFAdd %v2float %146 %149
        %151 = OpAccessChain %_ptr_Input_v4float %gl_in %int_1 %int_0
        %152 = OpLoad %v4float %151
        %153 = OpVectorShuffle %v2float %152 %152 0 1
        %154 = OpFSub %v2float %150 %153
        %155 = OpAccessChain %_ptr_Input_v4float %gl_in %int_2 %int_0
        %156 = OpLoad %v4float %155
        %157 = OpVectorShuffle %v2float %156 %156 2 3
        %158 = OpCompositeExtract %float %154 0
        %159 = OpCompositeExtract %float %154 1
        %160 = OpCompositeExtract %float %157 0
        %161 = OpCompositeExtract %float %157 1
        %162 = OpCompositeConstruct %v4float %158 %159 %160 %161
        %163 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %163 %162
        %164 = OpAccessChain %_ptr_Input_float %gl_in %int_2 %int_1
        %165 = OpLoad %float %164
        %166 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %166 %165
               OpStore %i_0 %int_0
               OpBranch %168
        %168 = OpLabel
               OpLoopMerge %170 %171 None
               OpBranch %172
        %172 = OpLabel
        %173 = OpLoad %int %i_0
        %174 = OpSLessThan %bool %173 %int_16
               OpBranchConditional %174 %169 %170
        %169 = OpLabel
        %175 = OpLoad %int %i_0
        %176 = OpLoad %int %i_0
        %177 = OpAccessChain %_ptr_Input_v4float %in_interpolators %int_0 %176
        %178 = OpLoad %v4float %177
        %179 = OpLoad %int %i_0
        %180 = OpAccessChain %_ptr_Input_v4float %in_interpolators %int_1 %179
        %181 = OpLoad %v4float %180
        %182 = OpFNegate %v4float %181
        %183 = OpFAdd %v4float %178 %182
        %184 = OpLoad %int %i_0
        %185 = OpAccessChain %_ptr_Input_v4float %in_interpolators %int_2 %184
        %186 = OpLoad %v4float %185
        %187 = OpFAdd %v4float %183 %186
        %188 = OpAccessChain %_ptr_Output_v4float %out_interpolators %175
               OpStore %188 %187
               OpBranch %171
        %171 = OpLabel
        %189 = OpLoad %int %i_0
        %190 = OpIAdd %int %189 %int_1
               OpStore %i_0 %190
               OpBranch %168
        %170 = OpLabel
               OpEmitVertex
               OpEndPrimitive
               OpBranch %29
         %29 = OpLabel
               OpReturn
               OpFunctionEnd
