spv.nonSquare.vert
// Module Version 10000
// Generated by (magic number): 80005
// Id's are bound by 90

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 12 22 28 55
                              Source GLSL 140
                              Name 4  "main"
                              Name 9  "a"
                              Name 12  "v3"
                              Name 16  "m23"
                              Name 19  "b"
                              Name 22  "m32"
                              Name 28  "gl_Position"
                              Name 55  "v4"
                              Decorate 28(gl_Position) BuiltIn Position
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 2
               8:             TypePointer Function 7(fvec2)
              10:             TypeVector 6(float) 3
              11:             TypePointer Input 10(fvec3)
          12(v3):     11(ptr) Variable Input
              14:             TypeMatrix 10(fvec3) 2
              15:             TypePointer Function 14
              20:             TypeMatrix 7(fvec2) 3
              21:             TypePointer Output 20
         22(m32):     21(ptr) Variable Output
              26:             TypeVector 6(float) 4
              27:             TypePointer Output 26(fvec4)
 28(gl_Position):     27(ptr) Variable Output
              31:             TypeMatrix 10(fvec3) 3
              35:    6(float) Constant 0
              40:             TypeMatrix 26(fvec4) 4
              41:    6(float) Constant 1077936128
              42:    6(float) Constant 1086324736
              43:   26(fvec4) ConstantComposite 41 42 35 35
              44:    6(float) Constant 1091567616
              45:    6(float) Constant 1094713344
              46:   26(fvec4) ConstantComposite 44 45 35 35
              47:    6(float) Constant 1097859072
              48:    6(float) Constant 1099956224
              49:   26(fvec4) ConstantComposite 47 48 35 35
              50:    6(float) Constant 1101529088
              51:    6(float) Constant 1103101952
              52:   26(fvec4) ConstantComposite 50 51 35 35
              53:          40 ConstantComposite 43 46 49 52
              54:             TypePointer Input 26(fvec4)
          55(v4):     54(ptr) Variable Input
              59:    6(float) Constant 1112014848
              60:    6(float) Constant 1121714176
              61:    6(float) Constant 1126825984
              62:    6(float) Constant 1130758144
              63:   26(fvec4) ConstantComposite 59 60 61 62
              65:    6(float) Constant 1106247680
              66:    6(float) Constant 1114636288
              67:   26(fvec4) ConstantComposite 65 66 35 35
              69:    6(float) Constant 1101004800
              70:    6(float) Constant 1092616192
              71:    6(float) Constant 1084227584
              72:   26(fvec4) ConstantComposite 69 70 42 71
              74:    7(fvec2) ConstantComposite 70 69
              75:             TypeMatrix 26(fvec4) 2
              76:   26(fvec4) ConstantComposite 41 35 35 35
              77:   26(fvec4) ConstantComposite 35 41 35 35
              78:          75 ConstantComposite 76 77
              79:             TypeMatrix 7(fvec2) 4
              80:    6(float) Constant 1065353216
              81:    6(float) Constant 1073741824
              82:    7(fvec2) ConstantComposite 80 81
              83:    6(float) Constant 1082130432
              84:    7(fvec2) ConstantComposite 41 83
              85:    7(fvec2) ConstantComposite 71 42
              86:    6(float) Constant 1088421888
              87:    6(float) Constant 1090519040
              88:    7(fvec2) ConstantComposite 86 87
              89:          79 ConstantComposite 82 84 85 88
         4(main):           2 Function None 3
               5:             Label
            9(a):      8(ptr) Variable Function
         16(m23):     15(ptr) Variable Function
           19(b):      8(ptr) Variable Function
              13:   10(fvec3) Load 12(v3)
              17:          14 Load 16(m23)
              18:    7(fvec2) VectorTimesMatrix 13 17
                              Store 9(a) 18
              23:          20 Load 22(m32)
              24:   10(fvec3) Load 12(v3)
              25:    7(fvec2) MatrixTimesVector 23 24
                              Store 19(b) 25
              29:          14 Load 16(m23)
              30:          20 Load 22(m32)
              32:          31 MatrixTimesMatrix 29 30
              33:   10(fvec3) Load 12(v3)
              34:   10(fvec3) MatrixTimesVector 32 33
              36:    6(float) CompositeExtract 34 0
              37:    6(float) CompositeExtract 34 1
              38:    6(float) CompositeExtract 34 2
              39:   26(fvec4) CompositeConstruct 36 37 38 35
              56:   26(fvec4) Load 55(v4)
              57:   26(fvec4) MatrixTimesVector 53 56
              58:   26(fvec4) FAdd 39 57
              64:   26(fvec4) FAdd 58 63
              68:   26(fvec4) FAdd 64 67
              73:   26(fvec4) FAdd 68 72
                              Store 28(gl_Position) 73
                              Return
                              FunctionEnd
