//CS Lights and reflection medium and below
// Generated by Microsoft (R) HLSL Shader Compiler 9.30.960.8229
//
//   using 3Dmigoto v1.3.6 on Tue Mar 20 17:30:56 2018
//
//
// Buffer Definitions:
//
// cbuffer PER_BATCH
// {
//
//   float4 GiSettings;                 // Offset:    0 Size:    16
//   float4 FrustumTL;                  // Offset:   16 Size:    16
//   float4 FrustumBL;                  // Offset:   32 Size:    16
//   float4 WorldViewPos;               // Offset:   48 Size:    16
//   float4 PS_NearFarClipDist;         // Offset:   64 Size:    16
//   float4 ProjParams;                 // Offset:   80 Size:    16
//   float4 ForwGiIntegrationMode;      // Offset:   96 Size:    16
//   float4 SunDir;                     // Offset:  112 Size:    16
//   float4 PS_ScreenSize;              // Offset:  128 Size:    16
//   float4 SSDOParams;                 // Offset:  144 Size:    16
//   float4 FrustumTR;                  // Offset:  160 Size:    16
//   float4 ScreenSize;                 // Offset:  176 Size:    16
//   float4 g_vVisAreasParams[64];      // Offset:  192 Size:  1024 [unused]
//
// }
//
// cbuffer PER_INSTANCE
// {
//
//   row_major float4x4 CompMatrix;     // Offset:    0 Size:    64
//
// }
//
// cbuffer PER_FRAME
// {
//
//   float4 g_PS_ProjRatio;             // Offset: 3568 Size:    16
//
// }
//
// Resource bind info for TiledLightsShadeInfo
// {
//
//   struct STiledLightShadeInfo
//   {
//
//       uint lightType;                // Offset:    0
//       uint resIndex;                 // Offset:    4
//       uint shadowMaskIndex;          // Offset:    8
//       uint stencilID;                // Offset:   12
//       float4 posRad;                 // Offset:   16
//       float2 attenuationParams;      // Offset:   32
//       float2 shadowParams;           // Offset:   40
//       float4 color;                  // Offset:   48
//       float4 shadowChannelIndex;     // Offset:   64
//       row_major float4x4 projectorMatrix;// Offset:   80
//       row_major float4x4 shadowMatrix;// Offset:  144
//
//   } $Element;                        // Offset:    0 Size:   208
//
// }
//
// Resource bind info for TiledLightsCullInfo
// {
//
//   struct STiledLightCullInfo
//   {
//
//       uint volumeType;               // Offset:    0
//       uint stencilID;                // Offset:    4
//       float2 depthBounds;            // Offset:    8
//       float4 posRad;                 // Offset:   16
//       float4 volumeParams0;          // Offset:   32
//       float4 volumeParams1;          // Offset:   48
//       float4 volumeParams2;          // Offset:   64
//
//   } $Element;                        // Offset:    0 Size:    80
//
// }
//
// Resource bind info for TiledClipVolumeInfo
// {
//
//   struct STiledClipVolumeInfo
//   {
//
//       uint data;                     // Offset:    0
//
//   } $Element;                        // Offset:    0 Size:     4
//
// }
//
// Resource bind info for lights3PL
// {
//
//   struct S3PLLights
//   {
//
//       float4 color;                  // Offset:    0
//       float4 dir;                    // Offset:   16
//
//   } $Element;                        // Offset:    0 Size:    32
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// TrilinearClampSamplerState        sampler      NA          NA    1        1
// DepthRT                           texture  float4          2d    0        1
// NormalRT                          texture  float4          2d    1        1
// SpecularRT                        texture  float4          2d    2        1
// DiffuseRT                         texture  float4          2d    3        1
// ShadowMaskRT                      texture  float4     2darray    4        1
// DirectionalOccRT                  texture  float4          2d    5        1
// EnvBRDF                           texture  float4          2d    7        1
// ClipVolumeIndexRT                 texture  float4          2d    8        1
// AOColorBleedRT                    texture  float4          2d    9        1
// GiDiffuseRT                       texture  float4          2d   10        1
// CausticsRT                        texture  float4          2d   12        1
// sceneDepthTextureSS               texture  float4          2d   13        1
// TiledLightsShadeInfo              texture  struct         r/o   16        1
// SpecCubeArray                     texture  float4   cubearray   17        1
// DiffuseCubeArray                  texture  float4   cubearray   18        1
// SpotTexArray                      texture  float4     2darray   19        1
// TiledLightsCullInfo               texture  struct         r/o   22        1
// TiledClipVolumeInfo               texture  struct         r/o   23        1
// lights3PL                         texture  struct         r/o   24        1
// avgLumTex                         texture  float4          2d   25        1
// TileTranspLightIndexUAV               UAV    uint         buf    0        1
// HDRSceneTargetUAV                     UAV  float4          2d    1        1
// PER_BATCH                         cbuffer      NA          NA    0        1
// PER_INSTANCE                      cbuffer      NA          NA    1        1
// PER_FRAME                         cbuffer      NA          NA    2        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[12], immediateIndexed
dcl_constantbuffer cb1[4], immediateIndexed
dcl_constantbuffer cb2[224], immediateIndexed
dcl_sampler s1, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2darray (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t5
dcl_resource_texture2d (float,float,float,float) t7
dcl_resource_texture2d (float,float,float,float) t8
dcl_resource_texture2d (float,float,float,float) t9
dcl_resource_texture2d (float,float,float,float) t10
dcl_resource_texture2d (float,float,float,float) t12
dcl_resource_texture2d (float,float,float,float) t13
dcl_resource_structured t16, 208
dcl_resource_texturecubearray (float,float,float,float) t17
dcl_resource_texturecubearray (float,float,float,float) t18
dcl_resource_texture2darray (float,float,float,float) t19
dcl_resource_structured t22, 80
dcl_resource_structured t23, 4
dcl_resource_structured t24, 32
dcl_resource_texture2d (float,float,float,float) t25
dcl_uav_typed_buffer (uint,uint,uint,uint) u0
dcl_uav_typed_texture2d (float,float,float,float) u1
dcl_input vThreadGroupID.xy
dcl_input vThreadIDInGroup.xy
dcl_temps 41
dcl_tgsm_raw g0, 4
dcl_tgsm_raw g1, 4
dcl_tgsm_structured g2, 4, 255
dcl_tgsm_structured g3, 4, 255
dcl_tgsm_raw g4, 4
dcl_tgsm_raw g5, 4
dcl_tgsm_structured g6, 4, 256
dcl_thread_group 8, 8, 1
dcl_constantbuffer cb13[30], immediateIndexed
dcl_resource_texture2d (float,float,float,float) t125
dcl_resource_texture1d (float,float,float,float) t120
imad r0.x, vThreadIDInGroup.y, l(8), vThreadIDInGroup.x
imad r1.xy, vThreadGroupID.xyxx, l(8, 8, 0, 0), vThreadIDInGroup.xyxx
if_z r0.x
  store_raw g0.x, l(0), l(0)
  store_raw g1.x, l(0), l(0)
  store_raw g4.x, l(0), l(340282346638528860000000000000000000000.000000)
  store_raw g5.x, l(0), l(0)
  store_structured g6.x, l(254), l(0), l(0)
endif
store_structured g2.x, r0.x, l(0), l(255)
store_structured g3.x, r0.x, l(0), l(255)
iadd r0.y, r0.x, l(1)
store_structured g6.x, r0.y, l(0), l(0)
mov r1.w, l(0)
ld_indexable(texture2d)(float,float,float,float) r0.y, r1.xyww, t8.yxzw
mul r0.y, r0.y, l(255.000000)
ftou r0.y, r0.y
store_structured g6.x, r0.y, l(0), l(1)
ld_indexable(texture2d)(float,float,float,float) r0.z, r1.xyww, t0.yzxw
add r0.w, r0.z, l(0.000100)
sync_g_t
atomic_umin g4, l(0), r0.z
atomic_umax g5, l(0), r0.w
sync_g_t
ld_raw r0.w, l(0), g4.xxxx
ld_raw r2.x, l(0), g5.xxxx
eq r2.y, r0.w, l(1.000000)
mul r2.zw, cb0[11].xxxy, l(0.000000, 0.000000, 0.125000, 0.125000)
round_pi r2.zw, r2.zzzw

//korrekt fare away loght shadow glitch here with 0.55 instead of 0.5
mul r3.xy, r2.zwzz, l(0.550000, 0.550000, 0.000000, 0.000000)
utof r3.zw, vThreadGroupID.xxxy

//korrekt fare away loght shadow glitch here with 0.55 instead of 0.5
mad r4.xy, r2.zwzz, l(0.550000, 0.55000, 0.000000, 0.000000), -r3.zwzz

mul r5.y, r3.x, cb0[5].x
mul r5.x, r3.y, -cb0[5].y
add r5.zw, r4.xxxy, cb0[5].zzzw
add r4.xyzw, -r5.yzxw, l(0.000000, 1.000000, 0.000000, 1.000000)
dp2 r2.w, r4.xyxx, r4.xyxx
rsq r2.w, r2.w
mul r3.xy, r2.wwww, r4.xyxx
add r5.xyzw, r5.yzxw, l(0.000000, 1.000000, 0.000000, 1.000000)
dp2 r2.w, r5.xyxx, r5.xyxx
rsq r2.w, r2.w
mul r4.xy, r2.wwww, r5.xyxx
dp2 r2.w, r4.zwzz, r4.zwzz
rsq r2.w, r2.w
mul r4.zw, r2.wwww, r4.zzzw
dp2 r2.w, r5.zwzz, r5.zwzz
rsq r2.w, r2.w
mul r5.xy, r2.wwww, r5.zwzz
ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r2.w, r0.x, l(0), t22.xxxx
if_nz r2.w
  ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r5.z, r0.x, l(4), t22.xxxx
  and r5.w, r5.z, l(255)
  ushr r5.z, r5.z, l(16)
  ieq r6.x, r5.w, l(255)
  ld_structured r5.w, r5.w, l(0), g6.xxxx
  ine r5.w, r5.w, l(0)
  or r5.w, r5.w, r6.x
  ld_structured r5.z, r5.z, l(0), g6.xxxx
  ine r5.z, r5.z, l(0)
  or r5.z, r5.z, r5.w
  ieq r5.w, r5.z, l(0)
  if_z r5.z
    iadd r5.z, r0.x, l(64)
  else
    mov r5.z, r0.x
  endif
  if_z r5.w
    ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r6.xy, r5.z, l(8), t22.xyxx
    lt r6.x, r6.x, r2.x
    if_nz r6.x
      ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r7.xyzw, r5.z, l(16), t22.xyzw
      dp2 r6.x, r3.xyxx, r7.xzxx

//korrekt fare away light shadow glitch with adding following line
      dp2 r6.x, -r3.xyxx, r7.xzxx
      
      dp2 r6.z, r4.xyxx, r7.xzxx
      dp2 r6.w, r4.zwzz, r7.yzyy
      dp2 r8.x, r5.xyxx, r7.yzyy
      ieq r8.y, r2.w, l(1)
      if_nz r8.y
        ge r8.yz, r6.xxzx, -r7.wwww
        and r8.y, r8.z, r8.y
        ge r8.z, r6.w, -r7.w
        and r8.y, r8.z, r8.y
        ge r8.z, r8.x, -r7.w
        and r8.y, r8.z, r8.y
      else
        ieq r8.z, r2.w, l(2)
        if_nz r8.z
          ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r9.xyzw, r5.z, l(32), t22.xyzw
          mad r10.xyzw, -r9.xzyz, r7.wwww, r7.xzyz
          dp2 r7.x, r9.xzxx, r3.xyxx
          mad r7.xy, -r9.xzxx, r7.xxxx, r3.xyxx

//fix campfire shadow gliches
	  mad r7.xy, r9.xzxx, r7.xxxx, r3.xyxx
	  
	  mad r7.xy, r9.wwww, r7.xyxx, r10.xyxx
          dp2 r7.x, r3.xyxx, r7.xyxx
          lt r7.y, l(0.000000), r6.x
          lt r7.x, l(0.000000), r7.x
          or r7.x, r7.x, r7.y
          ge r7.y, r6.x, -r7.w
          and r7.x, r7.y, r7.x
          dp2 r7.y, r9.xzxx, r4.xyxx
          mad r7.yz, -r9.xxzx, r7.yyyy, r4.xxyx

//fix campfire shadow gliches
          mad r7.yz, r9.xxzx, r7.yyyy, r4.xxyx

          mad r7.yz, r9.wwww, r7.yyzy, r10.xxyx
          dp2 r7.y, r4.xyxx, r7.yzyy
          lt r7.z, l(0.000000), r6.z
          lt r7.y, l(0.000000), r7.y
          or r7.y, r7.y, r7.z
          ge r7.z, r6.z, -r7.w
          and r7.y, r7.z, r7.y
          and r7.x, r7.y, r7.x
          dp2 r7.y, r9.yzyy, r4.zwzz
          mad r7.yz, -r9.yyzy, r7.yyyy, r4.zzwz

//fix campfire shadow gliches
          mad r7.yz, r9.yyzy, r7.yyyy, r4.zzwz

          mad r7.yz, r9.wwww, r7.yyzy, r10.zzwz
          dp2 r7.y, r4.zwzz, r7.yzyy
          lt r7.z, l(0.000000), r6.w
          lt r7.y, l(0.000000), r7.y
          or r7.y, r7.y, r7.z
          ge r7.z, r6.w, -r7.w
          and r7.y, r7.z, r7.y
          and r7.x, r7.y, r7.x
          dp2 r7.y, r9.yzyy, r5.xyxx
          mad r7.yz, -r9.yyzy, r7.yyyy, r5.xxyx

//fix campfire shadow gliches
	  mad r7.yz, r9.yyzy, r7.yyyy, r5.xxyx
	  
	  mad r7.yz, r9.wwww, r7.yyzy, r10.zzwz
          dp2 r7.y, r5.xyxx, r7.yzyy
          lt r7.z, l(0.000000), r8.x
          lt r7.y, l(0.000000), r7.y
          or r7.y, r7.y, r7.z
          ge r7.z, r8.x, -r7.w
          and r7.y, r7.z, r7.y
          and r8.y, r7.y, r7.x
        else
          ieq r7.x, r2.w, l(3)
          if_nz r7.x
            ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r7.xyzw, r5.z, l(32), t22.xyzw
            ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r9.xyzw, r5.z, l(48), t22.xyzw
            ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r10.xyzw, r5.z, l(64), t22.xyzw
            dp2 r8.z, r3.xyxx, r7.xzxx
            mov r11.x, |r8.z|
            dp2 r8.z, r3.xyxx, r9.xzxx
            mov r11.y, |r8.z|
            dp2 r8.z, r3.xyxx, r10.xzxx
            mov r11.z, |r8.z|
            mov r12.x, r7.w
            mov r12.y, r9.w
            mov r12.z, r10.w
            dp3 r7.w, r12.xyzx, r11.xyzx
            dp2 r7.x, r4.xyxx, r7.xzxx
            mov r11.x, |r7.x|
            dp2 r7.x, r4.xyxx, r9.xzxx
            mov r11.y, |r7.x|
            dp2 r7.x, r4.xyxx, r10.xzxx
            mov r11.z, |r7.x|
            dp3 r7.x, r12.xyzx, r11.xyzx
            ge r6.xz, r7.wwxw, -r6.xxzx
            and r6.x, r6.z, r6.x
            dp2 r6.z, r4.zwzz, r7.yzyy
            mov r11.x, |r6.z|
            dp2 r6.z, r4.zwzz, r9.yzyy
            mov r11.y, |r6.z|
            dp2 r6.z, r4.zwzz, r10.yzyy
            mov r11.z, |r6.z|
            dp3 r6.z, r12.xyzx, r11.xyzx
            ge r6.z, r6.z, -r6.w
            and r6.x, r6.z, r6.x
            dp2 r6.z, r5.xyxx, r7.yzyy
            mov r7.x, |r6.z|
            dp2 r6.z, r5.xyxx, r9.yzyy
            mov r7.y, |r6.z|
            dp2 r6.z, r5.xyxx, r10.yzyy
            mov r7.z, |r6.z|
            dp3 r6.z, r12.xyzx, r7.xyzx
            ge r6.z, r6.z, -r8.x
            and r8.y, r6.z, r6.x
          else
            mov r8.y, l(-1)
          endif
        endif
      endif
      if_nz r8.y
        ge r6.x, r6.y, r0.w
        not r6.y, r2.y
        and r6.x, r6.y, r6.x
        if_nz r6.x
          imm_atomic_iadd r6.x, g0, l(0), l(1)
          store_structured g2.x, r6.x, l(0), r5.z
        endif
        ine r6.x, r2.w, l(4)
        if_nz r6.x
          imm_atomic_iadd r6.x, g1, l(0), l(1)
          store_structured g3.x, r6.x, l(0), r5.z
        endif
      endif
    endif
  endif
else
  mov r5.z, r0.x
  mov r5.w, l(0)
endif
ine r6.x, r2.w, l(0)
not r5.w, r5.w
and r5.w, r6.x, r5.w
iadd r6.y, r5.z, l(64)
movc r5.z, r5.w, r6.y, r5.z
if_nz r2.w
  ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r2.w, r5.z, l(0), t22.xxxx
  ieq r5.w, r2.w, l(0)
  if_nz r2.w
    ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r6.y, r5.z, l(4), t22.xxxx
    and r6.z, r6.y, l(255)
    ushr r6.y, r6.y, l(16)
    ieq r6.w, r6.z, l(255)
    ld_structured r6.z, r6.z, l(0), g6.xxxx
    ine r6.z, r6.z, l(0)
    or r6.z, r6.z, r6.w
    ld_structured r6.y, r6.y, l(0), g6.xxxx
    ine r6.y, r6.y, l(0)
    or r6.y, r6.y, r6.z
    ieq r6.z, r6.y, l(0)
    if_z r6.y
      iadd r5.z, r5.z, l(64)
    endif
    if_z r6.z
      ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r6.yw, r5.z, l(8), t22.xxxy
      lt r6.y, r6.y, r2.x
      if_nz r6.y
        ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r7.xyzw, r5.z, l(16), t22.xyzw
        dp2 r6.y, r3.xyxx, r7.xzxx
        dp2 r8.x, r4.xyxx, r7.xzxx
        dp2 r8.y, r4.zwzz, r7.yzyy
        dp2 r8.z, r5.xyxx, r7.yzyy
        ieq r8.w, r2.w, l(1)
        if_nz r8.w
          ge r8.w, r6.y, -r7.w
          ge r9.x, r8.x, -r7.w
          and r8.w, r8.w, r9.x
          ge r9.x, r8.y, -r7.w
          and r8.w, r8.w, r9.x
          ge r9.x, r8.z, -r7.w
          and r8.w, r8.w, r9.x
        else
          ieq r9.x, r2.w, l(2)
          if_nz r9.x
            ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r9.xyzw, r5.z, l(32), t22.xyzw
            mad r10.xyzw, -r9.xzyz, r7.wwww, r7.xzyz
            dp2 r7.x, r9.xzxx, r3.xyxx
            mad r7.xy, -r9.xzxx, r7.xxxx, r3.xyxx
            mad r7.xy, r9.wwww, r7.xyxx, r10.xyxx
            dp2 r7.x, r3.xyxx, r7.xyxx
            lt r7.y, l(0.000000), r6.y
            lt r7.x, l(0.000000), r7.x
            or r7.x, r7.x, r7.y
            ge r7.y, r6.y, -r7.w
            and r7.x, r7.y, r7.x
            dp2 r7.y, r9.xzxx, r4.xyxx
            mad r7.yz, -r9.xxzx, r7.yyyy, r4.xxyx
            mad r7.yz, r9.wwww, r7.yyzy, r10.xxyx
            dp2 r7.y, r4.xyxx, r7.yzyy
            lt r7.z, l(0.000000), r8.x
            lt r7.y, l(0.000000), r7.y
            or r7.y, r7.y, r7.z
            ge r7.z, r8.x, -r7.w
            and r7.y, r7.z, r7.y
            and r7.x, r7.y, r7.x
            dp2 r7.y, r9.yzyy, r4.zwzz
            mad r7.yz, -r9.yyzy, r7.yyyy, r4.zzwz
            mad r7.yz, r9.wwww, r7.yyzy, r10.zzwz
            dp2 r7.y, r4.zwzz, r7.yzyy
            lt r7.z, l(0.000000), r8.y
            lt r7.y, l(0.000000), r7.y
            or r7.y, r7.y, r7.z
            ge r7.z, r8.y, -r7.w
            and r7.y, r7.z, r7.y
            and r7.x, r7.y, r7.x
            dp2 r7.y, r9.yzyy, r5.xyxx
            mad r7.yz, -r9.yyzy, r7.yyyy, r5.xxyx
            mad r7.yz, r9.wwww, r7.yyzy, r10.zzwz
            dp2 r7.y, r5.xyxx, r7.yzyy
            lt r7.z, l(0.000000), r8.z
            lt r7.y, l(0.000000), r7.y
            or r7.y, r7.y, r7.z
            ge r7.z, r8.z, -r7.w
            and r7.y, r7.z, r7.y
            and r8.w, r7.y, r7.x
          else
            ieq r7.x, r2.w, l(3)
            if_nz r7.x
              ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r7.xyzw, r5.z, l(32), t22.xyzw
              ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r9.xyzw, r5.z, l(48), t22.xyzw
              ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r10.xyzw, r5.z, l(64), t22.xyzw
              dp2 r11.x, r3.xyxx, r7.xzxx
              dp2 r11.w, r3.xyxx, r9.xzxx
              mov r11.xy, |r11.xwxx|
              dp2 r11.w, r3.xyxx, r10.xzxx
              mov r11.z, |r11.w|
              mov r12.x, r7.w
              mov r12.y, r9.w
              mov r12.z, r10.w
              dp3 r7.w, r12.xyzx, r11.xyzx
              ge r6.y, r7.w, -r6.y
              dp2 r7.x, r4.xyxx, r7.xzxx
              mov r11.x, |r7.x|
              dp2 r7.x, r4.xyxx, r9.xzxx
              mov r11.y, |r7.x|
              dp2 r7.x, r4.xyxx, r10.xzxx
              mov r11.z, |r7.x|
              dp3 r7.x, r12.xyzx, r11.xyzx
              ge r7.x, r7.x, -r8.x
              and r6.y, r6.y, r7.x
              dp2 r7.x, r4.zwzz, r7.yzyy
              mov r11.x, |r7.x|
              dp2 r7.x, r4.zwzz, r9.yzyy
              mov r11.y, |r7.x|
              dp2 r7.x, r4.zwzz, r10.yzyy
              mov r11.z, |r7.x|
              dp3 r7.x, r12.xyzx, r11.xyzx
              ge r7.x, r7.x, -r8.y
              and r6.y, r6.y, r7.x
              dp2 r7.x, r5.xyxx, r7.yzyy
              dp2 r7.w, r5.xyxx, r9.yzyy
              mov r7.xy, |r7.xwxx|
              dp2 r7.w, r5.xyxx, r10.yzyy
              mov r7.z, |r7.w|
              dp3 r7.x, r12.xyzx, r7.xyzx
              ge r7.x, r7.x, -r8.z
              and r8.w, r6.y, r7.x
            else
              mov r8.w, l(-1)
            endif
          endif
        endif
        if_nz r8.w
          ge r6.y, r6.w, r0.w
          not r6.w, r2.y
          and r6.y, r6.w, r6.y
          if_nz r6.y
            imm_atomic_iadd r7.x, g0, l(0), l(1)
            store_structured g2.x, r7.x, l(0), r5.z
          endif
          ine r2.w, r2.w, l(4)
          if_nz r2.w
            imm_atomic_iadd r7.x, g1, l(0), l(1)
            store_structured g3.x, r7.x, l(0), r5.z
          endif
        endif
      endif
    endif
  else
    mov r6.z, l(0)
  endif
  not r2.w, r5.w
  not r6.y, r6.z
  and r2.w, r2.w, r6.y
  iadd r6.y, r5.z, l(64)
  movc r5.z, r2.w, r6.y, r5.z
else
  mov r5.w, l(-1)
endif
not r2.w, r5.w
and r2.w, r2.w, r6.x
ult r6.x, r5.z, l(255)
and r2.w, r2.w, r6.x
if_z r5.w
  ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r5.w, r5.z, l(0), t22.xxxx
  ieq r6.x, r5.w, l(0)
  if_nz r5.w
    ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r6.y, r5.z, l(4), t22.xxxx
    and r6.z, r6.y, l(255)
    ushr r6.y, r6.y, l(16)
    ieq r6.w, r6.z, l(255)
    ld_structured r6.z, r6.z, l(0), g6.xxxx
    ine r6.z, r6.z, l(0)
    or r6.z, r6.z, r6.w
    ld_structured r6.y, r6.y, l(0), g6.xxxx
    ine r6.y, r6.y, l(0)
    or r6.y, r6.y, r6.z
    ieq r6.z, r6.y, l(0)
    if_z r6.y
      iadd r5.z, r5.z, l(64)
    endif
    if_z r6.z
      ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r6.yw, r5.z, l(8), t22.xxxy
      lt r6.y, r6.y, r2.x
      if_nz r6.y
        ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r7.xyzw, r5.z, l(16), t22.xyzw
        dp2 r6.y, r3.xyxx, r7.xzxx
        dp2 r8.x, r4.xyxx, r7.xzxx
        dp2 r8.y, r4.zwzz, r7.yzyy
        dp2 r8.z, r5.xyxx, r7.yzyy
        ieq r8.w, r5.w, l(1)
        if_nz r8.w
          ge r8.w, r6.y, -r7.w
          ge r9.x, r8.x, -r7.w
          and r8.w, r8.w, r9.x
          ge r9.x, r8.y, -r7.w
          and r8.w, r8.w, r9.x
          ge r9.x, r8.z, -r7.w
          and r8.w, r8.w, r9.x
        else
          ieq r9.x, r5.w, l(2)
          if_nz r9.x
            ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r9.xyzw, r5.z, l(32), t22.xyzw
            mad r10.xyzw, -r9.xzyz, r7.wwww, r7.xzyz
            dp2 r7.x, r9.xzxx, r3.xyxx
            mad r7.xy, -r9.xzxx, r7.xxxx, r3.xyxx
            mad r7.xy, r9.wwww, r7.xyxx, r10.xyxx
            dp2 r7.x, r3.xyxx, r7.xyxx
            lt r7.y, l(0.000000), r6.y
            lt r7.x, l(0.000000), r7.x
            or r7.x, r7.x, r7.y
            ge r7.y, r6.y, -r7.w
            and r7.x, r7.y, r7.x
            dp2 r7.y, r9.xzxx, r4.xyxx
            mad r7.yz, -r9.xxzx, r7.yyyy, r4.xxyx
            mad r7.yz, r9.wwww, r7.yyzy, r10.xxyx
            dp2 r7.y, r4.xyxx, r7.yzyy
            lt r7.z, l(0.000000), r8.x
            lt r7.y, l(0.000000), r7.y
            or r7.y, r7.y, r7.z
            ge r7.z, r8.x, -r7.w
            and r7.y, r7.z, r7.y
            and r7.x, r7.y, r7.x
            dp2 r7.y, r9.yzyy, r4.zwzz
            mad r7.yz, -r9.yyzy, r7.yyyy, r4.zzwz
            mad r7.yz, r9.wwww, r7.yyzy, r10.zzwz
            dp2 r7.y, r4.zwzz, r7.yzyy
            lt r7.z, l(0.000000), r8.y
            lt r7.y, l(0.000000), r7.y
            or r7.y, r7.y, r7.z
            ge r7.z, r8.y, -r7.w
            and r7.y, r7.z, r7.y
            and r7.x, r7.y, r7.x
            dp2 r7.y, r9.yzyy, r5.xyxx
            mad r7.yz, -r9.yyzy, r7.yyyy, r5.xxyx
            mad r7.yz, r9.wwww, r7.yyzy, r10.zzwz
            dp2 r7.y, r5.xyxx, r7.yzyy
            lt r7.z, l(0.000000), r8.z
            lt r7.y, l(0.000000), r7.y
            or r7.y, r7.y, r7.z
            ge r7.z, r8.z, -r7.w
            and r7.y, r7.z, r7.y
            and r8.w, r7.y, r7.x
          else
            ieq r7.x, r5.w, l(3)
            if_nz r7.x
              ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r7.xyzw, r5.z, l(32), t22.xyzw
              ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r9.xyzw, r5.z, l(48), t22.xyzw
              ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r10.xyzw, r5.z, l(64), t22.xyzw
              dp2 r11.x, r3.xyxx, r7.xzxx
              dp2 r11.w, r3.xyxx, r9.xzxx
              mov r11.xy, |r11.xwxx|
              dp2 r11.w, r3.xyxx, r10.xzxx
              mov r11.z, |r11.w|
              mov r12.x, r7.w
              mov r12.y, r9.w
              mov r12.z, r10.w
              dp3 r7.w, r12.xyzx, r11.xyzx
              ge r6.y, r7.w, -r6.y
              dp2 r7.x, r4.xyxx, r7.xzxx
              mov r11.x, |r7.x|
              dp2 r7.x, r4.xyxx, r9.xzxx
              mov r11.y, |r7.x|
              dp2 r7.x, r4.xyxx, r10.xzxx
              mov r11.z, |r7.x|
              dp3 r7.x, r12.xyzx, r11.xyzx
              ge r7.x, r7.x, -r8.x
              and r6.y, r6.y, r7.x
              dp2 r7.x, r4.zwzz, r7.yzyy
              mov r11.x, |r7.x|
              dp2 r7.x, r4.zwzz, r9.yzyy
              mov r11.y, |r7.x|
              dp2 r7.x, r4.zwzz, r10.yzyy
              mov r11.z, |r7.x|
              dp3 r7.x, r12.xyzx, r11.xyzx
              ge r7.x, r7.x, -r8.y
              and r6.y, r6.y, r7.x
              dp2 r7.x, r5.xyxx, r7.yzyy
              dp2 r7.w, r5.xyxx, r9.yzyy
              mov r7.xy, |r7.xwxx|
              dp2 r7.w, r5.xyxx, r10.yzyy
              mov r7.z, |r7.w|
              dp3 r7.x, r12.xyzx, r7.xyzx
              ge r7.x, r7.x, -r8.z
              and r8.w, r6.y, r7.x
            else
              mov r8.w, l(-1)
            endif
          endif
        endif
        if_nz r8.w
          ge r6.y, r6.w, r0.w
          not r6.w, r2.y
          and r6.y, r6.w, r6.y
          if_nz r6.y
            imm_atomic_iadd r7.x, g0, l(0), l(1)
            store_structured g2.x, r7.x, l(0), r5.z
          endif
          ine r5.w, r5.w, l(4)
          if_nz r5.w
            imm_atomic_iadd r7.x, g1, l(0), l(1)
            store_structured g3.x, r7.x, l(0), r5.z
          endif
        endif
      endif
    endif
  else
    mov r6.z, l(0)
  endif
  not r5.w, r6.x
  not r6.y, r6.z
  and r5.w, r5.w, r6.y
  iadd r6.y, r5.z, l(64)
  movc r5.z, r5.w, r6.y, r5.z
else
  mov r6.x, l(-1)
endif
not r5.w, r6.x
and r2.w, r2.w, r5.w
ult r5.w, r5.z, l(255)
and r2.w, r2.w, r5.w
if_nz r2.w
  ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r2.w, r5.z, l(0), t22.xxxx
  if_nz r2.w
    ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r5.w, r5.z, l(4), t22.xxxx
    and r6.x, r5.w, l(255)
    ushr r5.w, r5.w, l(16)
    ieq r6.y, r6.x, l(255)
    ld_structured r6.x, r6.x, l(0), g6.xxxx
    ine r6.x, r6.x, l(0)
    or r6.x, r6.x, r6.y
    ld_structured r5.w, r5.w, l(0), g6.xxxx
    ine r5.w, r5.w, l(0)
    or r5.w, r5.w, r6.x
    ieq r6.x, r5.w, l(0)
    if_z r5.w
      iadd r5.z, r5.z, l(64)
    endif
    if_z r6.x
      ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r6.xy, r5.z, l(8), t22.xyxx
      lt r2.x, r6.x, r2.x
      if_nz r2.x
        ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r7.xyzw, r5.z, l(16), t22.xyzw
        dp2 r2.x, r3.xyxx, r7.xzxx
        dp2 r5.w, r4.xyxx, r7.xzxx
        dp2 r6.x, r4.zwzz, r7.yzyy
        dp2 r6.z, r5.xyxx, r7.yzyy
        ieq r6.w, r2.w, l(1)
        if_nz r6.w
          ge r6.w, r2.x, -r7.w
          ge r8.x, r5.w, -r7.w
          and r6.w, r6.w, r8.x
          ge r8.x, r6.x, -r7.w
          and r6.w, r6.w, r8.x
          ge r8.x, r6.z, -r7.w
          and r6.w, r6.w, r8.x
        else
          ieq r8.x, r2.w, l(2)
          if_nz r8.x
            ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r8.xyzw, r5.z, l(32), t22.xyzw
            mad r9.xyzw, -r8.xzyz, r7.wwww, r7.xzyz
            dp2 r7.x, r8.xzxx, r3.xyxx
            mad r7.xy, -r8.xzxx, r7.xxxx, r3.xyxx
            mad r7.xy, r8.wwww, r7.xyxx, r9.xyxx
            dp2 r7.x, r3.xyxx, r7.xyxx
            lt r7.y, l(0.000000), r2.x
            lt r7.x, l(0.000000), r7.x
            or r7.x, r7.x, r7.y
            ge r7.y, r2.x, -r7.w
            and r7.x, r7.y, r7.x
            dp2 r7.y, r8.xzxx, r4.xyxx
            mad r7.yz, -r8.xxzx, r7.yyyy, r4.xxyx
            mad r7.yz, r8.wwww, r7.yyzy, r9.xxyx
            dp2 r7.y, r4.xyxx, r7.yzyy
            lt r7.z, l(0.000000), r5.w
            lt r7.y, l(0.000000), r7.y
            or r7.y, r7.y, r7.z
            ge r7.z, r5.w, -r7.w
            and r7.y, r7.z, r7.y
            and r7.x, r7.y, r7.x
            dp2 r7.y, r8.yzyy, r4.zwzz
            mad r7.yz, -r8.yyzy, r7.yyyy, r4.zzwz
            mad r7.yz, r8.wwww, r7.yyzy, r9.zzwz
            dp2 r7.y, r4.zwzz, r7.yzyy
            lt r7.z, l(0.000000), r6.x
            lt r7.y, l(0.000000), r7.y
            or r7.y, r7.y, r7.z
            ge r7.z, r6.x, -r7.w
            and r7.y, r7.z, r7.y
            and r7.x, r7.y, r7.x
            dp2 r7.y, r8.yzyy, r5.xyxx
            mad r7.yz, -r8.yyzy, r7.yyyy, r5.xxyx
            mad r7.yz, r8.wwww, r7.yyzy, r9.zzwz
            dp2 r7.y, r5.xyxx, r7.yzyy
            lt r7.z, l(0.000000), r6.z
            lt r7.y, l(0.000000), r7.y
            or r7.y, r7.y, r7.z
            ge r7.z, r6.z, -r7.w
            and r7.y, r7.z, r7.y
            and r6.w, r7.y, r7.x
          else
            ieq r7.x, r2.w, l(3)
            if_nz r7.x
              ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r7.xyzw, r5.z, l(32), t22.xyzw
              ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r8.xyzw, r5.z, l(48), t22.xyzw
              ld_structured_indexable(structured_buffer, stride=80)(mixed,mixed,mixed,mixed) r9.xyzw, r5.z, l(64), t22.xyzw
              dp2 r10.x, r3.xyxx, r7.xzxx
              dp2 r10.w, r3.xyxx, r8.xzxx
              mov r10.xy, |r10.xwxx|
              dp2 r3.x, r3.xyxx, r9.xzxx
              mov r10.z, |r3.x|
              mov r11.x, r7.w
              mov r11.y, r8.w
              mov r11.z, r9.w
              dp3 r3.x, r11.xyzx, r10.xyzx
              ge r2.x, r3.x, -r2.x
              dp2 r3.x, r4.xyxx, r7.xzxx
              mov r10.x, |r3.x|
              dp2 r3.x, r4.xyxx, r8.xzxx
              mov r10.y, |r3.x|
              dp2 r3.x, r4.xyxx, r9.xzxx
              mov r10.z, |r3.x|
              dp3 r3.x, r11.xyzx, r10.xyzx
              ge r3.x, r3.x, -r5.w
              and r2.x, r2.x, r3.x
              dp2 r3.x, r4.zwzz, r7.yzyy
              mov r10.x, |r3.x|
              dp2 r3.x, r4.zwzz, r8.yzyy
              mov r10.y, |r3.x|
              dp2 r3.x, r4.zwzz, r9.yzyy
              mov r10.z, |r3.x|
              dp3 r3.x, r11.xyzx, r10.xyzx
              ge r3.x, r3.x, -r6.x
              and r2.x, r2.x, r3.x
              dp2 r3.x, r5.xyxx, r7.yzyy
              mov r4.x, |r3.x|
              dp2 r3.x, r5.xyxx, r8.yzyy
              mov r4.y, |r3.x|
              dp2 r3.x, r5.xyxx, r9.yzyy
              mov r4.z, |r3.x|
              dp3 r3.x, r11.xyzx, r4.xyzx
              ge r3.x, r3.x, -r6.z
              and r6.w, r2.x, r3.x
            else
              mov r6.w, l(-1)
            endif
          endif
        endif
        if_nz r6.w
          ge r0.w, r6.y, r0.w
          not r2.x, r2.y
          and r0.w, r0.w, r2.x
          if_nz r0.w
            imm_atomic_iadd r4.x, g0, l(0), l(1)
            store_structured g2.x, r4.x, l(0), r5.z
          endif
          ine r0.w, r2.w, l(4)
          if_nz r0.w
            imm_atomic_iadd r4.x, g1, l(0), l(1)
            store_structured g3.x, r4.x, l(0), r5.z
          endif
        endif
      endif
    endif
  endif
endif
sync_g_t
and r4.xyzw, r0.xxxx, l(62, 2, 61, 4)
ld_structured r0.w, r4.x, l(0), g2.xxxx
or r5.xyzw, r0.xxxx, l(1, 2, 4, 8)
ld_structured r2.x, r5.x, l(0), g2.xxxx
uge r0.w, r2.x, r0.w
ine r2.xy, r4.ywyy, l(0, 0, 0, 0)
ieq r0.w, r0.w, r2.x
xor r6.xyzw, r0.xxxx, l(1, 2, 4, 8)
ld_structured r2.w, r6.x, l(0), g2.xxxx
ld_structured r3.x, r0.x, l(0), g2.xxxx
movc r0.w, r0.w, r2.w, r3.x
ld_structured r2.w, r4.x, l(0), g3.xxxx
ld_structured r3.x, r5.x, l(0), g3.xxxx
uge r2.w, r3.x, r2.w
ieq r2.x, r2.x, r2.w
ld_structured r2.w, r6.x, l(0), g3.xxxx
ld_structured r3.x, r0.x, l(0), g3.xxxx
movc r2.x, r2.x, r2.w, r3.x
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
ld_structured r2.w, r4.z, l(0), g2.xxxx
ld_structured r3.x, r5.y, l(0), g2.xxxx
uge r2.w, r3.x, r2.w
ieq r2.w, r2.y, r2.w
ld_structured r3.x, r6.y, l(0), g2.xxxx
movc r0.w, r2.w, r3.x, r0.w
ld_structured r2.w, r4.z, l(0), g3.xxxx
ld_structured r3.x, r5.y, l(0), g3.xxxx
uge r2.w, r3.x, r2.w
ieq r2.w, r2.y, r2.w
ld_structured r3.x, r6.y, l(0), g3.xxxx
movc r2.x, r2.w, r3.x, r2.x
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
ld_structured r2.w, r4.x, l(0), g2.xxxx
ld_structured r3.x, r5.x, l(0), g2.xxxx
uge r2.w, r3.x, r2.w
ieq r2.w, r2.y, r2.w
ld_structured r3.x, r6.x, l(0), g2.xxxx
movc r0.w, r2.w, r3.x, r0.w
ld_structured r2.w, r4.x, l(0), g3.xxxx
ld_structured r3.x, r5.x, l(0), g3.xxxx
uge r2.w, r3.x, r2.w
ieq r2.y, r2.y, r2.w
ld_structured r2.w, r6.x, l(0), g3.xxxx
movc r2.x, r2.y, r2.w, r2.x
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
and r7.xyzw, r0.xxxx, l(59, 8, 55, 16)
ld_structured r2.y, r7.x, l(0), g2.xxxx
ld_structured r2.w, r5.z, l(0), g2.xxxx
uge r2.y, r2.w, r2.y
ine r3.xy, r7.ywyy, l(0, 0, 0, 0)
ieq r2.y, r2.y, r3.x
ld_structured r2.w, r6.z, l(0), g2.xxxx
movc r0.w, r2.y, r2.w, r0.w
ld_structured r2.y, r7.x, l(0), g3.xxxx
ld_structured r2.w, r5.z, l(0), g3.xxxx
uge r2.y, r2.w, r2.y
ieq r2.y, r3.x, r2.y
ld_structured r2.w, r6.z, l(0), g3.xxxx
movc r2.x, r2.y, r2.w, r2.x
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
ld_structured r2.y, r4.z, l(0), g2.xxxx
ld_structured r2.w, r5.y, l(0), g2.xxxx
uge r2.y, r2.w, r2.y
ieq r2.y, r3.x, r2.y
ld_structured r2.w, r6.y, l(0), g2.xxxx
movc r0.w, r2.y, r2.w, r0.w
ld_structured r2.y, r4.z, l(0), g3.xxxx
ld_structured r2.w, r5.y, l(0), g3.xxxx
uge r2.y, r2.w, r2.y
ieq r2.y, r3.x, r2.y
ld_structured r2.w, r6.y, l(0), g3.xxxx
movc r2.x, r2.y, r2.w, r2.x
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
ld_structured r2.y, r4.x, l(0), g2.xxxx
ld_structured r2.w, r5.x, l(0), g2.xxxx
uge r2.y, r2.w, r2.y
ieq r2.y, r3.x, r2.y
ld_structured r2.w, r6.x, l(0), g2.xxxx
movc r0.w, r2.y, r2.w, r0.w
ld_structured r2.y, r4.x, l(0), g3.xxxx
ld_structured r2.w, r5.x, l(0), g3.xxxx
uge r2.y, r2.w, r2.y
ieq r2.y, r3.x, r2.y
ld_structured r2.w, r6.x, l(0), g3.xxxx
movc r2.x, r2.y, r2.w, r2.x
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
ld_structured r2.y, r7.z, l(0), g2.xxxx
ld_structured r2.w, r5.w, l(0), g2.xxxx
uge r2.y, r2.w, r2.y
ieq r2.y, r3.y, r2.y
ld_structured r2.w, r6.w, l(0), g2.xxxx
movc r0.w, r2.y, r2.w, r0.w
ld_structured r2.y, r7.z, l(0), g3.xxxx
ld_structured r2.w, r5.w, l(0), g3.xxxx
uge r2.y, r2.w, r2.y
ieq r2.y, r3.y, r2.y
ld_structured r2.w, r6.w, l(0), g3.xxxx
movc r2.x, r2.y, r2.w, r2.x
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
ld_structured r2.y, r7.x, l(0), g2.xxxx
ld_structured r2.w, r5.z, l(0), g2.xxxx
uge r2.y, r2.w, r2.y
ieq r2.y, r3.y, r2.y
ld_structured r2.w, r6.z, l(0), g2.xxxx
movc r0.w, r2.y, r2.w, r0.w
ld_structured r2.y, r7.x, l(0), g3.xxxx
ld_structured r2.w, r5.z, l(0), g3.xxxx
uge r2.y, r2.w, r2.y
ieq r2.y, r3.y, r2.y
ld_structured r2.w, r6.z, l(0), g3.xxxx
movc r2.x, r2.y, r2.w, r2.x
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
ld_structured r2.y, r4.z, l(0), g2.xxxx
ld_structured r2.w, r5.y, l(0), g2.xxxx
uge r2.y, r2.w, r2.y
ieq r2.y, r3.y, r2.y
ld_structured r2.w, r6.y, l(0), g2.xxxx
movc r0.w, r2.y, r2.w, r0.w
ld_structured r2.y, r4.z, l(0), g3.xxxx
ld_structured r2.w, r5.y, l(0), g3.xxxx
uge r2.y, r2.w, r2.y
ieq r2.y, r3.y, r2.y
ld_structured r2.w, r6.y, l(0), g3.xxxx
movc r2.x, r2.y, r2.w, r2.x
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
ld_structured r2.y, r4.x, l(0), g2.xxxx
ld_structured r2.w, r5.x, l(0), g2.xxxx
uge r2.y, r2.w, r2.y
ieq r2.y, r3.y, r2.y
ld_structured r2.w, r6.x, l(0), g2.xxxx
movc r0.w, r2.y, r2.w, r0.w
ld_structured r2.y, r4.x, l(0), g3.xxxx
ld_structured r2.w, r5.x, l(0), g3.xxxx
uge r2.y, r2.w, r2.y
ieq r2.y, r3.y, r2.y
ld_structured r2.w, r6.x, l(0), g3.xxxx
movc r2.x, r2.y, r2.w, r2.x
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
and r8.xyz, r0.xxxx, l(47, 32, 31, 0)
ld_structured r2.y, r8.x, l(0), g2.xxxx
or r3.xy, r0.xxxx, l(16, 32, 0, 0)
ld_structured r2.w, r3.x, l(0), g2.xxxx
uge r2.y, r2.w, r2.y
ine r2.w, r8.y, l(0)
ieq r2.y, r2.w, r2.y
xor r4.yw, r0.xxxx, l(0, 16, 0, 32)
ld_structured r7.y, r4.y, l(0), g2.xxxx
movc r0.w, r2.y, r7.y, r0.w
ld_structured r2.y, r8.x, l(0), g3.xxxx
ld_structured r7.y, r3.x, l(0), g3.xxxx
uge r2.y, r7.y, r2.y
ieq r2.y, r2.w, r2.y
ld_structured r7.y, r4.y, l(0), g3.xxxx
movc r2.x, r2.y, r7.y, r2.x
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
ld_structured r2.y, r7.z, l(0), g2.xxxx
ld_structured r7.y, r5.w, l(0), g2.xxxx
uge r2.y, r7.y, r2.y
ieq r2.y, r2.w, r2.y
ld_structured r7.y, r6.w, l(0), g2.xxxx
movc r0.w, r2.y, r7.y, r0.w
ld_structured r2.y, r7.z, l(0), g3.xxxx
ld_structured r7.y, r5.w, l(0), g3.xxxx
uge r2.y, r7.y, r2.y
ieq r2.y, r2.w, r2.y
ld_structured r7.y, r6.w, l(0), g3.xxxx
movc r2.x, r2.y, r7.y, r2.x
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
ld_structured r2.y, r7.x, l(0), g2.xxxx
ld_structured r7.y, r5.z, l(0), g2.xxxx
uge r2.y, r7.y, r2.y
ieq r2.y, r2.w, r2.y
ld_structured r7.y, r6.z, l(0), g2.xxxx
movc r0.w, r2.y, r7.y, r0.w
ld_structured r2.y, r7.x, l(0), g3.xxxx
ld_structured r7.y, r5.z, l(0), g3.xxxx
uge r2.y, r7.y, r2.y
ieq r2.y, r2.w, r2.y
ld_structured r7.y, r6.z, l(0), g3.xxxx
movc r2.x, r2.y, r7.y, r2.x
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
ld_structured r2.y, r4.z, l(0), g2.xxxx
ld_structured r7.y, r5.y, l(0), g2.xxxx
uge r2.y, r7.y, r2.y
ieq r2.y, r2.w, r2.y
ld_structured r7.y, r6.y, l(0), g2.xxxx
movc r0.w, r2.y, r7.y, r0.w
ld_structured r2.y, r4.z, l(0), g3.xxxx
ld_structured r7.y, r5.y, l(0), g3.xxxx
uge r2.y, r7.y, r2.y
ieq r2.y, r2.w, r2.y
ld_structured r7.y, r6.y, l(0), g3.xxxx
movc r2.x, r2.y, r7.y, r2.x
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
ld_structured r2.y, r4.x, l(0), g2.xxxx
ld_structured r7.y, r5.x, l(0), g2.xxxx
uge r2.y, r7.y, r2.y
ieq r2.y, r2.w, r2.y
ld_structured r7.y, r6.x, l(0), g2.xxxx
movc r0.w, r2.y, r7.y, r0.w
ld_structured r2.y, r4.x, l(0), g3.xxxx
ld_structured r7.y, r5.x, l(0), g3.xxxx
uge r2.y, r7.y, r2.y
ieq r2.y, r2.w, r2.y
ld_structured r2.w, r6.x, l(0), g3.xxxx
movc r2.x, r2.y, r2.w, r2.x
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
ld_structured r2.y, r8.z, l(0), g2.xxxx
ld_structured r2.w, r3.y, l(0), g2.xxxx
uge r2.y, r2.w, r2.y
ld_structured r2.w, r4.w, l(0), g2.xxxx
movc r0.w, r2.y, r0.w, r2.w
ld_structured r2.y, r8.z, l(0), g3.xxxx
ld_structured r2.w, r3.y, l(0), g3.xxxx
uge r2.y, r2.w, r2.y
ld_structured r2.w, r4.w, l(0), g3.xxxx
movc r2.x, r2.y, r2.x, r2.w
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
ld_structured r2.y, r8.x, l(0), g2.xxxx
ld_structured r2.w, r3.x, l(0), g2.xxxx
uge r2.y, r2.w, r2.y
ld_structured r2.w, r4.y, l(0), g2.xxxx
movc r0.w, r2.y, r0.w, r2.w
ld_structured r2.y, r8.x, l(0), g3.xxxx
ld_structured r2.w, r3.x, l(0), g3.xxxx
uge r2.y, r2.w, r2.y
ld_structured r2.w, r4.y, l(0), g3.xxxx
movc r2.x, r2.y, r2.x, r2.w
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
ld_structured r2.y, r7.z, l(0), g2.xxxx
ld_structured r2.w, r5.w, l(0), g2.xxxx
uge r2.y, r2.w, r2.y
ld_structured r2.w, r6.w, l(0), g2.xxxx
movc r0.w, r2.y, r0.w, r2.w
ld_structured r2.y, r7.z, l(0), g3.xxxx
ld_structured r2.w, r5.w, l(0), g3.xxxx
uge r2.y, r2.w, r2.y
ld_structured r2.w, r6.w, l(0), g3.xxxx
movc r2.x, r2.y, r2.x, r2.w
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
ld_structured r2.y, r7.x, l(0), g2.xxxx
ld_structured r2.w, r5.z, l(0), g2.xxxx
uge r2.y, r2.w, r2.y
ld_structured r2.w, r6.z, l(0), g2.xxxx
movc r0.w, r2.y, r0.w, r2.w
ld_structured r2.y, r7.x, l(0), g3.xxxx
ld_structured r2.w, r5.z, l(0), g3.xxxx
uge r2.y, r2.w, r2.y
ld_structured r2.w, r6.z, l(0), g3.xxxx
movc r2.x, r2.y, r2.x, r2.w
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
ld_structured r2.y, r4.z, l(0), g2.xxxx
ld_structured r2.w, r5.y, l(0), g2.xxxx
uge r2.y, r2.w, r2.y
ld_structured r2.w, r6.y, l(0), g2.xxxx
movc r0.w, r2.y, r0.w, r2.w
ld_structured r2.y, r4.z, l(0), g3.xxxx
ld_structured r2.w, r5.y, l(0), g3.xxxx
uge r2.y, r2.w, r2.y
ld_structured r2.w, r6.y, l(0), g3.xxxx
movc r2.x, r2.y, r2.x, r2.w
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
store_structured g3.x, r0.x, l(0), r2.x
sync_g_t
ld_structured r2.y, r4.x, l(0), g2.xxxx
ld_structured r2.w, r5.x, l(0), g2.xxxx
uge r2.y, r2.w, r2.y
ld_structured r2.w, r6.x, l(0), g2.xxxx
movc r0.w, r2.y, r0.w, r2.w
ld_structured r2.y, r4.x, l(0), g3.xxxx
ld_structured r2.w, r5.x, l(0), g3.xxxx
uge r2.y, r2.w, r2.y
ld_structured r2.w, r6.x, l(0), g3.xxxx
movc r2.x, r2.y, r2.x, r2.w
sync_g_t
store_structured g2.x, r0.x, l(0), r0.w
sync_g_t
mad r0.w, r3.w, r2.z, r3.z
ftou r0.w, r0.w
ld_raw r2.y, l(0), g1.xxxx
ult r2.z, r0.x, r2.y
movc r2.x, r2.z, r2.x, l(255)
imad r2.z, r0.w, l(255), r0.x
store_uav_typed u0.xyzw, r2.zzzz, r2.xxxx
iadd r0.x, r0.x, l(64)
ult r2.x, r0.x, r2.y
ld_structured r2.z, r0.x, l(0), g3.xxxx
movc r2.x, r2.x, r2.z, l(255)
imad r2.z, r0.w, l(255), r0.x
store_uav_typed u0.xyzw, r2.zzzz, r2.xxxx
iadd r0.x, r0.x, l(64)
ult r2.x, r0.x, r2.y
ld_structured r2.z, r0.x, l(0), g3.xxxx
movc r2.x, r2.x, r2.z, l(255)
imad r2.z, r0.w, l(255), r0.x
store_uav_typed u0.xyzw, r2.zzzz, r2.xxxx
or r0.x, r0.x, l(192)
ult r2.x, r0.x, l(255)
if_nz r2.x
  ult r2.x, r0.x, r2.y
  ld_structured r2.y, r0.x, l(0), g3.xxxx
  movc r2.x, r2.x, r2.y, l(255)
  imad r0.x, r0.w, l(255), r0.x
  store_uav_typed u0.xyzw, r0.xxxx, r2.xxxx
endif
ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r1.xyww, t1.xyzw
ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r1.xyww, t3.xyzw
ld_indexable(texture2d)(float,float,float,float) r4.xyzw, r1.xyww, t2.yxzw
mul r0.x, r2.w, l(3.99609375)
round_ni r0.w, r0.x
ftoi r0.w, r0.w
mad r2.xyz, r2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
dp3 r2.w, r2.xyzx, r2.xyzx
rsq r2.w, r2.w
mul r2.xyz, r2.wwww, r2.xyzx
mul r3.xyz, r3.xyzx, r3.xyzx
mad r5.yz, r4.zzwz, l(0.000000, 2.007874, 2.007874, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000)
movc r6.yz, r0.wwww, l(0,0,0,0), r5.yyzy
mov r6.x, r4.x
dp3 r7.y, l(1.000000, -0.344100, -0.714100, 0.000000), r6.xyzx
mad r7.xz, r6.zzyz, l(1.402000, 0.000000, 1.772000, 0.000000), r4.xxxx

mov r41.xyzw, r4.xyzw


mul r6.xyz, r7.xyzx, r7.xyzx
ge r3.w, r3.w, l(0.250244379)
ieq r0.w, r0.w, l(1)
frc r5.x, r0.x
dp3 r8.y, l(1.000000, -0.344100, -0.714100, 0.000000), r5.xyzx
mad r8.xz, r5.zzyz, l(1.402000, 0.000000, 1.772000, 0.000000), r5.xxxx
mul r5.xyz, r8.xyzx, r8.xyzx
and r5.xyz, r0.wwww, r5.xyzx
utof r4.zw, r1.xxxy

// DHR ShaderRegex - CRYENGINE CS Lights and Reflections:
ld_indexable(texture2d)(float,float,float,float) r37.xyzw, l(0, 0, 0, 0), t125.xyzw
//Backup register
mov r40.zw, r4.zw


//Fix
mul r38.z, r0.z, cb13[9].y
add r39.w, r38.z, -r37.y
mul r39.w, r37.x, r39.w
div r39.w, r39.w, r38.z
mul r39.w, r39.w, cb0[8].x
div r39.w, r39.w, l(2.000000)
add r4.z, r4.z, -r39.w


mul r8.xy, r4.zwzz, cb0[11].zwzz

//dialoge lightenign issue came from here
//mad r0.x, -r4.z, cb0[11].z, l(1.000000)


//define x3 used for lightening correction in dialog-modes
ld_indexable(texture1d)(float,float,float,float) r50.x, l(3, 0, 0, 0), t120.xyzw
ne r50.x, l(0.000000, 0.000000, 0.000000, 0.000000), r50.x

if_nz r50.x
mad r0.x, -r4.z, cb0[11].z, l(1.19000)
else
mad r0.x, -r4.z, cb0[11].z, l(1.00000)
endif

mad r0.x, -r4.w, cb0[11].w, r0.x
mul r9.xyz, r8.xxxx, cb0[10].xyzx
mad r9.xyz, r0.xxxx, cb0[1].xyzx, r9.xyzx
mad r9.xyz, r8.yyyy, cb0[2].xyzx, r9.xyzx
mul r10.xyz, r0.zzzz, r9.xyzx
dp3 r0.x, -r10.xyzx, -r10.xyzx
rsq r0.x, r0.x


mul r11.xyz, r0.xxxx, -r10.xyzx
ld_structured r5.w, l(0), l(0), g2.xxxx
dp3 r6.w, r10.xyzx, r2.xyzx
add r6.w, r6.w, r6.w
mad r12.xyz, r2.xyzx, -r6.wwww, r10.xyzx
dp3 r6.w, r12.xyzx, r12.xyzx
rsq r6.w, r6.w
mul r12.xyz, r6.wwww, r12.xyzx
mad r6.w, -r4.y, l(6.000000), l(6.000000)
ld_raw r7.w, l(0), g0.xxxx
mov r13.xyz, -r2.xyzx
lt r14.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r12.xyzx
mov r15.xyz, l(0,0,0,0)
mov r16.xyz, l(0,0,0,0)
mov r8.zw, l(0,0,0,0)
mov r9.w, l(0)
mov r11.w, r5.w



loop
  ult r12.w, r9.w, r7.w
  ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r14.w, r11.w, l(0), t16.xxxx
  ieq r14.w, r14.w, l(1)
  and r12.w, r12.w, r14.w
  breakc_z r12.w
  ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r12.w, r11.w, l(12), t16.xxxx
  and r14.w, r12.w, l(255)
  ushr r12.w, r12.w, l(16)
  ieq r15.w, r14.w, l(255)
  ieq r14.w, r0.y, r14.w
  ieq r12.w, r0.y, r12.w
  or r12.w, r12.w, r14.w
  or r12.w, r15.w, r12.w
  lt r14.w, r8.z, l(1.000000)
  and r12.w, r12.w, r14.w
  if_nz r12.w
    ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r17.xy, r11.w, l(4), t16.xyxx
    ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r18.xyz, r11.w, l(16), t16.xyzx
    ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r17.zw, r11.w, l(32), t16.xxxy
    ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r19.xyzw, r11.w, l(44), t16.xyzw
    ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r20.xy, r11.w, l(60), t16.xyxx
    ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r21.xyz, r11.w, l(80), t16.xyzx
    ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r22.xyz, r11.w, l(96), t16.xyzx
    ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r23.xyz, r11.w, l(112), t16.xyzx
    ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r24.xyz, r11.w, l(144), t16.xyzx
    ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r25.xyz, r11.w, l(160), t16.xyzx
    mad r26.xyz, -r9.xyzx, r0.zzzz, r18.xyzx
    dp3 r21.x, r21.xyzx, r26.xyzx
    dp3 r21.y, r22.xyzx, r26.xyzx
    dp3 r21.z, r23.xyzx, r26.xyzx
    max r12.w, |r21.y|, |r21.x|
    max r12.w, |r21.z|, r12.w
    lt r12.w, r12.w, l(1.000000)
    if_nz r12.w
      mul r22.xyz, r21.zxyz, r21.zxyz
      mul r23.xyz, r22.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
      mad r23.xyz, -r22.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), -r23.zxyz
      add r23.xyz, r23.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
      mul r22.xyz, r22.zxyz, r22.xyzx
      mad r22.xyz, r22.xyzx, l(0.333000, 0.333000, 0.333000, 0.000000), r23.xyzx
      sqrt r22.xyz, r22.xyzx
      mul r21.xyz, r21.xyzx, r22.xyzx
      dp3 r12.w, r21.xyzx, -r21.xyzx
      add_sat r12.w, r12.w, l(1.000000)
      div_sat r12.w, r12.w, r17.w
      mul r14.w, r12.w, r12.w
      mad r12.w, -r12.w, l(2.000000), l(3.000000)
      mul r12.w, r12.w, r14.w
      mul r12.w, r17.z, r12.w
      utof r2.w, r17.x
      sample_l_indexable(texturecubearray)(float,float,float,float) r17.xzw, r2.xyzw, t18.xwyz, s1, l(0.000000)
      if_nz r0.w
        mul r21.xyzw, r2.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000)
        sample_l_indexable(texturecubearray)(float,float,float,float) r21.xyz, r21.xyzw, t18.xyzw, s1, l(0.000000)
        mad r17.xzw, r21.xxyz, r5.xxyz, r17.xxzw
      endif
      add r14.w, -r8.z, l(1.000000)
      mul r15.w, r12.w, r14.w
      mul r17.xzw, r19.yyzw, r17.xxzw
      mul r17.xzw, r15.wwww, r17.xxzw
      add r21.xyz, r18.xyzx, r25.xyzx
      mad r21.xyz, -r9.xyzx, r0.zzzz, r21.xyzx
      div r21.xyz, r21.xyzx, r12.xyzx
      add r22.xyz, r18.xyzx, r24.xyzx
      mad r22.xyz, -r9.xyzx, r0.zzzz, r22.xyzx
      div r22.xyz, r22.xyzx, r12.xyzx
      movc r21.xyz, r14.xyzx, r21.xyzx, r22.xyzx
      min r16.w, r21.y, r21.x
      min r16.w, r21.z, r16.w
      mad r21.xyz, r12.xyzx, r16.wwww, r10.xyzx
      add r18.xyz, -r18.xyzx, r21.xyzx
      mov r18.w, r2.w
      sample_l_indexable(texturecubearray)(float,float,float,float) r21.xyz, r18.xyzw, t17.xyzw, s1, r6.w
      mul r21.xyz, r19.yzwy, r21.xyzx
      mul r21.xyz, r20.xxxx, r21.xyzx
      mul r21.xyz, r15.wwww, r21.xyzx
      lt r16.w, l(0.000000), r20.y
      if_nz r16.w
        utof r2.w, r17.y
        sample_l_indexable(texturecubearray)(float,float,float,float) r22.xyz, r2.xyzw, t18.xyzw, s1, l(0.000000)
        if_nz r0.w
          mov r13.w, r2.w
          sample_l_indexable(texturecubearray)(float,float,float,float) r23.xyz, r13.xyzw, t18.xyzw, s1, l(0.000000)
          mad r22.xyz, r23.xyzx, r5.xyzx, r22.xyzx
        endif
        mul r22.xyz, r19.yzwy, r22.xyzx
        mov r18.w, r2.w
        sample_l_indexable(texturecubearray)(float,float,float,float) r18.xyz, r18.xyzw, t17.xyzw, s1, r6.w
        mul r18.xyz, r19.yzwy, r18.xyzx
        mul r18.xyz, r20.xxxx, r18.xyzx
        mad r19.yzw, r22.xxyz, r15.wwww, -r17.xxzw
        mad r17.xzw, r20.yyyy, r19.yyzw, r17.xxzw
        mad r18.xyz, r18.xyzx, r15.wwww, -r21.xyzx
        mad r21.xyz, r20.yyyy, r18.xyzx, r21.xyzx
      endif
      add r15.xyz, r15.xyzx, r17.xzwx
      add r16.xyz, r16.xyzx, r21.xyzx
      mad r8.w, r19.x, r15.w, r8.w
      mad r8.z, r14.w, r12.w, r8.z
    endif
  endif
  iadd r9.w, r9.w, l(1)
  imin r2.w, r9.w, l(254)
  ld_structured r11.w, r2.w, l(0), g2.xxxx
endloop
div r12.xy, l(0.500000, 0.500000, 0.000000, 0.000000), cb0[11].xyxx

//Use the backup register, to untouch that ugly r_SSDO
//mad r4.zw, r4.zzzw, cb0[11].zzzw, r12.xxxy
mad r4.zw, r40.zzzw, cb0[11].zzzw, r12.xxxy


sample_l_indexable(texture2d)(float,float,float,float) r12.xyz, r4.zwzz, t10.xyzw, s1, l(0.000000)
eq r2.w, cb0[0].w, l(0.000000)
lt r4.z, l(0.000000), cb0[0].y
mad r13.xyz, cb0[0].yyyy, r8.wwww, r12.xyzx
mul r4.w, r8.w, -cb0[0].y
mad r14.xyz, r4.wwww, l(0.200000, 0.200000, 0.200000, 0.000000), r12.xyzx
movc r13.xyz, r4.zzzz, r13.xyzx, r14.xyzx
movc r12.xyz, r2.wwww, r13.xyzx, r12.xyzx
dp3 r2.w, r12.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000)
dp3 r4.z, r15.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000)
add r4.z, r4.z, l(0.001000)
div r2.w, r2.w, r4.z
min r2.w, r2.w, l(2.000000)
dp3 r4.z, r6.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000)
mul r4.w, r4.z, r4.y
mul_sat r4.w, r4.w, cb0[6].x
add r5.w, -r2.w, l(1.000000)
mad r2.w, r4.w, r5.w, r2.w
mul r2.w, r2.w, cb0[6].z
mul r13.xyz, r2.wwww, r16.xyzx
ld_indexable(texture2d)(float,float,float,float) r14.xyzw, r1.xyww, t5.xyzw
mad r14.xyz, r14.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
mad_sat r8.zw, -r14.wwww, cb0[9].yyyz, l(0.000000, 0.000000, 1.000000, 1.000000)
mul r8.zw, r8.zzzw, r8.zzzw
sample_l_indexable(texture2d)(float,float,float,float) r15.xyz, r8.xyxx, t9.xyzw, s1, l(0.000000)
mul r16.xyz, r15.xyzx, r15.xyzx
mul r15.xyz, r15.xyzx, r16.xyzx
mul r15.xyz, r15.xyzx, l(3.000000, 3.000000, 3.000000, 0.000000)
min r15.xyz, r15.xyzx, l(0.700000, 0.700000, 0.700000, 0.000000)
add r15.xyz, -r15.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
log r2.w, r8.z
mul r15.xyz, r2.wwww, r15.xyzx
exp r15.xyz, r15.xyzx
mul r12.xyz, r12.xyzx, r15.xyzx
dp3 r2.w, r10.xyzx, r10.xyzx
rsq r2.w, r2.w
mul r15.xyz, r2.wwww, r10.xyzx
dp3 r4.x, -r15.xyzx, r2.xyzx
max r2.w, r8.w, l(0.300000)
add r4.w, r2.w, r4.x
log r4.w, r4.w
mul r4.w, r4.w, r4.y
exp r4.w, r4.w
add r2.w, r2.w, r4.w
add_sat r2.w, r2.w, l(-1.000000)
mul r13.xyz, r2.wwww, r13.xyzx
ld_raw r2.w, l(0), g0.xxxx
mov r15.xyz, r12.xyzx
mov r16.xyz, r13.xyzx
mov r4.w, r9.w
mov r5.w, r11.w
loop
  ult r6.w, r4.w, r2.w
  ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r7.w, r5.w, l(0), t16.xxxx
  ige r8.z, l(4), r7.w
  and r6.w, r6.w, r8.z
  breakc_z r6.w
  ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r17.xyzw, r5.w, l(12), t16.xyzw
  and r6.w, r17.x, l(255)
  ushr r8.z, r17.x, l(16)
  ieq r8.w, r6.w, l(255)
  ieq r6.w, r0.y, r6.w
  ieq r8.z, r0.y, r8.z
  or r6.w, r6.w, r8.z
  or r6.w, r8.w, r6.w
  if_nz r6.w
    ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r8.zw, r5.w, l(28), t16.xxxy
    ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r18.xyz, r5.w, l(48), t16.xyzx
    mad r17.xyz, -r9.xyzx, r0.zzzz, r17.yzwy
    ieq r6.w, r7.w, l(4)
    if_nz r6.w
      ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r19.xyz, r5.w, l(80), t16.xyzx
      ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r20.xyz, r5.w, l(96), t16.xyzx
      ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r21.xyz, r5.w, l(112), t16.xyzx
      ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r22.xy, r5.w, l(128), t16.xyxx
      ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r6.w, r5.w, l(140), t16.xxxx
      dp3 r7.w, r19.xyzx, r17.xyzx
      mad r23.xyz, r7.wwww, r19.xyzx, -r17.xyzx
      dp3 r24.x, r23.xyzx, r20.xyzx
      dp3 r24.y, r23.xyzx, r21.xyzx
      max r22.zw, -r22.xxxy, r24.xxxy
      min r22.xy, r22.xyxx, r22.zwzz
      mul r21.xyz, r21.xyzx, r22.yyyy
      mad r20.xyz, r20.xyzx, r22.xxxx, r21.xyzx
      add r20.xyz, r17.xyzx, r20.xyzx
      div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.z
      mul r21.xyz, r7.wwww, r20.xyzx
      dp3 r7.w, r21.xyzx, -r21.xyzx
      add_sat r7.w, r7.w, l(1.000000)
      dp3 r12.w, r20.xyzx, r20.xyzx
      rsq r12.w, r12.w
      mul r20.xyz, r12.wwww, r20.xyzx
      dp3 r12.w, -r20.xyzx, r19.xyzx
      add r13.w, r12.w, l(0.000001)
      div_sat r6.w, r6.w, r13.w
      log r6.w, r6.w
      mul r6.w, r6.w, r8.z
      exp r6.w, r6.w
      add r6.w, -r6.w, l(1.000000)
      mul r6.w, r6.w, r7.w
      mul r6.w, r6.w, r6.w
      dp3_sat r7.w, r2.xyzx, r20.xyzx
      mov_sat r13.w, r12.w
      mul r7.w, r7.w, r13.w
    else
      div r8.z, l(1.000000, 1.000000, 1.000000, 1.000000), r8.z
      mul r19.xyz, r8.zzzz, r17.xyzx
      dp3 r8.z, r19.xyzx, -r19.xyzx
      add_sat r8.z, r8.z, l(1.000000)
      dp3 r13.w, r17.xyzx, r17.xyzx
      rsq r13.w, r13.w
      mul r20.xyz, r13.wwww, r17.xyzx
      dp3_sat r7.w, r2.xyzx, r20.xyzx
      mul r6.w, r8.z, r8.z
      mov r12.w, l(1.000000)
    endif
    lt r8.z, l(0.000000), r8.w
    mad r17.xyz, r18.xyzx, r6.wwww, r15.xyzx
    mad r19.xyz, r18.xyzx, r6.wwww, r16.xyzx
    dp3 r8.w, r20.xyzx, r14.xyzx
    mul_sat r8.w, r8.w, cb0[9].x
    add r8.w, -r8.w, l(1.000000)
    mad r8.w, r8.w, l(0.700000), l(0.300000)
    lt r20.xyz, l(1.000000, 1.000000, 1.000000, 0.000000), r18.xyzx
    mul r7.w, r7.w, r8.w
    mov_sat r12.w, r12.w
    movc r20.xyz, r20.xyzx, r7.wwww, r12.wwww
    mul r20.xyz, r6.wwww, r20.xyzx
    add r18.xyz, r18.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000)
    mad r18.xyz, r20.xyzx, r18.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
    mul r20.xyz, r15.xyzx, r18.xyzx
    mul r18.xyz, r16.xyzx, r18.xyzx
    movc r15.xyz, r8.zzzz, r17.xyzx, r20.xyzx
    movc r16.xyz, r8.zzzz, r19.xyzx, r18.xyzx
  endif
  iadd r4.w, r4.w, l(1)
  imin r6.w, r4.w, l(254)
  ld_structured r5.w, r6.w, l(0), g2.xxxx
endloop
sample_l_indexable(texture2d)(float,float,float,float) r8.zw, r4.xyxx, t7.zwxy, s1, l(0.000000)
add r2.w, -r8.z, r8.w
mad r12.xyz, r6.xyzx, r2.wwww, r8.zzzz
mul r12.xyz, r12.xyzx, r16.xyzx
sample_l_indexable(texture2d)(float,float,float,float) r8.xyz, r8.xyxx, t12.xyzw, s1, l(0.000000)
add r8.xyz, r8.xyzx, r15.xyzx
ld_raw r2.w, l(0), g0.xxxx
mul r13.xyz, cb0[7].wwww, cb0[7].xyzx
ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r4.x, r0.y, l(0), t23.xxxx
and r4.x, r4.x, l(4)
movc r4.x, r4.x, l(1.000000), l(0)
add r4.y, -r4.y, l(1.000000)
mul r4.y, r4.y, r4.y
mul r6.w, r4.y, r4.y
mul r6.w, r4.y, r6.w
dp3 r7.w, r2.xyzx, r11.xyzx
mad r8.w, r6.w, l(0.287787139), l(1.000000)
div r8.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w
mul r6.w, r6.w, r8.w
dp3 r9.w, r5.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000)
mad r11.w, r9.w, l(0.500000), l(1.000000)
mul r11.w, r11.w, r11.w
rcp r11.w, r11.w
max r4.y, r4.y, l(0.001000)
add r12.w, r7.w, r7.w
mad r15.xyz, r2.xyzx, -r12.wwww, r11.xyzx
mul r12.w, r4.y, r4.y
mad r13.w, r4.y, r4.y, l(-1.000000)
mad r14.w, r4.y, l(0.500000), l(0.800000)
mul r14.w, r14.w, r14.w
mul r15.w, r14.w, l(0.500000)
mov_sat r16.x, r7.w
mad r14.w, -r14.w, l(0.500000), l(1.000000)
mad r16.x, r16.x, r14.w, r15.w
dp3 r16.y, r6.xyzx, l(0.333330, 0.333330, 0.333330, 0.000000)
mul r16.y, r16.y, l(50.000000)
min r16.y, r16.y, l(1.000000)
mad r7.xyz, -r7.xyzx, r7.xyzx, r16.yyyy
mov r10.w, l(1.000000)
mov r17.xyz, r10.xyzx
mov r17.w, l(1.000000)
mov r16.yzw, r8.xxyz
mov r18.xyz, r12.xyzx
mov r18.w, r4.w
mov r19.x, r5.w
loop
  uge r19.y, r18.w, r2.w
  breakc_nz r19.y
  ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r19.yzw, r19.x, l(0), t16.xxyz
  ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r20.xyz, r19.x, l(32), t16.xyzx
  ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r21.xyzw, r19.x, l(80), t16.xyzw
  ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r22.xyzw, r19.x, l(96), t16.xyzw
  ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r23.xyz, r19.x, l(112), t16.xyzx
  ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r24.xyzw, r19.x, l(128), t16.yzxw
  ieq r20.w, r19.y, l(10)
  if_nz r20.w
    mov r25.xyz, cb0[7].xyzx
    mov r26.xyz, r13.xyzx
    mov r27.xyz, cb0[7].xyzx
    mov r20.w, r4.x
    mov r23.w, l(1.000000)
  else
    ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r28.xyzw, r19.x, l(16), t16.xyzw
    ieq r25.w, r19.y, l(9)
    if_nz r25.w
      ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r25.w, r19.x, l(12), t16.xxxx
      and r26.w, r25.w, l(255)
      ushr r25.w, r25.w, l(16)
      ieq r27.w, r26.w, l(255)
      ieq r26.w, r0.y, r26.w
      ieq r25.w, r0.y, r25.w
      or r25.w, r25.w, r26.w
      or r25.w, r27.w, r25.w
      and r25.w, r25.w, l(0x3f800000)
      mad r26.xyz, -r9.xyzx, r0.zzzz, r28.xyzx
      dp3 r26.w, r21.xyzx, r26.xyzx
      mad r29.xyz, r26.wwww, r21.xyzx, -r26.xyzx
      dp3 r30.x, r29.xyzx, r22.xyzx
      dp3 r30.y, r29.xyzx, r23.xyzx
      max r29.xy, -r24.zxzz, r30.xyxx
      min r29.xy, r24.zxzz, r29.xyxx
      mul r29.yzw, r23.xxyz, r29.yyyy
      mad r29.xyz, r22.xyzx, r29.xxxx, r29.yzwy
      add r29.xyz, r26.xyzx, r29.xyzx
      lt r26.w, l(0.000000), r20.x
      if_nz r26.w
        dp3 r26.w, r29.xyzx, r29.xyzx
        sqrt r27.w, r26.w
        div r29.w, l(1.000000, 1.000000, 1.000000, 1.000000), r28.w
        add r30.x, -r27.w, r28.w
        mul r29.w, r29.w, r30.x
        mul_sat r29.w, r29.w, l(5.000000)
        add r27.w, -r20.x, r27.w
        max r27.w, r27.w, l(0.000000)
        div r27.w, r27.w, r20.x
        add r27.w, r27.w, l(1.000000)
        mul r29.w, r29.w, r29.w
        mul r27.w, r27.w, r27.w
        div r27.w, r29.w, r27.w
        mul r27.w, r25.w, r27.w
        rsq r26.w, r26.w
        mul r27.xyz, r26.wwww, r29.xyzx
      else
        mad r30.xyz, r24.xxxx, r23.yzxy, r26.yzxy
        mad r31.xyz, -r24.zzzz, r22.yzxy, r30.xyzx
        dp3 r26.w, r31.xyzx, r31.xyzx
        rsq r26.w, r26.w
        mad r30.xyz, r24.zzzz, r22.yzxy, r30.xyzx
        dp3 r29.w, r30.xyzx, r30.xyzx
        rsq r29.w, r29.w
        mul r30.xyz, r29.wwww, r30.xyzx
        mad r32.xyz, -r24.xxxx, r23.yzxy, r26.yzxy
        mad r33.xyz, -r24.zzzz, r22.zxyz, r32.yzxy
        dp3 r29.w, r33.xyzx, r33.xyzx
        rsq r29.w, r29.w
        mul r33.xyz, r29.wwww, r33.xyzx
        mad r32.xyz, r24.zzzz, r22.yzxy, r32.xyzx
        dp3 r29.w, r32.xyzx, r32.xyzx
        rsq r29.w, r29.w
        mad r34.xyz, r31.yzxy, r26.wwww, -r33.xyzx
        mad r31.xyz, r31.xyzx, r26.wwww, -r30.xyzx
        mul r35.xyz, r31.xyzx, r34.xyzx
        mad r31.xyz, r34.zxyz, r31.yzxy, -r35.xyzx
        mad r33.xyz, r32.yzxy, r29.wwww, -r33.xyzx
        mad r30.xyz, r32.xyzx, r29.wwww, -r30.xyzx
        mul r32.xyz, r30.xyzx, r33.xyzx
        mad r30.xyz, r33.zxyz, r30.yzxy, -r32.xyzx
        mul r30.xyz, r30.xyzx, r31.xyzx
        dp3 r26.w, r30.xyzx, r30.xyzx
        sqrt r26.w, r26.w
        sqrt r26.w, r26.w
        mul r26.w, r21.w, r26.w
        mul r27.w, r25.w, r26.w
        dp3 r25.w, r26.xyzx, r26.xyzx
        rsq r25.w, r25.w
        mul r27.xyz, r25.wwww, r26.xyzx
      endif
      dp3 r25.w, r29.xyzx, r29.xyzx
      mul_sat r26.w, r24.y, r25.w
      mul r26.w, r26.w, r27.w
      sqrt r27.w, r25.w
      mad r27.w, -r28.w, l(0.800000), r27.w
      div r29.w, l(1.000000, 1.000000, 1.000000, 1.000000), r28.w
      mul r27.w, r27.w, r29.w
      mad_sat r27.w, -r27.w, l(5.000000), l(1.000000)
      mul r26.w, r26.w, r27.w
      rsq r25.w, r25.w
      mul r25.xyz, r25.wwww, r29.xyzx
      dp3 r23.w, -r25.xyzx, r21.xyzx
      add r25.w, r23.w, l(0.000001)
      div_sat r25.w, r24.w, r25.w
      log r25.w, r25.w
      mul r25.w, r25.w, r28.w
      exp r25.w, r25.w
      add r25.w, -r25.w, l(1.000000)
      ge r27.w, r23.w, l(0.000000)
      and r27.w, r27.w, l(0x3f800000)
      mul r25.w, r25.w, r27.w
      mul r20.w, r25.w, r26.w
    else
      ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r25.w, r19.x, l(12), t16.xxxx
      and r26.w, r25.w, l(255)
      ushr r25.w, r25.w, l(16)
      ieq r27.w, r26.w, l(255)
      ieq r26.w, r0.y, r26.w
      ieq r25.w, r0.y, r25.w
      or r25.w, r25.w, r26.w
      or r25.w, r27.w, r25.w
      and r25.w, r25.w, l(0x3f800000)
      mad r26.xyz, -r9.xyzx, r0.zzzz, r28.xyzx
      dp3 r26.w, r26.xyzx, r26.xyzx
      sqrt r27.w, r26.w
      div r28.x, l(1.000000, 1.000000, 1.000000, 1.000000), r28.w
      add r28.y, -r27.w, r28.w
      mul r28.x, r28.y, r28.x
      mul_sat r28.x, r28.x, l(5.000000)
      add r27.w, -r20.x, r27.w
      max r27.w, r27.w, l(0.000000)
      div r20.x, r27.w, r20.x
      add r20.x, r20.x, l(1.000000)
      mul r27.w, r28.x, r28.x
      mul r20.x, r20.x, r20.x
      div r20.x, r27.w, r20.x
      mul r20.w, r25.w, r20.x
      rsq r20.x, r26.w
      mul r27.xyz, r20.xxxx, r26.xyzx
      mov r25.xyz, r27.xyzx
      mov r23.w, l(1.000000)
    endif
  endif
  dp3 r20.x, r2.xyzx, r27.xyzx
  mov_sat r25.w, r20.x
  mov_sat r23.w, r23.w
  mul r23.w, r23.w, r25.w
  lt r25.w, l(0.000000), r20.w
  lt r26.w, l(0.000000), r23.w
  or r26.w, r0.w, r26.w
  and r25.w, r25.w, r26.w
  if_nz r25.w
    lt r20.z, l(0.000000), r20.z
    ine r25.w, r19.y, l(10)
    if_nz r25.w
      ieq r25.w, r19.y, l(6)
      if_nz r25.w
        dp4 r28.x, r21.xyzw, r10.xyzw
        dp4 r28.y, r22.xyzw, r10.xyzw
        dp4 r22.w, r24.zxyw, r10.xyzw
        div r28.xy, r28.xyxx, r22.wwww
        lt r22.w, r22.w, l(0.000000)
        mad r29.xy, r28.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
        max r24.w, |r29.y|, |r29.x|
        lt r24.w, l(1.000000), r24.w
        or r22.w, r22.w, r24.w
        if_nz r22.w
          mov r22.w, l(1.000000)
          mov r24.w, l(-1)
        else
          utof r28.z, r19.z
          sample_l_indexable(texture2darray)(float,float,float,float) r22.w, r28.xyzx, t19.yzwx, s1, l(0.000000)
          eq r24.w, r22.w, l(0.000000)
        endif
      else
        ieq r25.w, r19.y, l(7)
        if_nz r25.w
          lt r28.xyz, |r25.yzzy|, |r25.xxyx|
          lt r29.xyz, r25.xzyx, l(0.000000, 0.000000, 0.000000, 0.000000)
          movc r29.xyz, r29.xyzx, l(0,4,2,0), l(1,5,3,0)
          movc r28.yz, r28.yyzy, r29.xxzx, r29.yyyy
          movc r25.w, r28.x, r28.y, r28.z
          ine r24.w, r19.z, r25.w
        else
          ieq r19.z, r19.y, l(8)
          if_nz r19.z
            ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r28.xyzw, r19.x, l(144), t16.xyzw
            ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r29.xyzw, r19.x, l(160), t16.xyzw
            ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r30.xyzw, r19.x, l(192), t16.xyzw
            dp4 r28.x, r28.xyzw, r17.xyzw
            dp4 r28.y, r29.xyzw, r17.xyzw
            dp4 r19.z, r30.xyzw, r17.xyzw
            div r28.xy, r28.xyxx, r19.zzzz
            lt r19.z, r19.z, l(0.000000)
            lt r28.zw, r28.xxxy, r21.xxxy
            or r19.z, r19.z, r28.z
            or r19.z, r28.w, r19.z
            lt r28.xy, r21.zwzz, r28.xyxx
            or r19.z, r19.z, r28.x
            or r19.z, r28.y, r19.z
            movc r20.z, r19.z, l(0), r20.z
          endif
          mov r24.w, l(0)
        endif
        mov r22.w, l(1.000000)
      endif
    else
      mov r22.w, l(1.000000)
      mov r24.w, l(0)
    endif
    if_z r24.w
      if_nz r20.z
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r28.xyzw, r19.x, l(64), t16.xyzw
        mov r1.z, r19.w
        ld_indexable(texture2darray)(float,float,float,float) r29.xyzw, r1.xyzw, t4.xyzw
        dp4 r1.z, r28.xyzw, r29.xyzw
        add r1.z, -r1.z, l(1.000000)
      else
        mov r1.z, l(1.000000)
      endif
      lt r19.z, l(0.000000), r1.z
      if_nz r19.z
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r28.xyzw, r19.x, l(48), t16.xyzw
        dp3 r19.z, r25.xyzx, r14.xyzx
        mul_sat r19.z, r19.z, cb0[9].x
        add r19.z, -r19.z, l(1.000000)
        mul r19.z, r19.z, r19.z
        mul r1.z, r1.z, r20.w
        mul r1.z, r19.z, r1.z
        mul r1.z, r1.z, r22.w
        dp3 r19.z, r27.xyzx, r11.xyzx
        mad r19.z, -r20.x, r7.w, r19.z
        ge r19.w, l(0.000000), r19.z
        max r20.x, r7.w, r20.x
        max r20.x, r20.x, l(0.000001)
        movc r19.w, r19.w, l(1.000000), r20.x
        div r19.z, r19.z, r19.w
        mad r19.z, r6.w, r19.z, r8.w
        max r19.z, r19.z, l(0.000000)
        mul r19.z, r19.z, r23.w
        dp3 r19.w, r2.xyzx, r25.xyzx
        mad r20.x, r9.w, l(0.500000), -r19.w
        mul_sat r20.x, r11.w, r20.x
        mad r19.w, r9.w, l(0.500000), r19.w
        mul_sat r19.w, r11.w, r19.w
        mad r20.xzw, r5.xxyz, r20.xxxx, r19.wwww
        mul r25.xyzw, r28.xyzw, r1.zzzz
        movc r20.xzw, r0.wwww, r20.xxzw, r19.zzzz
        mad r16.yzw, r25.xxyz, r20.xxzw, r16.yyzw
        ine r1.z, r19.y, l(9)
        movc r24.x, r1.z, r20.y, r24.x
        ieq r1.z, r19.y, l(9)
        if_nz r1.z
          dp3 r19.y, r21.xyzx, r15.xyzx
          add r19.y, r19.y, l(0.000001)
          dp3 r19.z, r21.xyzx, r26.xyzx
          div r19.y, r19.z, r19.y
          mad r19.yzw, r15.xxyz, r19.yyyy, -r26.xxyz
          dp3 r20.x, r19.yzwy, r22.xyzx
          dp3 r20.y, r19.yzwy, r23.xyzx
          mov r24.y, r24.z
          max r19.yz, -r24.yyxy, r20.xxyx
          min r19.yz, r24.yyxy, r19.yyzy
          mad r20.xyz, r22.xyzx, r19.yyyy, r26.xyzx
          mad r19.yzw, r23.xxyz, r19.zzzz, r20.xxyz
        else
          dp3 r20.x, r26.xyzx, r15.xyzx
          mad r20.xyz, -r20.xxxx, r15.xyzx, r26.xyzx
          dp3 r20.w, r20.xyzx, r20.xyzx
          sqrt r20.w, r20.w
          add r20.w, r20.w, l(0.000001)
          div_sat r20.w, r24.x, r20.w
          mad r19.yzw, -r20.xxyz, r20.wwww, r26.xxyz
        endif
        dp3 r20.x, r19.yzwy, r19.yzwy
        sqrt r20.x, r20.x
        max r20.x, r20.x, l(0.000001)
        div r19.yzw, r19.yyzw, r20.xxxx
        dp2 r20.y, r24.xzxx, r24.xzxx
        sqrt r20.y, r20.y
        movc r1.z, r1.z, r20.y, r24.x
        div_sat r1.z, r1.z, r20.x
        mad r1.z, r1.z, l(0.500000), r4.y
        min r1.z, r1.z, l(1.000000)
        div r1.z, r4.y, r1.z
        mul r1.z, r1.z, r1.z
        mad r20.xyz, -r10.xyzx, r0.xxxx, r19.yzwy
        dp3 r20.w, r20.xyzx, r20.xyzx
        rsq r20.w, r20.w
        mul r20.xyz, r20.wwww, r20.xyzx
        dp3_sat r20.w, r2.xyzx, r20.xyzx
        mul r20.w, r20.w, r20.w
        mad r20.w, r20.w, r13.w, l(1.000000)
        mul r20.w, r20.w, r20.w
        div r20.w, r12.w, r20.w
        mul r1.z, r1.z, r20.w
        dp3_sat r20.w, r2.xyzx, r19.yzwy
        mad r20.w, r20.w, r14.w, r15.w
        mul r20.w, r16.x, r20.w
        max r20.w, r20.w, l(0.000001)
        div r1.z, r1.z, r20.w
        dp3 r19.y, r19.yzwy, r20.xyzx
        add r19.y, -r19.y, l(1.000000)
        mul r19.z, r19.y, r19.y
        mul r19.z, r19.z, r19.z
        mul r19.y, r19.z, r19.y
        mad r19.yzw, r19.yyyy, r7.xxyz, r6.xxyz
        mul r19.yzw, r1.zzzz, r19.yyzw
        mul r19.yzw, r19.yyzw, l(0.000000, 0.250000, 0.250000, 0.250000)
        mul r19.yzw, r19.yyzw, r25.wwww
        mul r19.yzw, r23.wwww, r19.yyzw
        mad r18.xyz, r19.yzwy, r28.xyzx, r18.xyzx
      endif
    endif
  endif
  iadd r18.w, r18.w, l(1)
  imin r1.z, r18.w, l(254)
  ld_structured r19.x, r1.z, l(0), g2.xxxx
endloop
add r0.y, -r4.z, l(1.000000)
max r0.y, r0.y, l(0.000000)
mul r3.xyz, r0.yyyy, r3.xyzx
if_nz r3.w
  ld_indexable(texture2d)(float,float,float,float) r0.y, l(0, 0, 0, 0), t25.xyzw
  mul_sat r0.y, r0.y, l(0.400000)
  sqrt r0.y, r0.y
  add r0.y, r0.y, l(-0.050000)
  max r0.y, r0.y, l(0.001000)
  mul r4.xyz, r11.zxyz, l(0.000000, -1.000000, 0.000000, 0.000000)
  mad r4.xyz, r11.yzxy, l(-1.000000, 0.000000, 0.000000, 0.000000), -r4.xyzx
  dp2 r0.w, r4.xyxx, r4.xyxx
  rsq r0.w, r0.w
  mul r4.xyz, r0.wwww, r4.xyzx
  ld_structured_indexable(structured_buffer, stride=32)(mixed,mixed,mixed,mixed) r5.xyz, l(0), l(16), t24.xyzx
  mul r8.xyz, -r11.xyzx, r5.yyyy
  mad r5.xyw, r5.xxxx, r4.xyxz, r8.xyxz
  mad r5.xyz, r5.zzzz, l(0.000000, 0.000000, 1.000000, 0.000000), r5.xywx
  dp3 r0.w, r5.xyzx, r5.xyzx
  rsq r0.w, r0.w
  mul r5.xyz, r0.wwww, r5.xyzx
  ld_structured_indexable(structured_buffer, stride=32)(mixed,mixed,mixed,mixed) r8.xyzw, l(0), l(0), t24.xyzw
  mul r8.xyzw, r0.yyyy, r8.xyzw
  dp3_sat r0.w, r2.xyzx, r5.xyzx
  mad r12.xyz, r0.wwww, r8.xyzx, r16.yzwy
  mad r13.xyz, -r10.xyzx, r0.xxxx, r5.xyzx
  dp3 r1.z, r13.xyzx, r13.xyzx
  rsq r1.z, r1.z
  mul r13.xyz, r1.zzzz, r13.xyzx
  dp3_sat r1.z, r2.xyzx, r13.xyzx
  mul r1.z, r1.z, r1.z
  mad r1.z, r1.z, r13.w, l(1.000000)
  mul r1.z, r1.z, r1.z
  div r1.z, r12.w, r1.z
  mad r1.w, r0.w, r14.w, r15.w
  mul r1.w, r1.w, r16.x
  max r1.w, r1.w, l(0.000001)
  div r1.z, r1.z, r1.w
  dp3 r1.w, r5.xyzx, r13.xyzx
  add r1.w, -r1.w, l(1.000000)
  mul r2.w, r1.w, r1.w
  mul r2.w, r2.w, r2.w
  mul r1.w, r1.w, r2.w
  mad r5.xyz, r1.wwww, r7.xyzx, r6.xyzx
  mul r5.xyz, r1.zzzz, r5.xyzx
  mul r5.xyz, r8.wwww, r5.xyzx
  mul r5.xyz, r0.wwww, r5.xyzx
  mul r5.xyz, r8.xyzx, r5.xyzx
  mad r5.xyz, r5.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r18.xyzx
  ld_structured_indexable(structured_buffer, stride=32)(mixed,mixed,mixed,mixed) r8.xyzw, l(1), l(16), t24.xyzw
  mul r13.xyz, -r11.xyzx, r8.yyyy
  mad r13.xyz, r8.xxxx, r4.xyzx, r13.xyzx
  mad r8.xyz, r8.zzzz, l(0.000000, 0.000000, 1.000000, 0.000000), r13.xyzx
  dp3 r0.w, r8.xyzx, r8.xyzx
  rsq r0.w, r0.w
  mul r13.xyz, r0.wwww, r8.xyzx
  ld_structured_indexable(structured_buffer, stride=32)(mixed,mixed,mixed,mixed) r17.xyzw, l(1), l(0), t24.xyzw
  mul r17.xyzw, r0.yyyy, r17.xyzw
  dp3_sat r1.z, r2.xyzx, r13.xyzx
  ne r1.w, l(0.000000, 0.000000, 0.000000, 0.000000), r8.w
  if_nz r1.w
    mad r19.xyz, r9.xyzx, r0.zzzz, cb0[3].xyzx
    mov r19.w, l(1.000000)
    dp4 r20.x, cb1[0].xyzw, r19.xyzw
    dp4 r20.y, cb1[1].xyzw, r19.xyzw
    dp4 r20.z, cb1[2].xyzw, r19.xyzw
    dp4 r20.w, cb1[3].xyzw, r19.xyzw
    mad r8.xyz, r8.xyzx, r0.wwww, r19.xyzx
    mov r8.w, l(1.000000)
    dp4 r19.x, cb1[0].xyzw, r8.xyzw
    dp4 r19.y, cb1[1].xyzw, r8.xyzw
    dp4 r19.z, cb1[2].xyzw, r8.xyzw
    dp4 r19.w, cb1[3].xyzw, r8.xyzw
    add r8.xyzw, -r20.xyzw, r19.xyzw
    mul r19.xyzw, r8.xyzw, l(0.001500, 0.001500, 0.001500, 0.001500)
    mad r8.xyzw, r8.xyzw, l(0.001500, 0.001500, 0.001500, 0.001500), r20.xyzw
    mov r20.zw, l(0,0,0,0)
    mov r21.xyzw, r19.xyzw
    mov r22.xyzw, r8.xyzw
    mov r0.w, l(1.000000)
    mov r1.w, l(0)
    loop
      ige r2.w, r1.w, l(16)
      breakc_nz r2.w
      div r14.xyz, r22.xyzx, r22.wwww
      mad r15.xy, r14.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
      add r2.w, -r15.y, l(1.000000)
      lt r3.w, r15.x, l(0.000000)
      lt r4.w, l(1.000000), r15.x
      or r3.w, r3.w, r4.w
      lt r4.w, r2.w, l(0.000000)
      or r3.w, r3.w, r4.w
      lt r2.w, l(1.000000), r2.w
      or r2.w, r2.w, r3.w
      if_nz r2.w
        break
      endif
      add r15.z, -r15.y, l(1.000000)
      mul r14.xy, r15.xzxx, cb0[8].xyxx
      ftoi r20.xy, r14.xyxx
      ld_indexable(texture2d)(float,float,float,float) r2.w, r20.xyzw, t13.yzwx
      add r3.w, r14.z, -cb2[223].x
      div r3.w, cb2[223].y, r3.w
      mad r3.w, r3.w, cb0[4].y, l(-0.010000)
      mad r4.w, r2.w, cb0[4].y, -r3.w
      mad r2.w, -r2.w, cb0[4].y, r3.w
      add r2.w, r2.w, l(-0.030000)
      max r2.w, r2.w, l(0.000000)
      mul r2.w, r2.w, l(0.333333343)
      max r2.w, r2.w, r4.w
      mad r2.w, -r2.w, l(200.000000), l(1.000000)
      add r2.w, -r2.w, l(1.000000)
      min r0.w, r0.w, r2.w
      add r22.xyzw, r21.xyzw, r22.xyzw
      mul r21.xyzw, r21.xyzw, l(1.050000, 1.050000, 1.050000, 1.050000)
      iadd r1.w, r1.w, l(1)
    endloop
    mad_sat r1.w, r0.z, cb0[4].y, l(-2.000000)
    add r2.w, -r0.w, l(1.000000)
    mad r0.w, r1.w, r2.w, r0.w
    min r0.w, r0.w, l(1.000000)
  else
    mov r0.w, l(1.000000)
  endif
  mul r8.xyz, r17.xyzx, r1.zzzz
  mad r8.xyz, r8.xyzx, r0.wwww, r12.xyzx
  mad r12.xyz, -r10.xyzx, r0.xxxx, r13.xyzx
  dp3 r1.w, r12.xyzx, r12.xyzx
  rsq r1.w, r1.w
  mul r12.xyz, r1.wwww, r12.xyzx
  dp3_sat r1.w, r2.xyzx, r12.xyzx
  mul r1.w, r1.w, r1.w
  mad r1.w, r1.w, r13.w, l(1.000000)
  mul r1.w, r1.w, r1.w
  div r1.w, r12.w, r1.w
  mad r2.w, r1.z, r14.w, r15.w
  mul r2.w, r2.w, r16.x
  max r2.w, r2.w, l(0.000001)
  div r1.w, r1.w, r2.w
  dp3 r2.w, r13.xyzx, r12.xyzx
  add r2.w, -r2.w, l(1.000000)
  mul r3.w, r2.w, r2.w
  mul r3.w, r3.w, r3.w
  mul r2.w, r2.w, r3.w
  mad r12.xyz, r2.wwww, r7.xyzx, r6.xyzx
  mul r12.xyz, r1.wwww, r12.xyzx
  mul r12.xyz, r17.wwww, r12.xyzx
  mul r12.xyz, r1.zzzz, r12.xyzx
  mul r12.xyz, r17.xyzx, r12.xyzx
  mul r12.xyz, r0.wwww, r12.xyzx
  mad r5.xyz, r12.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx
  ld_structured_indexable(structured_buffer, stride=32)(mixed,mixed,mixed,mixed) r17.xyzw, l(2), l(16), t24.xyzw
  mul r11.xyz, -r11.xyzx, r17.yyyy
  mad r4.xyz, r17.xxxx, r4.xyzx, r11.xyzx
  mad r4.xyz, r17.zzzz, l(0.000000, 0.000000, 1.000000, 0.000000), r4.xyzx
  dp3 r0.w, r4.xyzx, r4.xyzx
  rsq r0.w, r0.w
  mul r11.xyz, r0.wwww, r4.xyzx
  ld_structured_indexable(structured_buffer, stride=32)(mixed,mixed,mixed,mixed) r19.xyzw, l(2), l(0), t24.xyzw
  mul r19.xyzw, r0.yyyy, r19.xyzw
  dp3_sat r0.y, r2.xyzx, r11.xyzx
  ne r1.z, l(0.000000, 0.000000, 0.000000, 0.000000), r17.w
  if_nz r1.z
    mad r9.xyz, r9.xyzx, r0.zzzz, cb0[3].xyzx
    mov r9.w, l(1.000000)
    dp4 r17.x, cb1[0].xyzw, r9.xyzw
    dp4 r17.y, cb1[1].xyzw, r9.xyzw
    dp4 r17.z, cb1[2].xyzw, r9.xyzw
    dp4 r17.w, cb1[3].xyzw, r9.xyzw
    mad r4.xyz, r4.xyzx, r0.wwww, r9.xyzx
    mov r4.w, l(1.000000)
    dp4 r9.x, cb1[0].xyzw, r4.xyzw
    dp4 r9.y, cb1[1].xyzw, r4.xyzw
    dp4 r9.z, cb1[2].xyzw, r4.xyzw
    dp4 r9.w, cb1[3].xyzw, r4.xyzw
    add r4.xyzw, -r17.xyzw, r9.xyzw
    mul r9.xyzw, r4.xyzw, l(0.001500, 0.001500, 0.001500, 0.001500)
    mad r4.xyzw, r4.xyzw, l(0.001500, 0.001500, 0.001500, 0.001500), r17.xyzw
    mov r17.zw, l(0,0,0,0)
    mov r20.xyzw, r9.xyzw
    mov r21.xyzw, r4.xyzw
    mov r0.w, l(1.000000)
    mov r1.z, l(0)
    loop
      ige r1.w, r1.z, l(16)
      breakc_nz r1.w
      div r12.xyz, r21.xyzx, r21.wwww
      mad r13.xy, r12.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
      add r1.w, -r13.y, l(1.000000)
      lt r2.w, r13.x, l(0.000000)
      lt r3.w, l(1.000000), r13.x
      or r2.w, r2.w, r3.w
      lt r3.w, r1.w, l(0.000000)
      or r2.w, r2.w, r3.w
      lt r1.w, l(1.000000), r1.w
      or r1.w, r1.w, r2.w
      if_nz r1.w
        break
      endif
      add r13.z, -r13.y, l(1.000000)
      mul r12.xy, r13.xzxx, cb0[8].xyxx
      ftoi r17.xy, r12.xyxx
      ld_indexable(texture2d)(float,float,float,float) r1.w, r17.xyzw, t13.yzwx
      add r2.w, r12.z, -cb2[223].x
      div r2.w, cb2[223].y, r2.w
      mad r2.w, r2.w, cb0[4].y, l(-0.010000)
      mad r3.w, r1.w, cb0[4].y, -r2.w
      mad r1.w, -r1.w, cb0[4].y, r2.w
      add r1.w, r1.w, l(-0.030000)
      max r1.w, r1.w, l(0.000000)
      mul r1.w, r1.w, l(0.333333343)
      max r1.w, r1.w, r3.w
      mad r1.w, -r1.w, l(200.000000), l(1.000000)
      add r1.w, -r1.w, l(1.000000)
      min r0.w, r0.w, r1.w
      add r21.xyzw, r20.xyzw, r21.xyzw
      mul r20.xyzw, r20.xyzw, l(1.050000, 1.050000, 1.050000, 1.050000)
      iadd r1.z, r1.z, l(1)
    endloop
    mad_sat r0.z, r0.z, cb0[4].y, l(-2.000000)
    add r1.z, -r0.w, l(1.000000)
    mad r0.z, r0.z, r1.z, r0.w
    min r0.z, r0.z, l(1.000000)
  else
    mov r0.z, l(1.000000)
  endif
  mul r4.xyz, r19.xyzx, r0.yyyy
  mad r16.yzw, r4.xxyz, r0.zzzz, r8.xxyz
  mad r4.xyz, -r10.xyzx, r0.xxxx, r11.xyzx
  dp3 r0.x, r4.xyzx, r4.xyzx
  rsq r0.x, r0.x
  mul r4.xyz, r0.xxxx, r4.xyzx
  dp3_sat r0.x, r2.xyzx, r4.xyzx
  mul r0.x, r0.x, r0.x
  mad r0.x, r0.x, r13.w, l(1.000000)
  mul r0.x, r0.x, r0.x
  div r0.x, r12.w, r0.x
  mad r0.w, r0.y, r14.w, r15.w
  mul r0.w, r0.w, r16.x
  max r0.w, r0.w, l(0.000001)
  div r0.x, r0.x, r0.w
  dp3 r0.w, r11.xyzx, r4.xyzx
  add r0.w, -r0.w, l(1.000000)
  mul r1.z, r0.w, r0.w
  mul r1.z, r1.z, r1.z
  mul r0.w, r0.w, r1.z
  mad r2.xyz, r0.wwww, r7.xyzx, r6.xyzx
  mul r2.xyz, r0.xxxx, r2.xyzx
  mul r2.xyz, r19.wwww, r2.xyzx
  mul r0.xyw, r0.yyyy, r2.xyxz
  mul r0.xyw, r19.xyxz, r0.xyxw
  mul r0.xyz, r0.zzzz, r0.xywx
  mad r18.xyz, r0.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx
endif
mad r0.xyz, r16.yzwy, r3.xyzx, r18.xyzx
mov r0.w, l(0)
store_uav_typed u1.xyzw, r1.xyyy, r0.xyzw
ret
// Approximately 1948 instruction slots used

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