//Volumetric lighting CS 1.
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
//   using 3Dmigoto v0.6.163 on Thu Aug 21 17:09:59 2025
//
//
// Buffer Definitions:
//
// cbuffer cb_scene
// {
//
//   float4x4 view_g;                   // Index:    0 1 2 3          Components:    16
//   float4x4 viewInv_g;                // Index:    4 5 6 7          Components:    16
//   float4x4 proj_g;                   // Index:    8 9 10 11        Components:    16
//   float4x4 projInv_g;                // Index:   12 13 14 15       Components:    16 [unused]
//   float4x4 viewProj_g;               // Index:   16 17 18 19       Components:    16 [unused]
//   float4x4 viewProjInv_g;            // Index:   20 21 22 23       Components:    16 [unused]
//   float2 vpSize_g;                   // Index:   24.xy             Components:     2 [unused]
//   float2 invVPSize_g;                // Index:   24.zw             Components:     2 [unused]
//   float3 lightColor_g;               // Index:   25.xyz            Components:     3 [unused]
//   float disableMapObjNearFade_g;     // Index:   25.w              Components:     1 [unused]
//   float3 lightDirection_g;           // Index:   26.xyz            Components:     3 [unused]
//   float gameTime_g;                  // Index:   26.w              Components:     1 [unused]
//   float3 sceneShadowColor_g;         // Index:   27.xyz            Components:     3 [unused]
//   int shadowmapCascadeCount_g;       // Index:   27.w              Components:     1
//   float3 windDirection_g;            // Index:   28.xyz            Components:     3 [unused]
//   float sceneTime_g;                 // Index:   28.w              Components:     1 [unused]
//   float2 lightTileSizeInv_g;         // Index:   29.xy             Components:     2 [unused]
//   float fogNearDistance_g;           // Index:   29.z              Components:     1 [unused]
//   float fogFadeRangeInv_g;           // Index:   29.w              Components:     1 [unused]
//   float3 fogColor_g;                 // Index:   30.xyz            Components:     3 [unused]
//   float fogIntensity_g;              // Index:   30.w              Components:     1 [unused]
//   float fogHeight_g;                 // Index:   31.x              Components:     1 [unused]
//   float fogHeightRangeInv_g;         // Index:   31.y              Components:     1 [unused]
//   float windWaveTime_g;              // Index:   31.z              Components:     1 [unused]
//   float windWaveFrequency_g;         // Index:   31.w              Components:     1 [unused]
//   uint localLightProbeCount_g;       // Index:   32.x              Components:     1 [unused]
//   float lightSpecularGlossiness_g;   // Index:   32.y              Components:     1 [unused]
//   float lightSpecularIntensity_g;    // Index:   32.z              Components:     1 [unused]
//   float localShadowResolutionInv_g;  // Index:   32.w              Components:     1 [unused]
//   float4x4 ditherMtx_g;              // Index:   33 34 35 36       Components:    16 [unused]
//   float4 lightProbe_g[9];            // Index:   37-45             Components:    36 [unused]
//   float3 chrLightDir_g;              // Index:   46.xyz            Components:     3 [unused]
//   float windForce_g;                 // Index:   46.w              Components:     1 [unused]
//   float4 mapColor_g;                 // Index:   47.xyzw           Components:     4 [unused]
//   float4 clipPlane_g;                // Index:   48.xyzw           Components:     4 [unused]
//   float2 resolutionScaling_g;        // Index:   49.xy             Components:     2
//   float2 invShadowSize_g;            // Index:   49.zw             Components:     2 [unused]
//   float3 chrShadowColor_g;           // Index:   50.xyz            Components:     3 [unused]
//   float shadowFadeNear_g;            // Index:   50.w              Components:     1
//   float4 frustumPlanes_g[6];         // Index:   51-56             Components:    24 [unused]
//   float3 shadowSplitDistance_g;      // Index:   57.xyz            Components:     3
//   float shadowFadeRangeInv_g;        // Index:   57.w              Components:     1
//   float4x4 shadowMtx_g[4];           // Index:   58-73             Components:    64
//
// }
//
// cbuffer cb_volume_fog
// {
//
//   float volumeLightBrightness_g;     // Index:    0.x              Components:     1
//   float volumeDensity_g;             // Index:    0.y              Components:     1
//   float volumeCameraFarOverMaxFar_g; // Index:    0.z              Components:     1
//   float volumeCameraFarClip_g;       // Index:    0.w              Components:     1
//   float volumeNearOverFarClip_g;     // Index:    1.x              Components:     1
//   float volumeNearDistance_g;        // Index:    1.y              Components:     1
//   float volumeFarDistance_g;         // Index:    1.z              Components:     1 [unused]
//   uint volumeShapeCount_g;           // Index:    1.w              Components:     1
//   float4 volumeColor_g;              // Index:    2.xyzw           Components:     4
//   float2 voulumeLightTileSizeInv_g;  // Index:    3.xy             Components:     2
//   float combineAlpha_g;              // Index:    3.z              Components:     1 [unused]
//   float temporalRatio_g;             // Index:    3.w              Components:     1
//   float2 prevScaling_g;              // Index:    4.xy             Components:     2
//   float2 prevUVClamp_g;              // Index:    4.zw             Components:     2
//   float volumeNearFadeInv_g;         // Index:    5.x              Components:     1
//   float volumeNearFadeValue_g;       // Index:    5.y              Components:     1
//   float densityScale_g;              // Index:    5.w              Components:     1
//   float4x4 prevViewProj_g;           // Index:    6 7 8 9          Components:    16 [unused]
//
// }
//
// cbuffer cb_volume_fog2
// {
//
//   float4x4 toPrevView_g;             // Index:    0 1 2 3          Components:    16
//   float4 frustumRays_g[4];           // Index:    4 5 6 7          Components:    16
//   float3 jitter_g;                   // Index:    8.xyz            Components:     3
//
// }
//
// Resource bind info for volumeShapes
// {
//
//   struct VolumeShape
//   {
//
//       float4x4 mtx;                  // Index:    0
//       float4 color;                  // Index:    4
//       float radiusInv;               // Index:    5
//       float attenuation;             // Index:    5.y
//       float density;                 // Index:    5.z
//       uint type;                     // Index:    5.w
//
//   } $Element;                        // Index:    0-5              Components:    24
//
// }
//
// Resource bind info for localShadowMapMatrices
// {
//
//   float4x4 $Element;                 // Index:    0 1 2 3          Components:    16
//
// }
//
// Resource bind info for dynamicLights_g
// {
//
//   struct LightParam
//   {
//
//       float3 pos;                    // Index:    0
//       float radius;                  // Index:    0.w
//       float3 color;                  // Index:    1
//       float radiusInv;               // Index:    1.w
//       float3 charaColor;             // Index:    2
//       float attenuation;             // Index:    2.w
//       float3 vec;                    // Index:    3
//       float spotAngleInv;            // Index:    3.w
//       float attenuationAngle;        // Index:    4
//       float specularIntensity;       // Index:    4.y
//       float specularGlossiness;      // Index:    4.z
//       float scatterAnisotropy;       // Index:    4.w
//       float3 scatterColor;           // Index:    5
//       float scatterDensity;          // Index:    5.w
//       float translucency;            // Index:    6
//       int shadowmapIndex;            // Index:    6.y
//       float scatterOffset;           // Index:    6.z
//       float userParam;               // Index:    6.w
//
//   } $Element;                        // Index:    0-6              Components:    28
//
// }
//
// Resource bind info for lightIndices_g
// {
//
//   struct LightIndexData
//   {
//
//       int pointLightIndices[63];     // Index:    0
//       uint pointLightCount;          // Index:   15.w
//       int spotLightIndices[63];      // Index:   16
//       uint spotLightCount;           // Index:   31.w
//       int lightProbeIndices[14];     // Index:   32
//       uint lightProbeCount;          // Index:   35.z
//       float tileDepthInv;            // Index:   35.w
//
//   } $Element;                        // Index:    0-35             Components:   144
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// samLinear                         sampler      NA          NA    0        1
// SmplShadow                      sampler_c      NA          NA   13        1
// volumeShapes                      texture  struct         r/o    0        1
// localShadowMaps                   texture  float4     2darray    1        1
// localShadowMapMatrices            texture  struct         r/o    2        1
// volumeInjectPrev                  texture  float4          3d    3        1
// dynamicLights_g                   texture  struct         r/o   11        1
// lightIndices_g                    texture  struct         r/o   12        1
// shadowMaps                        texture  float4     2darray   16        1
// volumeInject                          UAV  float4          3d    0        1
// cb_scene                          cbuffer      NA          NA    0        1
// cb_volume_fog2                    cbuffer      NA          NA    2        1
// cb_volume_fog                     cbuffer      NA          NA    7        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[74], dynamicIndexed
dcl_constantbuffer CB7[6], immediateIndexed
dcl_constantbuffer CB2[9], immediateIndexed
dcl_constantbuffer CB13[3], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s13, mode_comparison
dcl_resource_structured t0, 96
dcl_resource_texture2darray (float,float,float,float) t1
dcl_resource_structured t2, 64
dcl_resource_texture3d (float,float,float,float) t3
dcl_resource_structured t11, 112
dcl_resource_structured t12, 576
dcl_resource_texture2darray (float,float,float,float) t16
dcl_uav_typed_texture3d (float,float,float,float) u0
dcl_input vThreadID.xyz
dcl_temps 35
dcl_resource_texture2d (float,float,float,float) t125
dcl_thread_group 8, 2, 4
ld_indexable(texture2d)(float,float,float,float) r25.xyzw, l(0, 0, 0, 0), t125.xyzw
resinfo_indexable(texture3d)(float,float,float,float)_uint r0.xyz, l(0), u0.xyzw
uge r1.xyz, vThreadID.xyzx, r0.xyzx
or r0.w, r1.y, r1.x
or r0.w, r1.z, r0.w
if_nz r0.w
  ret
endif
utof r0.xyz, r0.xyzx



add r1.xyz, r0.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000)
utof r2.xyz, vThreadID.xyzx
mul r0.zw, r1.xxxy, cb0[49].xxxy



div r0.zw, r2.xxxy, r0.zzzw

mad r0.z, r25.x, l(-0.5), r0.z

div r1.z, r2.z, r1.z
add r1.w, r1.z, cb2[8].z
add r2.x, l(1.000000), -cb7[1].x
mad r1.w, r1.w, r2.x, cb7[1].x
add r2.yzw, -cb2[4].xxyz, cb2[5].xxyz
mad r2.yzw, r0.zzzz, r2.yyzw, cb2[4].xxyz
add r3.xyz, cb2[6].xyzx, -cb2[7].xyzx
mad r3.xyz, r0.zzzz, r3.xyzx, cb2[7].xyzx
add r3.xyz, -r2.yzwy, r3.xyzx
mad r2.yzw, r0.wwww, r3.xxyz, r2.yyzw



mul r3.xyz, r1.wwww, r2.yzwy

//mad r2.y, r25.x, l(-1.0), r2.y

mov r4.x, cb0[4].w
mov r4.y, cb0[5].w
mov r4.z, cb0[6].w

mul r27.x, r25.y, cb0[0].x
mul r27.y, r25.y, cb0[0].y
mul r27.z, r25.y, cb0[0].z
div r27.xyz, r27.xyzx, cb0[8].x

mad r4.xyz, r25.xxxx, r27.xyzx, r4.xyzx

mad r5.xyz, r2.yzwy, r1.wwww, r4.xyzx
mov r5.w, l(1.000000)
dp4 r0.z, cb0[2].xyzw, r5.xyzw
ieq r0.w, l(4), cb0[27].w
lt r6.xyz, cb0[57].zyxz, -r0.zzzz
and r0.w, r0.w, r6.x
and r1.w, r6.z, l(1)
movc r1.w, r6.y, l(2), r1.w
movc r0.w, r0.w, l(3), r1.w
ishl r1.w, r0.w, l(2)

//dp4 r31.w, r5.xyzw, cb0[r1.w + 61].xyzw
//mad r26.x, r25.y, r31.w, l(-1.0)
//mad r5.x, r25.x, r26.x, r5.x

dp4 r6.x, r5.xyzw, cb0[r1.w + 58].xyzw
dp4 r6.y, r5.xyzw, cb0[r1.w + 59].xyzw
dp4 r6.z, r5.xyzw, cb0[r1.w + 60].xyzw
dp4 r1.w, r5.xyzw, cb0[r1.w + 61].xyzw
div r6.xyz, r6.xyzx, r1.wwww
mov_sat r7.xy, r6.xyxx
itof r7.z, r0.w
sample_c_lz_indexable(texture2darray)(float,float,float,float) r0.w, r7.xyzx, t16.xxxx, s13, r6.z
add r1.w, -r0.z, -cb0[50].w
mul_sat r1.w, r1.w, cb0[57].w
add r3.w, -r0.w, l(1.000000)
mad r0.w, r1.w, r3.w, r0.w
mov r6.xyzw, l(0,0,0,0)
mov r1.w, l(0)
mov r3.w, l(0)
mov r4.w, l(0)
loop
  uge r7.x, r4.w, cb7[1].w
  breakc_nz r7.x
  ld_structured_indexable(structured_buffer, stride=96)(mixed,mixed,mixed,mixed) r7.xy, r4.w, l(88), t0.xyxx
  if_z r7.y
    ld_structured_indexable(structured_buffer, stride=96)(mixed,mixed,mixed,mixed) r8.x, r4.w, l(12), t0.xxxx
    ld_structured_indexable(structured_buffer, stride=96)(mixed,mixed,mixed,mixed) r8.y, r4.w, l(28), t0.xxxx
    ld_structured_indexable(structured_buffer, stride=96)(mixed,mixed,mixed,mixed) r8.z, r4.w, l(44), t0.xxxx
    add r7.yzw, -r5.xxyz, r8.xxyz
    dp3 r7.y, r7.yzwy, r7.yzwy
    sqrt r7.y, r7.y
    ld_structured_indexable(structured_buffer, stride=96)(mixed,mixed,mixed,mixed) r7.zw, r4.w, l(80), t0.xxxy
    mul r7.y, r7.z, r7.y
    log r7.y, |r7.y|
    mul r7.y, r7.y, r7.w
    exp r7.y, r7.y
    add r7.y, -r7.y, l(1.000000)
    max r7.y, r7.y, l(0.000000)
  else
    ld_structured_indexable(structured_buffer, stride=96)(mixed,mixed,mixed,mixed) r7.z, r4.w, l(92), t0.xxxx
    ieq r7.z, r7.z, l(1)
    if_nz r7.z
      ld_structured_indexable(structured_buffer, stride=96)(mixed,mixed,mixed,mixed) r8.xyzw, r4.w, l(0), t0.xyzw
      ld_structured_indexable(structured_buffer, stride=96)(mixed,mixed,mixed,mixed) r9.xyzw, r4.w, l(16), t0.xyzw
      ld_structured_indexable(structured_buffer, stride=96)(mixed,mixed,mixed,mixed) r10.xyzw, r4.w, l(32), t0.xyzw
      dp4 r8.x, r5.xyzw, r8.xyzw
      dp4 r8.y, r5.xyzw, r9.xyzw
      dp4 r8.z, r5.xyzw, r10.xyzw
      lt r9.xyz, r8.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
      and r7.z, r9.y, r9.x
      and r7.z, r9.z, r7.z
      lt r9.xyz, l(-0.500000, -0.500000, -0.500000, 0.000000), r8.xyzx
      and r7.w, r9.y, r9.x
      and r7.w, r9.z, r7.w
      and r7.z, r7.w, r7.z
      if_nz r7.z
        max r7.z, |r8.z|, |r8.y|
        max r7.z, r7.z, |r8.x|
        add r7.z, r7.z, r7.z
        ld_structured_indexable(structured_buffer, stride=96)(mixed,mixed,mixed,mixed) r7.w, r4.w, l(84), t0.xxxx
        log r7.z, r7.z
        mul r7.z, r7.z, r7.w
        exp r7.z, r7.z
        add r7.y, -r7.z, l(1.000000)
      else
        mov r7.y, l(0)
      endif
    else
      mov r7.y, l(0)
    endif
  endif
  ld_structured_indexable(structured_buffer, stride=96)(mixed,mixed,mixed,mixed) r8.xyzw, r4.w, l(64), t0.xyzw
  mad r6.xyzw, r8.xyzw, r7.yyyy, r6.xyzw
  mad r1.w, r7.x, r7.y, r1.w
  add r3.w, r3.w, r7.y
  iadd r4.w, r4.w, l(1)
endloop
lt r4.w, l(0.000000), r3.w
div r7.x, r1.w, r3.w
movc r1.w, r4.w, r7.x, r1.w
add r7.x, -r3.w, l(1.000000)
max r7.x, r7.x, l(0.000000)
add r7.y, -r1.w, cb7[0].y
mad r1.w, r7.x, r7.y, r1.w
div r8.xyzw, r6.xyzw, r3.wwww
movc r6.xyzw, r4.wwww, r8.xyzw, r6.xyzw
add r8.xyzw, -r6.xyzw, cb7[2].xyzw
mad r6.xyzw, r7.xxxx, r8.xyzw, r6.xyzw
add r0.w, r0.w, l(-1.000000)
mad r0.w, r6.w, r0.w, l(1.000000)
mul r6.xyz, r0.wwww, r6.xyzx
utof r7.xy, vThreadID.xyxx
mul r7.xy, r7.xyxx, cb7[3].xyxx
ftou r7.xy, r7.xyxx
ishl r0.w, r7.y, l(5)
iadd r3.w, r7.x, r0.w
ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(572), t12.xxxx
mul r3.w, -r0.z, r3.w
min r3.w, r3.w, l(7.000000)
max r3.w, r3.w, l(0.000000)
ftou r3.w, r3.w
imad r0.w, r3.w, l(576), r0.w
iadd r0.w, r7.x, r0.w
umin r0.w, r0.w, l(4607)
ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r3.w, r0.w, l(252), t12.xxxx
umin r3.w, r3.w, l(63)
dp3 r4.w, r3.xyzx, r3.xyzx
rsq r4.w, r4.w
mul r3.xyz, r3.xyzx, r4.wwww
mov r7.xyz, l(0,0,0,0)
mov r4.w, r1.w
mov r6.w, l(0)
loop
  uge r7.w, r6.w, r3.w
  breakc_nz r7.w
  ishl r7.w, r6.w, l(2)
  ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r7.w, r0.w, r7.w, t12.xxxx
  ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r8.xyz, r7.w, l(0), t11.xyzx
  add r8.xyz, -r5.xyzx, r8.xyzx
  dp3 r8.w, r8.xyzx, r8.xyzx
  sqrt r9.x, r8.w
  ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r9.y, r7.w, l(28), t11.xxxx
  mul r9.y, r9.y, r9.x
  ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r9.z, r7.w, l(44), t11.xxxx
  log r9.y, |r9.y|
  mul r9.y, r9.y, r9.z
  exp r9.y, r9.y
  add r9.y, -r9.y, l(1.000000)
  max r9.y, r9.y, l(0.000000)
  lt r9.z, l(0.000000), r9.y
  if_nz r9.z
    ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r10.xyzw, r7.w, l(80), t11.xyzw
    mad r4.w, r9.y, r10.w, r4.w
    lt r9.x, l(0.000000), r9.x
    if_nz r9.x
      rsq r8.w, r8.w
      mul r8.xyz, r8.wwww, r8.xyzx
      dp3 r8.x, r3.xyzx, r8.xyzx
      ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r7.w, r7.w, l(76), t11.xxxx
      mad r8.y, r7.w, r7.w, l(1.000000)
      dp2 r8.x, r8.xxxx, r7.wwww
      add r8.x, -r8.x, r8.y
      mul r8.y, r8.x, r8.x
      mul r8.x, r8.x, r8.y
      max r8.x, r8.x, l(0.000000)
      sqrt r8.x, r8.x
      lt r8.y, l(0.000000), r8.x
      mad r7.w, -r7.w, r7.w, l(1.000000)
      div r7.w, r7.w, r8.x
      movc r7.w, r8.y, r7.w, l(1.000000)
      mul r9.y, r7.w, r9.y
    endif
    mad r7.xyz, r10.xyzx, r9.yyyy, r7.xyzx
  endif
  iadd r6.w, r6.w, l(1)
endloop
mad r6.xyz, r6.xyzx, cb7[0].xxxx, r7.xyzx
ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r1.w, r0.w, l(508), t12.xxxx
umin r1.w, r1.w, l(63)
mov r7.xyz, l(0,0,0,0)
mov r3.w, r4.w
mov r6.w, l(0)
loop
  uge r7.w, r6.w, r1.w
  breakc_nz r7.w
  ishl r7.w, r6.w, l(2)
  iadd r7.w, r7.w, l(256)
  ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r7.w, r0.w, r7.w, t12.xxxx
  ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r8.xyz, r7.w, l(0), t11.xyzx
  add r8.xyz, -r5.xyzx, r8.xyzx
  dp3 r8.w, r8.xyzx, r8.xyzx
  rsq r9.x, r8.w
  mul r8.xyz, r8.xyzx, r9.xxxx
  ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r9.xyzw, r7.w, l(48), t11.xyzw
  dp3 r9.x, r8.xyzx, r9.xyzx
  max r9.x, r9.x, l(0.000000)
  add r9.x, -r9.x, l(1.000000)
  mul r9.x, r9.w, r9.x
  ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r9.y, r7.w, l(64), t11.xxxx
  log r9.x, r9.x
  mul r9.x, r9.x, r9.y
  exp r9.x, r9.x
  add r9.x, -r9.x, l(1.000000)
  max r9.x, r9.x, l(0.000000)
  lt r9.y, l(0.000000), r9.x
  if_nz r9.y
    sqrt r8.w, r8.w
    ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r9.y, r7.w, l(104), t11.xxxx
    lt r9.y, r8.w, r9.y
    if_nz r9.y
      iadd r9.y, r6.w, l(1)
      mov r6.w, r9.y
      continue
    endif
    ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r9.y, r7.w, l(28), t11.xxxx
    mul r9.y, r8.w, r9.y
    ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r9.z, r7.w, l(44), t11.xxxx
    log r9.y, |r9.y|
    mul r9.y, r9.y, r9.z
    exp r9.y, r9.y
    add r9.y, -r9.y, l(1.000000)
    max r9.y, r9.y, l(0.000000)
    mul r9.x, r9.y, r9.x
    lt r9.y, l(0.000000), r9.x
    if_nz r9.y
      ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r9.y, r7.w, l(100), t11.xxxx
      ine r9.z, r9.y, l(-1)
      if_nz r9.z
        ld_structured_indexable(structured_buffer, stride=64)(mixed,mixed,mixed,mixed) r10.xyzw, r9.y, l(0), t2.xyzw
        ld_structured_indexable(structured_buffer, stride=64)(mixed,mixed,mixed,mixed) r11.xyzw, r9.y, l(16), t2.xyzw
        ld_structured_indexable(structured_buffer, stride=64)(mixed,mixed,mixed,mixed) r12.xyzw, r9.y, l(32), t2.xyzw
        ld_structured_indexable(structured_buffer, stride=64)(mixed,mixed,mixed,mixed) r13.xyzw, r9.y, l(48), t2.xyzw
        dp4 r10.x, r5.xyzw, r10.xyzw
        dp4 r10.y, r5.xyzw, r11.xyzw
        dp4 r10.z, r5.xyzw, r12.xyzw
        dp4 r9.z, r5.xyzw, r13.xyzw
        div r10.xyz, r10.xyzx, r9.zzzz
        lt r9.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r10.xxxy
        lt r11.xy, r10.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
        and r9.z, r9.z, r11.x
        and r9.z, r9.w, r9.z
        and r9.z, r11.y, r9.z
        if_nz r9.z
          itof r10.w, r9.y
          sample_c_lz_indexable(texture2darray)(float,float,float,float) r9.y, r10.xywx, t1.xxxx, s13, r10.z
          mul r9.x, r9.y, r9.x
        endif
      endif
      ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r10.xyzw, r7.w, l(80), t11.xyzw
      mad r3.w, r9.x, r10.w, r3.w
      lt r8.w, l(0.000000), r8.w
      if_nz r8.w
        dp3 r8.x, r3.xyzx, r8.xyzx
        ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r7.w, r7.w, l(76), t11.xxxx
        mad r8.y, r7.w, r7.w, l(1.000000)
        dp2 r8.x, r8.xxxx, r7.wwww
        add r8.x, -r8.x, r8.y
        mul r8.y, r8.x, r8.x
        mul r8.x, r8.x, r8.y
        max r8.x, r8.x, l(0.000000)
        sqrt r8.x, r8.x
        lt r8.y, l(0.000000), r8.x
        mad r7.w, -r7.w, r7.w, l(1.000000)
        div r7.w, r7.w, r8.x
        movc r7.w, r8.y, r7.w, l(1.000000)
        mul r9.x, r7.w, r9.x
      endif
      mad r7.xyz, r10.xyzx, r9.xxxx, r7.xyzx
    endif
  endif
  iadd r6.w, r6.w, l(1)
endloop
add r3.xyz, r6.xyzx, r7.xyzx
mul r0.w, r3.w, cb7[5].w
add r0.z, -r0.z, -cb7[1].y
mul_sat r0.z, r0.z, cb7[5].x
add r1.w, l(1.000000), -cb7[5].y
mad r0.z, r0.z, r1.w, cb7[5].y
mul r5.w, r0.z, r0.w
mul r5.xyz, r3.xyzx, r5.wwww
mad r0.z, r1.z, r2.x, cb7[1].x
mad r3.xyz, r2.yzwy, r0.zzzz, r4.xyzx
mov r3.w, l(1.000000)

//dp4 r4.w, r3.xyzw, cb0[3].xyzw
//mad r26.x, r25.y, r4.w, l(-1.0)
//mad r3.x, r25.x, r26.x, r3.x

dp4 r4.x, r3.xyzw, cb0[0].xyzw
dp4 r4.y, r3.xyzw, cb0[1].xyzw
dp4 r4.z, r3.xyzw, cb0[2].xyzw
dp4 r4.w, r3.xyzw, cb0[3].xyzw
dp4 r3.x, r4.xyzw, cb2[0].xyzw
dp4 r3.y, r4.xyzw, cb2[1].xyzw
dp4 r3.z, r4.xyzw, cb2[2].xyzw
dp4 r3.w, r4.xyzw, cb2[3].xyzw
dp4 r6.x, r3.xyzw, cb0[8].xyzw
dp4 r6.y, r3.xyzw, cb0[9].xyzw
dp4 r0.z, r3.xyzw, cb0[11].xyzw

add r26.x, r0.z, -cb13[2].y
mad r6.x, cb13[2].x, r26.x, r6.x

div r0.zw, r6.xxxy, r0.zzzz
mad r6.xy, r0.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
div r0.z, -r3.z, cb7[0].w
add r6.z, -r6.y, l(1.000000)
mul r1.zw, r6.xxxz, cb7[4].xxxy
mad r0.z, r0.z, cb7[0].z, -cb7[1].x
div r2.z, r0.z, r2.x
min r0.zw, r1.zzzw, cb7[4].zzzw
mad r0.zw, r0.zzzw, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000)
div r0.xy, r1.xyxx, r0.xyxx
mul r0.xy, r0.xyxx, r0.zwzz
mad r2.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
add r0.xyzw, -r3.xyzw, r4.xyzw
dp4 r0.x, r0.xyzw, r0.xyzw
sqrt r0.x, r0.x
mul r0.x, r0.x, l(-0.144269511)
exp r0.x, r0.x
add r0.y, l(-0.200000), cb7[3].w
mad r0.x, r0.x, r0.y, l(0.200000)
ge r0.y, cb7[3].w, l(1.000000)
sample_l_indexable(texture3d)(float,float,float,float) r1.xyzw, r2.xyzx, t3.xyzw, s0, l(0.000000)
movc r1.xyzw, r0.yyyy, l(0,0,0,0), r1.xyzw
add r2.xyzw, -r1.xyzw, r5.xyzw
mad r0.xyzw, r0.xxxx, r2.xyzw, r1.xyzw
store_uav_typed u0.xyzw, vThreadID.xyzz, r0.xyzw
ret
// Approximately 332 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v0.6.163 on Thu Aug 21 17:09:59 2025
//
// struct VolumeShape
// {
//     float4x4 mtx;                  // Offset:    0
//     float4 color;                  // Offset:   64
//     float radiusInv;               // Offset:   80
//     float attenuation;             // Offset:   84
//     float density;                 // Offset:   88
//     uint type;                     // Offset:   92
// };
//
// struct LightParam
// {
//     float3 pos;                    // Offset:    0
//     float radius;                  // Offset:   12
//     float3 color;                  // Offset:   16
//     float radiusInv;               // Offset:   28
//     float3 charaColor;             // Offset:   32
//     float attenuation;             // Offset:   44
//     float3 vec;                    // Offset:   48
//     float spotAngleInv;            // Offset:   60
//     float attenuationAngle;        // Offset:   64
//     float specularIntensity;       // Offset:   68
//     float specularGlossiness;      // Offset:   72
//     float scatterAnisotropy;       // Offset:   76
//     float3 scatterColor;           // Offset:   80
//     float scatterDensity;          // Offset:   92
//     float translucency;            // Offset:   96
//     int shadowmapIndex;            // Offset:  100
//     float scatterOffset;           // Offset:  104
//     float userParam;               // Offset:  108
// };
//
// struct LightIndexData
// {
//     int pointLightIndices[63];     // Offset:    0
//     uint pointLightCount;          // Offset:  252
//     int spotLightIndices[63];      // Offset:  256
//     uint spotLightCount;           // Offset:  508
//     int lightProbeIndices[14];     // Offset:  512
//     uint lightProbeCount;          // Offset:  568
//     float tileDepthInv;            // Offset:  572
// };
//
// cbuffer cb_scene : register(b0)
// {
//   float4x4 view_g : packoffset(c0);
//   float4x4 viewInv_g : packoffset(c4);
//   float4x4 proj_g : packoffset(c8);
//   float4x4 projInv_g : packoffset(c12);
//   float4x4 viewProj_g : packoffset(c16);
//   float4x4 viewProjInv_g : packoffset(c20);
//   float2 vpSize_g : packoffset(c24);
//   float2 invVPSize_g : packoffset(c24.z);
//   float3 lightColor_g : packoffset(c25);
//   float disableMapObjNearFade_g : packoffset(c25.w);
//   float3 lightDirection_g : packoffset(c26);
//   float gameTime_g : packoffset(c26.w);
//   float3 sceneShadowColor_g : packoffset(c27);
//   int shadowmapCascadeCount_g : packoffset(c27.w);
//   float3 windDirection_g : packoffset(c28);
//   float sceneTime_g : packoffset(c28.w);
//   float2 lightTileSizeInv_g : packoffset(c29);
//   float fogNearDistance_g : packoffset(c29.z);
//   float fogFadeRangeInv_g : packoffset(c29.w);
//   float3 fogColor_g : packoffset(c30);
//   float fogIntensity_g : packoffset(c30.w);
//   float fogHeight_g : packoffset(c31);
//   float fogHeightRangeInv_g : packoffset(c31.y);
//   float windWaveTime_g : packoffset(c31.z);
//   float windWaveFrequency_g : packoffset(c31.w);
//   uint localLightProbeCount_g : packoffset(c32);
//   float lightSpecularGlossiness_g : packoffset(c32.y);
//   float lightSpecularIntensity_g : packoffset(c32.z);
//   float localShadowResolutionInv_g : packoffset(c32.w);
//   float4x4 ditherMtx_g : packoffset(c33);
//   float4 lightProbe_g[9] : packoffset(c37);
//   float3 chrLightDir_g : packoffset(c46);
//   float windForce_g : packoffset(c46.w);
//   float4 mapColor_g : packoffset(c47);
//   float4 clipPlane_g : packoffset(c48);
//   float2 resolutionScaling_g : packoffset(c49);
//   float2 invShadowSize_g : packoffset(c49.z);
//   float3 chrShadowColor_g : packoffset(c50);
//   float shadowFadeNear_g : packoffset(c50.w);
//   float4 frustumPlanes_g[6] : packoffset(c51);
//   float3 shadowSplitDistance_g : packoffset(c57);
//   float shadowFadeRangeInv_g : packoffset(c57.w);
//   float4x4 shadowMtx_g[4] : packoffset(c58);
// }
//
// cbuffer cb_volume_fog : register(b7)
// {
//   float volumeLightBrightness_g : packoffset(c0);
//   float volumeDensity_g : packoffset(c0.y);
//   float volumeCameraFarOverMaxFar_g : packoffset(c0.z);
//   float volumeCameraFarClip_g : packoffset(c0.w);
//   float volumeNearOverFarClip_g : packoffset(c1);
//   float volumeNearDistance_g : packoffset(c1.y);
//   float volumeFarDistance_g : packoffset(c1.z);
//   uint volumeShapeCount_g : packoffset(c1.w);
//   float4 volumeColor_g : packoffset(c2);
//   float2 voulumeLightTileSizeInv_g : packoffset(c3);
//   float combineAlpha_g : packoffset(c3.z);
//   float temporalRatio_g : packoffset(c3.w);
//   float2 prevScaling_g : packoffset(c4);
//   float2 prevUVClamp_g : packoffset(c4.z);
//   float volumeNearFadeInv_g : packoffset(c5);
//   float volumeNearFadeValue_g : packoffset(c5.y);
//   float densityScale_g : packoffset(c5.w);
//   float4x4 prevViewProj_g : packoffset(c6);
// }
//
// cbuffer cb_volume_fog2 : register(b2)
// {
//   float4x4 toPrevView_g : packoffset(c0);
//   float4 frustumRays_g[4] : packoffset(c4);
//   float3 jitter_g : packoffset(c8);
// }
//
// SamplerState samLinear_s : register(s0);
// SamplerComparisonState SmplShadow_s : register(s13);
// StructuredBuffer<VolumeShape> volumeShapes : register(t0);
// Texture2DArray<float4> localShadowMaps : register(t1);
// StructuredBuffer<float4x4> localShadowMapMatrices : register(t2);
// Texture3D<float4> volumeInjectPrev : register(t3);
// StructuredBuffer<LightParam> dynamicLights_g : register(t11);
// StructuredBuffer<LightIndexData> lightIndices_g : register(t12);
// Texture2DArray<float4> shadowMaps : register(t16);
// RWTexture3D<float4> volumeInject : register(u0);
//
//
// // SLT declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Texture2D<float4> StereoParams : register(t125);
//
//
// void main)
// {
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_uav_typed_texture3d (float,float,float,float) u0
//   float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_thread_group 8, 2, 4
// // Unknown use of GetDimensions for resinfo_ from missing reflection info, need manual fix.
// // resinfo_indexable(texture3d)(float,float,float,float)_uint r0.xyz, l(0), u0.xyzw
// // Example for texture2d type, uint return:
// tx.GetDimensions(0, uiDest.x, uiDest.y, uiDest.z);
// rx = uiDest;
//  state=1, constZero.eType=4, returnType=2, texture.eType=30, afImmediates[0]=0.000000
//   r1.xyz = cmp((uint3)vThreadID.xyz >= (uint3)r0.xyz);
//   r0.w = (int)r1.y | (int)r1.x;
//   r0.w = (int)r1.z | (int)r0.w;
//   if (r0.w != 0) {
//     return;
//   }
//   r0.xyz = (uint3)r0.xyz;
//   r1.xyz = float3(-1,-1,-1) + r0.xyz;
//   r2.xyz = (uint3)vThreadID.xyz;
//   r0.zw = resolutionScaling_g.xy * r1.xy;
//   r0.zw = r2.xy / r0.zw;
//   r1.z = r2.z / r1.z;
//   r1.w = jitter_g.z + r1.z;
//   r2.x = -volumeNearOverFarClip_g + 1;
//   r1.w = r1.w * r2.x + volumeNearOverFarClip_g;
//   r2.yzw = frustumRays_g[1].xyz + -frustumRays_g[0].xyz;
//   r2.yzw = r0.zzz * r2.yzw + frustumRays_g[0].xyz;
//   r3.xyz = -frustumRays_g[3].xyz + frustumRays_g[2].xyz;
//   r3.xyz = r0.zzz * r3.xyz + frustumRays_g[3].xyz;
//   r3.xyz = r3.xyz + -r2.yzw;
//   r2.yzw = r0.www * r3.xyz + r2.yzw;
//   r3.xyz = r2.yzw * r1.www;
//   r4.x = viewInv_g._m30;
//   r4.y = viewInv_g._m31;
//   r4.z = viewInv_g._m32;
//   r5.xyz = r2.yzw * r1.www + r4.xyz;
//   r5.w = 1;
//   r0.z = dot(view_g._m02_m12_m22_m32, r5.xyzw);
//   r0.w = cmp(4 == shadowmapCascadeCount_g);
//   r6.xyz = cmp(shadowSplitDistance_g.zyx < -r0.zzz);
//   r0.w = r0.w ? r6.x : 0;
//   r1.w = r6.z ? 0.000000 : 0;
//   r1.w = r6.y ? 2 : r1.w;
//   r0.w = r0.w ? 3 : r1.w;
//   r1.w = (uint)r0.w << 2;
//   r6.x = dot(r5.xyzw, shadowMtx_g[r1.w/4]._m00_m10_m20_m30);
//   r6.y = dot(r5.xyzw, shadowMtx_g[r1.w/4]._m01_m11_m21_m31);
//   r6.z = dot(r5.xyzw, shadowMtx_g[r1.w/4]._m02_m12_m22_m32);
//   r1.w = dot(r5.xyzw, shadowMtx_g[r1.w/4]._m03_m13_m23_m33);
//   r6.xyz = r6.xyz / r1.www;
//   r7.xy = saturate(r6.xy);
//   r7.z = (int)r0.w;
//   r0.w = shadowMaps.SampleCmpLevelZero(SmplShadow_s, r7.xyz, r6.z).x;
//   r1.w = -shadowFadeNear_g + -r0.z;
//   r1.w = saturate(shadowFadeRangeInv_g * r1.w);
//   r3.w = 1 + -r0.w;
//   r0.w = r1.w * r3.w + r0.w;
//   r6.xyzw = float4(0,0,0,0);
//   r1.w = 0;
//   r3.w = 0;
//   r4.w = 0;
//   while (true) {
//     r7.x = cmp((uint)r4.w >= volumeShapeCount_g);
//     if (r7.x != 0) break;
//     r7.x = volumeShapes[r4.w].density;
//     r7.y = volumeShapes[r4.w].type;
//     if (r7.y == 0) {
//       r8.x = volumeShapes[r4.w].mtx._m30;
//       r8.y = volumeShapes[r4.w].mtx._m31;
//       r8.z = volumeShapes[r4.w].mtx._m32;
//       r7.yzw = r8.xyz + -r5.xyz;
//       r7.y = dot(r7.yzw, r7.yzw);
//       r7.y = sqrt(r7.y);
//       r7.z = volumeShapes[r4.w].radiusInv;
//       r7.w = volumeShapes[r4.w].attenuation;
//       r7.y = r7.y * r7.z;
//       r7.y = log2(abs(r7.y));
//       r7.y = r7.w * r7.y;
//       r7.y = exp2(r7.y);
//       r7.y = 1 + -r7.y;
//       r7.y = max(0, r7.y);
//     } else {
//       r7.z = volumeShapes[r4.w].type;
//       r7.z = cmp((int)r7.z == 1);
//       if (r7.z != 0) {
//         r8.x = volumeShapes[r4.w].mtx._m00;
//         r8.y = volumeShapes[r4.w].mtx._m10;
//         r8.z = volumeShapes[r4.w].mtx._m20;
//         r8.w = volumeShapes[r4.w].mtx._m30;
//         r9.x = volumeShapes[r4.w].mtx._m01;
//         r9.y = volumeShapes[r4.w].mtx._m11;
//         r9.z = volumeShapes[r4.w].mtx._m21;
//         r9.w = volumeShapes[r4.w].mtx._m31;
//         r10.x = volumeShapes[r4.w].mtx._m02;
//         r10.y = volumeShapes[r4.w].mtx._m12;
//         r10.z = volumeShapes[r4.w].mtx._m22;
//         r10.w = volumeShapes[r4.w].mtx._m32;
//         r8.x = dot(r5.xyzw, r8.xyzw);
//         r8.y = dot(r5.xyzw, r9.xyzw);
//         r8.z = dot(r5.xyzw, r10.xyzw);
//         r9.xyz = cmp(r8.xyz < float3(0.5,0.5,0.5));
//         r7.z = r9.y ? r9.x : 0;
//         r7.z = r9.z ? r7.z : 0;
//         r9.xyz = cmp(float3(-0.5,-0.5,-0.5) < r8.xyz);
//         r7.w = r9.y ? r9.x : 0;
//         r7.w = r9.z ? r7.w : 0;
//         r7.z = r7.z ? r7.w : 0;
//         if (r7.z != 0) {
//           r7.z = max(abs(r8.y), abs(r8.z));
//           r7.z = max(abs(r8.x), r7.z);
//           r7.z = r7.z + r7.z;
//           r7.w = volumeShapes[r4.w].attenuation;
//           r7.z = log2(r7.z);
//           r7.z = r7.w * r7.z;
//           r7.z = exp2(r7.z);
//           r7.y = 1 + -r7.z;
//         } else {
//           r7.y = 0;
//         }
//       } else {
//         r7.y = 0;
//       }
//     }
//     r8.x = volumeShapes[r4.w].color.x;
//     r8.y = volumeShapes[r4.w].color.y;
//     r8.z = volumeShapes[r4.w].color.z;
//     r8.w = volumeShapes[r4.w].color.w;
//     r6.xyzw = r8.xyzw * r7.yyyy + r6.xyzw;
//     r1.w = r7.x * r7.y + r1.w;
//     r3.w = r7.y + r3.w;
//     r4.w = (int)r4.w + 1;
//   }
//   r4.w = cmp(0 < r3.w);
//   r7.x = r1.w / r3.w;
//   r1.w = r4.w ? r7.x : r1.w;
//   r7.x = 1 + -r3.w;
//   r7.x = max(0, r7.x);
//   r7.y = volumeDensity_g + -r1.w;
//   r1.w = r7.x * r7.y + r1.w;
//   r8.xyzw = r6.xyzw / r3.wwww;
//   r6.xyzw = r4.wwww ? r8.xyzw : r6.xyzw;
//   r8.xyzw = volumeColor_g.xyzw + -r6.xyzw;
//   r6.xyzw = r7.xxxx * r8.xyzw + r6.xyzw;
//   r0.w = -1 + r0.w;
//   r0.w = r6.w * r0.w + 1;
//   r6.xyz = r6.xyz * r0.www;
//   r7.xy = (uint2)vThreadID.xy;
//   r7.xy = voulumeLightTileSizeInv_g.xy * r7.xy;
//   r7.xy = (uint2)r7.xy;
//   r0.w = (uint)r7.y << 5;
//   r3.w = (int)r7.x + (int)r0.w;
//   r3.w = lightIndices_g[r3.w].tileDepthInv;
//   r3.w = r3.w * -r0.z;
//   r3.w = min(7, r3.w);
//   r3.w = max(0, r3.w);
//   r3.w = (uint)r3.w;
//   r0.w = mad((int)r3.w, 576, (int)r0.w);
//   r0.w = (int)r7.x + (int)r0.w;
//   r0.w = min(4607, (uint)r0.w);
//   r3.w = lightIndices_g[r0.w].pointLightCount;
//   r3.w = min(63, (uint)r3.w);
//   r4.w = dot(r3.xyz, r3.xyz);
//   r4.w = rsqrt(r4.w);
//   r3.xyz = r4.www * r3.xyz;
//   r7.xyz = float3(0,0,0);
//   r4.w = r1.w;
//   r6.w = 0;
//   while (true) {
//     r7.w = cmp((uint)r6.w >= (uint)r3.w);
//     if (r7.w != 0) break;
//     r7.w = (uint)r6.w << 2;
//   // Structured buffer using dynamic offset (needs manual fix):
//     ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r7.w, r0.w, r7.w, t12.xxxx
//     r8.x = dynamicLights_g[r7.w].pos.x;
//     r8.y = dynamicLights_g[r7.w].pos.y;
//     r8.z = dynamicLights_g[r7.w].pos.z;
//     r8.xyz = r8.xyz + -r5.xyz;
//     r8.w = dot(r8.xyz, r8.xyz);
//     r9.x = sqrt(r8.w);
//     r9.y = dynamicLights_g[r7.w].radiusInv;
//     r9.y = r9.x * r9.y;
//     r9.z = dynamicLights_g[r7.w].attenuation;
//     r9.y = log2(abs(r9.y));
//     r9.y = r9.z * r9.y;
//     r9.y = exp2(r9.y);
//     r9.y = 1 + -r9.y;
//     r9.y = max(0, r9.y);
//     r9.z = cmp(0 < r9.y);
//     if (r9.z != 0) {
//       r10.x = dynamicLights_g[r7.w].scatterColor.x;
//       r10.y = dynamicLights_g[r7.w].scatterColor.y;
//       r10.z = dynamicLights_g[r7.w].scatterColor.z;
//       r10.w = dynamicLights_g[r7.w].scatterDensity;
//       r4.w = r9.y * r10.w + r4.w;
//       r9.x = cmp(0 < r9.x);
//       if (r9.x != 0) {
//         r8.w = rsqrt(r8.w);
//         r8.xyz = r8.xyz * r8.www;
//         r8.x = dot(r3.xyz, r8.xyz);
//         r7.w = dynamicLights_g[r7.w].scatterAnisotropy;
//         r8.y = r7.w * r7.w + 1;
//         r8.x = dot(r8.xx, r7.ww);
//         r8.x = r8.y + -r8.x;
//         r8.y = r8.x * r8.x;
//         r8.x = r8.y * r8.x;
//         r8.x = max(0, r8.x);
//         r8.x = sqrt(r8.x);
//         r8.y = cmp(0 < r8.x);
//         r7.w = -r7.w * r7.w + 1;
//         r7.w = r7.w / r8.x;
//         r7.w = r8.y ? r7.w : 1;
//         r9.y = r9.y * r7.w;
//       }
//       r7.xyz = r10.xyz * r9.yyy + r7.xyz;
//     }
//     r6.w = (int)r6.w + 1;
//   }
//   r6.xyz = r6.xyz * volumeLightBrightness_g + r7.xyz;
//   r1.w = lightIndices_g[r0.w].spotLightCount;
//   r1.w = min(63, (uint)r1.w);
//   r7.xyz = float3(0,0,0);
//   r3.w = r4.w;
//   r6.w = 0;
//   while (true) {
//     r7.w = cmp((uint)r6.w >= (uint)r1.w);
//     if (r7.w != 0) break;
//     r7.w = (uint)r6.w << 2;
//     r7.w = (int)r7.w + 256;
//   // Structured buffer using dynamic offset (needs manual fix):
//     ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r7.w, r0.w, r7.w, t12.xxxx
//     r8.x = dynamicLights_g[r7.w].pos.x;
//     r8.y = dynamicLights_g[r7.w].pos.y;
//     r8.z = dynamicLights_g[r7.w].pos.z;
//     r8.xyz = r8.xyz + -r5.xyz;
//     r8.w = dot(r8.xyz, r8.xyz);
//     r9.x = rsqrt(r8.w);
//     r8.xyz = r9.xxx * r8.xyz;
//     r9.x = dynamicLights_g[r7.w].vec.x;
//     r9.y = dynamicLights_g[r7.w].vec.y;
//     r9.z = dynamicLights_g[r7.w].vec.z;
//     r9.w = dynamicLights_g[r7.w].spotAngleInv;
//     r9.x = dot(r8.xyz, r9.xyz);
//     r9.x = max(0, r9.x);
//     r9.x = 1 + -r9.x;
//     r9.x = r9.x * r9.w;
//     r9.y = dynamicLights_g[r7.w].attenuationAngle;
//     r9.x = log2(r9.x);
//     r9.x = r9.y * r9.x;
//     r9.x = exp2(r9.x);
//     r9.x = 1 + -r9.x;
//     r9.x = max(0, r9.x);
//     r9.y = cmp(0 < r9.x);
//     if (r9.y != 0) {
//       r8.w = sqrt(r8.w);
//       r9.y = dynamicLights_g[r7.w].scatterOffset;
//       r9.y = cmp(r8.w < r9.y);
//       if (r9.y != 0) {
//         r9.y = (int)r6.w + 1;
//         r6.w = r9.y;
//         continue;
//       }
//       r9.y = dynamicLights_g[r7.w].radiusInv;
//       r9.y = r9.y * r8.w;
//       r9.z = dynamicLights_g[r7.w].attenuation;
//       r9.y = log2(abs(r9.y));
//       r9.y = r9.z * r9.y;
//       r9.y = exp2(r9.y);
//       r9.y = 1 + -r9.y;
//       r9.y = max(0, r9.y);
//       r9.x = r9.x * r9.y;
//       r9.y = cmp(0 < r9.x);
//       if (r9.y != 0) {
//         r9.y = dynamicLights_g[r7.w].shadowmapIndex;
//         r9.z = cmp((int)r9.y != -1);
//         if (r9.z != 0) {
//           r10.xyzw = localShadowMapMatrices[r9.y]._m00_m10_m20_m30;
//           r11.xyzw = localShadowMapMatrices[r9.y]._m01_m11_m21_m31;
//           r12.xyzw = localShadowMapMatrices[r9.y]._m02_m12_m22_m32;
//           r13.xyzw = localShadowMapMatrices[r9.y]._m03_m13_m23_m33;
//           r10.x = dot(r5.xyzw, r10.xyzw);
//           r10.y = dot(r5.xyzw, r11.xyzw);
//           r10.z = dot(r5.xyzw, r12.xyzw);
//           r9.z = dot(r5.xyzw, r13.xyzw);
//           r10.xyz = r10.xyz / r9.zzz;
//           r9.zw = cmp(float2(0,0) < r10.xy);
//           r11.xy = cmp(r10.xy < float2(1,1));
//           r9.z = r9.z ? r11.x : 0;
//           r9.z = r9.w ? r9.z : 0;
//           r9.z = r11.y ? r9.z : 0;
//           if (r9.z != 0) {
//             r10.w = (int)r9.y;
//             r9.y = localShadowMaps.SampleCmpLevelZero(SmplShadow_s, r10.xyw, r10.z).x;
//             r9.x = r9.x * r9.y;
//           }
//         }
//         r10.x = dynamicLights_g[r7.w].scatterColor.x;
//         r10.y = dynamicLights_g[r7.w].scatterColor.y;
//         r10.z = dynamicLights_g[r7.w].scatterColor.z;
//         r10.w = dynamicLights_g[r7.w].scatterDensity;
//         r3.w = r9.x * r10.w + r3.w;
//         r8.w = cmp(0 < r8.w);
//         if (r8.w != 0) {
//           r8.x = dot(r3.xyz, r8.xyz);
//           r7.w = dynamicLights_g[r7.w].scatterAnisotropy;
//           r8.y = r7.w * r7.w + 1;
//           r8.x = dot(r8.xx, r7.ww);
//           r8.x = r8.y + -r8.x;
//           r8.y = r8.x * r8.x;
//           r8.x = r8.y * r8.x;
//           r8.x = max(0, r8.x);
//           r8.x = sqrt(r8.x);
//           r8.y = cmp(0 < r8.x);
//           r7.w = -r7.w * r7.w + 1;
//           r7.w = r7.w / r8.x;
//           r7.w = r8.y ? r7.w : 1;
//           r9.x = r9.x * r7.w;
//         }
//         r7.xyz = r10.xyz * r9.xxx + r7.xyz;
//       }
//     }
//     r6.w = (int)r6.w + 1;
//   }
//   r3.xyz = r7.xyz + r6.xyz;
//   r0.w = densityScale_g * r3.w;
//   r0.z = -volumeNearDistance_g + -r0.z;
//   r0.z = saturate(volumeNearFadeInv_g * r0.z);
//   r1.w = -volumeNearFadeValue_g + 1;
//   r0.z = r0.z * r1.w + volumeNearFadeValue_g;
//   r5.w = r0.w * r0.z;
//   r5.xyz = r5.www * r3.xyz;
//   r0.z = r1.z * r2.x + volumeNearOverFarClip_g;
//   r3.xyz = r2.yzw * r0.zzz + r4.xyz;
//   r3.w = 1;
//   r4.x = dot(r3.xyzw, view_g._m00_m10_m20_m30);
//   r4.y = dot(r3.xyzw, view_g._m01_m11_m21_m31);
//   r4.z = dot(r3.xyzw, view_g._m02_m12_m22_m32);
//   r4.w = dot(r3.xyzw, view_g._m03_m13_m23_m33);
//   r3.x = dot(r4.xyzw, toPrevView_g._m00_m10_m20_m30);
//   r3.y = dot(r4.xyzw, toPrevView_g._m01_m11_m21_m31);
//   r3.z = dot(r4.xyzw, toPrevView_g._m02_m12_m22_m32);
//   r3.w = dot(r4.xyzw, toPrevView_g._m03_m13_m23_m33);
//   r6.x = dot(r3.xyzw, proj_g._m00_m10_m20_m30);
//   r6.y = dot(r3.xyzw, proj_g._m01_m11_m21_m31);
//   r0.z = dot(r3.xyzw, proj_g._m03_m13_m23_m33);
//   r0.zw = r6.xy / r0.zz;
//   r6.xy = r0.zw * float2(0.5,0.5) + float2(0.5,0.5);
//   r0.z = -r3.z / volumeCameraFarClip_g;
//   r6.z = 1 + -r6.y;
//   r1.zw = prevScaling_g.xy * r6.xz;
//   r0.z = r0.z * volumeCameraFarOverMaxFar_g + -volumeNearOverFarClip_g;
//   r2.z = r0.z / r2.x;
//   r0.zw = min(prevUVClamp_g.xy, r1.zw);
//   r0.zw = r0.zw * float2(2,2) + float2(-1,-1);
//   r0.xy = r1.xy / r0.xy;
//   r0.xy = r0.zw * r0.xy;
//   r2.xy = r0.xy * float2(0.5,0.5) + float2(0.5,0.5);
//   r0.xyzw = r4.xyzw + -r3.xyzw;
//   r0.x = dot(r0.xyzw, r0.xyzw);
//   r0.x = sqrt(r0.x);
//   r0.x = -0.144269511 * r0.x;
//   r0.x = exp2(r0.x);
//   r0.y = temporalRatio_g + -0.200000003;
//   r0.x = r0.x * r0.y + 0.200000003;
//   r0.y = cmp(temporalRatio_g >= 1);
//   r1.xyzw = volumeInjectPrev.SampleLevel(samLinear_s, r2.xyz, 0).xyzw;
//   r1.xyzw = r0.yyyy ? float4(0,0,0,0) : r1.xyzw;
//   r2.xyzw = r5.xyzw + -r1.xyzw;
//   r0.xyzw = r0.xxxx * r2.xyzw + r1.xyzw;
// // No code for instruction (needs manual fix):
// store_uav_typed u0.xyzw, vThreadID.xyzz, r0.xyzw
//   return;
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// D:\SteamLibrary\steamapps\common\Trails in the Sky 1st Chapter Demo\ShaderFixes\4d5b1f43fc07644c-cs_replace.txt(140,10): error X3000: syntax error: unexpected token ')'
/////////////////////////////////////////////////////////////////////////////
