; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 6
; Bound: 251
; 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 %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
      %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
    %v2float = OpTypeVector %float 2
%_ptr_Input_v4float = OpTypePointer Input %v4float
      %int_2 = OpConstant %int 2
     %uint_0 = OpConstant %uint 0
%_ptr_Input_float = OpTypePointer Input %float
      %int_1 = OpConstant %int 1
     %uint_1 = OpConstant %uint 1
     %v2bool = OpTypeVector %bool 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_Output_v4float = OpTypePointer Output %v4float
%_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
%_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
          %i = OpVariable %_ptr_Function_int Function
        %i_0 = OpVariable %_ptr_Function_int Function
         %19 = OpAccessChain %_ptr_Input_v4float %gl_in %int_0 %int_0
         %20 = OpLoad %v4float %19
         %21 = OpVectorShuffle %v2float %20 %20 0 1
         %25 = OpAccessChain %_ptr_Input_float %gl_in %int_2 %int_0 %uint_0
         %26 = OpLoad %float %25
         %29 = OpAccessChain %_ptr_Input_float %gl_in %int_1 %int_0 %uint_1
         %30 = OpLoad %float %29
         %31 = OpCompositeConstruct %v2float %26 %30
         %33 = OpFOrdEqual %v2bool %21 %31
         %34 = OpAll %bool %33
         %35 = OpLogicalNot %bool %34
               OpSelectionMerge %37 None
               OpBranchConditional %35 %36 %37
         %36 = OpLabel
         %38 = OpAccessChain %_ptr_Input_v4float %gl_in %int_0 %int_0
         %39 = OpLoad %v4float %38
         %40 = OpVectorShuffle %v2float %39 %39 0 1
         %41 = OpAccessChain %_ptr_Input_float %gl_in %int_1 %int_0 %uint_0
         %42 = OpLoad %float %41
         %43 = OpAccessChain %_ptr_Input_float %gl_in %int_2 %int_0 %uint_1
         %44 = OpLoad %float %43
         %45 = OpCompositeConstruct %v2float %42 %44
         %46 = OpFOrdEqual %v2bool %40 %45
         %47 = OpAll %bool %46
               OpBranch %37
         %37 = OpLabel
         %48 = OpPhi %bool %34 %5 %47 %36
               OpSelectionMerge %50 None
               OpBranchConditional %48 %49 %154
         %49 = OpLabel
         %54 = OpAccessChain %_ptr_Input_v4float %gl_in %int_0 %int_0
         %55 = OpLoad %v4float %54
         %57 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %57 %55
         %58 = OpAccessChain %_ptr_Input_float %gl_in %int_0 %int_1
         %59 = OpLoad %float %58
         %61 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %61 %59
         %70 = OpAccessChain %_ptr_Input__arr_v4float_uint_16 %in_interpolators %int_0
         %71 = OpLoad %_arr_v4float_uint_16 %70
               OpStore %out_interpolators %71
               OpEmitVertex
         %72 = OpAccessChain %_ptr_Input_v4float %gl_in %int_1 %int_0
         %73 = OpLoad %v4float %72
         %74 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %74 %73
         %75 = OpAccessChain %_ptr_Input_float %gl_in %int_1 %int_1
         %76 = OpLoad %float %75
         %77 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %77 %76
         %78 = OpAccessChain %_ptr_Input__arr_v4float_uint_16 %in_interpolators %int_1
         %79 = OpLoad %_arr_v4float_uint_16 %78
               OpStore %out_interpolators %79
               OpEmitVertex
         %80 = OpAccessChain %_ptr_Input_v4float %gl_in %int_2 %int_0
         %81 = OpLoad %v4float %80
         %82 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %82 %81
         %83 = OpAccessChain %_ptr_Input_float %gl_in %int_2 %int_1
         %84 = OpLoad %float %83
         %85 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %85 %84
         %86 = OpAccessChain %_ptr_Input__arr_v4float_uint_16 %in_interpolators %int_2
         %87 = OpLoad %_arr_v4float_uint_16 %86
               OpStore %out_interpolators %87
               OpEmitVertex
               OpEndPrimitive
         %88 = OpAccessChain %_ptr_Input_v4float %gl_in %int_2 %int_0
         %89 = OpLoad %v4float %88
         %90 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %90 %89
         %91 = OpAccessChain %_ptr_Input_float %gl_in %int_2 %int_1
         %92 = OpLoad %float %91
         %93 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %93 %92
         %94 = OpAccessChain %_ptr_Input__arr_v4float_uint_16 %in_interpolators %int_2
         %95 = OpLoad %_arr_v4float_uint_16 %94
               OpStore %out_interpolators %95
               OpEmitVertex
         %96 = OpAccessChain %_ptr_Input_v4float %gl_in %int_1 %int_0
         %97 = OpLoad %v4float %96
         %98 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %98 %97
         %99 = OpAccessChain %_ptr_Input_float %gl_in %int_1 %int_1
        %100 = OpLoad %float %99
        %101 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %101 %100
        %102 = OpAccessChain %_ptr_Input__arr_v4float_uint_16 %in_interpolators %int_1
        %103 = OpLoad %_arr_v4float_uint_16 %102
               OpStore %out_interpolators %103
               OpEmitVertex
        %104 = OpAccessChain %_ptr_Input_v4float %gl_in %int_0 %int_0
        %105 = OpLoad %v4float %104
        %106 = OpVectorShuffle %v2float %105 %105 0 1
        %107 = OpFNegate %v2float %106
        %108 = OpAccessChain %_ptr_Input_v4float %gl_in %int_1 %int_0
        %109 = OpLoad %v4float %108
        %110 = OpVectorShuffle %v2float %109 %109 0 1
        %111 = OpFAdd %v2float %107 %110
        %112 = OpAccessChain %_ptr_Input_v4float %gl_in %int_2 %int_0
        %113 = OpLoad %v4float %112
        %114 = OpVectorShuffle %v2float %113 %113 0 1
        %115 = OpFAdd %v2float %111 %114
        %116 = OpAccessChain %_ptr_Input_v4float %gl_in %int_2 %int_0
        %117 = OpLoad %v4float %116
        %118 = OpVectorShuffle %v2float %117 %117 2 3
        %119 = OpCompositeExtract %float %115 0
        %120 = OpCompositeExtract %float %115 1
        %121 = OpCompositeExtract %float %118 0
        %122 = OpCompositeExtract %float %118 1
        %123 = OpCompositeConstruct %v4float %119 %120 %121 %122
        %124 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %124 %123
        %125 = OpAccessChain %_ptr_Input_float %gl_in %int_2 %int_1
        %126 = OpLoad %float %125
        %127 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %127 %126
               OpStore %i %int_0
               OpBranch %130
        %130 = OpLabel
               OpLoopMerge %132 %133 None
               OpBranch %134
        %134 = OpLabel
        %135 = OpLoad %int %i
        %137 = OpSLessThan %bool %135 %int_16
               OpBranchConditional %137 %131 %132
        %131 = OpLabel
        %138 = OpLoad %int %i
        %139 = OpLoad %int %i
        %140 = OpAccessChain %_ptr_Input_v4float %in_interpolators %int_0 %139
        %141 = OpLoad %v4float %140
        %142 = OpFNegate %v4float %141
        %143 = OpLoad %int %i
        %144 = OpAccessChain %_ptr_Input_v4float %in_interpolators %int_1 %143
        %145 = OpLoad %v4float %144
        %146 = OpFAdd %v4float %142 %145
        %147 = OpLoad %int %i
        %148 = OpAccessChain %_ptr_Input_v4float %in_interpolators %int_2 %147
        %149 = OpLoad %v4float %148
        %150 = OpFAdd %v4float %146 %149
        %151 = OpAccessChain %_ptr_Output_v4float %out_interpolators %138
               OpStore %151 %150
               OpBranch %133
        %133 = OpLabel
        %152 = OpLoad %int %i
        %153 = OpIAdd %int %152 %int_1
               OpStore %i %153
               OpBranch %130
        %132 = OpLabel
               OpEmitVertex
               OpEndPrimitive
               OpBranch %50
        %154 = OpLabel
        %155 = OpAccessChain %_ptr_Input_v4float %gl_in %int_0 %int_0
        %156 = OpLoad %v4float %155
        %157 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %157 %156
        %158 = OpAccessChain %_ptr_Input_float %gl_in %int_0 %int_1
        %159 = OpLoad %float %158
        %160 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %160 %159
        %161 = OpAccessChain %_ptr_Input__arr_v4float_uint_16 %in_interpolators %int_0
        %162 = OpLoad %_arr_v4float_uint_16 %161
               OpStore %out_interpolators %162
               OpEmitVertex
        %163 = OpAccessChain %_ptr_Input_v4float %gl_in %int_1 %int_0
        %164 = OpLoad %v4float %163
        %165 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %165 %164
        %166 = OpAccessChain %_ptr_Input_float %gl_in %int_1 %int_1
        %167 = OpLoad %float %166
        %168 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %168 %167
        %169 = OpAccessChain %_ptr_Input__arr_v4float_uint_16 %in_interpolators %int_1
        %170 = OpLoad %_arr_v4float_uint_16 %169
               OpStore %out_interpolators %170
               OpEmitVertex
        %171 = OpAccessChain %_ptr_Input_v4float %gl_in %int_2 %int_0
        %172 = OpLoad %v4float %171
        %173 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %173 %172
        %174 = OpAccessChain %_ptr_Input_float %gl_in %int_2 %int_1
        %175 = OpLoad %float %174
        %176 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %176 %175
        %177 = OpAccessChain %_ptr_Input__arr_v4float_uint_16 %in_interpolators %int_2
        %178 = OpLoad %_arr_v4float_uint_16 %177
               OpStore %out_interpolators %178
               OpEmitVertex
               OpEndPrimitive
        %179 = OpAccessChain %_ptr_Input_v4float %gl_in %int_0 %int_0
        %180 = OpLoad %v4float %179
        %181 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %181 %180
        %182 = OpAccessChain %_ptr_Input_float %gl_in %int_0 %int_1
        %183 = OpLoad %float %182
        %184 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %184 %183
        %185 = OpAccessChain %_ptr_Input__arr_v4float_uint_16 %in_interpolators %int_0
        %186 = OpLoad %_arr_v4float_uint_16 %185
               OpStore %out_interpolators %186
               OpEmitVertex
        %187 = OpAccessChain %_ptr_Input_v4float %gl_in %int_2 %int_0
        %188 = OpLoad %v4float %187
        %189 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %189 %188
        %190 = OpAccessChain %_ptr_Input_float %gl_in %int_2 %int_1
        %191 = OpLoad %float %190
        %192 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %192 %191
        %193 = OpAccessChain %_ptr_Input__arr_v4float_uint_16 %in_interpolators %int_2
        %194 = OpLoad %_arr_v4float_uint_16 %193
               OpStore %out_interpolators %194
               OpEmitVertex
        %195 = OpAccessChain %_ptr_Input_v4float %gl_in %int_0 %int_0
        %196 = OpLoad %v4float %195
        %197 = OpVectorShuffle %v2float %196 %196 0 1
        %198 = OpAccessChain %_ptr_Input_v4float %gl_in %int_1 %int_0
        %199 = OpLoad %v4float %198
        %200 = OpVectorShuffle %v2float %199 %199 0 1
        %201 = OpFNegate %v2float %200
        %202 = OpFAdd %v2float %197 %201
        %203 = OpAccessChain %_ptr_Input_v4float %gl_in %int_2 %int_0
        %204 = OpLoad %v4float %203
        %205 = OpVectorShuffle %v2float %204 %204 0 1
        %206 = OpFAdd %v2float %202 %205
        %207 = OpAccessChain %_ptr_Input_v4float %gl_in %int_2 %int_0
        %208 = OpLoad %v4float %207
        %209 = OpVectorShuffle %v2float %208 %208 2 3
        %210 = OpCompositeExtract %float %206 0
        %211 = OpCompositeExtract %float %206 1
        %212 = OpCompositeExtract %float %209 0
        %213 = OpCompositeExtract %float %209 1
        %214 = OpCompositeConstruct %v4float %210 %211 %212 %213
        %215 = OpAccessChain %_ptr_Output_v4float %_ %int_0
               OpStore %215 %214
        %216 = OpAccessChain %_ptr_Input_float %gl_in %int_2 %int_1
        %217 = OpLoad %float %216
        %218 = OpAccessChain %_ptr_Output_float %_ %int_1
               OpStore %218 %217
               OpStore %i_0 %int_0
               OpBranch %220
        %220 = OpLabel
               OpLoopMerge %222 %223 None
               OpBranch %224
        %224 = OpLabel
        %225 = OpLoad %int %i_0
        %226 = OpSLessThan %bool %225 %int_16
               OpBranchConditional %226 %221 %222
        %221 = OpLabel
        %227 = OpLoad %int %i_0
        %228 = OpLoad %int %i_0
        %229 = OpAccessChain %_ptr_Input_v4float %in_interpolators %int_0 %228
        %230 = OpLoad %v4float %229
        %231 = OpLoad %int %i_0
        %232 = OpAccessChain %_ptr_Input_v4float %in_interpolators %int_1 %231
        %233 = OpLoad %v4float %232
        %234 = OpFNegate %v4float %233
        %235 = OpFAdd %v4float %230 %234
        %236 = OpLoad %int %i_0
        %237 = OpAccessChain %_ptr_Input_v4float %in_interpolators %int_2 %236
        %238 = OpLoad %v4float %237
        %239 = OpFAdd %v4float %235 %238
        %240 = OpAccessChain %_ptr_Output_v4float %out_interpolators %227
               OpStore %240 %239
               OpBranch %223
        %223 = OpLabel
        %241 = OpLoad %int %i_0
        %242 = OpIAdd %int %241 %int_1
               OpStore %i_0 %242
               OpBranch %220
        %222 = OpLabel
               OpEmitVertex
               OpEndPrimitive
               OpBranch %50
         %50 = OpLabel
               OpReturn
               OpFunctionEnd
