OpCapability Shader
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
               OpEntryPoint Fragment %main "main" %gl_FragCoord %_GLF_color
               OpExecutionMode %main OriginUpperLeft
               OpSource ESSL 320
               OpName %main "main"
               OpName %collatz_i1_ "collatz(i1;"
               OpName %v "v"
               OpName %count "count"
               OpName %lin "lin"
               OpName %gl_FragCoord "gl_FragCoord"
               OpName %buf0 "buf0"
               OpMemberName %buf0 0 "resolution"
               OpName %_ ""
               OpName %v_0 "v"
               OpName %_GLF_color "_GLF_color"
               OpName %param "param"
               OpName %indexable "indexable"
               OpDecorate %gl_FragCoord BuiltIn FragCoord
               OpMemberDecorate %buf0 0 Offset 0
               OpDecorate %buf0 Block
               OpDecorate %_ DescriptorSet 0
               OpDecorate %_ Binding 0
               OpDecorate %_GLF_color Location 0
       %void = OpTypeVoid
         %15 = OpTypeFunction %void
        %int = OpTypeInt 32 1
%_ptr_Function_int = OpTypePointer Function %int
         %18 = OpTypeFunction %int %_ptr_Function_int
      %int_0 = OpConstant %int 0
      %int_1 = OpConstant %int 1
       %bool = OpTypeBool
      %int_3 = OpConstant %int 3
      %int_2 = OpConstant %int 2
      %float = OpTypeFloat 32
    %v2float = OpTypeVector %float 2
%_ptr_Function_v2float = OpTypePointer Function %v2float
    %v4float = OpTypeVector %float 4
%_ptr_Input_v4float = OpTypePointer Input %v4float
%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
       %buf0 = OpTypeStruct %v2float
%_ptr_Uniform_buf0 = OpTypePointer Uniform %buf0
          %_ = OpVariable %_ptr_Uniform_buf0 Uniform
%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
    %float_8 = OpConstant %float 8
       %uint = OpTypeInt 32 0
     %uint_0 = OpConstant %uint 0
%_ptr_Function_float = OpTypePointer Function %float
      %int_8 = OpConstant %int 8
     %uint_1 = OpConstant %uint 1
%_ptr_Output_v4float = OpTypePointer Output %v4float
 %_GLF_color = OpVariable %_ptr_Output_v4float Output
    %uint_16 = OpConstant %uint 16
%_arr_v4float_uint_16 = OpTypeArray %v4float %uint_16
    %float_0 = OpConstant %float 0
    %float_1 = OpConstant %float 1
         %42 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
  %float_0_5 = OpConstant %float 0.5
         %44 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0 %float_1
         %45 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0 %float_1
         %46 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0 %float_1
         %47 = OpConstantComposite %v4float %float_0 %float_0 %float_0_5 %float_1
         %48 = OpConstantComposite %v4float %float_0_5 %float_0 %float_0_5 %float_1
         %49 = OpConstantComposite %v4float %float_0 %float_0_5 %float_0_5 %float_1
         %50 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_1
         %51 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
         %52 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
         %53 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_1
         %54 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
         %55 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
         %56 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
         %57 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
         %58 = OpConstantComposite %_arr_v4float_uint_16 %42 %44 %45 %46 %47 %48 %49 %50 %42 %51 %52 %53 %54 %55 %56 %57
     %int_16 = OpConstant %int 16
%_ptr_Function__arr_v4float_uint_16 = OpTypePointer Function %_arr_v4float_uint_16
%_ptr_Function_v4float = OpTypePointer Function %v4float
       %main = OpFunction %void None %15
         %62 = OpLabel
        %lin = OpVariable %_ptr_Function_v2float Function
        %v_0 = OpVariable %_ptr_Function_int Function
      %param = OpVariable %_ptr_Function_int Function
  %indexable = OpVariable %_ptr_Function__arr_v4float_uint_16 Function
         %63 = OpLoad %v4float %gl_FragCoord
         %64 = OpVectorShuffle %v2float %63 %63 0 1
         %65 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
         %66 = OpLoad %v2float %65
         %67 = OpFDiv %v2float %64 %66
               OpStore %lin %67
         %68 = OpLoad %v2float %lin
         %69 = OpVectorTimesScalar %v2float %68 %float_8
         %70 = OpExtInst %v2float %1 Floor %69
               OpStore %lin %70
         %71 = OpAccessChain %_ptr_Function_float %lin %uint_0
         %72 = OpLoad %float %71
         %73 = OpConvertFToS %int %72
         %74 = OpIMul %int %73 %int_8
         %75 = OpAccessChain %_ptr_Function_float %lin %uint_1
         %76 = OpLoad %float %75
         %77 = OpConvertFToS %int %76
         %78 = OpIAdd %int %74 %77
               OpStore %v_0 %78
         %79 = OpLoad %int %v_0
               OpStore %param %79
         %80 = OpFunctionCall %int %collatz_i1_ %param
         %81 = OpSMod %int %80 %int_16
               OpStore %indexable %58
         %82 = OpAccessChain %_ptr_Function_v4float %indexable %81
         %83 = OpLoad %v4float %82
               OpStore %_GLF_color %83
               OpReturn
               OpFunctionEnd
%collatz_i1_ = OpFunction %int None %18
          %v = OpFunctionParameter %_ptr_Function_int
         %84 = OpLabel
      %count = OpVariable %_ptr_Function_int Function
               OpStore %count %int_0
               OpBranch %85
         %85 = OpLabel
               OpLoopMerge %86 %87 None
               OpBranch %88
         %88 = OpLabel
         %89 = OpLoad %int %v
         %90 = OpSGreaterThan %bool %89 %int_1
               OpBranchConditional %90 %91 %86
         %91 = OpLabel
         %92 = OpLoad %int %v
         %93 = OpBitwiseAnd %int %92 %int_1
         %94 = OpIEqual %bool %93 %int_1
               OpSelectionMerge %95 None
               OpBranchConditional %94 %96 %97
         %96 = OpLabel
         %98 = OpLoad %int %v
         %99 = OpIMul %int %int_3 %98
        %100 = OpIAdd %int %99 %int_1
               OpStore %v %100
               OpBranch %95
         %97 = OpLabel
        %101 = OpLoad %int %v
        %102 = OpSDiv %int %101 %int_2
               OpStore %v %102
               OpBranch %95
         %95 = OpLabel
        %103 = OpLoad %int %count
        %104 = OpIAdd %int %103 %int_1
               OpStore %count %104
               OpBranch %87
         %87 = OpLabel
               OpBranch %85
         %86 = OpLabel
        %105 = OpLoad %int %count
               OpReturnValue %105
               OpFunctionEnd