//DYNAMIC LIGHT -- FIXED -- not totaly there is some problem with alt tab and back
// Generated by Microsoft (R) HLSL Shader Compiler 9.30.960.8229
//
//   using 3Dmigoto v1.3.3 on Fri Mar 02 20:42:21 2018
//
//
// Buffer Definitions:
//
// cbuffer PER_BATCH
// {
//
//   float4 vfHeightDensityRampParams;  // Offset:    0 Size:    16
//   float4 vfScatteringParams;         // Offset:   16 Size:    16
//   float4 InjectInscatteringParams;   // Offset:   32 Size:    16
//   float4 FrustumTL;                  // Offset:   48 Size:    16
//   float4 vfScatteringBlendParams;    // Offset:   64 Size:    16
//   float4 PS_WorldViewPos;            // Offset:   80 Size:    16
//   row_major float4x4 TexGen1;        // Offset:   96 Size:    64
//   float4 FrustumBL;                  // Offset:  160 Size:    16
//   float4 vfScatteringColor;          // Offset:  176 Size:    16
//   float4 vfDistributionParams;       // Offset:  192 Size:    16
//   row_major float4x4 TexGen0;        // Offset:  208 Size:    64
//   float4 SunColor;                   // Offset:  272 Size:    16
//   float4 CloudShadowParams;          // Offset:  288 Size:    16
//   float4 vfHeightDensityParams;      // Offset:  304 Size:    16
//   row_major float4x4 TexGen2;        // Offset:  320 Size:    64
//   float3 CamFrontVector_POM;         // Offset:  384 Size:    12
//   float4 SunDir;                     // Offset:  400 Size:    16
//   float4 fOneDivFarDist;             // Offset:  416 Size:    16
//   float4 fDepthTestBias;             // Offset:  432 Size:    16
//   float4 ExponentialHeightFogColor;  // Offset:  448 Size:    16
//   row_major float4x4 TexGen3;        // Offset:  464 Size:    64
//   float4 DispatchSize;               // Offset:  528 Size:    16
//   float4 FrustumTR;                  // Offset:  544 Size:    16
//   float4 ScreenSize;                 // Offset:  560 Size:    16
//   float4 CloudShadowAnimParams;      // Offset:  576 Size:    16
//   float4 vfScatteringSecondaryColor; // Offset:  592 Size:    16
//   float4 g_vVisAreasParams[64];      // Offset:  608 Size:  1024 [unused]
//   float4 fKernelRadius;              // Offset: 1632 Size:    16
//
// }
//
// cbuffer PER_FRAME
// {
//
//   float4 g_VS_SunLightDir;           // Offset:   64 Size:    16
//
// }
//
// Resource bind info for VolumeLightsShadeInfo
// {
//
//   struct SVolumeLightShadeInfo
//   {
//
//       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 TiledClipVolumeInfo
// {
//
//   struct STiledClipVolumeInfo
//   {
//
//       uint data;                     // Offset:    0
//
//   } $Element;                        // Offset:    0 Size:     4
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// SAMPLER_STATE_depthMapSampler   sampler_c      NA          NA    0        1
// TrilinearClampSamplerState        sampler      NA          NA    1        1
// cloudShadowMap                    sampler      NA          NA    2        1
// SampStateComp                   sampler_c      NA          NA   14        1
// cloudShadowMap                    texture  float4          2d    0        1
// depthMapSampler3                  texture  float4          2d    2        1
// depthMapSampler2                  texture  float4          2d    3        1
// depthMapVFTexture0                texture  float4          2d    5        1
// depthMapVFTexture1                texture  float4          2d    6        1
// LightGridInput                    texture    uint         buf    8        1
// LightCountInput                   texture    uint         buf    9        1
// MaxDepthBuffer                    texture   float          2d   10        1
// ClipVolumeStencil                 texture   uint2     2darray   11        1
// VolumeLightsShadeInfo             texture  struct         r/o   12        1
// VolumetricFogDensityColorInput    texture  float3          3d   13        1
// VolumetricFogDensityInput         texture   float          3d   14        1
// VolumetricFogEmissiveInput        texture  float3          3d   15        1
// DiffuseCubeArray                  texture  float4   cubearray   18        1
// SpotTexArray                      texture  float4     2darray   19        1
// ShadowPool                        texture  float4          2d   20        1
// TiledClipVolumeInfo               texture  struct         r/o   23        1
// VolumetricFogInscatterOUT             UAV  float4          3d    0        1
// PER_BATCH                         cbuffer      NA          NA    0        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_immediateConstantBuffer { { 1.000000, 0, 0, 0},
                              { 0, 1.000000, 0, 0},
                              { 0, 0, 1.000000, 0},
                              { 0, 0, 0, 1.000000} }
dcl_constantbuffer cb0[103], immediateIndexed
dcl_constantbuffer cb2[5], immediateIndexed
dcl_constantbuffer cb13[30], immediateIndexed
dcl_sampler s0, mode_comparison
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_sampler s14, mode_comparison
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2d (float,float,float,float) t5
dcl_resource_texture2d (float,float,float,float) t6
dcl_resource_buffer (uint,uint,uint,uint) t8
dcl_resource_buffer (uint,uint,uint,uint) t9
dcl_resource_texture2d (float,float,float,float) t10
dcl_resource_texture2darray (uint,uint,uint,uint) t11
dcl_resource_structured t12, 208
dcl_resource_texture3d (float,float,float,float) t13
dcl_resource_texture3d (float,float,float,float) t14
dcl_resource_texture3d (float,float,float,float) t15
dcl_resource_texturecubearray (float,float,float,float) t18
dcl_resource_texture2darray (float,float,float,float) t19
dcl_resource_texture2d (float,float,float,float) t20
dcl_resource_structured t23, 4
dcl_uav_typed_texture3d (float,float,float,float) u0
dcl_input vThreadIDInGroupFlattened
dcl_input vThreadGroupID.xyz
dcl_input vThreadID.xyz
//dcl_temps 28

dcl_temps 31

//3Dmigoto
dcl_resource_texture2d (float,float,float,float) t125
dcl_resource_texture1d (float,float,float,float) t120

dcl_tgsm_raw g0, 4
dcl_tgsm_structured g1, 4, 255
dcl_thread_group 4, 4, 4
ftou r0.xy, cb0[33].xyxx
imul null, r0.xz, r0.xxxx, vThreadGroupID.zzyz
imad r0.x, r0.x, r0.y, r0.z
iadd r0.x, r0.x, vThreadGroupID.x
if_z vThreadIDInGroupFlattened.x
  ld_indexable(buffer)(uint,uint,uint,uint) r0.y, r0.xxxx, t9.yxzw
  store_raw g0.x, l(0), r0.y
endif
sync_g_t
ld_raw r0.y, l(0), g0.xxxx
mov r0.z, vThreadIDInGroupFlattened.x
loop
  uge r0.w, r0.z, r0.y
  breakc_nz r0.w
  imad r0.w, r0.x, l(255), r0.z
  ld_indexable(buffer)(uint,uint,uint,uint) r0.w, r0.wwww, t8.yzwx
  store_structured g1.x, r0.z, l(0), r0.w
  iadd r0.z, r0.z, l(64)
endloop
sync_g_t
mov r0.xyz, vThreadID.xyzx
mov r0.w, l(0)
ld_indexable(texture3d)(float,float,float,float) r1.w, r0.xyzw, t14.yzwx
add r2.x, cb0[12].x, cb0[12].y
ld_indexable(texture2d)(float,float,float,float) r2.y, r0.xyww, t10.yxzw
mul r2.z, r2.x, r2.y
utof r3.xyz, vThreadID.xyzx

//fix intensity
add r4.xy, r3.zzzz, l(-5.000000, -3.000000, 0.000000, 0.000000)
//add r4.xy, r3.zzzz, l(-1.000000, -3.000000, 0.000000, 0.000000)


mul_sat r4.xy, r4.xyxx, cb0[12].zzzz
mul r4.xy, r4.xyxx, r4.xyxx
mad r4.xy, cb0[12].yyyy, r4.xyxx, cb0[12].xxxx
add r2.w, r4.x, l(-6.000000)
min r2.w, r2.w, r4.y
lt r2.w, r2.w, r2.z
if_nz r2.w
  ld_indexable(texture3d)(float,float,float,float) r5.xyz, r0.xyzw, t13.xyzw
  ld_indexable(texture2darray)(uint,uint,uint,uint) r2.w, r0.xyzw, t11.xzwy
  iadd r2.w, r2.w, l(-64)

//disable torch at wall dyn light fault  
  iadd r2.w, r2.w, l(-4)


  imax r2.w, r2.w, l(1)
  and r3.w, r2.w, l(63)
  ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t23.xxxx
 

  add r3.xy, r3.xyxx, l(0.600000, 0.600000, 0.000000, 0.000000)

  //Fix
ld_indexable(texture2d)(float,float,float,float) r30.xyzw, l(0, 0, 0, 0), t125.xyzw
mul r28.z, r3.x, cb13[9].y
add r30.w, r28.z, -r30.y
mul r30.w, r30.w, r30.x
div r30.w, r30.w, r28.z
mul r30.w, r30.w, cb13[7].x
mul r30.w, r30.w, cb13[9].x
mul r30.w, r30.w, l(0.95)
add r3.x, r3.x, -r30.w

  

  mul r6.xy, r3.xyxx, cb0[35].zwzz
  mad r3.x, -r3.x, cb0[35].z, l(1.0000000)
  mad r3.x, -r3.y, cb0[35].w, r3.x
  mul r6.yzw, r6.yyyy, cb0[10].xxyz
  mad r6.xyz, r6.xxxx, cb0[34].xyzx, r6.yzwy
  mad r6.xyz, r3.xxxx, cb0[3].xyzx, r6.xyzx
  dp3 r3.x, -cb0[24].xyzx, r6.xyzx

  
  
  div r6.xyz, r6.xyzx, r3.xxxx
  dp3 r3.x, r6.xyzx, r6.xyzx
  rsq r3.x, r3.x
  mul r7.xyz, r3.xxxx, r6.xyzx
  utof r3.xy, vThreadID.xyxx
  add r3.xy, r3.xyxx, cb0[12].wwww
  dp2 r3.x, r3.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000)
  frc r3.x, r3.x
  mul r3.x, r3.x, l(52.982918)
  frc r3.x, r3.x
  mul_sat r3.y, r3.z, cb0[12].z
  mul r3.y, r3.y, r3.y
  mad r3.y, cb0[12].y, r3.y, cb0[12].x
  lt r3.z, r4.x, r2.z
  ge r4.y, r3.y, r2.z
  and r3.z, r3.z, r4.y
  movc r4.w, r3.z, r2.z, r3.y
  ld_raw r2.z, l(0), g0.xxxx
  add r3.y, -r4.x, r4.w
  mad r3.z, r3.x, r3.y, r4.x
  mul r8.xyz, r6.xyzx, r3.zzzz
  mul r9.xyz, r6.xyzx, r4.wwww
  mul r10.xyz, r4.xxxx, r6.xyzx
  mad r11.xyz, r4.wwww, r6.xyzx, -r10.xyzx
  lt r4.y, l(0.000000), |r3.y|
  mov r12.x, l(1.000000)
  mov r13.x, l(1.000000)
  mov r8.w, l(1.000000)
  mov r14.z, l(1.000000)
  mov r15.w, l(1.000000)
  mov r16.w, l(1.000000)
  mov r17.w, l(1.000000)
  mov r18.w, l(1.000000)
  mov r19.xyz, l(0,0,0,0)
  mov r5.w, l(0)
  mov r7.w, l(0)
  loop
    uge r9.w, r7.w, r2.z
    breakc_nz r9.w
    ld_structured r9.w, r7.w, l(0), g1.xxxx
    ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r10.w, r9.w, l(0), t12.xxxx
    ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r11.w, r9.w, l(12), t12.xxxx
    and r12.w, r11.w, l(255)
    ushr r11.w, r11.w, l(16)
    ieq r13.z, r12.w, l(255)
    ieq r12.w, r2.w, r12.w
    ieq r11.w, r2.w, r11.w
    or r11.w, r11.w, r12.w
    or r11.w, r13.z, r11.w
    ieq r12.w, r10.w, l(1)
    lt r13.z, r5.w, l(1.000000)
    and r12.w, r12.w, r13.z
    and r12.w, r11.w, r12.w
    if_nz r12.w
      ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r20.xyz, r9.w, l(16), t12.xyzx
      ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r21.xyz, r9.w, l(80), t12.xyzx
      ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r22.xyz, r9.w, l(96), t12.xyzx
      ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r23.xyz, r9.w, l(112), t12.xyzx
      mad r20.xyz, -r3.zzzz, r6.xyzx, r20.xyzx
      dp3 r21.x, r21.xyzx, r20.xyzx
      dp3 r21.y, r22.xyzx, r20.xyzx
      dp3 r21.z, r23.xyzx, r20.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
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r13.zw, r9.w, l(4), t12.xxxy
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r12.w, r9.w, l(32), t12.xxxx
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r20.xyz, r9.w, l(48), t12.xyzx
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r14.w, r9.w, l(64), t12.xxxx
        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 r19.w, r21.xyzx, -r21.xyzx
        add_sat r19.w, r19.w, l(1.000000)
        mul r19.w, r19.w, l(1.250000)
        min r19.w, r19.w, l(1.000000)
        mul r20.w, r19.w, r19.w
        mad r19.w, -r19.w, l(2.000000), l(3.000000)
        mul r19.w, r19.w, r20.w
        mul r12.w, r12.w, r19.w
        utof r6.w, r13.z
        sample_l_indexable(texturecubearray)(float,float,float,float) r21.xyz, r6.xyzw, t18.xyzw, s1, l(0.000000)
        lt r13.z, l(0.000000), r14.w
        if_nz r13.z
          utof r6.w, r13.w
          sample_l_indexable(texturecubearray)(float,float,float,float) r22.xyz, r6.xyzw, t18.xyzw, s1, l(0.000000)
          add r22.xyz, -r21.xyzx, r22.xyzx
          mad r21.xyz, r14.wwww, r22.xyzx, r21.xyzx
        endif
        add r6.w, -r5.w, l(1.000000)
        mul r13.z, r12.w, r6.w
        mul r20.xyz, r20.xyzx, r21.xyzx
        mad r5.w, r6.w, r12.w, r5.w
        mul r6.w, r13.z, l(0.0795798153)
        mad r19.xyz, r6.wwww, r20.xyzx, r19.xyzx
      endif
    endif
    uge r6.w, r10.w, l(2)
    uge r12.w, l(4), r10.w
    and r6.w, r6.w, r12.w
    and r6.w, r11.w, r6.w
    if_nz r6.w
      ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r20.xyzw, r9.w, l(16), t12.xyzw
      ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r21.xyz, r9.w, l(48), t12.xyzx
      ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r22.xyzw, r9.w, l(80), t12.xyzw
      ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r23.xyzw, r9.w, l(96), t12.xyzw
      ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r24.xyzw, r9.w, l(128), t12.xyzw
      mad r20.xyz, -r3.zzzz, r6.xyzx, r20.xyzx
      ieq r6.w, r10.w, l(4)
      if_nz r6.w
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r25.xyz, r9.w, l(112), t12.xyzx
        dp3 r6.w, r22.xyzx, r20.xyzx
        mad r26.xyz, r6.wwww, r22.xyzx, -r20.xyzx
        dp3 r27.x, r26.xyzx, r23.xyzx
        dp3 r27.y, r26.xyzx, r25.xyzx
        max r13.zw, -r24.xxxy, r27.xxxy
        min r13.zw, r24.xxxy, r13.zzzw
        mul r25.xyz, r13.wwww, r25.xyzx
        mad r25.xyz, r23.xyzx, r13.zzzz, r25.xyzx
        add r25.xyz, r20.xyzx, r25.xyzx
        div r6.w, l(1.000000, 1.000000, 1.000000, 1.000000), r20.w
        mul r26.xyz, r6.wwww, r25.xyzx
        dp3 r6.w, r26.xyzx, -r26.xyzx
        add_sat r6.w, r6.w, l(1.000000)
        dp3 r12.w, r25.xyzx, r25.xyzx
        rsq r12.w, r12.w
        mul r25.xyz, r12.wwww, r25.xyzx
        dp3 r12.z, -r25.xyzx, r22.xyzx
        add r12.w, r12.z, l(0.000001)
        div_sat r12.w, r24.w, r12.w
        log r12.w, r12.w
        mul r12.w, r12.w, r20.w
        exp r12.w, r12.w
        add r12.w, -r12.w, l(1.000000)
        mul r6.w, r6.w, r12.w
        mul r12.y, r6.w, r6.w
        mov_sat r12.z, r12.z
        mov r12.yzw, r12.xxyz
      else
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r6.w, r9.w, l(32), t12.xxxx
        lt r13.z, l(0.000000), r6.w
        if_nz r13.z
          dp3 r13.z, r20.xyzx, r20.xyzx
          sqrt r13.z, r13.z
          div r13.w, l(1.000000, 1.000000, 1.000000, 1.000000), r20.w
          add r14.w, -r13.z, r20.w
          mul r13.w, r13.w, r14.w
          mul_sat r13.w, r13.w, l(5.000000)
          add r13.z, -r6.w, r13.z
          max r13.z, r13.z, l(0.000000)
          div r6.w, r13.z, r6.w
          add r6.w, r6.w, l(1.000000)
          mul r13.z, r13.w, r13.w
          mul r6.w, r6.w, r6.w
          div r14.y, r13.z, r6.w
        else
          div r6.w, l(1.000000, 1.000000, 1.000000, 1.000000), r20.w
          mul r20.xyz, r6.wwww, r20.xyzx
          dp3 r6.w, r20.xyzx, -r20.xyzx
          add_sat r14.y, r6.w, l(1.000000)
        endif
        ieq r6.w, r10.w, l(3)
        if_nz r6.w
          lt r6.w, l(0.000000), r14.y
          if_nz r6.w
            dp4 r20.x, r22.xyzw, r8.xyzw
            dp4 r20.y, r23.xyzw, r8.xyzw
            dp4 r6.w, r24.xyzw, r8.xyzw
            div r20.xy, r20.xyxx, r6.wwww
            lt r6.w, l(0.000000), r6.w
            mad r13.zw, r20.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000)
            max r13.z, |r13.w|, |r13.z|
            lt r13.z, r13.z, l(1.000000)
            and r6.w, r6.w, r13.z
            if_nz r6.w
              ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r6.w, r9.w, l(4), t12.xxxx
              utof r20.z, r6.w
              sample_l_indexable(texture2darray)(float,float,float,float) r14.x, r20.xyzx, t19.xyzw, s1, l(4.000000)
            else
              mov r14.x, l(0)
            endif
          else
            mov r14.x, l(0)
          endif
        else
          mul r13.y, r14.y, r14.y
          mov r14.xy, r13.xyxx
        endif
        mov r12.yzw, r14.xxyz
      endif
      mul r6.w, r12.y, r12.z
      mul r6.w, r12.w, r6.w
      add r12.yzw, r21.xxyz, l(0.000000, -1.000000, -1.000000, -1.000000)
      mad r12.yzw, r6.wwww, r12.yyzw, l(0.000000, 1.000000, 1.000000, 1.000000)
      mul r19.xyz, r12.yzwy, r19.xyzx
    endif
    ult r6.w, l(4), r10.w
    and r6.w, r11.w, r6.w
    if_nz r6.w
      ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r20.xyzw, r9.w, l(16), t12.xyzw
      ieq r6.w, r10.w, l(6)
      if_nz r6.w
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r12.yzw, r9.w, l(112), t12.xxyz
        dp3 r11.w, r12.yzwy, r12.yzwy
        rsq r11.w, r11.w
        mul r12.yzw, r11.wwww, r12.yyzw
        mad r13.yzw, r4.wwww, r6.xxyz, -r20.xxyz
        dp3 r11.w, r12.yzwy, r13.yzwy
        mad r13.yzw, r12.yyzw, l(0.000000, 0.008000, 0.008000, 0.008000), r20.xxyz
        dp3 r13.y, r12.yzwy, r13.yzwy
        dp3 r13.z, r12.yzwy, r10.xyzx
        add r13.y, -r13.z, r13.y
        dp3 r12.y, r12.yzwy, r11.xyzx
        div r12.y, r13.y, r12.y
        ge r12.z, r12.y, l(0.000000)
        ge r12.w, l(1.000000), r12.y
        and r12.z, r12.w, r12.z
        lt r11.w, r11.w, l(0.008000)
        mad r13.yzw, r12.yyyy, r11.xxyz, r10.xxyz
        mad r4.z, r3.y, r12.y, r4.x
        movc r14.xyw, r11.wwww, r13.yzyw, r9.xyxz
        movc r13.yzw, r11.wwww, r10.xxyz, r13.yyzw
        movc r12.yw, r11.wwww, r4.xxxz, r4.zzzw
        movc r15.xyz, r12.zzzz, r14.xywx, r9.xyzx
        movc r16.xyz, r12.zzzz, r13.yzwy, r10.xyzx
        movc r12.yz, r12.zzzz, r12.yywy, r4.xxwx
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r21.xyzw, r9.w, l(80), t12.xyzw
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r22.xyzw, r9.w, l(96), t12.xyzw
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r23.xyzw, r9.w, l(112), t12.xyzw
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r24.xyzw, r9.w, l(128), t12.xyzw
        dp4 r14.x, r21.xyzw, r15.xyzw
        dp4 r14.y, r22.xyzw, r15.xyzw
        dp4 r23.z, r23.xyzw, r15.xyzw
        dp4 r4.z, r24.xyzw, r15.xyzw
        div r23.xy, r14.xyxx, r4.zzzz
        dp4 r14.x, r21.xyzw, r16.xyzw
        dp4 r14.y, r22.xyzw, r16.xyzw
        dp4 r11.w, r24.xyzw, r16.xyzw
        div r13.yz, r14.xxyx, r11.wwww
        add r13.yz, -r23.xxyx, r13.yyzy
        mov r14.xy, l(1.000000,0,0,0)
        mov r12.w, l(0)
        loop
          uge r13.w, r12.w, l(2)
          breakc_nz r13.w
          dp3 r13.w, r23.xyzx, icb[r12.w + 0].xyzx
          dp2 r14.w, r13.yzyy, icb[r12.w + 0].xyxx
          lt r15.x, l(0.000000), |r14.w|
          if_nz r15.x
            div r15.x, -r13.w, r14.w
            add r15.y, -r13.w, l(1.000000)
            div r14.w, r15.y, r14.w
            min r15.y, r14.w, r15.x
            max r14.w, r14.w, r15.x
            max r14.y, r14.y, r15.y
            min r14.x, r14.w, r14.x
          else
            lt r14.w, r13.w, l(0.000000)
            lt r13.w, l(1.000000), r13.w
            or r13.w, r13.w, r14.w
            movc r14.xy, r13.wwww, l(0,1.000000,0,0), r14.xyxx
          endif
          iadd r12.w, r12.w, l(1)
        endloop
        lt r12.w, r14.x, r14.y
        movc r13.yz, r12.wwww, l(0,1.000000,0,0), r14.xxyx
        lt r12.w, l(0.000000), r4.z
        lt r13.w, l(0.000000), r11.w
        and r12.w, r12.w, r13.w
        rcp r11.w, r11.w
        rcp r4.z, r4.z
        mul r13.w, r4.z, r12.z
        mad r14.w, r12.y, r11.w, -r13.w
        mad r15.xy, r13.yzyy, r14.wwww, r13.wwww
        add r11.w, -r4.z, r11.w
        mad r13.yz, r13.yyzy, r11.wwww, r4.zzzz
        div r13.yz, r15.xxyx, r13.yyzy
        movc r12.yz, r12.wwww, r13.yyzy, r12.yyzy
        add r4.z, -r12.y, r12.z
        div r4.z, |r4.z|, |r3.y|
        and r4.z, r4.z, r4.y
        min r4.z, r4.z, l(1.000000)
      else
        mov r12.yz, r4.xxwx
        mov r4.z, l(1.000000)
      endif
      add r11.w, -r12.y, r12.z
      mad r12.z, r3.x, r11.w, r12.y
      mul r17.xyz, r6.xyzx, r12.zzzz
      mad r13.yzw, -r12.zzzz, r6.xxyz, r20.xxyz
      dp3 r12.z, r13.yzwy, r13.yzwy
      sqrt r12.w, r12.z
      lt r14.w, r12.w, r20.w
      if_nz r14.w
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r14.w, r9.w, l(4), t12.xxxx
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r15.x, r9.w, l(32), t12.xxxx
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r21.xyzw, r9.w, l(48), t12.xyzw
        rsq r12.z, r12.z
        mul r13.yzw, r12.zzzz, r13.yyzw
        div r12.z, l(1.000000, 1.000000, 1.000000, 1.000000), r20.w
        add r15.y, -r12.w, r20.w
        mul r12.z, r12.z, r15.y
        mul_sat r12.z, r12.z, l(5.000000)
        add r12.w, r12.w, -r15.x
        max r12.w, r12.w, l(0.000000)
        div r12.w, r12.w, r15.x
        add r12.w, r12.w, l(1.000000)
        mul r12.z, r12.z, r12.z
        mul r12.w, r12.w, r12.w
        div r12.z, r12.z, r12.w
        mul r4.z, r4.z, r12.z
        if_nz r6.w
          lt r6.w, l(0.000000), r4.z
          if_nz r6.w
            ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r6.w, r9.w, l(40), t12.xxxx
            ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r20.xyzw, r9.w, l(80), t12.xyzw
            ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r22.xyzw, r9.w, l(96), t12.xyzw
            ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r23.xyzw, r9.w, l(128), t12.xyzw
            dp4 r15.x, r20.xyzw, r17.xyzw
            dp4 r15.y, r22.xyzw, r17.xyzw
            dp4 r12.z, r23.xyzw, r17.xyzw
            div r15.xy, r15.xyxx, r12.zzzz
            min r12.w, r15.y, r15.x
            lt r12.zw, r12.zzzw, l(0.000000, 0.000000, 0.008000, 0.000000)
            or r12.z, r12.w, r12.z
            max r12.w, r15.y, r15.x
            lt r12.w, l(1.000000), r12.w
            or r12.z, r12.w, r12.z
            if_nz r12.z
              mov r12.z, l(1)
            else
              utof r15.z, r14.w
              sample_l_indexable(texture2darray)(float,float,float,float) r12.w, r15.xyzx, t19.yzwx, s1, l(4.000000)
              mul r21.xyz, r12.wwww, r21.xyzx
              mov r12.z, l(0)
            endif
            lt r6.w, l(0.000000), r6.w
            iadd r12.w, r12.z, l(2)
            movc r6.w, r6.w, r12.w, r12.z
          else
            mov r6.w, l(0)
          endif
        else
          ieq r10.w, r10.w, l(7)
          lt r15.xyz, |r13.zwwz|, |r13.yyzy|
          lt r16.xyz, r13.ywzy, l(0.000000, 0.000000, 0.000000, 0.000000)
          movc r16.xyz, r16.xyzx, l(0,4,2,0), l(1,5,3,0)
          movc r12.zw, r15.yyyz, r16.xxxz, r16.yyyy
          movc r12.z, r15.x, r12.z, r12.w
          ine r12.z, r12.z, r14.w
          movc r12.z, r12.z, l(1), l(2)
          and r6.w, r10.w, r12.z
        endif
        and r10.w, r6.w, l(1)
        if_z r10.w
          dp3 r10.w, r13.yzwy, r7.xyzx
          and r6.w, r6.w, l(2)
          if_nz r6.w
            ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r20.xyzw, r9.w, l(144), t12.xyzw
            ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r22.xyzw, r9.w, l(160), t12.xyzw
            ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r23.xyzw, r9.w, l(176), t12.xyzw
            ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r24.xyzw, r9.w, l(192), t12.xyzw
            mov r12.zw, l(0,0,0,0)
            loop
              ge r6.w, r12.w, l(2.000000)
              breakc_nz r6.w
              add r6.w, r3.x, r12.w
              mul r6.w, r11.w, r6.w
              mad r6.w, r6.w, l(0.500000), r12.y
              mad r9.w, -r2.y, r2.x, r6.w
              min r9.w, r9.w, l(0.000000)
              mul r9.w, r9.w, l(5.770780)
              exp r9.w, r9.w
              mul r15.xyz, r9.wwww, r13.yzwy
              mad r18.xyz, r6.wwww, r6.xyzx, -r15.xyzx
              dp4 r15.x, r20.xyzw, r18.xyzw
              dp4 r15.y, r22.xyzw, r18.xyzw
              dp4 r6.w, r23.xyzw, r18.xyzw
              dp4 r9.w, r24.xyzw, r18.xyzw
              div r15.xy, r15.xyxx, r9.wwww
              sample_c_lz_indexable(texture2d)(float,float,float,float) r6.w, r15.xyxx, t20.xxxx, s14, r6.w
              add r12.z, r6.w, r12.z
              add r12.w, r12.w, l(1.000000)
            endloop
            mul r6.w, r4.z, r12.z
            mul r4.z, r6.w, l(0.500000)
          endif
          mad r6.w, cb0[2].x, r10.w, l(-1.000000)
          mul r6.w, r6.w, r6.w
          mul r6.w, r6.w, l(12.566000)
          div r6.w, cb0[2].y, r6.w
          add r9.w, -|r10.w|, l(1.000000)
          mad r9.w, r9.w, l(0.101327159), -r6.w
          mad r6.w, r21.w, r9.w, r6.w
          mul r4.z, r4.z, r6.w
          mad r19.xyz, r4.zzzz, r21.xyzx, r19.xyzx
        endif
      endif
    endif
    iadd r7.w, r7.w, l(1)
  endloop
  mul r2.z, cb0[19].y, l(0.693147182)
  mul r2.w, r8.z, cb0[19].x
  mul r2.w, r2.w, l(1.442695)
  exp r2.w, r2.w
  mul_sat r2.z, r2.w, r2.z
  mad_sat r2.w, r3.z, cb0[0].z, -cb0[0].w
  mul r2.z, r2.w, r2.z
  and r2.w, r3.w, l(4)
  movc r2.z, r2.w, r2.z, l(0)
  movc r2.w, r2.w, l(1), l(0)
  if_nz r2.w
    and r8.xyzw, cb0[102].zzzz, l(32, 2, 4, 8)
    ine r4.yzw, r8.yyzw, l(0, 0, 0, 0)
    add r3.z, cb0[18].x, l(0.150000)
    lt r3.w, l(0.000000), cb0[18].z
    mov r9.w, l(1.000000)
    mov r5.w, l(0)
    mov r6.w, l(0)
    loop
      utof r7.w, r6.w
      ge r8.y, r7.w, l(2.000000)
      breakc_nz r8.y
      add r7.w, r3.x, r7.w
      mul r7.w, r3.y, r7.w
      mad r7.w, r7.w, l(0.500000), r4.x
      mad r8.yzw, r7.wwww, r6.xxyz, cb0[5].xxyz
      mad r7.w, -r2.y, r2.x, r7.w
      min r7.w, r7.w, l(0.000000)
      mul r7.w, r7.w, l(5.770780)
      exp r7.w, r7.w
      mad r9.xyz, -cb0[25].xyzx, r7.wwww, r8.yzwy
      if_nz cb0[102].z
        dp4 r10.x, cb0[13].xyzw, r9.xyzw
        dp4 r10.y, cb0[14].xyzw, r9.xyzw
        dp4 r7.w, cb0[15].xyzw, r9.xyzw
        dp4 r8.y, cb0[16].xyzw, r9.xyzw
        div r8.yz, r10.xxyx, r8.yyyy
        mad r7.w, r7.w, cb0[26].x, cb0[27].x
        ge r10.xy, r8.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000)
        ge r10.zw, l(0.000000, 0.000000, 1.000000, 1.000000), r8.yyyz
        and r8.w, r10.z, r10.x
        and r8.w, r10.y, r8.w
        and r8.w, r10.w, r8.w
        ge r10.x, l(1.000000), r7.w
        and r8.w, r8.w, r10.x
        if_nz r8.w
          sample_c_lz_indexable(texture2d)(float,float,float,float) r7.w, r8.yzyy, t5.xxxx, s0, r7.w
          mov r8.y, l(-1)
        else
          mov r7.w, l(1.000000)
        endif
        and r8.y, r8.y, r8.w
        not r8.y, r8.y
        and r8.y, r4.y, r8.y
        if_nz r8.y
          dp4 r10.x, cb0[6].xyzw, r9.xyzw
          dp4 r10.y, cb0[7].xyzw, r9.xyzw
          dp4 r8.y, cb0[8].xyzw, r9.xyzw
          dp4 r8.z, cb0[9].xyzw, r9.xyzw
          div r8.zw, r10.xxxy, r8.zzzz
          mad r8.y, r8.y, cb0[26].y, cb0[27].y
          ge r10.xy, r8.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000)
          ge r10.zw, l(0.000000, 0.000000, 1.000000, 1.000000), r8.zzzw
          and r10.x, r10.z, r10.x
          and r10.x, r10.y, r10.x
          and r10.x, r10.w, r10.x
          ge r10.y, l(1.000000), r8.y
          and r10.x, r10.y, r10.x
          if_nz r10.x
            sample_c_lz_indexable(texture2d)(float,float,float,float) r7.w, r8.zwzz, t6.xxxx, s0, r8.y
            mov r8.y, l(-1)
          else
            mov r7.w, l(1.000000)
          endif
          and r8.y, r8.y, r10.x
          not r8.y, r8.y
          and r8.y, r4.z, r8.y
          if_nz r8.y
            dp4 r10.x, cb0[20].xyzw, r9.xyzw
            dp4 r10.y, cb0[21].xyzw, r9.xyzw
            dp4 r8.y, cb0[22].xyzw, r9.xyzw
            dp4 r8.z, cb0[23].xyzw, r9.xyzw
            div r8.zw, r10.xxxy, r8.zzzz
            mad r8.y, r8.y, cb0[26].z, cb0[27].z
            ge r10.xy, r8.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000)
            ge r10.zw, l(0.000000, 0.000000, 1.000000, 1.000000), r8.zzzw
            and r10.x, r10.z, r10.x
            and r10.x, r10.y, r10.x
            and r10.x, r10.w, r10.x
            ge r10.y, l(1.000000), r8.y
            and r10.x, r10.y, r10.x
            if_nz r10.x
              sample_c_lz_indexable(texture2d)(float,float,float,float) r7.w, r8.zwzz, t3.xxxx, s0, r8.y
              mov r8.y, l(-1)
            else
              mov r7.w, l(1.000000)
            endif
            and r8.y, r8.y, r10.x
            not r8.y, r8.y
            and r8.y, r4.w, r8.y
            if_nz r8.y
              dp4 r10.x, cb0[29].xyzw, r9.xyzw
              dp4 r10.y, cb0[30].xyzw, r9.xyzw
              dp4 r8.y, cb0[31].xyzw, r9.xyzw
              dp4 r8.z, cb0[32].xyzw, r9.xyzw
              div r8.zw, r10.xxxy, r8.zzzz
              mad r8.y, r8.y, cb0[26].w, cb0[27].w
              ge r10.xy, r8.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000)
              ge r10.zw, l(0.000000, 0.000000, 1.000000, 1.000000), r8.zzzw
              and r10.x, r10.z, r10.x
              and r10.x, r10.y, r10.x
              and r10.x, r10.w, r10.x
              ge r10.y, l(1.000000), r8.y
              and r10.x, r10.y, r10.x
              if_nz r10.x
                sample_c_lz_indexable(texture2d)(float,float,float,float) r7.w, r8.zwzz, t2.xxxx, s0, r8.y
              else
                mov r7.w, l(1.000000)
              endif
            endif
          endif
        endif
      else
        mov r7.w, l(1.000000)
      endif
      if_nz r8.x
        div r8.y, -r9.z, cb2[4].z
        mad r8.yz, r8.yyyy, cb2[4].xxyx, r9.xxyx
        mad r8.yz, r8.yyzy, cb0[36].xxyx, -cb0[36].zzwz
        sample_l_indexable(texture2d)(float,float,float,float) r8.y, r8.yzyy, t0.yxzw, s2, l(0.000000)
        mul_sat r8.y, r8.y, cb0[18].w
        add r8.y, r8.y, -cb0[18].x
        mul_sat r8.y, r8.y, l(3.33333325)
        mad r8.z, r8.y, l(-2.000000), l(3.000000)
        mul r8.y, r8.y, r8.y
        mad r8.y, r8.z, r8.y, -r3.z
        mad r8.y, cb2[4].z, r8.y, r3.z
        add r8.z, -r8.y, l(1.000000)
        movc r8.y, r3.w, r8.z, r8.y
        mul r7.w, r7.w, r8.y
      endif
      add r5.w, r5.w, r7.w
      iadd r6.w, r6.w, l(1)
    endloop
    mul r2.x, r5.w, l(0.500000)
  else
    mov r2.x, l(0)
  endif
  mul r3.xyz, r2.zzzz, cb0[28].xyzx
  mul r3.xyz, r19.xyzx, r3.xyzx
  if_nz r2.w
    dp3 r2.y, cb0[25].xyzx, r7.xyzx
    mad r2.w, cb0[1].z, r2.y, l(-1.000000)
    mul r2.w, r2.w, r2.w
    mul r2.w, r2.w, l(12.566000)
    div r2.w, cb0[1].w, r2.w
    mad r3.w, cb0[11].w, r2.y, l(-1.000000)
    mul r3.w, r3.w, r3.w
    mul r3.w, r3.w, l(12.566000)
    div r3.w, cb0[37].w, r3.w
    mul r2.w, r2.x, r2.w
    mul r3.w, r2.x, r3.w
    mul r4.xyz, r2.wwww, cb0[11].xyzx
    mul r6.xyz, r3.wwww, cb0[37].xyzx
    mad r2.w, -cb0[4].x, cb0[4].y, l(1.000000)
    mul r6.xyz, r6.xyzx, cb0[4].xxxx
    mad r4.xyz, r4.xyzx, r2.wwww, r6.xyzx
    mad r3.xyz, r2.zzzz, r4.xyzx, r3.xyzx
    mad r2.y, cb0[2].x, r2.y, l(-1.000000)
    mul r2.y, r2.y, r2.y
    mul r2.y, r2.y, l(12.566000)
    div r2.y, cb0[2].y, r2.y
    mul r2.x, r2.x, r2.y
    mad r19.xyz, r2.xxxx, cb0[17].xyzx, r19.xyzx
  endif
  mad r2.xyz, r19.xyzx, r5.xyzx, r3.xyzx
  ld_indexable(texture3d)(float,float,float,float) r0.xyz, r0.xyzw, t15.xyzw
  add r0.xyz, r0.xyzx, r2.xyzx
else
  mov r0.xyz, l(0,0,0,0)
endif
mul r1.xyz, r0.xyzx, l(16.000000, 16.000000, 16.000000, 0.000000)
//disable drawing that light shader by comenting out the line below
store_uav_typed u0.xyzw, vThreadID.xyzz, r1.xyzw
ret
// Approximately 640 instruction slots used
