//skip this from RegEx because its OK
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
//
//   using 3Dmigoto v1.3.11 on Mon Nov 26 18:45:18 2018
//
//
// Buffer Definitions:
//
// cbuffer $Globals
// {
//
//   float4 gFullScreenRenderTargetDimensionsCS;// Offset:    0 Size:    16 [unused]
//   float4 gCSTestParam;               // Offset:   16 Size:    16 [unused]
//   float4 gLPVGridInfo[2];            // Offset:   32 Size:    32 [unused]
//   float4 gDeferredFogParams;         // Offset:   64 Size:    16 [unused]
//   float4 gLocalizedFogParams[5];     // Offset:   80 Size:    80 [unused]
//   row_major float4x4 gWaterRippleParams;// Offset:  160 Size:    64 [unused]
//   float4 gWaterRippleFilterParams[3];// Offset:  224 Size:    48 [unused]
//   float4 gHBAOCSParams[6];           // Offset:  272 Size:    96 [unused]
//   float4 gEdgeDetectParams[3];       // Offset:  368 Size:    48 [unused]
//   row_major float4x4 gMainSceneViewProj;// Offset:  416 Size:    64 [unused]
//   row_major float4x4 gMainSceneProj; // Offset:  480 Size:    64 [unused]
//   row_major float4x4 gMainSceneInvProj;// Offset:  544 Size:    64 [unused]
//   row_major float4x4 gMainSceneInvTransInvView;// Offset:  608 Size:    64 [unused]
//   float4 gSceenResClipDistances;     // Offset:  672 Size:    16
//   row_major float4x4 gMainSceneInvViewProj;// Offset:  688 Size:    64 [unused]
//   float4 gTiledDeferredShadowMapTexelSize;// Offset:  752 Size:    16 [unused]
//   float4 gTiledDeferredMergeParams;  // Offset:  768 Size:    16 [unused]
//   float4 gPointInSpaceLightParams;   // Offset:  784 Size:    16
//   row_major float4x4 gLumHistComputeParams;// Offset:  800 Size:    64 [unused]
//   float4 gLuminanceToExposureCS;     // Offset:  864 Size:    16 [unused]
//   float4 gHistogramToExposure;       // Offset:  880 Size:    16 [unused]
//   row_major float4x4 gToneMapOptionsCS;// Offset:  896 Size:    64 [unused]
//   float4 gCameraPositionCS;          // Offset:  960 Size:    16 [unused]
//   float4 gWriteColour;               // Offset:  976 Size:    16 [unused]
//   float4 gLightShadowStrengthCS;     // Offset:  992 Size:    16 [unused]
//   float4 gLightShadowParamsCS;       // Offset: 1008 Size:    16 [unused]
//   row_major float4x4 gInverseViewProjShadowCS;// Offset: 1024 Size:    64 [unused]
//   row_major float4x4 gShadowMapPackedParamsCS;// Offset: 1088 Size:    64 [unused]
//   row_major float4x4 gCascadeMinMaxDepthCS;// Offset: 1152 Size:    64 [unused]
//   float4 gCameraParametersCS[2];     // Offset: 1216 Size:    32
//   float4 gPCFKernelScaleCS;          // Offset: 1248 Size:    16 [unused]
//   float4 gCascadedShadowLightMatricesCS[16];// Offset: 1264 Size:   256 [unused]
//   float4 gLightingExperimentCS[3];   // Offset: 1520 Size:    48 [unused]
//   float4 gFinalGatherCS[5];          // Offset: 1568 Size:    80 [unused]
//   row_major float4x4 gMainSceneView; // Offset: 1648 Size:    64 [unused]
//   float4 gViewportInfoCS;            // Offset: 1712 Size:    16 [unused]
//   float4 gAOParamsCS;                // Offset: 1728 Size:    16 [unused]
//   float4 gLightComponentTogglerCS[3];// Offset: 1744 Size:    48 [unused]
//   float4 gDirectLightingExtraParamsCS;// Offset: 1792 Size:    16 [unused]
//   row_major float4x4 gViewMatrixCS;  // Offset: 1808 Size:    64
//   row_major float4x4 gClusteredLightingParamsCS;// Offset: 1872 Size:    64
//   float4 gTiledDecalParams[2];       // Offset: 1936 Size:    32 [unused]
//   float4 gAOStrengthParams;          // Offset: 1968 Size:    16 [unused]
//   float4 gSkinSsaoColourParams;      // Offset: 1984 Size:    16 [unused]
//   float4 gHairSsaoColourParams;      // Offset: 2000 Size:    16 [unused]
//   float4 gFoliageSsaoColourParams;   // Offset: 2016 Size:    16 [unused]
//   row_major float4x4 gKeyLightParametersCS;// Offset: 2032 Size:    64 [unused]
//   row_major float4x4 gVolumetricKeyLightParams;// Offset: 2096 Size:    64 [unused]
//   float4 gAnisoParamsCS;             // Offset: 2160 Size:    16 [unused]
//   float4 gTranslucencyLightingDebugParamsCS;// Offset: 2176 Size:    16 [unused]
//
// }
//
// cbuffer ClusterLightData_Spot_CB
// {
//
//   struct tLightData
//   {
//
//       float3 mPosition;              // Offset:    0
//       float mRadius;                 // Offset:   12
//       float3 mColor;                 // Offset:   16
//       float mStrength;               // Offset:   28
//       float3 mDirection;             // Offset:   32
//       float mHalfCosConeAngle;       // Offset:   44
//       row_major float3x4 mGoboMatrix;// Offset:   48
//       float4 mGoboMapping;           // Offset:   96
//       uint mApplicationFlags;        // Offset:  112
//       float mSphereLightSize;        // Offset:  116
//       float mReturnAmount;           // Offset:  120
//       uint padding;                  // Offset:  124
//
//   } ClusterLightData_Spot[512];      // Offset:    0 Size: 65536
//
// }
//
// cbuffer ClusterLightData_Shadow_CB
// {
//
//   struct tShadowLightData
//   {
//
//       float3 mPosition;              // Offset:    0
//       float mRadius;                 // Offset:   12
//       float3 mColor;                 // Offset:   16
//       float mStrength;               // Offset:   28
//       float3 mDirection;             // Offset:   32
//       float mHalfCosConeAngle;       // Offset:   44
//       row_major float3x4 mGoboMatrix;// Offset:   48
//       float4 mGoboMapping;           // Offset:   96
//       row_major float4x4 mShadowMapProjectViewMatrix;// Offset:  112
//       uint mApplicationFlags;        // Offset:  176
//       float mSphereLightSize;        // Offset:  180
//       float mReturnAmount;           // Offset:  184
//       uint padding;                  // Offset:  188
//
//   } ClusterLightData_Shadow[256];    // Offset:    0 Size: 49152
//
// }
//
// cbuffer ClusterLightData_SH_CB
// {
//
//   struct tShLightData
//   {
//
//       float3 mPosition;              // Offset:    0
//       float mRadiusInv;              // Offset:   12
//       uint mRegion;                  // Offset:   16
//       float mL00_luminance;          // Offset:   20
//       float mdL00_dy_luminance;      // Offset:   24
//       float mGradStrength;           // Offset:   28
//       float4 mShCoeff[3];            // Offset:   32
//       float4 mShGradCoeff[3];        // Offset:   80
//
//   } ClusterLightData_SH[512];        // Offset:    0 Size: 65536
//
// }
//
// cbuffer ClusterLightData_SHFallback_CB
// {
//
//   struct tShLightData
//   {
//
//       float3 mPosition;              // Offset:    0
//       float mRadiusInv;              // Offset:   12
//       uint mRegion;                  // Offset:   16
//       float mL00_luminance;          // Offset:   20
//       float mdL00_dy_luminance;      // Offset:   24
//       float mGradStrength;           // Offset:   28
//       float4 mShCoeff[3];            // Offset:   32
//       float4 mShGradCoeff[3];        // Offset:   80
//
//   } ClusterLightData_SHFallback[3];  // Offset:    0 Size:   384
//
// }
//
// cbuffer TiledDeferredCSParams_CB
// {
//
//   struct tTiledDeferredCS
//   {
//
//       row_major float4x4 mMainSceneInvProj;// Offset:    0
//       row_major float4x4 mMainSceneProj;// Offset:   64
//       row_major float4x4 mMainSceneView;// Offset:  128
//       row_major float4x4 mMainSceneInvTransInvView;// Offset:  192
//       row_major float4x4 mMainSceneInvViewProjThread;// Offset:  256
//       row_major float4x4 mMainSceneViewProj;// Offset:  320
//       float4 mScreenResClipDistances;// Offset:  384
//       float4 mAOStrengthParams;      // Offset:  400
//       float4 mCameraPosition;        // Offset:  416
//       float4 mCameraParameters[2];   // Offset:  432
//       float4 mAnisoParams;           // Offset:  464
//       float4 mLightShadowParams;     // Offset:  480
//       float4 mShadowMapTexelSize;    // Offset:  496
//       float4 mViewportInfo;          // Offset:  512
//       float4 mClusteredLightingParams[4];// Offset:  528
//       float4 mRimLightParams[2];     // Offset:  592
//       float4 mTranslucencyLightingDebugParams;// Offset:  624
//       float4 mLightComponentToggler[4];// Offset:  640
//       float4 mLightingExperiment[3]; // Offset:  704
//       float4 mLightingModelTestParams[5];// Offset:  752
//       float2 mDirectLightingExtraParams;// Offset:  832
//       float2 mFullScreenRenderTargetDimensions;// Offset:  840
//       float mEyeLightWrapPercent;    // Offset:  848
//       int mEnableSssOnPointLights;   // Offset:  852
//       int mEnableTranslucencyLighting;// Offset:  856
//       int mDebugMaxLightListEntries; // Offset:  860
//
//   } TiledDeferredCSParams;           // Offset:    0 Size:   864
//
// }
//
// Resource bind info for ClusterGridOffsets
// {
//
//   uint $Element;                     // Offset:    0 Size:     4
//
// }
//
// Resource bind info for ClusterLightList
// {
//
//   uint $Element;                     // Offset:    0 Size:     4
//
// }
//
// Resource bind info for ClusterLightCount_Spot
// {
//
//   uint $Element;                     // Offset:    0 Size:     4
//
// }
//
// Resource bind info for ClusterLightCount_Shadow
// {
//
//   uint $Element;                     // Offset:    0 Size:     4
//
// }
//
// Resource bind info for ClusterLightCount_Sh
// {
//
//   uint $Element;                     // Offset:    0 Size:     4
//
// }
//
// Resource bind info for ArsonVertexData
// {
//
//   struct tArsonVertex
//   {
//
//       float3 mPosition;              // Offset:    0
//       float3 mPrevPosition;          // Offset:   12
//       float4 mColour;                // Offset:   24
//       float3 mRight;                 // Offset:   40
//       float3 mUp;                    // Offset:   52
//       uint mLightFlagsIndex;         // Offset:   64
//       uint mSubdivisionFrameFillScale;// Offset:   68
//       uint mLightRegion;             // Offset:   72
//
//   } $Element;                        // Offset:    0 Size:    76
//
// }
//
// Resource bind info for ArsonPerParticleInfo
// {
//
//   struct tArsonPerParticleLightingInfo
//   {
//
//       uint mVBufferIdx_LightIdxOffset;// Offset:    0
//       uint mPosLeftOffset_TopOffset; // Offset:    4
//
//   } $Element;                        // Offset:    0 Size:     8
//
// }
//
// Resource bind info for output_lighting
// {
//
//   float2 $Element;                   // Offset:    0 Size:     8
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// GoboTextureSampler                sampler      NA          NA    0        1
// ShadowMapTextureCompareSampler  sampler_c      NA          NA    2        1
// GoboTex                           texture  float4          2d    0        1
// ShadowMapTextureTex               texture  float4          2d    1        1
// ClusterGridOffsets                texture  struct         r/o    2        1
// ClusterLightList                  texture  struct         r/o    3        1
// ClusterLightCount_Spot            texture  struct         r/o    4        1
// ClusterLightCount_Shadow          texture  struct         r/o    5        1
// ClusterLightCount_Sh              texture  struct         r/o    6        1
// ArsonVertexData                   texture  struct         r/o    7        1
// ArsonPerParticleInfo              texture  struct         r/o    8        1
// output_lighting                       UAV  struct         r/w    0        1
// $Globals                          cbuffer      NA          NA    0        1
// ClusterLightData_Spot_CB          cbuffer      NA          NA    1        1
// ClusterLightData_Shadow_CB        cbuffer      NA          NA    2        1
// ClusterLightData_SH_CB            cbuffer      NA          NA    3        1
// ClusterLightData_SHFallback_CB    cbuffer      NA          NA    4        1
// TiledDeferredCSParams_CB          cbuffer      NA          NA    5        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// no Input
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// no Output
cs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[121], immediateIndexed
dcl_constantbuffer cb1[4095], dynamicIndexed
dcl_constantbuffer cb2[3072], dynamicIndexed
dcl_constantbuffer cb3[4096], dynamicIndexed
dcl_constantbuffer cb4[21], immediateIndexed
dcl_constantbuffer cb5[24], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s2, mode_comparison
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_structured t2, 4
dcl_resource_structured t3, 4
dcl_resource_structured t4, 4
dcl_resource_structured t5, 4
dcl_resource_structured t6, 4
dcl_resource_structured t7, 76
dcl_resource_structured t8, 8
dcl_uav_structured u0, 8
dcl_input vThreadIDInGroup.x
dcl_input vThreadID.x
dcl_temps 30
dcl_resource_texture2d (float,float,float,float) t80
dcl_tgsm_structured g0, 16, 64
dcl_tgsm_structured g1, 28, 64
dcl_tgsm_structured g2, 48, 64
dcl_thread_group 64, 1, 1
store_structured g0.xyzw, vThreadIDInGroup.x, l(0), l(0,0,0,0)
store_structured g1.xyzw, vThreadIDInGroup.x, l(0), l(0,0,0,0)
store_structured g1.xyz, vThreadIDInGroup.x, l(16), l(0,0,0,0)
store_structured g2.xyzw, vThreadIDInGroup.x, l(0), l(0,0,0,0)
store_structured g2.xyzw, vThreadIDInGroup.x, l(16), l(0,0,0,0)
store_structured g2.xyzw, vThreadIDInGroup.x, l(32), l(0,0,0,0)
ftou r0.x, cb0[49].x
ult r0.x, vThreadID.x, r0.x
if_nz r0.x
  ld_structured_indexable(structured_buffer, stride=8)(mixed,mixed,mixed,mixed) r0.xy, vThreadID.x, l(0), t8.xyxx
  ushr r0.xz, r0.xxyx, l(8, 0, 16, 0)
  ld_structured_indexable(structured_buffer, stride=76)(mixed,mixed,mixed,mixed) r1.xyzw, r0.x, l(0), t7.xywz
  ld_structured_indexable(structured_buffer, stride=76)(mixed,mixed,mixed,mixed) r2.xyzw, r0.x, l(40), t7.xyzw
  ld_structured_indexable(structured_buffer, stride=76)(mixed,mixed,mixed,mixed) r3.xyz, r0.x, l(56), t7.xyzx
  ld_structured_indexable(structured_buffer, stride=76)(mixed,mixed,mixed,mixed) r0.w, r0.x, l(72), t7.xxxx
  add r4.xyz, r1.xywx, -r2.xyzx
  mov r3.w, r2.w
  add r4.xyz, r3.wxyw, r4.xyzx
  add r5.xyz, r2.xyzx, r2.xyzx
  mul r6.xyz, r3.wxyw, l(-2.000000, -2.000000, -2.000000, 0.000000)
  and r0.y, r0.y, l(0x0000ffff)
  utof r7.xy, r0.zyzz
  mul r0.yz, r7.xxyx, l(0.000000, 0.0000152590219, 0.0000152590219, 0.000000)
  mad r4.xyz, r5.xyzx, r0.yyyy, r4.xyzx
  mad r4.xyz, r6.xyzx, r0.zzzz, r4.xyzx
  ushr r1.w, r3.z, l(24)
  mov r4.w, l(1.000000)
  dp4 r7.x, cb5[20].xyzw, r4.xyzw
  dp4 r7.y, cb5[21].xyzw, r4.xyzw
  dp4 r7.z, cb5[22].xyzw, r4.xyzw
  dp4 r2.w, cb5[23].xyzw, r4.xyzw
  div r7.xyz, r7.xyzx, r2.wwww
  mad r2.w, cb0[120].x, r7.z, cb0[120].y
  rcp r2.w, r2.w
  min r5.w, l(500.000000), cb0[120].w
  lt r6.w, r2.w, r5.w
  if_nz r6.w
    min r5.w, r5.w, cb0[120].w
    add r2.w, r2.w, -cb0[120].z
    add r5.w, r5.w, -cb0[120].z
    rcp r5.w, r5.w
    mul r2.w, r2.w, r5.w
    sqrt r2.w, r2.w
    mul r2.w, r2.w, l(16.000000)
    ftoi r2.w, r2.w
  else
    mov r2.w, l(-1)
  endif
  ige r5.w, r2.w, l(0)
  if_nz r5.w
    ld_structured_indexable(structured_buffer, stride=76)(mixed,mixed,mixed,mixed) r1.xy, r0.x, l(16), t7.xyxx
    add r1.xyz, -r2.xyzx, r1.zxyz
    add r1.xyz, r3.wxyw, r1.xyzx
    mad r1.xyz, r5.xyzx, r0.yyyy, r1.xyzx
    mad r5.xyz, r6.xyzx, r0.zzzz, r1.xyzx
    mad_sat r0.xy, r7.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
    mul r0.xy, r0.xyxx, cb0[42].xyxx
    ftou r0.xy, r0.xyxx
    ushr r0.xy, r0.xyxx, l(6, 6, 0, 0)
    ftou r1.xy, cb0[119].xyxx
    imad r0.y, r1.y, r2.w, r0.y
    imad r0.x, r1.x, r0.y, r0.x
    ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r0.y, r0.x, l(0), t4.xxxx
    ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r0.z, r0.x, l(0), t6.xxxx
    umin r0.yz, r0.yyzy, l(0, 128, 128, 0)
    ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r0.x, l(0), t5.xxxx
    umin r1.x, r1.x, l(128)
    ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r0.x, r0.x, l(0), t2.xxxx
    and r2.xyzw, r1.wwww, l(8, 2, 4, 32)
    ine r1.y, r2.x, l(0)
    ld_structured_indexable(structured_buffer, stride=8)(mixed,mixed,mixed,mixed) r1.z, vThreadID.x, l(0), t8.xxxx
    and r1.z, r1.z, l(255)
    ieq r1.z, r1.z, l(0)
    and r1.y, r1.z, r1.y
    mov r1.z, r0.x
    mov r2.x, l(0)
    loop
      uge r3.x, r2.x, r0.y
      breakc_nz r3.x
      ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.x, r1.z, l(0), t3.xxxx
      ishl r3.x, r3.x, l(3)
      lt r3.y, l(0.000000), cb1[r3.x + 6].w
      if_nz r3.y
        dp4 r6.y, cb1[r3.x + 3].xyzw, r4.xyzw
        dp4 r6.x, cb1[r3.x + 4].xyzw, r4.xyzw
        dp4 r3.y, cb1[r3.x + 5].xyzw, r4.xyzw
        div r3.yw, r6.xxxy, r3.yyyy
        max r3.yw, r3.yyyw, l(0.000000, -1.000000, 0.000000, -1.000000)
        min r3.yw, r3.yyyw, l(0.000000, 1.000000, 0.000000, 1.000000)
        mad r3.yw, r3.yyyw, cb1[r3.x + 6].zzzw, cb1[r3.x + 6].xxxy
        sample_l_indexable(texture2d)(float,float,float,float) r6.xyzw, r3.ywyy, t0.xyzw, s0, l(0.000000)
        mul r6.xyz, r6.xyzx, cb1[r3.x + 1].xyzx
        mul r6.xyz, r6.wwww, r6.xyzx
      else
        mov r6.xyz, cb1[r3.x + 1].xyzx
      endif
      add r7.xyz, -r4.xyzx, cb1[r3.x + 0].xyzx
      dp3 r3.y, r7.xyzx, r7.xyzx
      max r3.w, r3.y, l(0.000010)
      rsq r6.w, r3.w
      mul r8.xyz, r6.wwww, r7.xyzx
      mul r7.w, cb1[r3.x + 0].w, cb1[r3.x + 0].w
      lt r3.w, r7.w, r3.w
      mul r6.w, r6.w, r6.w
      min r6.w, r6.w, l(1.000000)
      movc r3.w, r3.w, l(0), r6.w
      mul r6.xyz, r6.xyzx, r3.wwww
      dp3 r3.w, r8.xyzx, cb1[r3.x + 2].xyzx
      add r3.w, r3.w, cb1[r3.x + 2].w
      mul_sat r3.x, -r3.w, cb1[r3.x + 1].w
      mul r8.xyz, r3.xxxx, r6.xyzx
      if_nz r2.y
        ld_structured r9.xyz, vThreadIDInGroup.x, l(0), g0.xyzx
        mad r6.xyz, r6.xyzx, r3.xxxx, r9.xyzx
        store_structured g0.xyz, vThreadIDInGroup.x, l(0), r6.xyzx
      endif
      rsq r3.x, r3.y
      mul r3.xyw, r3.xxxx, r7.xyxz
      if_nz r2.z
        ld_structured r6.xyz, vThreadIDInGroup.x, l(0), g2.xyzx
        ld_structured r7.xyz, vThreadIDInGroup.x, l(16), g2.xyzx
        ld_structured r9.xyz, vThreadIDInGroup.x, l(32), g2.xyzx
        dp3 r10.x, cb0[113].xyzx, r3.xywx
        dp3 r10.y, cb0[114].xyzx, r3.xywx
        dp3 r10.z, cb0[115].xyzx, r3.xywx
        dp3_sat r6.w, r10.xyzx, l(-0.707106769, 0.408248305, -0.577350259, 0.000000)
        dp3_sat r7.w, r10.xyzx, l(0.707106769, 0.408248305, -0.577350259, 0.000000)
        dp2_sat r9.w, r10.yzyy, l(-0.816496611, -0.577350259, 0.000000, 0.000000)
        mad r6.xyz, r8.xyzx, r6.wwww, r6.xyzx
        mad r7.xyz, r8.xyzx, r7.wwww, r7.xyzx
        mad r9.xyz, r8.xyzx, r9.wwww, r9.xyzx
        store_structured g2.xyz, vThreadIDInGroup.x, l(0), r6.xyzx
        store_structured g2.xyz, vThreadIDInGroup.x, l(16), r7.xyzx
        store_structured g2.xyz, vThreadIDInGroup.x, l(32), r9.xyzx
      endif
      if_nz r1.y
        dp3 r8.w, r8.xyzx, l(0.212500, 0.715400, 0.072100, 0.000000)
        ld_structured r6.x, vThreadIDInGroup.x, l(12), g1.xxxx
        lt r6.x, r6.x, r8.w
        if_nz r6.x
          store_structured g1.xyzw, vThreadIDInGroup.x, l(0), r8.xyzw
          store_structured g1.xyz, vThreadIDInGroup.x, l(16), r3.xywx
        endif
      endif
      iadd r2.x, r2.x, l(1)
      iadd r1.z, r1.z, l(1)
    endloop
    mov r5.w, l(1.000000)
    mov r0.x, r1.z
    mov r0.y, l(0)
    loop
      uge r2.x, r0.y, r1.x
      breakc_nz r2.x
      ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.x, r0.x, l(0), t3.xxxx
      imul null, r2.x, r2.x, l(12)
      dp4 r6.x, cb2[r2.x + 7].xyzw, r4.xyzw
      dp4 r6.y, cb2[r2.x + 8].xyzw, r4.xyzw
      dp4 r6.z, cb2[r2.x + 9].xyzw, r4.xyzw
      dp4 r3.x, cb2[r2.x + 10].xyzw, r4.xyzw
      div r3.xyw, r6.xyxz, r3.xxxx
      dp4 r6.x, cb2[r2.x + 7].xyzw, r5.xyzw
      dp4 r6.y, cb2[r2.x + 8].xyzw, r5.xyzw
      dp4 r6.z, cb2[r2.x + 9].xyzw, r5.xyzw
      dp4 r6.w, cb2[r2.x + 10].xyzw, r5.xyzw
      div r6.xyz, r6.xyzx, r6.wwww
      add r7.xyz, -r3.xywx, r6.xyzx
      sample_c_lz_indexable(texture2d)(float,float,float,float) r6.w, r3.xyxx, t1.xxxx, s2, r3.w
      mad r3.xyw, r7.xyxz, l(2.000000, 2.000000, 0.000000, 2.000000), r3.xyxw
      sample_c_lz_indexable(texture2d)(float,float,float,float) r3.x, r3.xyxx, t1.xxxx, s2, r3.w
      add r3.x, r3.x, r6.w
      sample_c_lz_indexable(texture2d)(float,float,float,float) r3.y, r6.xyxx, t1.xxxx, s2, r6.z
      add r3.x, r3.y, r3.x
      mad r6.xyz, r7.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), r6.xyzx
      sample_c_lz_indexable(texture2d)(float,float,float,float) r3.y, r6.xyxx, t1.xxxx, s2, r6.z
      add r3.x, r3.y, r3.x
      mul r3.x, r3.x, l(0.250000)
      mul r3.xyw, r3.xxxx, cb2[r2.x + 1].xyxz
      lt r6.x, l(0.000000), cb2[r2.x + 6].w
      if_nz r6.x
        dp4 r6.y, cb2[r2.x + 3].xyzw, r4.xyzw
        dp4 r6.x, cb2[r2.x + 4].xyzw, r4.xyzw
        dp4 r6.z, cb2[r2.x + 5].xyzw, r4.xyzw
        div r6.xy, r6.xyxx, r6.zzzz
        max r6.xy, r6.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000)
        min r6.xy, r6.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
        mad r6.xy, r6.xyxx, cb2[r2.x + 6].zwzz, cb2[r2.x + 6].xyxx
        sample_l_indexable(texture2d)(float,float,float,float) r6.xyzw, r6.xyxx, t0.xyzw, s0, l(0.000000)
        mul r6.xyz, r3.xywx, r6.xyzx
        mul r3.xyw, r6.wwww, r6.xyxz
      endif
      add r6.xyz, -r4.xyzx, cb2[r2.x + 0].xyzx
      dp3 r6.w, r6.xyzx, r6.xyzx
      max r7.x, r6.w, l(0.000010)
      rsq r7.y, r7.x
      mul r8.xyz, r6.xyzx, r7.yyyy
      mul r7.z, cb2[r2.x + 0].w, cb2[r2.x + 0].w
      lt r7.x, r7.z, r7.x
      mul r7.y, r7.y, r7.y
      min r7.y, r7.y, l(1.000000)
      movc r7.x, r7.x, l(0), r7.y
      mul r3.xyw, r3.xyxw, r7.xxxx
      dp3 r7.x, r8.xyzx, cb2[r2.x + 2].xyzx
      add r7.x, r7.x, cb2[r2.x + 2].w
      mul_sat r2.x, -r7.x, cb2[r2.x + 1].w
      mul r7.xyz, r2.xxxx, r3.xywx
      if_nz r2.y
        ld_structured r8.xyz, vThreadIDInGroup.x, l(0), g0.xyzx
        mad r3.xyw, r3.xyxw, r2.xxxx, r8.xyxz
        store_structured g0.xyz, vThreadIDInGroup.x, l(0), r3.xywx
      endif
      rsq r2.x, r6.w
      mul r3.xyw, r2.xxxx, r6.xyxz
      if_nz r2.z
        ld_structured r6.xyz, vThreadIDInGroup.x, l(0), g2.xyzx
        ld_structured r8.xyz, vThreadIDInGroup.x, l(16), g2.xyzx
        ld_structured r9.xyz, vThreadIDInGroup.x, l(32), g2.xyzx
        dp3 r10.x, cb0[113].xyzx, r3.xywx
        dp3 r10.y, cb0[114].xyzx, r3.xywx
        dp3 r10.z, cb0[115].xyzx, r3.xywx
        dp3_sat r2.x, r10.xyzx, l(-0.707106769, 0.408248305, -0.577350259, 0.000000)
        dp3_sat r6.w, r10.xyzx, l(0.707106769, 0.408248305, -0.577350259, 0.000000)
        dp2_sat r8.w, r10.yzyy, l(-0.816496611, -0.577350259, 0.000000, 0.000000)
        mad r6.xyz, r7.xyzx, r2.xxxx, r6.xyzx
        mad r8.xyz, r7.xyzx, r6.wwww, r8.xyzx
        mad r9.xyz, r7.xyzx, r8.wwww, r9.xyzx
        store_structured g2.xyz, vThreadIDInGroup.x, l(0), r6.xyzx
        store_structured g2.xyz, vThreadIDInGroup.x, l(16), r8.xyzx
        store_structured g2.xyz, vThreadIDInGroup.x, l(32), r9.xyzx
      endif
      if_nz r1.y
        dp3 r7.w, r7.xyzx, l(0.212500, 0.715400, 0.072100, 0.000000)
        ld_structured r2.x, vThreadIDInGroup.x, l(12), g1.xxxx
        lt r2.x, r2.x, r7.w
        if_nz r2.x
          store_structured g1.xyzw, vThreadIDInGroup.x, l(0), r7.xyzw
          store_structured g1.xyz, vThreadIDInGroup.x, l(16), r3.xywx
        endif
      endif
      iadd r0.xy, r0.xyxx, l(1, 1, 0, 0)
    endloop
    add r1.xyz, -r4.xyzx, cb0[76].xyzx
    dp3 r0.y, r1.xyzx, r1.xyzx
    rsq r0.y, r0.y
    mul r1.xyz, r0.yyyy, r1.xyzx
    mov r5.xyzw, l(0,0,0,0)
    mov r0.y, r0.x
    mov r2.x, l(0)
    loop
      uge r3.x, r2.x, r0.z
      breakc_nz r3.x
      ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.x, r0.y, l(0), t3.xxxx
      ishl r3.x, r3.x, l(3)
      if_nz r2.y
        add r6.xyz, -r4.xyzx, cb3[r3.x + 0].xyzx
        dp3 r3.y, r6.xyzx, r6.xyzx
        sqrt r3.y, r3.y
        mul r3.w, r3.y, cb3[r3.x + 0].w
        ge r3.w, r3.w, l(1.000000)
        ge r4.w, l(0.000100), r3.y
        or r3.w, r3.w, r4.w
        if_nz r3.w
          mov r7.xyzw, l(0,0,0,0)
        else
          mad r3.y, -r3.y, cb3[r3.x + 0].w, l(1.000000)
          mul r3.w, r3.y, r3.y
          dp2 r3.y, r3.wwww, r3.yyyy
          mad r7.w, r3.w, l(3.000000), -r3.y
          mad r3.y, r1.z, cb3[r3.x + 2].z, cb3[r3.x + 2].x
          mad r3.y, r1.y, cb3[r3.x + 2].y, r3.y
          mad r8.x, r1.x, cb3[r3.x + 2].w, r3.y
          mad r3.y, r1.z, cb3[r3.x + 3].z, cb3[r3.x + 3].x
          mad r3.y, r1.y, cb3[r3.x + 3].y, r3.y
          mad r8.y, r1.x, cb3[r3.x + 3].w, r3.y
          mad r3.y, r1.z, cb3[r3.x + 4].z, cb3[r3.x + 4].x
          mad r3.y, r1.y, cb3[r3.x + 4].y, r3.y
          mad r8.z, r1.x, cb3[r3.x + 4].w, r3.y
          lt r3.y, l(0.000000), cb3[r3.x + 1].w
          if_nz r3.y
            mul r3.y, -r6.y, cb3[r3.x + 1].w
            mad r3.w, r1.z, cb3[r3.x + 5].z, cb3[r3.x + 5].x
            mad r3.w, r1.y, cb3[r3.x + 5].y, r3.w
            mad r6.x, r1.x, cb3[r3.x + 5].w, r3.w
            mad r3.w, r1.z, cb3[r3.x + 6].z, cb3[r3.x + 6].x
            mad r3.w, r1.y, cb3[r3.x + 6].y, r3.w
            mad r6.y, r1.x, cb3[r3.x + 6].w, r3.w
            mad r3.w, r1.z, cb3[r3.x + 7].z, cb3[r3.x + 7].x
            mad r3.w, r1.y, cb3[r3.x + 7].y, r3.w
            mad r6.z, r1.x, cb3[r3.x + 7].w, r3.w
            mad r8.xyz, r6.xyzx, r3.yyyy, r8.xyzx
          endif
          max r6.xyz, r8.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
          mul r7.xyz, r7.wwww, r6.xyzx
        endif
        ld_structured r6.xyzw, vThreadIDInGroup.x, l(0), g0.xyzw
        add r6.xyzw, r7.xyzw, r6.xyzw
        store_structured g0.xyzw, vThreadIDInGroup.x, l(0), r6.xyzw
      endif
      if_nz r2.z
        ld_structured r6.xyzw, vThreadIDInGroup.x, l(0), g2.xyzw
        ld_structured r7.xyzw, vThreadIDInGroup.x, l(16), g2.xyzw
        ld_structured r8.xyzw, vThreadIDInGroup.x, l(32), g2.xyzw
        add r9.xyz, -r4.xyzx, cb3[r3.x + 0].xyzx
        dp3 r3.y, r9.xyzx, r9.xyzx
        sqrt r3.y, r3.y
        mul r3.w, r3.y, cb3[r3.x + 0].w
        ge r3.w, r3.w, l(1.000000)
        ge r4.w, l(0.000100), r3.y
        or r3.w, r3.w, r4.w
        if_nz r3.w
          mov r10.xyzw, l(0,0,0,0)
          mov r11.xyzw, l(0,0,0,0)
          mov r12.xyzw, l(0,0,0,0)
        else
          mad r3.y, -r3.y, cb3[r3.x + 0].w, l(1.000000)
          mul r3.w, r3.y, r3.y
          dp2 r3.y, r3.wwww, r3.yyyy
          mad r12.w, r3.w, l(3.000000), -r3.y
          mad r3.y, cb3[r3.x + 2].z, l(-0.577350259), cb3[r3.x + 2].x
          mad r3.w, cb3[r3.x + 2].y, l(0.408248305), r3.y
          mad r13.xy, cb3[r3.x + 2].wwww, l(-0.707106769, 0.707106769, 0.000000, 0.000000), r3.wwww
          mad r3.w, cb3[r3.x + 3].z, l(-0.577350259), cb3[r3.x + 3].x
          mad r4.w, cb3[r3.x + 3].y, l(0.408248305), r3.w
          mad r14.yw, cb3[r3.x + 3].wwww, l(0.000000, -0.707106769, 0.000000, 0.707106769), r4.wwww
          mad r4.w, cb3[r3.x + 4].z, l(-0.577350259), cb3[r3.x + 4].x
          mad r9.x, cb3[r3.x + 4].y, l(0.408248305), r4.w
          mad r15.xz, cb3[r3.x + 4].wwww, l(-0.707106769, 0.000000, 0.707106769, 0.000000), r9.xxxx
          lt r9.x, l(0.000000), cb3[r3.x + 1].w
          if_nz r9.x
            mul r9.z, -r9.y, cb3[r3.x + 1].w
            mad r9.w, cb3[r3.x + 5].z, l(-0.577350259), cb3[r3.x + 5].x
            mad r9.w, cb3[r3.x + 5].y, l(0.408248305), r9.w
            mad r16.x, cb3[r3.x + 5].w, l(-0.707106769), r9.w
            mad r9.w, cb3[r3.x + 6].z, l(-0.577350259), cb3[r3.x + 6].x
            mad r9.w, cb3[r3.x + 6].y, l(0.408248305), r9.w
            mad r16.y, cb3[r3.x + 6].w, l(-0.707106769), r9.w
            mad r9.w, cb3[r3.x + 7].z, l(-0.577350259), cb3[r3.x + 7].x
            mad r9.w, cb3[r3.x + 7].y, l(0.408248305), r9.w
            mad r16.z, cb3[r3.x + 7].w, l(-0.707106769), r9.w
            mov r13.z, r14.y
            mov r13.w, r15.x
            mad r14.xyz, r16.xyzx, r9.zzzz, r13.xzwx
          else
            mov r14.x, r13.x
            mov r14.z, r15.x
          endif
          max r13.xzw, r14.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000)
          mul r12.xyz, r12.wwww, r13.xzwx
          mov r10.xyzw, r12.xyzw
          if_nz r9.x
            mul r9.z, -r9.y, cb3[r3.x + 1].w
            mad r9.w, cb3[r3.x + 5].z, l(-0.577350259), cb3[r3.x + 5].x
            mad r9.w, cb3[r3.x + 5].y, l(0.408248305), r9.w
            mad r14.x, cb3[r3.x + 5].w, l(0.707106769), r9.w
            mad r9.w, cb3[r3.x + 6].z, l(-0.577350259), cb3[r3.x + 6].x
            mad r9.w, cb3[r3.x + 6].y, l(0.408248305), r9.w
            mad r14.y, cb3[r3.x + 6].w, l(0.707106769), r9.w
            mad r9.w, cb3[r3.x + 7].z, l(-0.577350259), cb3[r3.x + 7].x
            mad r9.w, cb3[r3.x + 7].y, l(0.408248305), r9.w
            mad r14.z, cb3[r3.x + 7].w, l(0.707106769), r9.w
            mov r15.y, r13.y
            mov r15.w, r14.w
            mad r15.xyz, r14.xyzx, r9.zzzz, r15.ywzy
          else
            mov r15.x, r13.y
            mov r15.y, r14.w
          endif
          max r13.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
          mul r12.xyz, r12.wwww, r13.xyzx
          mov r11.xyzw, r12.xyzw
          mad r13.x, cb3[r3.x + 2].y, l(-0.816496611), r3.y
          mad r13.y, cb3[r3.x + 3].y, l(-0.816496611), r3.w
          mad r13.z, cb3[r3.x + 4].y, l(-0.816496611), r4.w
          if_nz r9.x
            mul r3.y, -r9.y, cb3[r3.x + 1].w
            mad r3.w, cb3[r3.x + 5].z, l(-0.577350259), cb3[r3.x + 5].x
            mad r9.x, cb3[r3.x + 5].y, l(-0.816496611), r3.w
            mad r3.w, cb3[r3.x + 6].z, l(-0.577350259), cb3[r3.x + 6].x
            mad r9.y, cb3[r3.x + 6].y, l(-0.816496611), r3.w
            mad r3.w, cb3[r3.x + 7].z, l(-0.577350259), cb3[r3.x + 7].x
            mad r9.z, cb3[r3.x + 7].y, l(-0.816496611), r3.w
            mad r13.xyz, r9.xyzx, r3.yyyy, r13.xyzx
          endif
          max r9.xyz, r13.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
          mul r12.xyz, r12.wwww, r9.xyzx
        endif
        add r6.xyzw, r6.xyzw, r10.xyzw
        add r7.xyzw, r7.xyzw, r11.xyzw
        add r8.xyzw, r8.xyzw, r12.xyzw
        store_structured g2.xyzw, vThreadIDInGroup.x, l(0), r6.xyzw
        store_structured g2.xyzw, vThreadIDInGroup.x, l(16), r7.xyzw
        store_structured g2.xyzw, vThreadIDInGroup.x, l(32), r8.xyzw
      endif
      if_nz r2.w
        add r6.xyz, -r4.xyzx, cb3[r3.x + 0].xyzx
        dp3 r3.y, r6.xyzx, r6.xyzx
        sqrt r3.y, r3.y
        mul r3.w, r3.y, cb3[r3.x + 0].w
        ge r3.w, r3.w, l(1.000000)
        ge r4.w, l(0.000100), r3.y
        or r3.w, r3.w, r4.w
        if_nz r3.w
          mov r7.xyzw, l(0,0,0,0)
        else
          mad r3.y, -r3.y, cb3[r3.x + 0].w, l(1.000000)
          mul r3.w, r3.y, r3.y
          dp2 r3.y, r3.wwww, r3.yyyy
          mad r7.w, r3.w, l(3.000000), -r3.y
          lt r3.y, l(0.000000), cb3[r3.x + 1].w
          if_nz r3.y
            mul r3.y, -r6.y, cb3[r3.x + 1].w
            mov r6.x, cb3[r3.x + 5].x
            mov r6.y, cb3[r3.x + 6].x
            mov r6.z, cb3[r3.x + 7].x
            mov r8.x, cb3[r3.x + 2].x
            mov r8.y, cb3[r3.x + 3].x
            mov r8.z, cb3[r3.x + 4].x
            mad r6.xyz, r6.xyzx, r3.yyyy, r8.xyzx
          else
            mov r6.x, cb3[r3.x + 2].x
            mov r6.y, cb3[r3.x + 3].x
            mov r6.z, cb3[r3.x + 4].x
          endif
          max r3.xyw, r6.xyxz, l(0.000000, 0.000000, 0.000000, 0.000000)
          mul r7.xyz, r7.wwww, r3.xywx
        endif
        add r5.xyzw, r7.xyzw, r5.xyzw
      endif
      iadd r2.x, r2.x, l(1)
      iadd r0.y, r0.y, l(1)
    endloop
  else
    mov r5.xyzw, l(0,0,0,0)
  endif
  and r2.xyzw, r1.wwww, l(8, 32, 4, 2)
  ine r0.xy, r2.xyxx, l(0, 0, 0, 0)
  and r0.z, r3.z, l(0x00ffffff)
  ld_structured_indexable(structured_buffer, stride=8)(mixed,mixed,mixed,mixed) r1.x, vThreadID.x, l(0), t8.xxxx
  and r1.x, r1.x, l(255)
  movc r3.xyz, r2.xyzx, l(2,1,3,0), l(0,0,1,0)
  iadd r0.z, r0.z, r3.x
  iadd r0.z, r3.y, r0.z
  imad r0.z, r3.z, r1.x, r0.z
  lt r1.y, l(0.500000), cb0[49].w
  if_nz r1.y
    add r3.xyz, -r4.xyzx, cb0[76].xyzx
    dp3 r1.y, r3.xyzx, r3.xyzx
    rsq r1.y, r1.y
    mul r3.xyz, r1.yyyy, r3.xyzx
    and r1.y, r0.w, l(15)
    uge r1.z, l(2), r1.y
    if_nz r1.z
      mov r4.xyz, cb4[2].yzwy
      mov r1.z, cb4[2].x
      mov r6.xyz, cb4[3].yzwy
      mov r2.x, cb4[3].x
      mov r7.xyz, cb4[4].yzwy
      mov r3.w, cb4[4].x
    else
      uge r1.y, r1.y, l(9)
      if_nz r1.y
        mov r4.xyz, cb4[18].yzwy
        mov r1.z, cb4[18].x
        mov r6.xyz, cb4[19].yzwy
        mov r2.x, cb4[19].x
        mov r7.xyz, cb4[20].yzwy
        mov r3.w, cb4[20].x
      else
        mov r4.xyz, cb4[10].yzwy
        mov r1.z, cb4[10].x
        mov r6.xyz, cb4[11].yzwy
        mov r2.x, cb4[11].x
        mov r7.xyz, cb4[12].yzwy
        mov r3.w, cb4[12].x
      endif
    endif
    mad r1.y, r3.z, r4.y, r1.z
    mad r1.y, r3.y, r4.x, r1.y
    mad r4.x, r3.x, r4.z, r1.y
    mad r1.y, r3.z, r6.y, r2.x
    mad r1.y, r3.y, r6.x, r1.y
    mad r4.y, r3.x, r6.z, r1.y
    mad r1.y, r3.z, r7.y, r3.w
    mad r1.y, r3.y, r7.x, r1.y
    mad r4.z, r3.x, r7.z, r1.y
    max r3.xyz, r4.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
    and r1.yz, r1.wwww, l(0, 2, 4, 0)
    if_nz r1.y
      ld_structured r4.xyzw, vThreadIDInGroup.x, l(0), g0.xyzw
      add_sat r1.y, -r4.w, l(1.000000)
      mad r4.xyz, r3.xyzx, r1.yyyy, r4.xyzx
      store_structured g0.xyz, vThreadIDInGroup.x, l(0), r4.xyzx
    endif
    if_nz r1.z
      ld_structured r4.xyzw, vThreadIDInGroup.x, l(12), g2.xyzw
      ld_structured r6.xyzw, vThreadIDInGroup.x, l(28), g2.xyzw
      ld_structured r1.y, vThreadIDInGroup.x, l(44), g2.xxxx
      add_sat r1.z, -r4.x, l(1.000000)
      ld_structured r7.xyz, vThreadIDInGroup.x, l(0), g2.xyzx
      mad r7.xyz, r3.xyzx, r1.zzzz, r7.xyzx
      store_structured g2.xyz, vThreadIDInGroup.x, l(0), r7.xyzx
      add_sat r1.z, -r6.x, l(1.000000)
      mad r4.xyz, r3.xyzx, r1.zzzz, r4.yzwy
      store_structured g2.xyz, vThreadIDInGroup.x, l(16), r4.xyzx
      add_sat r1.y, -r1.y, l(1.000000)
      mad r1.yzw, r3.xxyz, r1.yyyy, r6.yyzw
      store_structured g2.xyz, vThreadIDInGroup.x, l(32), r1.yzwy
    endif
  endif
  if_nz r2.w
    ld_structured r1.yzw, vThreadIDInGroup.x, l(0), g0.xxyz
    max r2.x, r1.z, r1.y
    max r2.x, r1.w, r2.x
    div r1.yzw, r1.yyzw, r2.xxxx
    ld_structured r3.x, vThreadIDInGroup.x, l(0), g0.xxxx
    eq r3.z, r2.x, r3.x
    if_nz r3.z
      mul r3.zw, r1.zzzw, l(0.000000, 0.000000, 32767.000000, 32767.000000)
      ftou r3.zw, r3.zzzw
      ishl r3.z, r3.z, l(15)
      or r3.y, r3.w, r3.z
    else
      ld_structured r3.x, vThreadIDInGroup.x, l(4), g0.xxxx
      eq r2.x, r2.x, r3.x
      if_nz r2.x
        mul r3.zw, r1.yyyw, l(0.000000, 0.000000, 32767.000000, 32767.000000)
        ftou r3.zw, r3.zzzw
        ishl r1.w, r3.z, l(15)
        or r1.w, r1.w, r3.w
        or r3.y, r1.w, l(0x40000000)
      else
        mul r1.yz, r1.yyzy, l(0.000000, 32767.000000, 32767.000000, 0.000000)
        ftou r1.yz, r1.yyzy
        bfi r1.y, l(16), l(15), r1.y, l(0x80000000)
        or r3.y, r1.z, r1.y
        ld_structured r3.x, vThreadIDInGroup.x, l(8), g0.xxxx
      endif
    endif
    store_structured u0.xy, r0.z, l(0), r3.xyxx
  endif
  if_nz r2.z
    movc r1.y, r2.w, l(1), l(0)
    iadd r1.y, r0.z, r1.y
    ld_structured r2.xzw, vThreadIDInGroup.x, l(0), g2.xxyz
    max r1.z, r2.z, r2.x
    max r1.z, r2.w, r1.z
    div r2.xzw, r2.xxzw, r1.zzzz
    ld_structured r3.x, vThreadIDInGroup.x, l(0), g2.xxxx
    eq r1.w, r1.z, r3.x
    if_nz r1.w
      mul r3.zw, r2.zzzw, l(0.000000, 0.000000, 32767.000000, 32767.000000)
      ftou r3.zw, r3.zzzw
      ishl r1.w, r3.z, l(15)
      or r3.y, r3.w, r1.w
    else
      ld_structured r3.x, vThreadIDInGroup.x, l(4), g2.xxxx
      eq r1.z, r1.z, r3.x
      if_nz r1.z
        mul r1.zw, r2.xxxw, l(0.000000, 0.000000, 32767.000000, 32767.000000)
        ftou r1.zw, r1.zzzw
        ishl r1.z, r1.z, l(15)
        or r1.z, r1.z, r1.w
        or r3.y, r1.z, l(0x40000000)
      else
        mul r1.zw, r2.xxxz, l(0.000000, 0.000000, 32767.000000, 32767.000000)
        ftou r1.zw, r1.zzzw
        bfi r1.z, l(16), l(15), r1.z, l(0x80000000)
        or r3.y, r1.w, r1.z
        ld_structured r3.x, vThreadIDInGroup.x, l(8), g2.xxxx
      endif
    endif
    store_structured u0.xy, r1.y, l(0), r3.xyxx
    iadd r1.zw, r1.yyyy, l(0, 0, 1, 2)
    ld_structured r2.xzw, vThreadIDInGroup.x, l(16), g2.xxyz
    max r3.x, r2.z, r2.x
    max r3.x, r2.w, r3.x
    div r2.xzw, r2.xxzw, r3.xxxx
    ld_structured r4.x, vThreadIDInGroup.x, l(16), g2.xxxx
    eq r3.y, r3.x, r4.x
    if_nz r3.y
      mul r3.yz, r2.zzwz, l(0.000000, 32767.000000, 32767.000000, 0.000000)
      ftou r3.yz, r3.yyzy
      ishl r3.y, r3.y, l(15)
      or r4.y, r3.z, r3.y
    else
      ld_structured r4.x, vThreadIDInGroup.x, l(20), g2.xxxx
      eq r3.x, r3.x, r4.x
      if_nz r3.x
        mul r3.xy, r2.xwxx, l(32767.000000, 32767.000000, 0.000000, 0.000000)
        ftou r3.xy, r3.xyxx
        ishl r2.w, r3.x, l(15)
        or r2.w, r2.w, r3.y
        or r4.y, r2.w, l(0x40000000)
      else
        mul r2.xz, r2.xxzx, l(32767.000000, 0.000000, 32767.000000, 0.000000)
        ftou r2.xz, r2.xxzx
        bfi r2.x, l(16), l(15), r2.x, l(0x80000000)
        or r4.y, r2.z, r2.x
        ld_structured r4.x, vThreadIDInGroup.x, l(24), g2.xxxx
      endif
    endif
    store_structured u0.xy, r1.z, l(0), r4.xyxx
    ld_structured r2.xzw, vThreadIDInGroup.x, l(32), g2.xxyz
    max r1.z, r2.z, r2.x
    max r1.z, r2.w, r1.z
    div r2.xzw, r2.xxzw, r1.zzzz
    ld_structured r3.x, vThreadIDInGroup.x, l(32), g2.xxxx
    eq r3.z, r1.z, r3.x
    if_nz r3.z
      mul r3.zw, r2.zzzw, l(0.000000, 0.000000, 32767.000000, 32767.000000)
      ftou r3.zw, r3.zzzw
      ishl r3.z, r3.z, l(15)
      or r3.y, r3.w, r3.z
    else
      ld_structured r3.x, vThreadIDInGroup.x, l(36), g2.xxxx
      eq r1.z, r1.z, r3.x
      if_nz r1.z
        mul r3.zw, r2.xxxw, l(0.000000, 0.000000, 32767.000000, 32767.000000)
        ftou r3.zw, r3.zzzw
        ishl r1.z, r3.z, l(15)
        or r1.z, r1.z, r3.w
        or r3.y, r1.z, l(0x40000000)
      else
        mul r2.xz, r2.xxzx, l(32767.000000, 0.000000, 32767.000000, 0.000000)
        ftou r2.xz, r2.xxzx
        bfi r1.z, l(16), l(15), r2.x, l(0x80000000)
        or r3.y, r2.z, r1.z
        ld_structured r3.x, vThreadIDInGroup.x, l(40), g2.xxxx
      endif
    endif
    store_structured u0.xy, r1.w, l(0), r3.xyxx
  endif
  ieq r1.x, r1.x, l(0)
  and r0.xy, r0.xyxx, r1.xxxx
  if_nz r0.x
    if_nz r2.y
      iadd r0.x, r0.z, l(-3)
    else
      iadd r0.x, r0.z, l(-2)
    endif
    iadd r1.x, r0.x, l(1)
    ld_structured r1.yzw, vThreadIDInGroup.x, l(0), g1.xxyz
    max r2.x, r1.z, r1.y
    max r2.x, r1.w, r2.x
    div r1.yzw, r1.yyzw, r2.xxxx
    ld_structured r3.x, vThreadIDInGroup.x, l(0), g1.xxxx
    eq r2.y, r2.x, r3.x
    if_nz r2.y
      mul r2.yz, r1.zzwz, l(0.000000, 32767.000000, 32767.000000, 0.000000)
      ftou r2.yz, r2.yyzy
      ishl r2.y, r2.y, l(15)
      or r3.y, r2.z, r2.y
    else
      ld_structured r3.x, vThreadIDInGroup.x, l(4), g1.xxxx
      eq r2.x, r2.x, r3.x
      if_nz r2.x
        mul r2.xy, r1.ywyy, l(32767.000000, 32767.000000, 0.000000, 0.000000)
        ftou r2.xy, r2.xyxx
        ishl r1.w, r2.x, l(15)
        or r1.w, r1.w, r2.y
        or r3.y, r1.w, l(0x40000000)
      else
        mul r1.yz, r1.yyzy, l(0.000000, 32767.000000, 32767.000000, 0.000000)
        ftou r1.yz, r1.yyzy
        bfi r1.y, l(16), l(15), r1.y, l(0x80000000)
        or r3.y, r1.z, r1.y
        ld_structured r3.x, vThreadIDInGroup.x, l(8), g1.xxxx
      endif
    endif
    store_structured u0.xy, r1.x, l(0), r3.xyxx
    ld_structured r1.xyz, vThreadIDInGroup.x, l(16), g1.xyzx
    max r1.w, r1.y, r1.x
    max r1.w, r1.z, r1.w
    div r1.xyz, r1.xyzx, r1.wwww
    ld_structured r2.x, vThreadIDInGroup.x, l(16), g1.xxxx
    eq r2.z, r1.w, r2.x
    if_nz r2.z
      mul r2.zw, r1.yyyz, l(0.000000, 0.000000, 32767.000000, 32767.000000)
      ftou r2.zw, r2.zzzw
      ishl r2.z, r2.z, l(15)
      or r2.y, r2.w, r2.z
    else
      ld_structured r2.x, vThreadIDInGroup.x, l(20), g1.xxxx
      eq r1.w, r1.w, r2.x
      if_nz r1.w
        mul r1.zw, r1.xxxz, l(0.000000, 0.000000, 32767.000000, 32767.000000)
        ftou r1.zw, r1.zzzw
        ishl r1.z, r1.z, l(15)
        or r1.z, r1.z, r1.w
        or r2.y, r1.z, l(0x40000000)
      else
        mul r1.xy, r1.xyxx, l(32767.000000, 32767.000000, 0.000000, 0.000000)
        ftou r1.xy, r1.xyxx
        bfi r1.x, l(16), l(15), r1.x, l(0x80000000)
        or r2.y, r1.y, r1.x
        ld_structured r2.x, vThreadIDInGroup.x, l(24), g1.xxxx
      endif
    endif
    store_structured u0.xy, r0.x, l(0), r2.xyxx
  endif
  if_nz r0.y
    lt r0.x, l(1.000000), r5.w
    if_nz r0.x
      div r5.xyz, r5.xyzx, r5.wwww
    else
      lt r0.x, l(0.500000), cb0[49].z
      if_nz r0.x
        and r0.x, r0.w, l(15)
        uge r0.y, l(2), r0.x
        if_nz r0.y
          mov r1.x, cb4[2].x
          mov r1.y, cb4[3].x
          mov r1.z, cb4[4].x
        else
          uge r0.x, r0.x, l(9)
          if_nz r0.x
            mov r1.x, cb4[18].x
            mov r1.y, cb4[19].x
            mov r1.z, cb4[20].x
          else
            mov r1.x, cb4[10].x
            mov r1.y, cb4[11].x
            mov r1.z, cb4[12].x
          endif
        endif
        max r0.xyw, r1.xyxz, l(0.000000, 0.000000, 0.000000, 0.000000)
        max r1.x, r5.w, l(0.000000)
        add r1.x, -r1.x, l(1.000000)
        mad r5.xyz, r0.xywx, r1.xxxx, r5.xyzx
      endif
    endif
    dp3 r0.x, r5.xyzx, l(0.212500, 0.715400, 0.072100, 0.000000)
    mul r0.x, r0.x, cb0[49].y
    max r0.x, r0.x, l(1.000000)
    iadd r0.z, r0.z, l(-1)
    mov r0.y, l(1.000000)
    store_structured u0.xy, r0.z, l(0), r0.xyxx
  endif
endif
ret
// Approximately 739 instruction slots used

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
