//Lighting clipping CS 1.
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
//   using 3Dmigoto v0.6.163 on Thu Aug 21 18:55:35 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 [unused]
//   float4x4 proj_g;                   // Index:    8 9 10 11        Components:    16 [unused]
//   float4x4 projInv_g;                // Index:   12 13 14 15       Components:    16
//   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 [unused]
//   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 [unused]
//   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 [unused]
//   float4 frustumPlanes_g[6];         // Index:   51-56             Components:    24 [unused]
//   float3 shadowSplitDistance_g;      // Index:   57.xyz            Components:     3 [unused]
//   float shadowFadeRangeInv_g;        // Index:   57.w              Components:     1 [unused]
//   float4x4 shadowMtx_g[4];           // Index:   58-73             Components:    64 [unused]
//
// }
//
// cbuffer cb_light_cull
// {
//
//   uint pointLightCount_g;            // Index:    0.x              Components:     1
//   uint spotLightCount_g;             // Index:    0.y              Components:     1
//   uint lightProbeCount_g;            // Index:    0.z              Components:     1
//   int hizMipMaxLevel_g;              // Index:    0.w              Components:     1
//   int2 hizResolution_g;              // Index:    1.xy             Components:     2
//   float nearPlane_g;                 // Index:    1.z              Components:     1
//
// }
//
// Resource bind info for tiles_g
// {
//
//   struct FrustumXY
//   {
//
//       float4 planes[4];              // Index:    0
//
//   } $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 localLightProbes_g
// {
//
//   struct LightProbeParam
//   {
//
//       float4 pos;                    // Index:    0
//       float radius;                  // Index:    1
//       float radiusInv;               // Index:    1.y
//       float attenuation;             // Index:    1.z
//       float pad;                     // Index:    1.w
//       float4 sh[9];                  // Index:    2
//
//   } $Element;                        // Index:    0-10             Components:    44
//
// }
//
// Resource bind info for lightIndexData_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
// ------------------------------ ---------- ------- ----------- ---- --------
// tiles_g                           texture  struct         r/o    1        1
// hizTexture                        texture  float4          2d    2        1
// dynamicLights_g                   texture  struct         r/o   11        1
// localLightProbes_g                texture  struct         r/o   13        1
// lightIndexData_g                      UAV  struct         r/w    0        1
// cb_scene                          cbuffer      NA          NA    0        1
// cb_light_cull                     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[16], immediateIndexed
dcl_constantbuffer CB2[2], immediateIndexed
dcl_resource_structured t1, 64
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_structured t11, 112
dcl_resource_structured t13, 176
dcl_uav_structured u0, 576
dcl_input vThreadID.x
dcl_temps 35
dcl_resource_texture2d (float,float,float,float) t125
dcl_thread_group 64, 1, 1
ld_indexable(texture2d)(float,float,float,float) r25.xyzw, l(0, 0, 0, 0), t125.xyzw
ult r0.x, l(4607), vThreadID.x
if_nz r0.x
  ret
endif
and r0.x, vThreadID.x, l(31)
utof r0.x, r0.x
ushr r1.x, vThreadID.x, l(5)
udiv null, r1.x, r1.x, l(18)
utof r0.y, r1.x
add r0.zw, r0.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000)
mul r0.xyzw, r0.xyzw, l(0.031250, 0.0555555560, 0.031250, 0.0555555560)
itof r1.x, cb2[1].x
mul r1.y, r0.x, r1.x
mad r1.x, r0.z, r1.x, -r1.y
mul r1.x, r1.x, l(0.500000)
max r1.x, r1.x, l(1.000000)
log r1.x, r1.x
round_pi r1.x, r1.x
ftoi r1.x, r1.x
imin r1.zw, r1.xxxx, cb2[0].wwww
ishr r2.xyzw, cb2[1].xyxy, r1.wwww
itof r3.xyzw, r2.zwzw
mul r0.xyzw, r0.xyzw, r3.xyzw
round_ni r0.xyzw, r0.xyzw
iadd r2.xyzw, r2.xyzw, l(-1, -1, -1, -1)
itof r2.xyzw, r2.xyzw
max r0.xyzw, r0.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
min r0.xyzw, r2.xyzw, r0.xyzw
ftoi r0.xy, r0.xyxx
mov r2.x, l(1.000000)
mov r1.x, r0.x
loop
  itof r2.z, r1.x
  lt r2.z, r0.z, r2.z
  breakc_nz r2.z
  mov r2.z, r2.x
  mov r1.y, r0.y
  loop
    itof r2.w, r1.y
    lt r2.w, r0.w, r2.w
    breakc_nz r2.w
    ld_indexable(texture2d)(float,float,float,float) r2.w, r1.xyzw, t2.yzwx
    min r2.z, r2.w, r2.z
    iadd r1.y, r1.y, l(1)
  endloop
  mov r2.x, r2.z
  iadd r1.x, r1.x, l(1)
endloop
mov r2.y, l(1.000000)
dp2 r0.x, cb0[14].zwzz, r2.xyxx
dp2 r0.y, cb0[15].zwzz, r2.xyxx
div r0.x, r0.x, r0.y

mov r27.x, r2.w

udiv r0.y, null, vThreadID.x, l(576)
min r0.z, -r0.x, l(200.000000)
mul r0.z, r0.z, l(0.125000)
utof r0.w, r0.y
mul r1.x, r0.w, r0.z
movc r1.x, r0.y, r1.x, cb2[1].z
ieq r0.y, r0.y, l(7)
mad r0.w, r0.z, r0.w, r0.z
movc r0.y, r0.y, -r0.x, r0.w
div r0.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.z
store_structured u0.x, vThreadID.x, l(572), r0.z
ld_structured_indexable(structured_buffer, stride=64)(mixed,mixed,mixed,mixed) r2.xyzw, vThreadID.x, l(0), t1.xyzw
ld_structured_indexable(structured_buffer, stride=64)(mixed,mixed,mixed,mixed) r3.xyzw, vThreadID.x, l(16), t1.xyzw
ld_structured_indexable(structured_buffer, stride=64)(mixed,mixed,mixed,mixed) r4.xyzw, vThreadID.x, l(32), t1.xyzw
ld_structured_indexable(structured_buffer, stride=64)(mixed,mixed,mixed,mixed) r5.xyzw, vThreadID.x, l(48), t1.xyzw
mov r6.w, l(1.000000)
mov r0.zw, l(0,0,0,0)
loop
  uge r1.y, r0.w, cb2[0].x
  breakc_nz r1.y
  ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r7.xyzw, r0.w, l(0), t11.xyzw
  mov r6.xyz, r7.xyzx
  dp4 r7.z, r6.xyzw, cb0[2].xyzw
  add r1.y, r7.w, r7.z
  lt r1.y, r1.y, r0.x
  ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r1.z, r0.w, l(12), t11.xxxx
  add r1.w, r1.z, -r7.z
  lt r1.w, r1.w, r1.x
  or r1.y, r1.w, r1.y
  add r1.w, -r1.z, -r7.z
  lt r1.w, r0.y, r1.w
  or r1.y, r1.w, r1.y
  if_nz r1.y
    iadd r8.y, r0.w, l(1)
    mov r8.x, r0.z
    mov r0.zw, r8.xxxy
    continue
  endif
  dp4 r7.x, r6.xyzw, cb0[0].xyzw
  dp4 r7.y, r6.xyzw, cb0[1].xyzw
  
  div r26.x, r25.y, r27.x
  add r26.x, r7.z, -r26.x
  mad r7.x, -r25.x, r26.x, r7.x
  
  mov r1.yw, l(0,0,0,0)
  loop
    uge r6.x, r1.y, l(4)
    mov r1.w, l(0)
    breakc_nz r6.x
    mul r8.xyzw, r2.xyzw, icb[r1.y + 0].xxxx
    mad r8.xyzw, icb[r1.y + 0].yyyy, r3.xyzw, r8.xyzw
    mad r8.xyzw, icb[r1.y + 0].zzzz, r4.xyzw, r8.xyzw
    mad r8.xyzw, icb[r1.y + 0].wwww, r5.xyzw, r8.xyzw
    dp3 r6.x, r7.xyzx, r8.xyzx
    add r6.x, r8.w, r6.x
    lt r6.x, r6.x, -r1.z
    if_nz r6.x
      mov r1.w, l(-1)
      break
    endif
    iadd r1.y, r1.y, l(1)
    mov r1.w, r6.x
  endloop
  if_z r1.w
    ishl r1.y, r0.z, l(2)
    store_structured u0.x, vThreadID.x, r1.y, r0.w
    iadd r1.y, r0.z, l(1)
    uge r1.z, r1.y, l(63)
    if_nz r1.z
      mov r0.z, r1.y
      break
    endif
    mov r0.z, r1.y
  endif
  iadd r0.w, r0.w, l(1)
endloop
store_structured u0.x, vThreadID.x, l(252), r0.z
mov r6.w, l(1.000000)
mov r0.zw, l(0,0,0,0)
loop
  uge r1.y, r0.w, cb2[0].y
  breakc_nz r1.y
  iadd r1.y, r0.w, cb2[0].x
  ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r7.xyzw, r1.y, l(0), t11.xyzw
  mov r6.xyz, r7.xyzx
  
  div r26.x, r25.y, r27.x
  add r26.x, r7.z, -r26.x
  mad r7.x, -r25.x, r26.x, r7.x
  
  dp4 r7.z, r6.xyzw, cb0[2].xyzw
  add r1.z, r7.w, r7.z
  lt r1.z, r1.z, r0.x
  ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r1.w, r1.y, l(12), t11.xxxx
  add r7.w, r1.w, -r7.z
  lt r7.w, r7.w, r1.x
  or r1.z, r1.z, r7.w
  add r7.w, -r1.w, -r7.z
  lt r7.w, r0.y, r7.w
  or r1.z, r1.z, r7.w
  if_nz r1.z
    iadd r8.y, r0.w, l(1)
    mov r8.x, r0.z
    mov r0.zw, r8.xxxy
    continue
  endif
  dp4 r7.x, r6.xyzw, cb0[0].xyzw
  dp4 r7.y, r6.xyzw, cb0[1].xyzw
  mov r1.z, l(0)
  mov r6.x, l(0)
  loop
    uge r6.y, r1.z, l(4)
    mov r6.x, l(0)
    breakc_nz r6.y
    mul r8.xyzw, r2.xyzw, icb[r1.z + 0].xxxx
    mad r8.xyzw, icb[r1.z + 0].yyyy, r3.xyzw, r8.xyzw
    mad r8.xyzw, icb[r1.z + 0].zzzz, r4.xyzw, r8.xyzw
    mad r8.xyzw, icb[r1.z + 0].wwww, r5.xyzw, r8.xyzw
    dp3 r6.y, r7.xyzx, r8.xyzx
    add r6.y, r8.w, r6.y
    lt r6.y, r6.y, -r1.w
    if_nz r6.y
      mov r6.x, l(-1)
      break
    endif
    iadd r1.z, r1.z, l(1)
    mov r6.x, r6.y
  endloop
  if_z r6.x
    ishl r1.z, r0.z, l(2)
    iadd r1.z, r1.z, l(256)
    store_structured u0.x, vThreadID.x, r1.z, r1.y
    iadd r1.y, r0.z, l(1)
    uge r1.z, r1.y, l(63)
    if_nz r1.z
      mov r0.z, r1.y
      break
    endif
    mov r0.z, r1.y
  endif
  iadd r0.w, r0.w, l(1)
endloop
store_structured u0.x, vThreadID.x, l(508), r0.z
mov r6.w, l(1.000000)
mov r0.zw, l(0,0,0,0)
loop
  uge r1.y, r0.w, cb2[0].z
  breakc_nz r1.y
  ld_structured_indexable(structured_buffer, stride=176)(mixed,mixed,mixed,mixed) r6.xyz, r0.w, l(0), t13.xyzx
  dp4 r7.z, r6.xyzw, cb0[2].xyzw
  ld_structured_indexable(structured_buffer, stride=176)(mixed,mixed,mixed,mixed) r1.y, r0.w, l(16), t13.xxxx
  add r1.z, r1.y, r7.z
  lt r1.z, r1.z, r0.x
  add r1.w, r1.y, -r7.z
  lt r1.w, r1.w, r1.x
  or r1.z, r1.w, r1.z
  add r1.w, -r1.y, -r7.z
  lt r1.w, r0.y, r1.w
  or r1.z, r1.w, r1.z
  if_nz r1.z
    iadd r8.y, r0.w, l(1)
    mov r8.x, r0.z
    mov r0.zw, r8.xxxy
    continue
  endif
  dp4 r7.x, r6.xyzw, cb0[0].xyzw
  dp4 r7.y, r6.xyzw, cb0[1].xyzw
  mov r1.zw, l(0,0,0,0)
  loop
    uge r6.x, r1.z, l(4)
    mov r1.w, l(0)
    breakc_nz r6.x
    mul r8.xyzw, r2.xyzw, icb[r1.z + 0].xxxx
    mad r8.xyzw, icb[r1.z + 0].yyyy, r3.xyzw, r8.xyzw
    mad r8.xyzw, icb[r1.z + 0].zzzz, r4.xyzw, r8.xyzw
    mad r8.xyzw, icb[r1.z + 0].wwww, r5.xyzw, r8.xyzw
    dp3 r6.x, r7.xyzx, r8.xyzx
    add r6.x, r8.w, r6.x
    lt r6.x, r6.x, -r1.y
    if_nz r6.x
      mov r1.w, l(-1)
      break
    endif
    iadd r1.z, r1.z, l(1)
    mov r1.w, r6.x
  endloop
  if_z r1.w
    ishl r1.y, r0.z, l(2)
    iadd r1.y, r1.y, l(512)
    store_structured u0.x, vThreadID.x, r1.y, r0.w
    iadd r1.y, r0.z, l(1)
    uge r1.z, r1.y, l(14)
    if_nz r1.z
      mov r0.z, r1.y
      break
    endif
    mov r0.z, r1.y
  endif
  iadd r0.w, r0.w, l(1)
endloop
store_structured u0.x, vThreadID.x, l(568), r0.z
ret
// Approximately 245 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v0.6.163 on Thu Aug 21 18:55:35 2025
//
// struct FrustumXY
// {
//     float4 planes[4];              // Offset:    0
// };
//
// 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 LightProbeParam
// {
//     float4 pos;                    // Offset:    0
//     float radius;                  // Offset:   16
//     float radiusInv;               // Offset:   20
//     float attenuation;             // Offset:   24
//     float pad;                     // Offset:   28
//     float4 sh[9];                  // Offset:   32
// };
//
// 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_light_cull : register(b2)
// {
//   uint pointLightCount_g : packoffset(c0);
//   uint spotLightCount_g : packoffset(c0.y);
//   uint lightProbeCount_g : packoffset(c0.z);
//   int hizMipMaxLevel_g : packoffset(c0.w);
//   int2 hizResolution_g : packoffset(c1);
//   float nearPlane_g : packoffset(c1.z);
// }
//
// StructuredBuffer<FrustumXY> tiles_g : register(t1);
// Texture2D<float4> hizTexture : register(t2);
// StructuredBuffer<LightParam> dynamicLights_g : register(t11);
// StructuredBuffer<LightProbeParam> localLightProbes_g : register(t13);
// RWStructuredBuffer<LightIndexData> lightIndexData_g : register(u0);
//
//
// // SLT declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Texture2D<float4> StereoParams : register(t125);
//
//
// void main)
// {
//   const float4 icb[] = { { 1.000000, 0, 0, 0},
//                               { 0, 1.000000, 0, 0},
//                               { 0, 0, 1.000000, 0},
//                               { 0, 0, 0, 1.000000} };
//   float4 r0,r1,r2,r3,r4,r5,r6,r7,r8;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_thread_group 64, 1, 1
//   r0.x = cmp(4607 < (uint)vThreadID.x);
//   if (r0.x != 0) {
//     return;
//   }
//   r0.x = (int)vThreadID.x & 31;
//   r0.x = (uint)r0.x;
//   r1.x = (uint)vThreadID.x >> 5;
//   r1.x = (uint)r1.x % 18;
//   r0.y = (uint)r1.x;
//   r0.zw = float2(1,1) + r0.xy;
//   r0.xyzw = float4(0.03125,0.055555556,0.03125,0.055555556) * r0.xyzw;
//   r1.x = (int)hizResolution_g.x;
//   r1.y = r1.x * r0.x;
//   r1.x = r0.z * r1.x + -r1.y;
//   r1.x = 0.5 * r1.x;
//   r1.x = max(1, r1.x);
//   r1.x = log2(r1.x);
//   r1.x = ceil(r1.x);
//   r1.x = (int)r1.x;
//   r1.zw = min(hizMipMaxLevel_g, (int2)r1.xx);
//   r2.xyzw = (uint4)hizResolution_g.xyxy >> (int4)r1.wwww;
//   r3.xyzw = (int4)r2.zwzw;
//   r0.xyzw = r3.xyzw * r0.xyzw;
//   r0.xyzw = floor(r0.xyzw);
//   r2.xyzw = (int4)r2.xyzw + int4(-1,-1,-1,-1);
//   r2.xyzw = (int4)r2.xyzw;
//   r0.xyzw = max(float4(0,0,0,0), r0.xyzw);
//   r0.xyzw = min(r0.xyzw, r2.xyzw);
//   r0.xy = (int2)r0.xy;
//   r2.x = 1;
//   r1.x = r0.x;
//   while (true) {
//     r2.z = (int)r1.x;
//     r2.z = cmp(r0.z < r2.z);
//     if (r2.z != 0) break;
//     r2.z = r2.x;
//     r1.y = r0.y;
//     while (true) {
//       r2.w = (int)r1.y;
//       r2.w = cmp(r0.w < r2.w);
//       if (r2.w != 0) break;
//       r2.w = hizTexture.Load(r1.xyz).x;
//       r2.z = min(r2.z, r2.w);
//       r1.y = (int)r1.y + 1;
//     }
//     r2.x = r2.z;
//     r1.x = (int)r1.x + 1;
//   }
//   r2.y = 1;
//   r0.x = dot(projInv_g._m22_m32, r2.xy);
//   r0.y = dot(projInv_g._m23_m33, r2.xy);
//   r0.x = r0.x / r0.y;
//   uiDest.y = (uint)vThreadID.x / 576;
//   r0.y = uiDest.y;
//   r0.z = min(200, -r0.x);
//   r0.z = 0.125 * r0.z;
//   r0.w = (uint)r0.y;
//   r1.x = r0.z * r0.w;
//   r1.x = r0.y ? r1.x : nearPlane_g;
//   r0.y = cmp((int)r0.y == 7);
//   r0.w = r0.z * r0.w + r0.z;
//   r0.y = r0.y ? -r0.x : r0.w;
//   r0.z = 1 / r0.z;
//   lightIndexData_g[vThreadID.x].tileDepthInv = r0.z;
//   r2.x = tiles_g[vThreadID.x].planes[0].x;
//   r2.y = tiles_g[vThreadID.x].planes[0].y;
//   r2.z = tiles_g[vThreadID.x].planes[0].z;
//   r2.w = tiles_g[vThreadID.x].planes[0].w;
//   r3.x = tiles_g[vThreadID.x].planes[1].x;
//   r3.y = tiles_g[vThreadID.x].planes[1].y;
//   r3.z = tiles_g[vThreadID.x].planes[1].z;
//   r3.w = tiles_g[vThreadID.x].planes[1].w;
//   r4.x = tiles_g[vThreadID.x].planes[2].x;
//   r4.y = tiles_g[vThreadID.x].planes[2].y;
//   r4.z = tiles_g[vThreadID.x].planes[2].z;
//   r4.w = tiles_g[vThreadID.x].planes[2].w;
//   r5.x = tiles_g[vThreadID.x].planes[3].x;
//   r5.y = tiles_g[vThreadID.x].planes[3].y;
//   r5.z = tiles_g[vThreadID.x].planes[3].z;
//   r5.w = tiles_g[vThreadID.x].planes[3].w;
//   r6.w = 1;
//   r0.zw = float2(0,0);
//   while (true) {
//     r1.y = cmp((uint)r0.w >= pointLightCount_g);
//     if (r1.y != 0) break;
//     r7.x = dynamicLights_g[r0.w].pos.x;
//     r7.y = dynamicLights_g[r0.w].pos.y;
//     r7.z = dynamicLights_g[r0.w].pos.z;
//     r7.w = dynamicLights_g[r0.w].radius;
//     r6.xyz = r7.xyz;
//     r7.z = dot(r6.xyzw, view_g._m02_m12_m22_m32);
//     r1.y = r7.z + r7.w;
//     r1.y = cmp(r1.y < r0.x);
//     r1.z = dynamicLights_g[r0.w].radius;
//     r1.w = -r7.z + r1.z;
//     r1.w = cmp(r1.w < r1.x);
//     r1.y = (int)r1.w | (int)r1.y;
//     r1.w = -r7.z + -r1.z;
//     r1.w = cmp(r0.y < r1.w);
//     r1.y = (int)r1.w | (int)r1.y;
//     if (r1.y != 0) {
//       r8.y = (int)r0.w + 1;
//       r8.x = r0.z;
//       r0.zw = r8.xy;
//       continue;
//     }
//     r7.x = dot(r6.xyzw, view_g._m00_m10_m20_m30);
//     r7.y = dot(r6.xyzw, view_g._m01_m11_m21_m31);
//     r1.yw = float2(0,0);
//     while (true) {
//       r6.x = cmp((uint)r1.y >= 4);
//       r1.w = 0;
//       if (r6.x != 0) break;
//       r8.xyzw = icb[r1.y+0].xxxx * r2.xyzw;
//       r8.xyzw = icb[r1.y+0].yyyy * r3.xyzw + r8.xyzw;
//       r8.xyzw = icb[r1.y+0].zzzz * r4.xyzw + r8.xyzw;
//       r8.xyzw = icb[r1.y+0].wwww * r5.xyzw + r8.xyzw;
//       r6.x = dot(r7.xyz, r8.xyz);
//       r6.x = r6.x + r8.w;
//       r6.x = cmp(r6.x < -r1.z);
//       if (r6.x != 0) {
//         r1.w = -1;
//         break;
//       }
//       r1.y = (int)r1.y + 1;
//       r1.w = r6.x;
//     }
//     if (r1.w == 0) {
//       r1.y = (uint)r0.z << 2;
//     // Structured buffer using dynamic offset (needs manual fix):
//         store_structured u0.x, vThreadID.x, r1.y, r0.w
//       r1.y = (int)r0.z + 1;
//       r1.z = cmp((uint)r1.y >= 63);
//       if (r1.z != 0) {
//         r0.z = r1.y;
//         break;
//       }
//       r0.z = r1.y;
//     }
//     r0.w = (int)r0.w + 1;
//   }
//   lightIndexData_g[vThreadID.x].pointLightCount = r0.z;
//   r6.w = 1;
//   r0.zw = float2(0,0);
//   while (true) {
//     r1.y = cmp((uint)r0.w >= spotLightCount_g);
//     if (r1.y != 0) break;
//     r1.y = (int)r0.w + pointLightCount_g;
//     r7.x = dynamicLights_g[r1.y].pos.x;
//     r7.y = dynamicLights_g[r1.y].pos.y;
//     r7.z = dynamicLights_g[r1.y].pos.z;
//     r7.w = dynamicLights_g[r1.y].radius;
//     r6.xyz = r7.xyz;
//     r7.z = dot(r6.xyzw, view_g._m02_m12_m22_m32);
//     r1.z = r7.z + r7.w;
//     r1.z = cmp(r1.z < r0.x);
//     r1.w = dynamicLights_g[r1.y].radius;
//     r7.w = -r7.z + r1.w;
//     r7.w = cmp(r7.w < r1.x);
//     r1.z = (int)r1.z | (int)r7.w;
//     r7.w = -r7.z + -r1.w;
//     r7.w = cmp(r0.y < r7.w);
//     r1.z = (int)r1.z | (int)r7.w;
//     if (r1.z != 0) {
//       r8.y = (int)r0.w + 1;
//       r8.x = r0.z;
//       r0.zw = r8.xy;
//       continue;
//     }
//     r7.x = dot(r6.xyzw, view_g._m00_m10_m20_m30);
//     r7.y = dot(r6.xyzw, view_g._m01_m11_m21_m31);
//     r1.z = 0;
//     r6.x = 0;
//     while (true) {
//       r6.y = cmp((uint)r1.z >= 4);
//       r6.x = 0;
//       if (r6.y != 0) break;
//       r8.xyzw = icb[r1.z+0].xxxx * r2.xyzw;
//       r8.xyzw = icb[r1.z+0].yyyy * r3.xyzw + r8.xyzw;
//       r8.xyzw = icb[r1.z+0].zzzz * r4.xyzw + r8.xyzw;
//       r8.xyzw = icb[r1.z+0].wwww * r5.xyzw + r8.xyzw;
//       r6.y = dot(r7.xyz, r8.xyz);
//       r6.y = r6.y + r8.w;
//       r6.y = cmp(r6.y < -r1.w);
//       if (r6.y != 0) {
//         r6.x = -1;
//         break;
//       }
//       r1.z = (int)r1.z + 1;
//       r6.x = r6.y;
//     }
//     if (r6.x == 0) {
//       r1.z = (uint)r0.z << 2;
//       r1.z = (int)r1.z + 256;
//     // Structured buffer using dynamic offset (needs manual fix):
//         store_structured u0.x, vThreadID.x, r1.z, r1.y
//       r1.y = (int)r0.z + 1;
//       r1.z = cmp((uint)r1.y >= 63);
//       if (r1.z != 0) {
//         r0.z = r1.y;
//         break;
//       }
//       r0.z = r1.y;
//     }
//     r0.w = (int)r0.w + 1;
//   }
//   lightIndexData_g[vThreadID.x].spotLightCount = r0.z;
//   r6.w = 1;
//   r0.zw = float2(0,0);
//   while (true) {
//     r1.y = cmp((uint)r0.w >= lightProbeCount_g);
//     if (r1.y != 0) break;
//     r6.x = localLightProbes_g[r0.w].pos.x;
//     r6.y = localLightProbes_g[r0.w].pos.y;
//     r6.z = localLightProbes_g[r0.w].pos.z;
//     r7.z = dot(r6.xyzw, view_g._m02_m12_m22_m32);
//     r1.y = localLightProbes_g[r0.w].radius;
//     r1.z = r7.z + r1.y;
//     r1.z = cmp(r1.z < r0.x);
//     r1.w = -r7.z + r1.y;
//     r1.w = cmp(r1.w < r1.x);
//     r1.z = (int)r1.w | (int)r1.z;
//     r1.w = -r7.z + -r1.y;
//     r1.w = cmp(r0.y < r1.w);
//     r1.z = (int)r1.w | (int)r1.z;
//     if (r1.z != 0) {
//       r8.y = (int)r0.w + 1;
//       r8.x = r0.z;
//       r0.zw = r8.xy;
//       continue;
//     }
//     r7.x = dot(r6.xyzw, view_g._m00_m10_m20_m30);
//     r7.y = dot(r6.xyzw, view_g._m01_m11_m21_m31);
//     r1.zw = float2(0,0);
//     while (true) {
//       r6.x = cmp((uint)r1.z >= 4);
//       r1.w = 0;
//       if (r6.x != 0) break;
//       r8.xyzw = icb[r1.z+0].xxxx * r2.xyzw;
//       r8.xyzw = icb[r1.z+0].yyyy * r3.xyzw + r8.xyzw;
//       r8.xyzw = icb[r1.z+0].zzzz * r4.xyzw + r8.xyzw;
//       r8.xyzw = icb[r1.z+0].wwww * r5.xyzw + r8.xyzw;
//       r6.x = dot(r7.xyz, r8.xyz);
//       r6.x = r6.x + r8.w;
//       r6.x = cmp(r6.x < -r1.y);
//       if (r6.x != 0) {
//         r1.w = -1;
//         break;
//       }
//       r1.z = (int)r1.z + 1;
//       r1.w = r6.x;
//     }
//     if (r1.w == 0) {
//       r1.y = (uint)r0.z << 2;
//       r1.y = (int)r1.y + 512;
//     // Structured buffer using dynamic offset (needs manual fix):
//         store_structured u0.x, vThreadID.x, r1.y, r0.w
//       r1.y = (int)r0.z + 1;
//       r1.z = cmp((uint)r1.y >= 14);
//       if (r1.z != 0) {
//         r0.z = r1.y;
//         break;
//       }
//       r0.z = r1.y;
//     }
//     r0.w = (int)r0.w + 1;
//   }
//   lightIndexData_g[vThreadID.x].lightProbeCount = r0.z;
//   return;
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// D:\SteamLibrary\steamapps\common\Trails in the Sky 1st Chapter Demo\ShaderFixes\9677344b3a14c13b-cs_replace.txt(121,10): error X3000: syntax error: unexpected token ')'
/////////////////////////////////////////////////////////////////////////////
