//Sky lighting CS 1.
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
//
//   using 3Dmigoto v1.3.16 on Sun Jan 16 00:23:15 2022
//
//
// Note: shader requires additional functionality:
//       64 UAV slots
//
//
// Buffer Definitions:
//
// cbuffer ConstBuf__tileData
// {
//
//   struct SSSSTileData
//   {
//
//       uint tilesHorz;                // Index:    0
//       uint tilePermutation;          // Index:    0.y
//       uint firstGroupOffset;         // Index:    0.z
//
//   } resourceTables__tileData;        // Index:    0.xyz            Components:     3
//
// }
//
// cbuffer ConstBuf__passData
// {
//
//   struct SSSSPassBuffer
//   {
//
//       struct AtmosphericConstants
//       {
//
//           float3 cFogColor;          // Index:    0
//           float cHeightFalloff;      // Index:    0.w
//           float3 cEyePosition;       // Index:    1
//           float cHeightDensity;      // Index:    1.w
//           float cStartDistance;      // Index:    2
//           float cGlobalDensity;      // Index:    2.y
//           float cDepthReprojectScale;// Index:    2.z
//           float cDepthReprojectBias; // Index:    2.w
//           float4x4 cInvProjNoZReproj;// Index:    3
//           float3 cDirectionalFogDirection;// Index:    7
//           float cDirectionalityPower;// Index:    7.w
//           float3 cDirectionalFogColor;// Index:    8
//           float cDensityMapSparseBias;// Index:    8.w
//           float3 cDensityMapInvExtents;// Index:    9
//           float cDensityMapSparseSegmentScale;// Index:    9.w
//           float3 cDensityMapBias;    // Index:   10
//           float cDensityMapSparseCutoff;// Index:   10.w
//           float cVolFogExponentMultiply;// Index:   11
//           float cVolFogDistanceMultiply;// Index:   11.y
//           float cVolFogExponentNormalize;// Index:   11.z
//           float cVolFogDistanceNormalize;// Index:   11.w
//           float cVolFogResolutionScale;// Index:   12
//           int cVolFogWidth;          // Index:   12.y
//           int cVolFogHeight;         // Index:   12.z
//           int cVolFogDepth;          // Index:   12.w
//
//       } atmosphericConstants;        // Index:    0
//
//       struct SSSSConstants
//       {
//
//           float4x4 g_View;           // Index:   13
//           float4 g_avfProfilesAsGaussians[8];// Index:   17
//           float4 g_screenRes;        // Index:   25
//           float g_maxPixelStep;      // Index:   26
//           float g_DepthWeighting;    // Index:   26.y
//           float g_FarPlane;          // Index:   26.z
//           float g_overrideSkyDepth;  // Index:   26.w
//           float g_luminanceVariance; // Index:   27
//           float g_exposure;          // Index:   27.y
//           float g_exposureDepthWeighting;// Index:   27.z
//           float g_exposureDepthWeightingExponent;// Index:   27.w
//           float g_exposureCharacterWeighting;// Index:   28
//           uint g_visualizeExposureWeight;// Index:   28.y
//           uint g_whiteDiffuse;       // Index:   28.z
//           float2 g_opaqueRefractionViewportScale;// Index:   29
//           uint g_MaxSSSKernelWidth;  // Index:   29.z
//           float2 g_opaqueRefractionMaxUV;// Index:   30
//           int2 g_opaqueRefractionSize;// Index:   30.z
//
//       } constants;                   // Index:   13
//
//       struct SSSSDitherConstants
//       {
//
//           float4 g_PixelDithering[16];// Index:   31
//
//       } dither;                      // Index:   31
//
//   } resourceTables__passData;        // Index:    0-46             Components:   188
                                        // Textures:  t2-t5
//
// }
//
// cbuffer ConstBuf__gbuffers
// {
//
//   struct GBufferStruct
//   {
//
//       float4x4 invViewProjNoZReproj; // Index:    0
//       float4x4 directionProjMatrix;  // Index:    4
//       float2 viewportScale;          // Index:    8
//       float2 viewportBias;           // Index:    8.z
//       float2 invViewportSize;        // Index:    9
//       float2 viewportSize;           // Index:    9.z
//       uint2 viewportSizeUint;        // Index:   10
//       float3 eyePos;                 // Index:   11
//
//   } resourceTables__gbuffers;        // Index:    0-11.z           Components:    47
                                        // Textures:  t6-t11
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// resourceTables__passData__smpLinearClamp    sampler      NA          NA    0        1
// resourceTables__passData.texSSSSDiffuseIrradiance    texture  float4          2d    2        1
// resourceTables__passData.emissive    texture  float4          2d    3        1
// resourceTables__passData.volumetricFog    texture  float4          3d    4        1
// resourceTables__passData.opaqueRefraction    texture  float4          2d    5        1
// resourceTables__gbuffers.baseColorTexture    texture  float4          2d    7        1
// resourceTables__gbuffers.normalTexture    texture  float4          2d    8        1
// resourceTables__gbuffers.propertiesTexture    texture  float4          2d    9        1
// resourceTables__gbuffers.scatteringEmissiveTexture    texture  float4          2d   11        1
// resourceTables__tileData.outTexture        UAV  float4          2d    8        1
// resourceTables__passData.outLuminance        UAV  float4          2d    9        1
// ConstBuf__tileData                cbuffer      NA          NA    0        1
// ConstBuf__passData                cbuffer      NA          NA    1        1
// ConstBuf__gbuffers                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[1], immediateIndexed
dcl_constantbuffer cb1[47], dynamicIndexed
dcl_constantbuffer cb2[11], immediateIndexed
dcl_sampler s0, mode_default
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture3d (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) t11
dcl_uav_typed_texture2d (float,float,float,float) u8
dcl_uav_typed_texture2d (float,float,float,float) u9
dcl_input vThreadIDInGroupFlattened
dcl_input vThreadGroupID.x
dcl_temps 50
dcl_tgsm_structured g0, 4, 64
dcl_thread_group 64, 1, 1
dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture2d)(float,float,float,float) r40.xyzw, l(0, 0, 0, 0), t125.xyzw
iadd r0.x, vThreadGroupID.x, cb0[0].z
udiv r0.x, r1.x, r0.x, cb0[0].x
ushr r0.yz, vThreadIDInGroupFlattened.xxxx, l(0, 2, 3, 0)
and r0.yz, r0.yyzy, l(0, 4, 4, 0)
xor r0.z, r0.y, r0.z
ishl r0.w, vThreadIDInGroupFlattened.x, l(1)
ushr r2.xy, l(0xebfa5014, 0xfa4141af, 0, 0), r0.wwww
bfi r3.xy, l(2, 2, 0, 0), l(0, 0, 0, 0), r2.xyxx, r0.zyzz
mov r1.yzw, r0.xxxx
bfi r0.xy, l(29, 29, 0, 0), l(3, 3, 0, 0), r1.xwxx, r3.xyxx
utof r2.xy, r0.xyxx
add r2.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
mul r2.xy, r2.xyxx, cb1[25].zwzz
mov r0.zw, l(0,0,0,0)
ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyww, t2.xyzw
ld_indexable(texture2d)(float,float,float,float) r4.xyzw, r0.xyww, t3.xyzw
min r2.w, |r3.w|, cb1[26].z
max r5.w, r2.w, l(0.000000)
add r2.w, l(-1.000000), cb1[26].z
lt r2.w, r5.w, r2.w
mul r3.w, r4.w, r4.w
mul r3.w, r4.w, r3.w
lt r4.w, l(0.000000), r3.w
and r4.w, r2.w, r4.w
if_nz r4.w
  bfi r4.w, l(2), l(2), r0.y, l(0)
  bfi r4.w, l(2), l(0), r0.x, r4.w
  max r6.x, r5.w, l(0.000010)
  rcp r6.x, r6.x
  min r6.y, r6.x, l(2.000000)
  mul r6.yz, r6.yyyy, cb1[r4.w + 31].xxyx
  mul r6.yz, r3.wwww, r6.yyzy
  lt r7.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r6.yzyy
  lt r7.zw, r6.yyyz, l(0.000000, 0.000000, 0.000000, 0.000000)
  iadd r7.xy, -r7.xyxx, r7.zwzz
  itof r7.xy, r7.xyxx
  min r6.yz, |r6.yyzy|, cb1[26].xxxx
  mul r6.yz, r6.yyzy, r7.xxyx
  mad r7.xy, cb1[18].wwww, r6.yzyy, r2.xyxx
  sample_l_indexable(texture2d)(float,float,float,float) r7.xyzw, r7.xyxx, t2.xyzw, s0, l(0.000000)
  mad r3.w, r6.x, r7.w, l(-1.000000)
  mul_sat r3.w, |r3.w|, cb1[26].y
  add r8.xyz, r3.xyzx, -r7.xyzx
  mad r7.xyz, r3.wwww, r8.xyzx, r7.xyzx
  mul r7.xyz, r7.xyzx, cb1[18].xyzx
  mad r7.xyz, r3.xyzx, cb1[17].xyzx, r7.xyzx
  mad r8.xy, cb1[19].wwww, r6.yzyy, r2.xyxx
  sample_l_indexable(texture2d)(float,float,float,float) r8.xyzw, r8.xyxx, t2.xyzw, s0, l(0.000000)
  mad r3.w, r6.x, r8.w, l(-1.000000)
  mul_sat r3.w, |r3.w|, cb1[26].y
  add r9.xyz, r3.xyzx, -r8.xyzx
  mad r8.xyz, r3.wwww, r9.xyzx, r8.xyzx
  mad r7.xyz, cb1[19].xyzx, r8.xyzx, r7.xyzx
  mad r8.xy, cb1[20].wwww, r6.yzyy, r2.xyxx
  sample_l_indexable(texture2d)(float,float,float,float) r8.xyzw, r8.xyxx, t2.xyzw, s0, l(0.000000)
  mad r3.w, r6.x, r8.w, l(-1.000000)
  mul_sat r3.w, |r3.w|, cb1[26].y
  add r9.xyz, r3.xyzx, -r8.xyzx
  mad r8.xyz, r3.wwww, r9.xyzx, r8.xyzx
  mad r7.xyz, cb1[20].xyzx, r8.xyzx, r7.xyzx
  mad r8.xy, cb1[21].wwww, r6.yzyy, r2.xyxx
  sample_l_indexable(texture2d)(float,float,float,float) r8.xyzw, r8.xyxx, t2.xyzw, s0, l(0.000000)
  mad r3.w, r6.x, r8.w, l(-1.000000)
  mul_sat r3.w, |r3.w|, cb1[26].y
  add r9.xyz, r3.xyzx, -r8.xyzx
  mad r8.xyz, r3.wwww, r9.xyzx, r8.xyzx
  mad r7.xyz, cb1[21].xyzx, r8.xyzx, r7.xyzx
  mad r8.xy, cb1[22].wwww, r6.yzyy, r2.xyxx
  sample_l_indexable(texture2d)(float,float,float,float) r8.xyzw, r8.xyxx, t2.xyzw, s0, l(0.000000)
  mad r3.w, r6.x, r8.w, l(-1.000000)
  mul_sat r3.w, |r3.w|, cb1[26].y
  add r9.xyz, r3.xyzx, -r8.xyzx
  mad r8.xyz, r3.wwww, r9.xyzx, r8.xyzx
  mad r7.xyz, cb1[22].xyzx, r8.xyzx, r7.xyzx
  mad r8.xy, cb1[23].wwww, r6.yzyy, r2.xyxx
  sample_l_indexable(texture2d)(float,float,float,float) r8.xyzw, r8.xyxx, t2.xyzw, s0, l(0.000000)
  mad r3.w, r6.x, r8.w, l(-1.000000)
  mul_sat r3.w, |r3.w|, cb1[26].y
  add r9.xyz, r3.xyzx, -r8.xyzx
  mad r8.xyz, r3.wwww, r9.xyzx, r8.xyzx
  mad r7.xyz, cb1[23].xyzx, r8.xyzx, r7.xyzx
  mad r6.yz, cb1[24].wwww, r6.yyzy, r2.xxyx
  sample_l_indexable(texture2d)(float,float,float,float) r8.xyzw, r6.yzyy, t2.xyzw, s0, l(0.000000)
  mad r3.w, r6.x, r8.w, l(-1.000000)
  mul_sat r3.w, |r3.w|, cb1[26].y
  add r6.xyz, r3.xyzx, -r8.xyzx
  mad r6.xyz, r3.wwww, r6.xyzx, r8.xyzx
  mad r3.xyz, cb1[24].xyzx, r6.xyzx, r7.xyzx
endif
if_nz r2.w
  ld_indexable(texture2d)(float,float,float,float) r6.xyz, r0.xyww, t7.xyzw
  ld_indexable(texture2d)(float,float,float,float) r3.w, r0.xyww, t9.xyzw
  mul r3.w, r3.w, l(255.000000)
  ftou r3.w, r3.w
  and r3.w, r3.w, l(1)
  ld_indexable(texture2d)(float,float,float,float) r7.xyzw, r0.xyww, t11.wxyz
  iadd r8.xyzw, r0.xyxy, l(-1, 0, 0, -1)
  mov r9.xy, r8.zwzz
  mov r9.zw, l(0,0,0,0)
  ld_indexable(texture2d)(float,float,float,float) r9.xy, r9.xyzw, t7.xyzw
  mov r8.zw, l(0,0,0,0)
  ld_indexable(texture2d)(float,float,float,float) r8.xy, r8.xyzw, t7.xyzw
  iadd r10.xyzw, r0.xyxy, l(0, 1, 1, 0)
  mov r11.xy, r10.zwzz
  mov r11.zw, l(0,0,0,0)
  ld_indexable(texture2d)(float,float,float,float) r8.zw, r11.xyzw, t7.zwxy
  mov r10.zw, l(0,0,0,0)
  ld_indexable(texture2d)(float,float,float,float) r9.zw, r10.xyzw, t7.zwxy
  mov r10.yz, r8.xxzx
  mov r10.xw, r9.xxxz
  add r10.xyzw, r6.xxxx, -r10.xyzw
  mul r10.xyzw, |r10.xyzw|, l(50.000000, 50.000000, 50.000000, 50.000000)
  min r10.xyzw, r10.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
  add r10.xyzw, -r10.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
  ult r8.xz, l(0, 0, 0, 0), r0.yyxy
  and r9.xz, r8.xxzx, l(0x3f800000, 0, 0x3f800000, 0)
  mul r11.xy, r9.xzxx, r10.xyxx
  iadd r9.xz, l(-1, 0, -1, 0), cb2[10].xxyx
  ult r9.xz, r0.xxyx, r9.xxzx
  and r9.xz, r9.xxzx, l(0x3f800000, 0, 0x3f800000, 0)
  mul r11.zw, r9.xxxz, r10.zzzw
  add r4.w, r11.y, r11.x
  mad r4.w, r10.z, r9.x, r4.w
  mad r4.w, r10.w, r9.z, r4.w
  ge r6.w, l(0.010000), r4.w
  movc r10.xyzw, r8.xxxx, l(1.000000,0,0,0), l(0,0,0,1.000000)
  movc r10.xyzw, r6.wwww, r10.xyzw, r11.xyzw
  mul r8.x, r8.y, r10.y
  mad r8.x, r9.y, r10.x, r8.x
  mad r8.x, r8.w, r10.z, r8.x
  mad r8.x, r9.w, r10.w, r8.x
  rcp r4.w, r4.w
  movc r4.w, r6.w, l(1.000000), r4.w
  mul r8.z, r4.w, r8.x
  and r8.xw, r0.xxxy, l(1, 0, 0, 1)
  ine r4.w, r8.w, r8.x
  mov r8.xy, r6.xyxx
  movc r8.yz, r4.wwww, r8.yyzy, r8.zzyz
  add r6.xyw, r8.xyxz, l(0.000000, -0.498039216, 0.000000, -0.498039216)
  add r8.yz, r6.yywy, r6.xxxx
  add r8.x, -r6.w, r8.y
  add r4.w, -r6.y, r6.x
  add r8.w, -r6.w, r4.w
  mul r6.xyw, r8.xzxw, r8.xzxw
  min r6.xyw, r6.xyxw, l(1.000000, 1.000000, 0.000000, 1.000000)
  mad r6.xyz, r6.zzzz, -r6.xywx, r6.xywx
  mov_sat r7.x, -r7.x
  movc r6.xyz, cb1[28].zzzz, l(0.180000,0.180000,0.180000,0), r6.xyzx
  movc r3.w, r3.w, cb1[28].x, l(1.000000)
  lt r4.w, l(0.000000), r7.x
  if_nz r4.w
    itof r8.xy, r0.xyxx
    mul r8.xy, r8.xyxx, cb1[25].zwzz
    mul r8.zw, r8.xxxy, cb1[29].xxxy
    min r8.zw, r8.zzzw, cb1[30].xxxy
    add r9.w, r5.w, l(1.000000)
    itof r10.xy, cb1[30].zwzz
    mul r8.zw, r8.zzzw, r10.xxxy
    max r8.zw, r8.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000)
    min r8.zw, r10.xxxy, r8.zzzw
    frc r10.zw, r8.zzzw
    ftoi r11.xy, r8.zwzz
    iadd r12.xyzw, r11.xyxy, l(1, 0, 0, 1)
    imax r12.xyzw, r12.xyzw, l(0, 0, 0, 0)
    imin r12.xyzw, r12.zwxy, cb1[30].zwzw
    iadd r8.zw, r11.xxxy, l(0, 0, 1, 1)
    imax r8.zw, r8.zzzw, l(0, 0, 0, 0)
    imin r13.xy, r8.zwzz, cb1[30].zwzz
    mov r11.zw, l(0,0,0,0)
    ld_indexable(texture2d)(float,float,float,float) r11.xyzw, r11.xyzw, t5.xyzw
    mov r14.xy, r12.zwzz
    mov r14.zw, l(0,0,0,0)
    ld_indexable(texture2d)(float,float,float,float) r14.xyzw, r14.xyzw, t5.xyzw
    mov r12.zw, l(0,0,0,0)
    ld_indexable(texture2d)(float,float,float,float) r12.xyzw, r12.xyzw, t5.xyzw
    mov r13.zw, l(0,0,0,0)
    ld_indexable(texture2d)(float,float,float,float) r13.xyzw, r13.xyzw, t5.xyzw
    and r4.w, r11.w, l(0x7fffffff)
    ieq r4.w, r4.w, l(0x7f800000)
    mov r9.xyz, r11.xyzx
    movc r11.xyzw, r4.wwww, r9.xyzw, r11.xyzw
    and r4.w, r14.w, l(0x7fffffff)
    ieq r4.w, r4.w, l(0x7f800000)
    mov r9.xyz, r11.xyzx
    movc r14.xyzw, r4.wwww, r9.xyzw, r14.xyzw
    and r4.w, r12.w, l(0x7fffffff)
    ieq r4.w, r4.w, l(0x7f800000)
    movc r12.xyzw, r4.wwww, r9.xyzw, r12.xyzw
    and r4.w, r13.w, l(0x7fffffff)
    ieq r4.w, r4.w, l(0x7f800000)
    movc r13.xyzw, r4.wwww, r9.xyzw, r13.xyzw
    add r14.xyzw, -r11.xyzw, r14.xyzw
    mad r11.xyzw, r10.zzzz, r14.xyzw, r11.xyzw
    add r13.xyzw, -r12.xyzw, r13.xyzw
    mad r12.xyzw, r10.zzzz, r13.xyzw, r12.xyzw
    add r12.xyzw, -r11.xyzw, r12.xyzw
    mad r11.xyzw, r10.wwww, r12.xyzw, r11.xyzw
    add r4.w, -r5.w, r11.w
    lt r6.w, r4.w, r7.z
    ge r8.z, r11.z, l(0.000000)
    and r6.w, r6.w, r8.z
    if_nz r6.w
      ld_indexable(texture2d)(float,float,float,float) r12.xyz, r0.xyzw, t8.xyzw
      mad r12.xyz, r12.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
      dp3 r0.z, r12.xyzx, r12.xyzx
      rsq r0.z, r0.z
      mul r12.xyz, r0.zzzz, r12.xyzx
      mul r0.z, r7.y, r4.w
      mul r0.z, r0.z, l(0.001000)
      dp3 r0.w, r12.xyzx, cb1[13].xyzx
      dp3 r6.w, r12.xyzx, cb1[14].xyzx
      dp3 r7.y, r12.xyzx, cb1[15].xyzx
      mad r12.x, -r0.w, r0.z, r8.x
      mul r0.w, r6.w, r7.y
      mad r12.y, r0.w, r0.z, r8.y
      mul r0.zw, r12.xxxy, cb1[29].xxxy
      min r0.zw, r0.zzzw, cb1[30].xxxy
      mul r0.zw, r0.zzzw, r10.xxxy
      max r0.zw, r0.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000)
      min r0.zw, r10.xxxy, r0.zzzw
      frc r8.xy, r0.zwzz
      ftoi r10.xy, r0.zwzz
      iadd r12.xyzw, r10.xyxy, l(1, 0, 0, 1)
      imax r12.xyzw, r12.xyzw, l(0, 0, 0, 0)
      imin r12.xyzw, r12.zwxy, cb1[30].zwzw
      iadd r0.zw, r10.xxxy, l(0, 0, 1, 1)
      imax r0.zw, r0.zzzw, l(0, 0, 0, 0)
      imin r13.xy, r0.zwzz, cb1[30].zwzz
      mov r10.zw, l(0,0,0,0)
      ld_indexable(texture2d)(float,float,float,float) r10.xyzw, r10.xyzw, t5.xyzw
      mov r14.xy, r12.zwzz
      mov r14.zw, l(0,0,0,0)
      ld_indexable(texture2d)(float,float,float,float) r14.xyzw, r14.xyzw, t5.xyzw
      mov r12.zw, l(0,0,0,0)
      ld_indexable(texture2d)(float,float,float,float) r12.xyzw, r12.xyzw, t5.xyzw
      mov r13.zw, l(0,0,0,0)
      ld_indexable(texture2d)(float,float,float,float) r13.xyzw, r13.xyzw, t5.xyzw
      and r0.z, r10.w, l(0x7fffffff)
      ieq r0.z, r0.z, l(0x7f800000)
      mov r9.xyz, r10.xyzx
      movc r10.xyzw, r0.zzzz, r9.xyzw, r10.xyzw
      and r0.z, r14.w, l(0x7fffffff)
      ieq r0.z, r0.z, l(0x7f800000)
      mov r9.xyz, r10.xyzx
      movc r14.xyzw, r0.zzzz, r9.xyzw, r14.xyzw
      and r0.z, r12.w, l(0x7fffffff)
      ieq r0.z, r0.z, l(0x7f800000)
      movc r12.xyzw, r0.zzzz, r9.xyzw, r12.xyzw
      and r0.z, r13.w, l(0x7fffffff)
      ieq r0.z, r0.z, l(0x7f800000)
      movc r9.xyzw, r0.zzzz, r9.xyzw, r13.xyzw
      add r13.xyzw, -r10.xyzw, r14.xyzw
      mad r10.xyzw, r8.xxxx, r13.xyzw, r10.xyzw
      add r9.xyzw, -r12.xyzw, r9.xyzw
      mad r9.xyzw, r8.xxxx, r9.xyzw, r12.xyzw
      add r9.xyzw, -r10.xyzw, r9.xyzw
      mad r8.xyzw, r8.yyyy, r9.xyzw, r10.xyzw
      max r0.z, r11.w, l(0.010000)
      lt r0.w, l(0.000000), r8.z
      div r0.z, r8.w, r0.z
      lt r0.z, l(0.990000), r0.z
      and r0.z, r0.z, r0.w
      movc r8.xyz, r0.zzzz, r8.xyzx, r11.xyzx
      add r0.w, -r5.w, r8.w
      movc r0.z, r0.z, r0.w, r4.w
      max r9.xyz, r6.xyzx, l(0.001000, 0.001000, 0.001000, 0.000000)
      min r9.xyz, r9.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
      mul r9.xyz, r9.xyzx, l(0.010000, 0.010000, 0.010000, 0.000000)
      log r9.xyz, r9.xyzx
      div r0.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.z
      mul r9.xyz, r0.wwww, r9.xyzx
      mul r9.xyz, r0.zzzz, r9.xyzx
      exp r9.xyz, r9.xyzx
      add r0.z, -r7.w, l(1.000000)
      mul r7.yzw, r9.xxyz, r0.zzzz
      mul_sat r7.xyz, r7.xxxx, r7.yzwy
      mul r9.xyz, r3.xyzx, r6.xyzx
      mad r8.xyz, -r3.xyzx, r6.xyzx, r8.xyzx
      mad r7.xyz, r7.xyzx, r8.xyzx, r9.xyzx
      add r7.xyz, r4.xyzx, r7.xyzx
    else
      mad r7.xyz, r3.xyzx, r6.xyzx, r4.xyzx
    endif
  else
    mad r7.xyz, r3.xyzx, r6.xyzx, r4.xyzx
  endif
else
  min r5.w, r5.w, cb1[26].w
  mov r7.xyz, r3.xyzx
  mov r3.w, l(1.000000)
endif
mad r0.z, r5.w, cb1[11].w, l(1.000000)
log r0.z, r0.z
mul r2.z, r0.z, cb1[11].z
mov_sat r4.xyz, r2.xyzx
itof r6.xyz, cb1[12].yzwy
mad r8.xyz, r6.xyzx, cb1[12].xxxx, l(-1.000000, -1.000000, -1.000000, 0.000000)
mad r4.xyz, r4.xyzx, r8.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
div r6.xyz, l(1.000000, 1.000000, 1.000000, 1.000000), r6.xyzx
mul r4.xyz, r4.xyzx, r6.xyzx
sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r4.xyzx, t4.xyzw, s0, l(0.000000)
exp r0.z, -r4.w
min r0.z, r0.z, l(1.000000)
lt r0.w, l(0.000000), cb1[2].y
if_nz r0.w
  mad r6.xy, r2.xyxx, l(2.000000, -2.000000, 0.000000, 0.000000), l(-1.000000, 1.000000, 0.000000, 0.000000)
  mul r5.xy, r5.wwww, r6.xyxx
  mov r5.z, l(1.000000)
  
  add r40.w, r5.w, -r40.y
  mad r5.x, -r40.x, r40.w, r5.x
  
  dp4 r6.x, r5.xywz, cb1[3].xyzw
  dp4 r6.y, r5.xywz, cb1[4].xyzw
  dp4 r6.z, r5.xywz, cb1[5].xyzw
  add r6.xyz, r6.xyzx, -cb1[1].xyzx
  dp3 r0.w, r6.xyzx, r6.xyzx
  sqrt r0.w, r0.w
  max r2.z, r0.w, l(0.001000)
  div r6.xzw, r6.xxyz, r2.zzzz
  mul r2.z, r6.y, cb1[0].w
  lt r6.y, l(0.010000), |r2.z|
  mul r7.w, r2.z, l(-1.442695)
  exp r7.w, r7.w
  add r7.w, -r7.w, l(1.000000)
  div r2.z, r7.w, r2.z
  mul r2.z, r2.z, cb1[1].w
  movc r2.z, r6.y, r2.z, cb1[1].w
  dp3_sat r6.x, r6.xzwx, cb1[7].xyzx
  log r6.x, r6.x
  mul r6.x, r6.x, cb1[7].w
  exp r6.x, r6.x
  mul r2.z, r2.z, cb1[2].y
  add r0.w, r0.w, -cb1[2].x
  max r0.w, r0.w, l(0.000000)
  mul r6.y, r0.w, r2.z
  exp r6.y, -r6.y
  min r6.y, r6.y, l(1.000000)
  mad r6.xzw, r6.xxxx, cb1[8].xxyz, cb1[0].xxyz
  mul r6.xzw, r0.zzzz, r6.xxzw
  add r6.y, -r6.y, l(1.000000)
  mad r4.xyz, r6.xzwx, r6.yyyy, r4.xyzx
  mad r0.w, r2.z, r0.w, r4.w
  exp r0.w, -r0.w
  min r0.z, r0.w, l(1.000000)
endif
mad r5.xyz, r7.xyzx, r0.zzzz, r4.xyzx
mul r6.xyz, r3.xyzx, l(0.180000, 0.180000, 0.180000, 0.000000)
dp3 r0.w, r3.xyzx, l(0.299000, 0.587000, 0.114000, 0.000000)
movc r3.xyz, r2.wwww, r6.xyzx, r0.wwww
mad r3.xyz, r3.xyzx, r0.zzzz, r4.xyzx
dp3 r0.z, r3.xyzx, l(0.299000, 0.587000, 0.114000, 0.000000)
ne r0.w, r3.z, l(0.000000)
div r2.z, r3.x, r3.z
max r2.z, r2.z, l(0.642292)
min r2.z, r2.z, l(5.000000)
add r2.z, r2.z, l(-0.441113800)
log r2.z, r2.z
mul r2.z, r2.z, l(0.116325401)
exp r2.z, r2.z
add r2.z, -r2.z, l(0.800000)
div r2.z, l(-846.396118), r2.z
max r0.z, r0.z, l(0.000001)
log r0.z, r0.z
mul r2.z, r2.z, l(0.001000)
movc r0.w, r0.w, r2.z, l(6.50000048)
store_structured g0.x, vThreadIDInGroupFlattened.x, l(0), r0.z
sync_g_t
xor r4.xyzw, vThreadIDInGroupFlattened.xxxx, l(1, 2, 4, 8)
ld_structured r2.z, r4.x, l(0), g0.xxxx
add r0.z, r0.z, r2.z
sync_g_t
store_structured g0.x, vThreadIDInGroupFlattened.x, l(0), r0.z
sync_g_t
ld_structured r2.z, r4.y, l(0), g0.xxxx
add r0.z, r0.z, r2.z
sync_g_t
store_structured g0.x, vThreadIDInGroupFlattened.x, l(0), r0.z
sync_g_t
ld_structured r2.z, r4.z, l(0), g0.xxxx
add r0.z, r0.z, r2.z
sync_g_t
store_structured g0.x, vThreadIDInGroupFlattened.x, l(0), r0.z
sync_g_t
ld_structured r2.z, r4.w, l(0), g0.xxxx
add r0.z, r0.z, r2.z
sync_g_t
store_structured g0.x, vThreadIDInGroupFlattened.x, l(0), r0.z
sync_g_t
xor r2.z, vThreadIDInGroupFlattened.x, l(16)
ld_structured r2.w, r2.z, l(0), g0.xxxx
add r0.z, r0.z, r2.w
sync_g_t
store_structured g0.x, vThreadIDInGroupFlattened.x, l(0), r0.z
sync_g_t
ld_structured r2.w, l(32), l(0), g0.xxxx
sync_g_t
store_structured g0.x, vThreadIDInGroupFlattened.x, l(0), r0.w
sync_g_t
ld_structured r3.x, r4.x, l(0), g0.xxxx
add r0.w, r0.w, r3.x
sync_g_t
store_structured g0.x, vThreadIDInGroupFlattened.x, l(0), r0.w
sync_g_t
ld_structured r3.x, r4.y, l(0), g0.xxxx
add r0.w, r0.w, r3.x
sync_g_t
store_structured g0.x, vThreadIDInGroupFlattened.x, l(0), r0.w
sync_g_t
ld_structured r3.x, r4.z, l(0), g0.xxxx
add r0.w, r0.w, r3.x
sync_g_t
store_structured g0.x, vThreadIDInGroupFlattened.x, l(0), r0.w
sync_g_t
ld_structured r3.x, r4.w, l(0), g0.xxxx
add r0.w, r0.w, r3.x
sync_g_t
store_structured g0.x, vThreadIDInGroupFlattened.x, l(0), r0.w
sync_g_t
ld_structured r2.z, r2.z, l(0), g0.xxxx
add r0.w, r0.w, r2.z
sync_g_t
store_structured g0.x, vThreadIDInGroupFlattened.x, l(0), r0.w
sync_g_t
mad r2.xy, -r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(1.000000, 1.000000, 0.000000, 0.000000)
mul r2.xy, r2.xyxx, -r2.xyxx
mul r2.xy, r2.xyxx, cb1[27].xxxx
exp r2.xy, r2.xyxx
mul r2.x, r2.y, r2.x
mul r2.x, r3.w, r2.x
mul r2.y, r5.w, cb1[27].w
exp r2.y, r2.y
lt r2.z, cb1[27].z, l(0.000000)
add r3.x, -r2.y, l(1.000000)
movc r2.y, r2.z, r2.y, r3.x
add r2.y, r2.y, l(-1.000000)
mad r2.y, |cb1[27].z|, r2.y, l(1.000000)
mul r3.z, r2.y, r2.x
mul r2.x, r3.z, cb1[27].y
movc r4.xyzw, cb1[28].yyyy, r2.xxxx, r5.xyzw
if_z vThreadIDInGroupFlattened.x
  add r0.z, r0.z, r2.w
  ld_structured r2.x, l(32), l(0), g0.xxxx
  add r0.w, r0.w, r2.x
  mul r0.zw, r3.zzzz, r0.zzzw
  mul r3.xy, r0.zwzz, l(0.015625, 0.015625, 0.000000, 0.000000)
  mov r3.w, l(0)
  store_uav_typed u9.xyzw, r1.xyzw, r3.xyzw
endif
store_uav_typed u8.xyzw, r0.xyyy, r4.xyzw
ret
// Approximately 447 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v1.3.16 on Sun Jan 16 00:23:15 2022
// groupshared struct { float val[1]; } g0[64];
//
// cbuffer ConstBuf__tileData : register(b0)
// {
//
//   struct
//   {
//     uint tilesHorz;
//     uint tilePermutation;
//     uint firstGroupOffset;
//   } resourceTables__tileData : packoffset(c0);
//
// }
//
// cbuffer ConstBuf__passData : register(b1)
// {
//
//   struct
//   {
//
//     struct
//     {
//       float3 cFogColor;
//       float cHeightFalloff;
//       float3 cEyePosition;
//       float cHeightDensity;
//       float cStartDistance;
//       float cGlobalDensity;
//       float cDepthReprojectScale;
//       float cDepthReprojectBias;
//       float4x4 cInvProjNoZReproj;
//       float3 cDirectionalFogDirection;
//       float cDirectionalityPower;
//       float3 cDirectionalFogColor;
//       float cDensityMapSparseBias;
//       float3 cDensityMapInvExtents;
//       float cDensityMapSparseSegmentScale;
//       float3 cDensityMapBias;
//       float cDensityMapSparseCutoff;
//       float cVolFogExponentMultiply;
//       float cVolFogDistanceMultiply;
//       float cVolFogExponentNormalize;
//       float cVolFogDistanceNormalize;
//       float cVolFogResolutionScale;
//       int cVolFogWidth;
//       int cVolFogHeight;
//       int cVolFogDepth;
//     } atmosphericConstants;
//
//
//     struct
//     {
//       float4x4 g_View;
//       float4 g_avfProfilesAsGaussians[8];
//       float4 g_screenRes;
//       float g_maxPixelStep;
//       float g_DepthWeighting;
//       float g_FarPlane;
//       float g_overrideSkyDepth;
//       float g_luminanceVariance;
//       float g_exposure;
//       float g_exposureDepthWeighting;
//       float g_exposureDepthWeightingExponent;
//       float g_exposureCharacterWeighting;
//       uint g_visualizeExposureWeight;
//       uint g_whiteDiffuse;
//       float2 g_opaqueRefractionViewportScale;
//       uint g_MaxSSSKernelWidth;
//       float2 g_opaqueRefractionMaxUV;
//       int2 g_opaqueRefractionSize;
//     } constants;
//
//
//     struct
//     {
//       float4 g_PixelDithering[16];
//     } dither;
//
//   } resourceTables__passData : packoffset(c0);
//
//
// SamplerState resourceTables__passData__smpLinearClamp_s : register(s0);
// Texture2D<float4> resourceTables__passData.texSSSSDiffuseIrradiance : register(t2);
// Texture2D<float4> resourceTables__passData.emissive : register(t3);
// Texture3D<float4> resourceTables__passData.volumetricFog : register(t4);
// Texture2D<float4> resourceTables__passData.opaqueRefraction : register(t5);
// Texture2D<float4> resourceTables__gbuffers.baseColorTexture : register(t7);
// Texture2D<float4> resourceTables__gbuffers.normalTexture : register(t8);
// Texture2D<float4> resourceTables__gbuffers.propertiesTexture : register(t9);
// Texture2D<float4> resourceTables__gbuffers.scatteringEmissiveTexture : register(t11);
// RWTexture2D<float4> resourceTables__tileData.outTexture : register(u8);
// RWTexture2D<float4> resourceTables__passData.outLuminance : register(u9);
//
//
// // 3Dmigoto declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Texture2D<float4> StereoParams : register(t125);
//
//
// void main)
// {
//   Textures: = t2-t5 + ;
//   uiDest.x =  / ;
//   t6-t11 =  % ;
//   Textures: = uiDest.x;
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_uav_typed_texture2d (float,float,float,float) u8
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_uav_typed_texture2d (float,float,float,float) u9
//   float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_thread_group 64, 1, 1
//   r0.x = (uint)vThreadGroupID.x >> (uint16)resourceTables__tileData.firstGroupOffset;
//   r0.x = (int)r1.x & (int)r0.x;
//   r0.yz = (int2)vThreadIDInGroupFlattened.xx ^ int2(2,3);
//   r0.yz = (uint2)r0.yz << int2(4,4);
//   r0.z = (uint)r0.y >> (uint)r0.z;
//   bitmask.w = ((~(-1 << vThreadIDInGroupFlattened.x)) << 1) & 0xffffffff;  r0.w = (((uint) << 1) & bitmask.w) | ((uint) & ~bitmask.w);
//   r2.xy = float2(0,0);
//   bitmask.x = ((~(-1 << 2)) << 0) & 0xffffffff;  r3.x = (((uint)r2.x << 0) & bitmask.x) | ((uint)r0.z & ~bitmask.x);
//   bitmask.y = ((~(-1 << 2)) << 0) & 0xffffffff;  r3.y = (((uint)r2.y << 0) & bitmask.y) | ((uint)r0.y & ~bitmask.y);
//   r1.yzw = (uint3)r0.xxx;
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// error X3506: unrecognized compiler target '                                        // Textures:  t2-t5'
/////////////////////////////////////////////////////////////////////////////
