; SPIR-V
; Version: 1.0
; Generator: rspirv
; Bound: 98
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %29 "vs_main" %22 %25 %27
OpEntryPoint Fragment %90 "fs_main" %83 %86 %89
OpExecutionMode %90 OriginUpperLeft
OpMemberDecorate %6 0 Offset 0
OpMemberDecorate %6 1 Offset 16
OpMemberDecorate %8 0 Offset 0
OpMemberDecorate %8 0 ColMajor
OpMemberDecorate %8 0 MatrixStride 16
OpMemberDecorate %8 1 Offset 64
OpMemberDecorate %8 1 ColMajor
OpMemberDecorate %8 1 MatrixStride 16
OpDecorate %14 DescriptorSet 0
OpDecorate %14 Binding 0
OpDecorate %15 Block
OpMemberDecorate %15 0 Offset 0
OpDecorate %17 DescriptorSet 0
OpDecorate %17 Binding 1
OpDecorate %19 DescriptorSet 0
OpDecorate %19 Binding 2
OpDecorate %22 BuiltIn VertexIndex
OpDecorate %25 BuiltIn Position
OpDecorate %27 Location 0
OpDecorate %83 BuiltIn FragCoord
OpDecorate %86 Location 0
OpDecorate %89 Location 0
%2 = OpTypeVoid
%4 = OpTypeFloat 32
%3 = OpTypeVector %4 4
%5 = OpTypeVector %4 3
%6 = OpTypeStruct %3 %5
%7 = OpTypeMatrix %3 4
%8 = OpTypeStruct %7 %7
%9 = OpTypeInt 32 0
%10 = OpTypeInt 32 1
%11 = OpTypeMatrix %5 3
%12 = OpTypeImage %4 Cube 0 0 0 1 Unknown
%13 = OpTypeSampler
%15 = OpTypeStruct %8
%16 = OpTypePointer Uniform %15
%14 = OpVariable  %16  Uniform
%18 = OpTypePointer UniformConstant %12
%17 = OpVariable  %18  UniformConstant
%20 = OpTypePointer UniformConstant %13
%19 = OpVariable  %20  UniformConstant
%23 = OpTypePointer Input %9
%22 = OpVariable  %23  Input
%26 = OpTypePointer Output %3
%25 = OpVariable  %26  Output
%28 = OpTypePointer Output %5
%27 = OpVariable  %28  Output
%30 = OpTypeFunction %2
%31 = OpTypePointer Uniform %8
%32 = OpConstant  %9  0
%34 = OpConstant  %10  2
%35 = OpConstant  %10  1
%36 = OpConstant  %4  4.0
%37 = OpConstant  %4  1.0
%38 = OpConstant  %4  0.0
%40 = OpTypePointer Function %10
%41 = OpConstantNull  %10
%43 = OpConstantNull  %10
%58 = OpTypePointer Uniform %7
%59 = OpTypePointer Uniform %3
%60 = OpConstant  %9  1
%67 = OpConstant  %9  2
%84 = OpTypePointer Input %3
%83 = OpVariable  %84  Input
%87 = OpTypePointer Input %5
%86 = OpVariable  %87  Input
%89 = OpVariable  %26  Output
%95 = OpTypeSampledImage %12
%29 = OpFunction  %2  None %30
%21 = OpLabel
%39 = OpVariable  %40  Function %41
%42 = OpVariable  %40  Function %43
%24 = OpLoad  %9  %22
%33 = OpAccessChain  %31  %14 %32
OpBranch %44
%44 = OpLabel
%45 = OpBitcast  %10  %24
%46 = OpSDiv  %10  %45 %34
OpStore %39 %46
%47 = OpBitcast  %10  %24
%48 = OpBitwiseAnd  %10  %47 %35
OpStore %42 %48
%49 = OpLoad  %10  %39
%50 = OpConvertSToF  %4  %49
%51 = OpFMul  %4  %50 %36
%52 = OpFSub  %4  %51 %37
%53 = OpLoad  %10  %42
%54 = OpConvertSToF  %4  %53
%55 = OpFMul  %4  %54 %36
%56 = OpFSub  %4  %55 %37
%57 = OpCompositeConstruct  %3  %52 %56 %38 %37
%61 = OpAccessChain  %59  %33 %60 %32
%62 = OpLoad  %3  %61
%63 = OpVectorShuffle  %5  %62 %62 0 1 2
%64 = OpAccessChain  %59  %33 %60 %60
%65 = OpLoad  %3  %64
%66 = OpVectorShuffle  %5  %65 %65 0 1 2
%68 = OpAccessChain  %59  %33 %60 %67
%69 = OpLoad  %3  %68
%70 = OpVectorShuffle  %5  %69 %69 0 1 2
%71 = OpCompositeConstruct  %11  %63 %66 %70
%72 = OpTranspose  %11  %71
%73 = OpAccessChain  %58  %33 %32
%74 = OpLoad  %7  %73
%75 = OpMatrixTimesVector  %3  %74 %57
%76 = OpVectorShuffle  %5  %75 %75 0 1 2
%77 = OpMatrixTimesVector  %5  %72 %76
%78 = OpCompositeConstruct  %6  %57 %77
%79 = OpCompositeExtract  %3  %78 0
OpStore %25 %79
%80 = OpCompositeExtract  %5  %78 1
OpStore %27 %80
OpReturn
OpFunctionEnd
%90 = OpFunction  %2  None %30
%81 = OpLabel
%85 = OpLoad  %3  %83
%88 = OpLoad  %5  %86
%82 = OpCompositeConstruct  %6  %85 %88
%91 = OpLoad  %12  %17
%92 = OpLoad  %13  %19
OpBranch %93
%93 = OpLabel
%94 = OpCompositeExtract  %5  %82 1
%96 = OpSampledImage  %95  %91 %92
%97 = OpImageSampleImplicitLod  %3  %96 %94
OpStore %89 %97
OpReturn
OpFunctionEnd