//Lighting PS 1.
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
//   using 3Dmigoto v0.6.163 on Thu Aug 21 16:48:22 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 [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
//   float2 vpSize_g;                   // Index:   24.xy             Components:     2 [unused]
//   float2 invVPSize_g;                // Index:   24.zw             Components:     2
//   float3 lightColor_g;               // Index:   25.xyz            Components:     3
//   float disableMapObjNearFade_g;     // Index:   25.w              Components:     1 [unused]
//   float3 lightDirection_g;           // Index:   26.xyz            Components:     3
//   float gameTime_g;                  // Index:   26.w              Components:     1 [unused]
//   float3 sceneShadowColor_g;         // Index:   27.xyz            Components:     3
//   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
//   float fogNearDistance_g;           // Index:   29.z              Components:     1
//   float fogFadeRangeInv_g;           // Index:   29.w              Components:     1
//   float3 fogColor_g;                 // Index:   30.xyz            Components:     3
//   float fogIntensity_g;              // Index:   30.w              Components:     1
//   float fogHeight_g;                 // Index:   31.x              Components:     1
//   float fogHeightRangeInv_g;         // Index:   31.y              Components:     1
//   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
//   float lightSpecularIntensity_g;    // Index:   32.z              Components:     1
//   float localShadowResolutionInv_g;  // Index:   32.w              Components:     1
//   float4x4 ditherMtx_g;              // Index:   33 34 35 36       Components:    16 [unused]
//   float4 lightProbe_g[9];            // Index:   37-45             Components:    36
//   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 [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_local
// {
//
//   float4 fadeBeginDistance_g;        // Index:    0.xyzw           Components:     4
//   float4 fadeRangeInv_g;             // Index:    1.xyzw           Components:     4
//   float density_g;                   // Index:    2.x              Components:     1
//   float maxThickness_g;              // Index:    2.y              Components:     1
//   float depthThresholdNear_g;        // Index:    2.z              Components:     1
//   float depthThresholdFar_g;         // Index:    2.w              Components:     1
//   float densityByDepthDiffNear_g;    // Index:    3.x              Components:     1
//   float densityByDepthDiffFar_g;     // Index:    3.y              Components:     1
//   float2 uvClamp_g;                  // Index:    3.zw             Components:     2
//   float4 offsetsAndWeights[8];       // Index:    4-11             Components:    32
//
// }
//
// cbuffer cb_post_sky
// {
//
//   float3 incomingLight_g;            // Index:    0.xyz            Components:     3 [unused]
//   float3 scatteringR_g;              // Index:    1.xyz            Components:     3 [unused]
//   float3 scatteringM_g;              // Index:    2.xyz            Components:     3 [unused]
//   float3 extinctionR_g;              // Index:    3.xyz            Components:     3 [unused]
//   float3 extinctionM_g;              // Index:    4.xyz            Components:     3 [unused]
//   float3 densityScaleHeight_g;       // Index:    5.xyz            Components:     3 [unused]
//   float skyHorizonBottomLimit_g;     // Index:    5.w              Components:     1 [unused]
//   float3 sunDirection_g;             // Index:    6.xyz            Components:     3 [unused]
//   float skyHorizonTopLimit_g;        // Index:    6.w              Components:     1 [unused]
//   float mieG_g;                      // Index:    7.x              Components:     1 [unused]
//   float distanceScale_g;             // Index:    7.y              Components:     1 [unused]
//   float planetRadius_g;              // Index:    7.z              Components:     1 [unused]
//   float atmosphereHeight_g;          // Index:    7.w              Components:     1 [unused]
//   float sunIntensity_g;              // Index:    8.x              Components:     1 [unused]
//   float skyLutNearOverFarClip_g;     // Index:    8.y              Components:     1
//   float skyLutCameraFarClip_g;       // Index:    8.z              Components:     1
//   float skyBrightness_g;             // Index:    8.w              Components:     1 [unused]
//
// }
//
// cbuffer cb_deferred
// {
//
//   uint outlineShapeCount_g;          // Index:    0.x              Components:     1
//   float2 shadowUVClamp_g;            // Index:    0.zw             Components:     2
//   float4 outlineShapeMaskUVParam_g;  // Index:    1.xyzw           Components:     4
//   float3 mapAOColor_g;               // Index:    2.xyz            Components:     3
//   float mapAOIntensity_g;            // Index:    2.w              Components:     1
//   float3 shadowEdgeColor_g;          // Index:    3.xyz            Components:     3
//   float shadowEdgeSharpness_g;       // Index:    3.w              Components:     1
//
// }
//
// Resource bind info for deferredParams_g
// {
//
//   struct DeferredParam
//   {
//
//       float3 shadowColor;            // Index:    0
//       float emissive;                // Index:    0.w
//       float3 specularColor;          // Index:    1
//       float rimLightPower;           // Index:    1.w
//       float3 rimLightColor;          // Index:    2
//       float rimIntensity;            // Index:    2.w
//       float3 fresnels;               // Index:    3
//       float specularShadowFadeRatio; // Index:    3.w
//       float3 specularGlossinesses;   // Index:    4
//       float dynamicLightIntensity;   // Index:    4.w
//       float materialFogIntensity;    // Index:    5
//       float metalness;               // Index:    5.y
//       float roughness;               // Index:    5.z
//       float cryRefractionIndex;      // Index:    5.w
//       float cryFresnel;              // Index:    6
//       float cryBrightness;           // Index:    6.y
//       float cryBrightnessPower;      // Index:    6.z
//       float glowIntensity;           // Index:    6.w
//       float glowLumThreshold;        // Index:    7
//       float glowShadowFadeRatio;     // Index:    7.y
//       float ssaoIntensity;           // Index:    7.z
//       float translucency;            // Index:    7.w
//       float ssrDistance;             // Index:    8
//       uint flag;                     // Index:    8.y
//       float2 reserve;                // Index:    8.z
//
//   } $Element;                        // Index:    0-8              Components:    36
//
// }
//
// Resource bind info for outlineShapes_g
// {
//
//   struct OutlineShapeParam
//   {
//
//       float4x4 mtx;                  // Index:    0
//       float4 color;                  // Index:    4
//       uint type;                     // Index:    5
//       float radius;                  // Index:    5.y
//       float2 gradation_size;         // Index:    5.z
//       float gradation_sharpness;     // Index:    6
//       float height_base;             // Index:    6.y
//       float height_width;            // Index:    6.z
//       float height_gradation_width;  // Index:    6.w
//       float fan_angle;               // Index:    7
//       float pad[3];                  // Index:    7.y
//
//   } $Element;                        // Index:    0-7              Components:    32
//
// }
//
// 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 bind info for spotShadowMatrices_g
// {
//
//   float4x4 $Element;                 // Index:    0 1 2 3          Components:    16
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// samPoint                          sampler      NA          NA    0        1
// samLinear                         sampler      NA          NA    1        1
// SmplShadow                      sampler_c      NA          NA   13        1
// SmplCube                          sampler      NA          NA   14        1
// SmplLinearClamp                   sampler      NA          NA   15        1
// colorTexture                      texture  float4          2d    0        1
// mrtTexture0                       texture   uint4          2d    1        1
// mrtTexture1                       texture   uint4          2d    2        1
// mrtTexture2                       texture   uint2          2d    3        1
// depthTexture                      texture  float4          2d    4        1
// ssaoTexture                       texture  float4          2d    5        1
// deferredParams_g                  texture  struct         r/o    6        1
// outlineShapes_g                   texture  struct         r/o    7        1
// outlineShapeMask                  texture  float4          2d    8        1
// shadowTexture                     texture  float4          2d    9        1
// outlinePrepareTexture             texture  float4          2d   10        1
// dynamicLights_g                   texture  struct         r/o   11        1
// lightIndices_g                    texture  struct         r/o   12        1
// spotShadowMatrices_g              texture  struct         r/o   14        1
// texEnvMap_g                       texture  float4        cube   17        1
// spotShadowMaps                    texture  float4     2darray   18        1
// atmosphereInscatterLUT            texture  float4          3d   19        1
// atmosphereExtinctionLUT           texture  float4          3d   20        1
// texMirror_g                       texture  float4          2d   21        1
// texSSRMap_g                       texture  float4          2d   24        1
// cb_scene                          cbuffer      NA          NA    0        1
// cb_local                          cbuffer      NA          NA    2        1
// cb_deferred                       cbuffer      NA          NA    4        1
// cb_post_sky                       cbuffer      NA          NA    6        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float   xy
// TEXCOORD                 0   xyzw        1     NONE   float   xyzw
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
// SV_Target                1   xyzw        1   TARGET    uint   xyzw
// SV_Target                2   xy          2   TARGET    uint   xy
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer CB0[50], immediateIndexed
dcl_constantbuffer CB2[12], immediateIndexed
dcl_constantbuffer CB6[9], immediateIndexed
dcl_constantbuffer CB4[4], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s13, mode_comparison
dcl_sampler s14, mode_default
dcl_sampler s15, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (uint,uint,uint,uint) t1
dcl_resource_texture2d (uint,uint,uint,uint) t2
dcl_resource_texture2d (uint,uint,uint,uint) t3
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t5
dcl_resource_structured t6, 144
dcl_resource_structured t7, 128
dcl_resource_texture2d (float,float,float,float) t8
dcl_resource_texture2d (float,float,float,float) t9
dcl_resource_texture2d (float,float,float,float) t10
dcl_resource_structured t11, 112
dcl_resource_structured t12, 576
dcl_resource_structured t14, 64
dcl_resource_texturecube (float,float,float,float) t17
dcl_resource_texture2darray (float,float,float,float) t18
dcl_resource_texture3d (float,float,float,float) t19
dcl_resource_texture3d (float,float,float,float) t20
dcl_resource_texture2d (float,float,float,float) t21
dcl_resource_texture2d (float,float,float,float) t24
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_input_ps linear v1.xyzw
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.xy
dcl_temps 45
dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture2d)(float,float,float,float) r25.xyzw, l(0, 0, 0, 0), t125.xyzw
sample_l_indexable(texture2d)(float,float,float,float) r0.xyzw, v1.xyxx, t0.xyzw, s0, l(0.000000)
resinfo_indexable(texture2d)(uint,uint,uint,uint) r1.xy, l(0), t1.xyzw
mul r1.xy, r1.xyxx, v1.xyxx
ftoi r1.xy, r1.xyxx
mov r1.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r1.xyz, r1.xyzw, t1.xywz
resinfo_indexable(texture2d)(uint,uint,uint,uint) r2.xy, l(0), t2.xyzw
mul r2.xy, r2.xyxx, v1.xyxx
ftoi r2.xy, r2.xyxx
mov r2.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r2.xyzw, r2.xyzw, t2.xyzw
resinfo_indexable(texture2d)(uint,uint,uint,uint) r3.xy, l(0), t3.xyzw
mul r3.xy, r3.xyxx, v1.xyxx
ftoi r3.xy, r3.xyxx
mov r3.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r3.xy, r3.xyzw, t3.xyzw
sample_l_indexable(texture2d)(float,float,float,float) r4.xyz, v1.xyxx, t5.xyzw, s1, l(0.000000)
and r1.w, r1.z, l(8)
if_z r1.w
  ushr r5.yz, r3.xxxx, l(0, 5, 10, 0)
  mov r5.x, r3.x
  and r5.xyz, r5.xyzx, l(31, 31, 31, 0)
  utof r5.xyz, r5.xyzx
  mov r6.x, l(0.0322580636)
  mov r6.yz, r0.yyzy
  mul r5.xyz, r5.xyzx, r6.xyzx
  and r1.w, r1.z, l(1)
  if_nz r1.w
    mov r6.x, r0.x
    mov r6.yz, l(0,0.0322580636,0.0322580636,0)
    mul r7.xyz, r5.xyzx, r6.xyzx
    mul r1.w, r4.z, r4.y
    mad r4.yzw, -r6.xxyz, r5.xxyz, r0.xxyz
    mad r6.xyz, r1.wwww, r4.yzwy, r7.xyzx
    and r1.w, r1.z, l(4)
    if_z r1.w
      sample_l_indexable(texture2d)(float,float,float,float) r3.zw, v1.xyxx, t10.zwxy, s0, l(0.000000)
      mov r7.x, r3.z
      mov r7.yw, l(0,1.000000,0,1.000000)
      dp2 r1.w, cb0[14].zwzz, r7.xyxx
      dp2 r3.z, cb0[15].zwzz, r7.xyxx
      div r1.w, r1.w, r3.z
      add r8.xyzw, -r1.wwww, -cb2[0].xyzw
      mul_sat r8.xyzw, r8.xyzw, cb2[1].xyzw
      mov r9.xy, cb2[2].yzyy
      mov r9.z, cb2[3].x
      add r10.x, -r9.x, l(1.000000)
      add r10.y, -r9.y, cb2[2].w
      add r10.z, -r9.z, cb2[3].y
      mad r4.yzw, r8.yyzw, r10.xxyz, r9.xxyz
      mad r5.yz, cb2[4].xxyx, r4.yyyy, v1.xxyx
      min r5.yz, r5.yyzy, cb2[3].zzwz
      sample_l_indexable(texture2d)(float,float,float,float) r7.xz, r5.yzyy, t10.yzxw, s1, l(0.000000)
      dp2 r3.z, cb0[14].zwzz, r7.zwzz
      dp2 r5.y, cb0[15].zwzz, r7.zwzz
      div r3.z, r3.z, r5.y
      lt r5.y, r7.x, l(0.000000)
      add r3.z, r1.w, -r3.z
      ge r5.z, r3.z, l(0.000000)
      and r5.z, r5.z, l(0x3f800000)
      ge r5.w, r3.z, r4.z
      and r9.x, r5.w, l(0x3f800000)
      add r5.w, r3.w, -r7.x
      ge r7.x, |r5.w|, l(0.030000)
      and r7.x, r7.x, l(0x3f800000)
      mad r9.y, r5.z, r7.x, r9.x
      mov r7.z, |r3.z|
      mad r7.w, r5.z, |r5.w|, r7.z
      mad r5.zw, cb2[5].xxxy, r4.yyyy, v1.xxxy
      min r5.zw, r5.zzzw, cb2[3].zzzw
      sample_l_indexable(texture2d)(float,float,float,float) r5.zw, r5.zwzz, t10.zwxy, s1, l(0.000000)
      mov r10.x, r5.z
      mov r10.yw, l(0,1.000000,0,1.000000)
      dp2 r3.z, cb0[14].zwzz, r10.xyxx
      dp2 r5.z, cb0[15].zwzz, r10.xyxx
      div r3.z, r3.z, r5.z
      lt r5.z, r5.w, l(0.000000)
      or r5.y, r5.y, r5.z
      add r3.z, r1.w, -r3.z
      ge r5.z, r3.z, l(0.000000)
      and r5.z, r5.z, l(0x3f800000)
      ge r7.x, r3.z, r4.z
      and r7.x, r7.x, l(0x3f800000)
      add r5.w, r3.w, -r5.w
      ge r8.y, |r5.w|, l(0.030000)
      and r8.y, r8.y, l(0x3f800000)
      mad r7.y, r5.z, r8.y, r7.x
      mul r7.xy, r7.xyxx, cb2[5].zzzz
      mad r7.xy, r9.xyxx, cb2[4].zzzz, r7.xyxx
      mov r8.z, |r3.z|
      mad r8.w, r5.z, |r5.w|, r8.z
      max r5.zw, r7.zzzw, r8.zzzw
      mad r7.zw, cb2[6].xxxy, r4.yyyy, v1.xxxy
      min r7.zw, r7.zzzw, cb2[3].zzzw
      sample_l_indexable(texture2d)(float,float,float,float) r10.xz, r7.zwzz, t10.yzxw, s1, l(0.000000)
      dp2 r3.z, cb0[14].zwzz, r10.zwzz
      dp2 r7.z, cb0[15].zwzz, r10.zwzz
      div r3.z, r3.z, r7.z
      lt r7.z, r10.x, l(0.000000)
      or r5.y, r5.y, r7.z
      add r3.z, r1.w, -r3.z
      ge r7.z, r3.z, l(0.000000)
      and r7.z, r7.z, l(0x3f800000)
      ge r7.w, r3.z, r4.z
      and r9.x, r7.w, l(0x3f800000)
      add r7.w, r3.w, -r10.x
      ge r8.y, |r7.w|, l(0.030000)
      and r8.y, r8.y, l(0x3f800000)
      mad r9.y, r7.z, r8.y, r9.x
      mad r7.xy, r9.xyxx, cb2[6].zzzz, r7.xyxx
      mov r8.z, |r3.z|
      mad r8.w, r7.z, |r7.w|, r8.z
      max r5.zw, r5.zzzw, r8.zzzw
      mad r7.zw, cb2[7].xxxy, r4.yyyy, v1.xxxy
      min r7.zw, r7.zzzw, cb2[3].zzzw
      sample_l_indexable(texture2d)(float,float,float,float) r7.zw, r7.zwzz, t10.zwxy, s1, l(0.000000)
      mov r9.x, r7.z
      mov r9.yw, l(0,1.000000,0,1.000000)
      dp2 r3.z, cb0[14].zwzz, r9.xyxx
      dp2 r7.z, cb0[15].zwzz, r9.xyxx
      div r3.z, r3.z, r7.z
      lt r7.z, r7.w, l(0.000000)
      or r5.y, r5.y, r7.z
      add r3.z, r1.w, -r3.z
      ge r7.z, r3.z, l(0.000000)
      and r7.z, r7.z, l(0x3f800000)
      ge r8.y, r3.z, r4.z
      and r10.x, r8.y, l(0x3f800000)
      add r7.w, r3.w, -r7.w
      ge r8.y, |r7.w|, l(0.030000)
      and r8.y, r8.y, l(0x3f800000)
      mad r10.y, r7.z, r8.y, r10.x
      mad r7.xy, r10.xyxx, cb2[7].zzzz, r7.xyxx
      mov r8.z, |r3.z|
      mad r8.w, r7.z, |r7.w|, r8.z
      max r5.zw, r5.zzzw, r8.zzzw
      mad r7.zw, cb2[8].xxxy, r4.yyyy, v1.xxxy
      min r7.zw, r7.zzzw, cb2[3].zzzw
      sample_l_indexable(texture2d)(float,float,float,float) r9.xz, r7.zwzz, t10.yzxw, s1, l(0.000000)
      dp2 r3.z, cb0[14].zwzz, r9.zwzz
      dp2 r7.z, cb0[15].zwzz, r9.zwzz
      div r3.z, r3.z, r7.z
      lt r7.z, r9.x, l(0.000000)
      or r5.y, r5.y, r7.z
      add r3.z, r1.w, -r3.z
      ge r7.z, r3.z, l(0.000000)
      and r7.z, r7.z, l(0x3f800000)
      ge r7.w, r3.z, r4.z
      and r10.x, r7.w, l(0x3f800000)
      add r7.w, r3.w, -r9.x
      ge r8.y, |r7.w|, l(0.030000)
      and r8.y, r8.y, l(0x3f800000)
      mad r10.y, r7.z, r8.y, r10.x
      mad r7.xy, r10.xyxx, cb2[8].zzzz, r7.xyxx
      mov r8.z, |r3.z|
      mad r8.w, r7.z, |r7.w|, r8.z
      max r5.zw, r5.zzzw, r8.zzzw
      mad r7.zw, cb2[9].xxxy, r4.yyyy, v1.xxxy
      min r7.zw, r7.zzzw, cb2[3].zzzw
      sample_l_indexable(texture2d)(float,float,float,float) r7.zw, r7.zwzz, t10.zwxy, s1, l(0.000000)
      mov r9.x, r7.z
      mov r9.yw, l(0,1.000000,0,1.000000)
      dp2 r3.z, cb0[14].zwzz, r9.xyxx
      dp2 r7.z, cb0[15].zwzz, r9.xyxx
      div r3.z, r3.z, r7.z
      lt r7.z, r7.w, l(0.000000)
      or r5.y, r5.y, r7.z
      add r3.z, r1.w, -r3.z
      ge r7.z, r3.z, l(0.000000)
      and r7.z, r7.z, l(0x3f800000)
      ge r8.y, r3.z, r4.z
      and r10.x, r8.y, l(0x3f800000)
      add r7.w, r3.w, -r7.w
      ge r8.y, |r7.w|, l(0.030000)
      and r8.y, r8.y, l(0x3f800000)
      mad r10.y, r7.z, r8.y, r10.x
      mad r7.xy, r10.xyxx, cb2[9].zzzz, r7.xyxx
      mov r8.z, |r3.z|
      mad r8.w, r7.z, |r7.w|, r8.z
      max r5.zw, r5.zzzw, r8.zzzw
      mad r7.zw, cb2[10].xxxy, r4.yyyy, v1.xxxy
      min r7.zw, r7.zzzw, cb2[3].zzzw
      sample_l_indexable(texture2d)(float,float,float,float) r9.xz, r7.zwzz, t10.yzxw, s1, l(0.000000)
      dp2 r3.z, cb0[14].zwzz, r9.zwzz
      dp2 r7.z, cb0[15].zwzz, r9.zwzz
      div r3.z, r3.z, r7.z
      lt r7.z, r9.x, l(0.000000)
      or r5.y, r5.y, r7.z
      add r3.z, r1.w, -r3.z
      ge r7.z, r3.z, l(0.000000)
      and r7.z, r7.z, l(0x3f800000)
      ge r7.w, r3.z, r4.z
      and r10.x, r7.w, l(0x3f800000)
      add r7.w, r3.w, -r9.x
      ge r8.y, |r7.w|, l(0.030000)
      and r8.y, r8.y, l(0x3f800000)
      mad r10.y, r7.z, r8.y, r10.x
      mad r7.xy, r10.xyxx, cb2[10].zzzz, r7.xyxx
      mov r8.z, |r3.z|
      mad r8.w, r7.z, |r7.w|, r8.z
      max r5.zw, r5.zzzw, r8.zzzw
      mad r7.zw, cb2[11].xxxy, r4.yyyy, v1.xxxy
      min r7.zw, r7.zzzw, cb2[3].zzzw
      sample_l_indexable(texture2d)(float,float,float,float) r7.zw, r7.zwzz, t10.zwxy, s1, l(0.000000)
      mov r9.x, r7.z
      mov r9.y, l(1.000000)
      dp2 r3.z, cb0[14].zwzz, r9.xyxx
      dp2 r4.y, cb0[15].zwzz, r9.xyxx
      div r3.z, r3.z, r4.y
      lt r4.y, r7.w, l(0.000000)
      or r4.y, r5.y, r4.y
      add r1.w, r1.w, -r3.z
      ge r3.z, r1.w, l(0.000000)
      and r3.z, r3.z, l(0x3f800000)
      ge r4.z, r1.w, r4.z
      and r9.x, r4.z, l(0x3f800000)
      add r3.w, r3.w, -r7.w
      ge r4.z, |r3.w|, l(0.030000)
      and r4.z, r4.z, l(0x3f800000)
      mad r9.y, r3.z, r4.z, r9.x
      mad r7.xy, r9.xyxx, cb2[11].zzzz, r7.xyxx
      mov r8.z, |r1.w|
      mad r8.w, r3.z, |r3.w|, r8.z
      max r7.zw, r5.zzzw, r8.zzzw
      movc r3.zw, r4.yyyy, r7.xxxz, r7.yyyw
      ushr r7.yw, r2.zzzw, l(0, 4, 0, 4)
      mov r7.xz, r2.zzwz
      and r7.xyzw, r7.xyzw, l(15, 15, 15, 15)
      utof r7.xyzw, r7.xyzw
      mov r6.w, l(0.0666666701)
      mul r9.xyzw, r6.xyzw, r7.xyzw
      lt r1.w, l(0.000000), r7.w
      min r3.w, r4.w, r3.w
      div r3.w, r3.w, r4.w
      log r3.w, r3.w
      mul r3.w, r3.w, l(1.250000)
      exp r3.w, r3.w
      mul r3.z, r3.z, r3.z
      mul r3.z, r9.w, r3.z
      mul r3.z, r3.z, cb2[2].x
      min r3.z, r3.z, l(1.000000)
      mul r3.z, r3.w, r3.z
      add r3.w, -r8.x, l(1.000000)
      mul r3.z, r3.w, r3.z
      mad r4.yzw, r9.xxyz, l(0.000000, 0.0666666701, 0.0666666701, 0.0666666701), -r6.xxyz
      mad r4.yzw, r3.zzzz, r4.yyzw, r6.xxyz
      movc r6.xyz, r1.wwww, r4.yzwy, r6.xyzx
    endif
  else
    add r1.w, -r4.x, l(1.000000)
    mul r1.w, r1.w, r5.x
    mad r4.yzw, r0.xxyz, cb4[2].xxyz, -r0.xxyz
    mad r6.xyz, r1.wwww, r4.yzwy, r0.xyzx
  endif
  mov r6.w, r0.w
  mov o0.xyzw, r6.xyzw
  mov o1.xyzw, r2.xyzw
  mov o2.xy, r3.xyxx
  ret
endif
sample_l_indexable(texture2d)(float,float,float,float) r5.z, v1.xyxx, t4.yzxw, s0, l(0.000000)
mad r5.xy, v1.zwzz, l(2.000000, -2.000000, 0.000000, 0.000000), l(-1.000000, 1.000000, 0.000000, 0.000000)
mov r5.w, l(1.000000)

dp4 r6.w, r5.xyzw, cb0[23].xyzw

add r5.x, -r25.x, r5.x


dp4 r36.x, r5.xyzw, cb0[20].xyzw
dp4 r36.y, r5.xyzw, cb0[21].xyzw
dp4 r36.z, r5.xyzw, cb0[22].xyzw
dp4 r36.w, r5.xyzw, cb0[23].xyzw
div r35.xyzw, r36.xyzw, r36.wwww

mul r26.x, r25.y, r6.w
mad r5.x, r25.x, r26.x, r5.x

dp4 r6.x, r5.xyzw, cb0[20].xyzw
dp4 r6.y, r5.xyzw, cb0[21].xyzw
dp4 r6.z, r5.xyzw, cb0[22].xyzw
dp4 r6.w, r5.xyzw, cb0[23].xyzw
div r5.xyzw, r6.xyzw, r6.wwww
min r3.zw, v1.xxxy, cb4[0].zzzw
sample_l_indexable(texture2d)(float,float,float,float) r0.w, r3.zwzz, t9.yzwx, s1, l(0.000000)
utof r1.xy, r1.xyxx
mad r6.zw, r1.xxxy, l(0.000000, 0.000000, 0.0000305180438, 0.0000305180438), l(0.000000, 0.000000, -1.000000, -1.000000)
mul r1.x, r6.z, l(3.14159274)
sincos r1.x, r7.x, r1.x
mul r1.y, r6.w, r6.w
mad r1.w, -r6.w, r6.w, l(1.000000)
sqrt r1.w, r1.w
mul r6.x, r1.w, r7.x
mul r6.y, r1.w, r1.x
utof r2.xyzw, r2.xyzw
mul r7.xyzw, r2.wxyz, l(0.00392156886, 0.00392156886, 0.00392156886, 0.00392156886)
ushr r2.yz, r3.yyyy, l(0, 5, 10, 0)
mov r2.x, r3.y
and r2.xyz, r2.xyzx, l(31, 31, 31, 0)
utof r2.xyz, r2.xyzx
mul r3.yzw, r2.xxyz, l(0.000000, 0.0322580636, 0.0322580636, 0.0322580636)
umin r1.x, r3.x, l(0x00004e1f)
ld_structured_indexable(structured_buffer, stride=144)(mixed,mixed,mixed,mixed) r8.xyzw, r1.x, l(0), t6.xyzw
ld_structured_indexable(structured_buffer, stride=144)(mixed,mixed,mixed,mixed) r9.xyzw, r1.x, l(16), t6.xyzw
ld_structured_indexable(structured_buffer, stride=144)(mixed,mixed,mixed,mixed) r10.xyzw, r1.x, l(32), t6.xyzw
ld_structured_indexable(structured_buffer, stride=144)(mixed,mixed,mixed,mixed) r11.xyz, r1.x, l(48), t6.xyzx
ld_structured_indexable(structured_buffer, stride=144)(mixed,mixed,mixed,mixed) r12.xyzw, r1.x, l(64), t6.xyzw
ld_structured_indexable(structured_buffer, stride=144)(mixed,mixed,mixed,mixed) r13.xyzw, r1.x, l(80), t6.xyzw
ld_structured_indexable(structured_buffer, stride=144)(mixed,mixed,mixed,mixed) r14.xyzw, r1.x, l(96), t6.xyzw
ld_structured_indexable(structured_buffer, stride=144)(mixed,mixed,mixed,mixed) r4.yzw, r1.x, l(112), t6.xxyz
ld_structured_indexable(structured_buffer, stride=144)(mixed,mixed,mixed,mixed) r1.xw, r1.x, l(128), t6.xxxy
mov r11.w, r12.x
mov r15.xz, r11.yyzy
mov r15.yw, r12.yyyz
add r2.xy, -r11.xwxx, r15.xyxx
mad r2.xy, r3.yyyy, r2.xyxx, r11.xwxx
add r3.xy, -r2.xyxx, r15.zwzz
mad r2.xy, r3.zzzz, r3.xyxx, r2.xyxx
dp4 r3.x, cb0[2].xyzw, r5.xyzw
mul r3.yz, v0.xxyx, cb0[29].xxyx
ftou r3.yz, r3.yyzy
ishl r3.z, r3.z, l(5)
iadd r6.z, r3.y, r3.z
ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r6.z, r6.z, l(572), t12.xxxx
mul r6.z, -r3.x, r6.z
min r6.z, r6.z, l(7.000000)
max r6.z, r6.z, l(0.000000)
ftou r6.z, r6.z
imad r3.z, r6.z, l(576), r3.z
iadd r3.y, r3.y, r3.z
umin r3.y, r3.y, l(4607)
mad r11.xyz, cb0[38].xyzx, r6.xxxx, cb0[37].xyzx
mad r11.xyz, cb0[39].xyzx, r6.yyyy, r11.xyzx
mad r11.xyz, cb0[40].xyzx, r6.wwww, r11.xyzx
mul r12.xyz, r6.wwww, cb0[41].xyzx
mad r11.xyz, r12.xyzx, r6.xxxx, r11.xyzx
mul r12.xyz, r6.yyyy, cb0[42].xyzx
mad r11.xyz, r12.xyzx, r6.wwww, r11.xyzx
mul r12.xyz, r6.yyyy, cb0[43].xyzx
mad r11.xyz, r12.xyzx, r6.xxxx, r11.xyzx
mad r1.y, r1.y, l(3.000000), l(-1.000000)
mad r11.xyz, cb0[44].xyzx, r1.yyyy, r11.xyzx
mul r1.y, r6.y, r6.y
mad r1.y, r6.x, r6.x, -r1.y
mad r11.xyz, cb0[45].xyzx, r1.yyyy, r11.xyzx
max r11.xyz, r11.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)

//Speculars here.

add r12.x, -r35.x, cb0[4].w
add r12.y, -r35.y, cb0[5].w
add r12.z, -r35.z, cb0[6].w
dp3 r1.y, r12.xyzx, r12.xyzx
rsq r1.y, r1.y
mul r15.xyz, r1.yyyy, r12.xyzx
add r8.xyz, r8.xyzx, cb0[27].xyzx
min r8.xyz, r8.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
mul r3.z, r3.w, r8.w
dp3 r6.z, r6.xywx, r15.xyzx
and r16.xyzw, r1.wwww, l(1, 2, 4, 16)
movc r0.w, r16.x, r0.w, l(1.000000)
mad r17.xyz, r12.xyzx, r1.yyyy, -cb0[26].xyzx
dp3 r8.w, r17.xyzx, r17.xyzx
rsq r8.w, r8.w
mul r17.xyz, r8.wwww, r17.xyzx
mul r8.w, r2.y, cb0[32].y
dp3_sat r11.w, r17.xyzx, r6.xywx
max r8.w, r8.w, l(0.001000)
log r11.w, r11.w
mul r8.w, r8.w, r11.w
exp r8.w, r8.w
mul r8.w, r0.w, r8.w
mul r8.w, r8.w, cb0[32].z
movc r8.w, r16.y, r8.w, l(0)
mul r9.xyz, r9.xyzx, r8.wwww
mul r9.xyz, r9.xyzx, cb0[25].xyzx
if_nz r16.z
  mul r16.xz, r7.yyzy, r13.yyzy
  and r7.y, r1.w, l(32)
  if_nz r7.y
    add r17.y, -v1.y, cb0[49].y
    mov r17.x, v1.x
    sample_l_indexable(texture2d)(float,float,float,float) r17.xyz, r17.xyxx, t21.xyzw, s15, l(0.000000)
  else
    add r8.w, r6.z, r6.z
    mad r18.xyz, r6.xywx, -r8.wwww, r15.xyzx
    resinfo_indexable(texturecube)(float,float,float,float)_uint r8.w, l(0), t17.xyzw
    mul r18.xyz, r18.xyzx, l(1.000000, -1.000000, -1.000000, 0.000000)
    iadd r8.w, r8.w, l(-1)
    utof r8.w, r8.w
    mul r8.w, r8.w, r16.z
    sample_l_indexable(texturecube)(float,float,float,float) r17.xyz, r18.xyzx, t17.xyzw, s14, r8.w
  endif
  and r8.w, r1.z, l(2)
  if_nz r8.w
    mul r18.xy, v1.zwzz, cb0[49].xyxx
    sample_l_indexable(texture2d)(float,float,float,float) r18.xyzw, r18.xyxx, t24.xyzw, s15, l(0.000000)
    add r18.xyz, -r17.xyzx, r18.xyzx
    mad r17.xyz, r18.wwww, r18.xyzx, r17.xyzx
  endif
  lt r8.w, l(0.000000), r2.x
  add r11.w, -|r6.z|, l(1.000000)
  max r11.w, r11.w, l(0.000000)
  log r11.w, r11.w
  mul r2.x, r2.x, r11.w
  exp r2.x, r2.x
  movc r2.x, r8.w, r2.x, l(1.000000)
  mul r8.w, r2.x, r16.x
  mad r18.xyz, r0.xyzx, r17.xyzx, -r0.xyzx
  mad r18.xyz, r8.wwww, r18.xyzx, r0.xyzx
  dp3 r8.w, r17.xyzx, l(0.299000, 0.587000, 0.114000, 0.000000)
  mad r11.w, r16.z, l(-9.000000), l(10.000000)
  log r8.w, r8.w
  mul r8.w, r8.w, r11.w
  exp r8.w, r8.w
  add r11.w, -r8.w, l(1.000000)
  mad r8.w, r16.x, r11.w, r8.w
  mul r17.xyz, r8.wwww, r17.xyzx
  mul r17.xyz, r2.xxxx, r17.xyzx
  mad r2.x, -r7.z, r13.z, l(1.000000)
  mad r17.xyz, r17.xyzx, r2.xxxx, r9.xyzx
  movc r9.xyz, r7.yyyy, r9.xyzx, r17.xyzx
else
  and r1.w, r1.w, l(8)
  if_nz r1.w
    add r1.w, r6.z, r6.z
    mad r17.xyz, r6.xywx, -r1.wwww, r15.xyzx
    div r1.w, l(1.000000, 1.000000, 1.000000, 1.000000), r13.w
    dp3 r2.x, -r15.xyzx, r6.xywx
    mul r7.y, r1.w, r1.w
    mad r8.w, -r2.x, r2.x, l(1.000000)
    mad r7.y, -r7.y, r8.w, l(1.000000)
    sqrt r8.w, r7.y
    mad r2.x, r1.w, r2.x, r8.w
    ge r7.y, r7.y, l(0.000000)
    mul r19.xyz, r6.xywx, r2.xxxx
    mad r15.xyz, r1.wwww, -r15.xyzx, -r19.xyzx
    and r15.xyz, r7.yyyy, r15.xyzx
    mul r1.w, r7.z, r13.z
    resinfo_indexable(texturecube)(float,float,float,float)_uint r2.x, l(0), t17.wxyz
    mul r17.xyz, r17.xyzx, l(1.000000, -1.000000, -1.000000, 0.000000)
    iadd r2.x, r2.x, l(-1)
    utof r2.x, r2.x
    mul r1.w, r1.w, r2.x
    sample_l_indexable(texturecube)(float,float,float,float) r17.xyz, r17.xyzx, t17.xyzw, s14, r1.w
    and r2.x, r1.z, l(2)
    if_nz r2.x
      mul r13.yw, v1.zzzw, cb0[49].xxxy
      sample_l_indexable(texture2d)(float,float,float,float) r19.xyzw, r13.ywyy, t24.xyzw, s15, l(0.000000)
      add r19.xyz, -r17.xyzx, r19.xyzx
      mad r17.xyz, r19.wwww, r19.xyzx, r17.xyzx
    endif
    sample_l_indexable(texturecube)(float,float,float,float) r15.xyz, r15.xyzx, t17.xyzw, s14, r1.w
    lt r1.w, l(0.000000), r14.x
    add r2.x, -|r6.z|, l(1.000000)
    max r2.x, r2.x, l(0.000000)
    log r2.x, r2.x
    mul r2.x, r2.x, r14.x
    exp r2.x, r2.x
    movc r1.w, r1.w, r2.x, l(1.000000)
    mad r19.xyz, r0.xyzx, r17.xyzx, -r0.xyzx
    mad r19.xyz, r1.wwww, r19.xyzx, r0.xyzx
    mad r2.x, -r2.w, l(0.00392156886), l(1.000000)
    mad r7.x, r1.w, r2.x, r7.x
    mul r2.x, r14.y, |r6.z|
    log r2.x, r2.x
    mul r2.x, r2.x, r14.z
    exp r2.x, r2.x
    mul r14.xyz, r17.xyzx, r7.xxxx
    mul r14.xyz, r1.wwww, r14.xyzx
    mad r1.w, -r7.z, r13.z, l(1.000000)
    mad r9.xyz, r14.xyzx, r1.wwww, r9.xyzx
    mul r13.yzw, r15.xxyz, r2.xxxx
    mul r18.xyz, r13.yzwy, r19.xyzx
  else
    mov r18.xyz, r0.xyzx
  endif
endif
mul r1.w, r0.w, r7.x
add r13.yzw, -r8.xxyz, l(0.000000, 1.000000, 1.000000, 1.000000)
mad r8.xyz, r1.wwww, r13.yzwy, r8.xyzx
log r1.w, r0.w
mul r1.w, r1.w, cb4[3].w
exp r1.w, r1.w
add r13.yzw, r8.xxyz, -cb4[3].xxyz
mad r13.yzw, r0.wwww, r13.yyzw, cb4[3].xxyz
mul r1.w, r7.x, r1.w
add r7.xyz, -r8.xyzx, r13.yzwy
mad r7.xyz, r1.wwww, r7.xyzx, r8.xyzx
mad r7.xyz, r7.xyzx, cb0[25].xyzx, r11.xyzx
min r1.w, r3.z, l(1.000000)
add r8.xyz, -r7.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
mad r7.xyz, r1.wwww, r8.xyzx, r7.xyzx
add r1.w, -|r6.z|, l(1.000000)
max r1.w, r1.w, l(0.000000)
mul r1.w, r10.w, r1.w
log r1.w, r1.w
mul r1.w, r1.w, r9.w
exp r1.w, r1.w
min r1.w, r1.w, l(1.000000)
mad r8.xyz, r10.xyzx, r1.wwww, r9.xyzx
if_nz r16.y
  ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r1.w, r3.y, l(252), t12.xxxx
  umin r1.w, r1.w, l(63)
  mov r9.xyz, l(0,0,0,0)
  mov r10.xyz, l(0,0,0,0)
  mov r2.x, l(0)
  loop
    uge r2.w, r2.x, r1.w
    breakc_nz r2.w
    ishl r2.w, r2.x, l(2)
    ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r2.w, r3.y, r2.w, t12.xxxx
    ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r11.xyz, r2.w, l(0), t11.xyzx
    add r11.xyz, -r5.xyzx, r11.xyzx
    dp3 r3.z, r11.xyzx, r11.xyzx
    sqrt r6.z, r3.z
    ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r8.w, r2.w, l(28), t11.xxxx
    mul r6.z, r6.z, r8.w
    ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r8.w, r2.w, l(44), t11.xxxx
    log r6.z, |r6.z|
    mul r6.z, r6.z, r8.w
    exp r6.z, r6.z
    add r6.z, -r6.z, l(1.000000)
    max r6.z, r6.z, l(0.000000)
    lt r8.w, l(0.000000), r6.z
    if_nz r8.w
      rsq r3.z, r3.z
      mul r11.xyz, r3.zzzz, r11.xyzx
      ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r3.z, r2.w, l(96), t11.xxxx
      dp3 r8.w, r11.xyzx, r6.xywx
      max r3.z, r3.z, r8.w
      mul r3.z, r3.z, r6.z
      ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r13.yzw, r2.w, l(16), t11.xxyz
      mad r10.xyz, r13.yzwy, r3.zzzz, r10.xyzx
      mad r11.xyz, r12.xyzx, r1.yyyy, r11.xyzx
      dp3 r6.z, r11.xyzx, r11.xyzx
      rsq r6.z, r6.z
      mul r11.xyz, r6.zzzz, r11.xyzx
      ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r14.xy, r2.w, l(68), t11.xyxx
      mul r2.w, r2.y, r14.y
      dp3_sat r6.z, r11.xyzx, r6.xywx
      max r2.w, r2.w, l(0.001000)
      log r6.z, r6.z
      mul r2.w, r2.w, r6.z
      exp r2.w, r2.w
      mul r11.xyz, r2.wwww, r13.yzwy
      mul r11.xyz, r3.zzzz, r11.xyzx
      mad r9.xyz, r11.xyzx, r14.xxxx, r9.xyzx
    endif
    iadd r2.x, r2.x, l(1)
  endloop
  mad r10.xyz, r10.xyzx, r12.wwww, r7.xyzx
  ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r1.w, r3.y, l(508), t12.xxxx
  umin r1.w, r1.w, l(63)
  mul r11.yw, l(0.000000, 1.250000, 0.000000, -1.250000), cb0[32].wwww
  mov r11.xz, l(0,0,0,0)
  mov r13.yzw, r9.xxyz
  mov r14.xyz, l(0,0,0,0)
  mov r2.x, l(0)
  loop
    uge r2.w, r2.x, r1.w
    breakc_nz r2.w
    ishl r2.w, r2.x, l(2)
    iadd r2.w, r2.w, l(256)
    ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r2.w, r3.y, r2.w, t12.xxxx
    ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r15.xyz, r2.w, l(0), t11.xyzx
    add r15.xyz, -r5.xyzx, r15.xyzx
    dp3 r3.z, r15.xyzx, r15.xyzx
    rsq r6.z, r3.z
    mul r15.xyz, r6.zzzz, r15.xyzx
    ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r17.xyzw, r2.w, l(48), t11.xyzw
    dp3 r6.z, r15.xyzx, r17.xyzx
    max r6.z, r6.z, l(0.000000)
    add r6.z, -r6.z, l(1.000000)
    mul r6.z, r17.w, r6.z
    ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r8.w, r2.w, l(64), t11.xxxx
    log r6.z, r6.z
    mul r6.z, r6.z, r8.w
    exp r6.z, r6.z
    add r6.z, -r6.z, l(1.000000)
    max r6.z, r6.z, l(0.000000)
    lt r8.w, l(0.000000), r6.z
    if_nz r8.w
      sqrt r3.z, r3.z
      ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r8.w, r2.w, l(28), t11.xxxx
      mul r3.z, r3.z, r8.w
      ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r8.w, r2.w, l(44), t11.xxxx
      log r3.z, |r3.z|
      mul r3.z, r3.z, r8.w
      exp r3.z, r3.z
      add r3.z, -r3.z, l(1.000000)
      max r3.z, r3.z, l(0.000000)
      mul r3.z, r3.z, r6.z
      lt r6.z, l(0.000000), r3.z
      if_nz r6.z
        ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r16.xy, r2.w, l(96), t11.xyxx
        ine r6.z, r16.y, l(-1)
        if_nz r6.z
          ld_structured_indexable(structured_buffer, stride=64)(mixed,mixed,mixed,mixed) r17.xyzw, r16.y, l(0), t14.xyzw
          ld_structured_indexable(structured_buffer, stride=64)(mixed,mixed,mixed,mixed) r19.xyzw, r16.y, l(16), t14.xyzw
          ld_structured_indexable(structured_buffer, stride=64)(mixed,mixed,mixed,mixed) r20.xyzw, r16.y, l(32), t14.xyzw
          ld_structured_indexable(structured_buffer, stride=64)(mixed,mixed,mixed,mixed) r21.xyzw, r16.y, l(48), t14.xyzw
          dp4 r17.x, r5.xyzw, r17.xyzw
          dp4 r17.y, r5.xyzw, r19.xyzw
          dp4 r17.z, r5.xyzw, r20.xyzw
          dp4 r6.z, r5.xyzw, r21.xyzw
          div r17.xyz, r17.xyzx, r6.zzzz
          utof r17.w, r16.y
          sample_c_lz_indexable(texture2darray)(float,float,float,float) r6.z, r17.xywx, t18.xxxx, s13, r17.z
          add r19.xy, r11.yxyy, r17.xyxx
          mov r19.z, r17.w
          sample_c_lz_indexable(texture2darray)(float,float,float,float) r8.w, r19.xyzx, t18.xxxx, s13, r17.z
          mul r8.w, r8.w, l(0.200000)
          mad r6.z, r6.z, l(0.200000), r8.w
          add r19.xy, r11.wzww, r17.xyxx
          sample_c_lz_indexable(texture2darray)(float,float,float,float) r8.w, r19.xyzx, t18.xxxx, s13, r17.z
          mad r6.z, r8.w, l(0.200000), r6.z
          add r19.xy, r11.xyxx, r17.xyxx
          sample_c_lz_indexable(texture2darray)(float,float,float,float) r8.w, r19.xyzx, t18.xxxx, s13, r17.z
          mad r6.z, r8.w, l(0.200000), r6.z
          add r19.xy, r11.zwzz, r17.xyxx
          sample_c_lz_indexable(texture2darray)(float,float,float,float) r8.w, r19.xyzx, t18.xxxx, s13, r17.z
          mad r6.z, r8.w, l(0.200000), r6.z
          mul r3.z, r3.z, r6.z
        endif
        dp3 r6.z, r15.xyzx, r6.xywx
        max r6.z, r6.z, r16.x
        mul r3.z, r3.z, r6.z
        ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r16.xyz, r2.w, l(16), t11.xyzx
        mad r14.xyz, r16.xyzx, r3.zzzz, r14.xyzx
        mad r15.xyz, r12.xyzx, r1.yyyy, r15.xyzx
        dp3 r6.z, r15.xyzx, r15.xyzx
        rsq r6.z, r6.z
        mul r15.xyz, r6.zzzz, r15.xyzx
        ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r17.xy, r2.w, l(68), t11.xyxx
        mul r2.w, r2.y, r17.y
        dp3_sat r6.z, r15.xyzx, r6.xywx
        max r2.w, r2.w, l(0.001000)
        log r6.z, r6.z
        mul r2.w, r2.w, r6.z
        exp r2.w, r2.w
        mul r15.xyz, r2.wwww, r16.xyzx
        mul r15.xyz, r3.zzzz, r15.xyzx
        mad r13.yzw, r15.xxyz, r17.xxxx, r13.yyzw
      endif
    endif
    iadd r2.x, r2.x, l(1)
  endloop
  mad r2.xyw, r14.xyxz, r12.wwww, r10.xyxz
  mad r8.xyz, r13.yzwy, r12.wwww, r8.xyzx
else
  ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r1.y, r3.y, l(252), t12.xxxx
  umin r1.y, r1.y, l(63)
  mov r9.xyzw, l(0,0,0,0)
  loop
    uge r1.w, r9.w, r1.y
    breakc_nz r1.w
    ishl r1.w, r9.w, l(2)
    ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r1.w, r3.y, r1.w, t12.xxxx
    ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r10.xyz, r1.w, l(0), t11.xyzx
    add r10.xyz, -r5.xyzx, r10.xyzx
    dp3 r3.z, r10.xyzx, r10.xyzx
    sqrt r6.z, r3.z
    ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r8.w, r1.w, l(28), t11.xxxx
    mul r6.z, r6.z, r8.w
    ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r8.w, r1.w, l(44), t11.xxxx
    log r6.z, |r6.z|
    mul r6.z, r6.z, r8.w
    exp r6.z, r6.z
    add r6.z, -r6.z, l(1.000000)
    max r6.z, r6.z, l(0.000000)
    lt r8.w, l(0.000000), r6.z
    if_nz r8.w
      ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r8.w, r1.w, l(96), t11.xxxx
      rsq r3.z, r3.z
      mul r10.xyz, r3.zzzz, r10.xyzx
      dp3 r3.z, r10.xyzx, r6.xywx
      max r3.z, r3.z, r8.w
      ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r10.xyz, r1.w, l(16), t11.xyzx
      mul r10.xyz, r6.zzzz, r10.xyzx
      mad r9.xyz, r10.xyzx, r3.zzzz, r9.xyzx
    endif
    iadd r9.w, r9.w, l(1)
  endloop
  mad r7.xyz, r9.xyzx, r12.wwww, r7.xyzx
  ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r1.y, r3.y, l(508), t12.xxxx
  umin r1.y, r1.y, l(63)
  mul r9.yw, l(0.000000, 1.250000, 0.000000, -1.250000), cb0[32].wwww
  mov r9.xz, l(0,0,0,0)
  mov r10.xyzw, l(0,0,0,0)
  loop
    uge r1.w, r10.w, r1.y
    breakc_nz r1.w
    ishl r1.w, r10.w, l(2)
    iadd r1.w, r1.w, l(256)
    ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r1.w, r3.y, r1.w, t12.xxxx
    ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r11.xyz, r1.w, l(0), t11.xyzx
    add r11.xyz, -r5.xyzx, r11.xyzx
    dp3 r3.z, r11.xyzx, r11.xyzx
    rsq r6.z, r3.z
    mul r11.xyz, r6.zzzz, r11.xyzx
    ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r15.xyzw, r1.w, l(48), t11.xyzw
    dp3 r6.z, r11.xyzx, r15.xyzx
    max r6.z, r6.z, l(0.000000)
    add r6.z, -r6.z, l(1.000000)
    mul r6.z, r15.w, r6.z
    ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r8.w, r1.w, l(64), t11.xxxx
    log r6.z, r6.z
    mul r6.z, r6.z, r8.w
    exp r6.z, r6.z
    add r6.z, -r6.z, l(1.000000)
    max r6.z, r6.z, l(0.000000)
    lt r8.w, l(0.000000), r6.z
    if_nz r8.w
      sqrt r3.z, r3.z
      ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r8.w, r1.w, l(28), t11.xxxx
      mul r3.z, r3.z, r8.w
      ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r8.w, r1.w, l(44), t11.xxxx
      log r3.z, |r3.z|
      mul r3.z, r3.z, r8.w
      exp r3.z, r3.z
      add r3.z, -r3.z, l(1.000000)
      max r3.z, r3.z, l(0.000000)
      mul r3.z, r3.z, r6.z
      lt r6.z, l(0.000000), r3.z
      if_nz r6.z
        ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r12.xy, r1.w, l(96), t11.xyxx
        ine r6.z, r12.y, l(-1)
        if_nz r6.z
          ld_structured_indexable(structured_buffer, stride=64)(mixed,mixed,mixed,mixed) r15.xyzw, r12.y, l(0), t14.xyzw
          ld_structured_indexable(structured_buffer, stride=64)(mixed,mixed,mixed,mixed) r17.xyzw, r12.y, l(16), t14.xyzw
          ld_structured_indexable(structured_buffer, stride=64)(mixed,mixed,mixed,mixed) r19.xyzw, r12.y, l(32), t14.xyzw
          ld_structured_indexable(structured_buffer, stride=64)(mixed,mixed,mixed,mixed) r20.xyzw, r12.y, l(48), t14.xyzw
          dp4 r14.x, r5.xyzw, r15.xyzw
          dp4 r14.y, r5.xyzw, r17.xyzw
          dp4 r14.z, r5.xyzw, r19.xyzw
          dp4 r6.z, r5.xyzw, r20.xyzw
          div r15.xyz, r14.xyzx, r6.zzzz
          utof r15.w, r12.y
          sample_c_lz_indexable(texture2darray)(float,float,float,float) r6.z, r15.xywx, t18.xxxx, s13, r15.z
          add r14.xy, r9.yxyy, r15.xyxx
          mov r14.z, r15.w
          sample_c_lz_indexable(texture2darray)(float,float,float,float) r8.w, r14.xyzx, t18.xxxx, s13, r15.z
          mul r8.w, r8.w, l(0.200000)
          mad r6.z, r6.z, l(0.200000), r8.w
          add r14.xy, r9.wzww, r15.xyxx
          sample_c_lz_indexable(texture2darray)(float,float,float,float) r8.w, r14.xyzx, t18.xxxx, s13, r15.z
          mad r6.z, r8.w, l(0.200000), r6.z
          add r14.xy, r9.xyxx, r15.xyxx
          sample_c_lz_indexable(texture2darray)(float,float,float,float) r8.w, r14.xyzx, t18.xxxx, s13, r15.z
          mad r6.z, r8.w, l(0.200000), r6.z
          add r14.xy, r9.zwzz, r15.xyxx
          sample_c_lz_indexable(texture2darray)(float,float,float,float) r8.w, r14.xyzx, t18.xxxx, s13, r15.z
          mad r6.z, r8.w, l(0.200000), r6.z
          mul r3.z, r3.z, r6.z
        endif
        dp3 r6.z, r11.xyzx, r6.xywx
        max r6.z, r6.z, r12.x
        ld_structured_indexable(structured_buffer, stride=112)(mixed,mixed,mixed,mixed) r11.xyz, r1.w, l(16), t11.xyzx
        mul r11.xyz, r3.zzzz, r11.xyzx
        mad r10.xyz, r11.xyzx, r6.zzzz, r10.xyzx
      endif
    endif
    iadd r10.w, r10.w, l(1)
  endloop
  mad r2.xyw, r10.xyxz, r12.wwww, r7.xyxz
endif
mul r6.xyz, r7.wwww, r8.xyzx
mad r2.xyw, r18.xyxz, r2.xyxw, r6.xyxz
lt r1.y, l(0.000000), r4.y
dp3 r0.x, r0.xyzx, l(0.299000, 0.587000, 0.114000, 0.000000)
add r0.x, -r4.y, r0.x
max r0.x, r0.x, l(0.000000)
div r0.x, r0.x, r4.y
min r0.x, r0.x, l(1.000000)
movc r0.x, r1.y, r0.x, l(1.000000)
mul r0.y, r3.w, r14.w
mul r0.x, r0.x, r0.y
add r0.y, r0.w, l(-1.000000)
mad r0.y, r4.z, r0.y, l(1.000000)
mul r0.x, r0.y, r0.x
add r0.y, -r4.x, l(1.000000)
mul r0.y, r0.y, r4.w
mul r0.y, r0.y, cb4[2].w
mad r3.yzw, r2.xxyw, cb4[2].xxyz, -r2.xxyw
mad r0.yzw, r0.yyyy, r3.yyzw, r2.xxyw
add r1.y, -r3.x, -cb0[29].z
mul_sat r1.y, r1.y, cb0[29].w
add r1.w, r5.y, -cb0[31].x
mul_sat r1.w, r1.w, cb0[31].y
mul r1.y, r1.w, r1.y
mul r1.y, r1.y, cb0[30].w
and r1.z, r1.z, l(16)
mad r1.w, -r2.z, l(0.0322580636), l(1.000000)
movc r1.z, r1.z, r1.w, l(1.000000)
mul r1.y, r13.x, r1.y
mul r1.y, r1.z, r1.y
add r2.xyz, -r0.yzwy, cb0[30].xyzx
mad r0.yzw, r1.yyyy, r2.xxyz, r0.yyzw
div r1.y, -r3.x, cb6[8].z
mul r2.xy, v0.xyxx, cb0[24].zwzz
add r1.y, r1.y, -cb6[8].y
add r1.z, l(1.000000), -cb6[8].y
div r2.z, r1.y, r1.z
sample_l_indexable(texture3d)(float,float,float,float) r1.yzw, r2.xyzx, t19.wxyz, s1, l(0.000000)
sample_l_indexable(texture3d)(float,float,float,float) r2.xyz, r2.xyzx, t20.xyzw, s1, l(0.000000)
mad r0.yzw, r0.yyzw, r2.xxyz, r1.yyzw
if_nz cb4[0].x
  add r1.yz, r5.xxzx, -cb4[1].xxyx
  mul r1.yz, r1.yyzy, cb4[1].zzwz
  ge r2.xy, r1.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000)
  and r1.w, r2.y, r2.x
  ge r2.xy, l(1.000000, 1.000000, 0.000000, 0.000000), r1.yzyy
  and r2.x, r2.y, r2.x
  and r1.w, r1.w, r2.x
  if_nz r1.w
    sample_l_indexable(texture2d)(float,float,float,float) r1.y, r1.yzyy, t8.yxzw, s1, l(0.000000)
  else
    mov r1.y, l(1.000000)
  endif
  mov r5.w, l(1.000000)
  mov r2.xyz, r0.yzwy
  mov r1.z, l(0)
  loop
    uge r1.w, r1.z, cb4[0].x
    breakc_nz r1.w
    ld_structured_indexable(structured_buffer, stride=128)(mixed,mixed,mixed,mixed) r3.xyzw, r1.z, l(96), t7.xyzw
    add r1.w, -r3.y, r5.y
    ge r2.w, r3.z, |r1.w|
    if_nz r2.w
      ld_structured_indexable(structured_buffer, stride=128)(mixed,mixed,mixed,mixed) r4.xyzw, r1.z, l(0), t7.xyzw
      ld_structured_indexable(structured_buffer, stride=128)(mixed,mixed,mixed,mixed) r6.xyzw, r1.z, l(32), t7.xwyz
      ld_structured_indexable(structured_buffer, stride=128)(mixed,mixed,mixed,mixed) r7.xyzw, r1.z, l(64), t7.xyzw
      ld_structured_indexable(structured_buffer, stride=128)(mixed,mixed,mixed,mixed) r8.xyzw, r1.z, l(80), t7.xyzw
      add r2.w, r3.w, |r1.w|
      lt r2.w, r3.z, r2.w
      add r1.w, -|r1.w|, r3.z
      div r1.w, r1.w, r3.w
      log r1.w, r1.w
      mul r1.w, r1.w, l(0.250000)
      exp r1.w, r1.w
      movc r1.w, r2.w, r1.w, l(1.000000)
      if_z r8.x
        mov r6.x, r4.w
        add r3.yz, r5.xxzx, -r6.xxyx
        dp2 r2.w, r3.yzyy, r3.yzyy
        sqrt r2.w, r2.w
        lt r3.y, r8.y, r2.w
        add r3.z, -r8.z, r8.y
        ge r3.w, r2.w, r3.z
        not r9.x, r3.w
        add r2.w, r2.w, -r3.z
        div r2.w, r2.w, r8.z
        and r2.w, r2.w, r3.w
        movc r2.w, r3.y, l(0), r2.w
        or r3.y, r3.y, r9.x
      else
        ieq r3.z, r8.x, l(1)
        if_nz r3.z
          ld_structured_indexable(structured_buffer, stride=128)(mixed,mixed,mixed,mixed) r3.z, r1.z, l(112), t7.xxxx
          mov r6.xz, r4.wwzw
          add r9.xy, r5.xzxx, -r6.xyxx
          dp2 r3.w, r9.xyxx, r9.xyxx
          sqrt r9.z, r3.w
          lt r9.w, r8.y, r9.z
          add r8.y, -r8.z, r8.y
          rsq r3.w, r3.w
          mul r9.xy, r3.wwww, r9.xyxx
          dp2 r3.w, r6.zwzz, r9.xyxx
          add r9.x, -|r3.w|, l(1.000000)
          sqrt r9.x, r9.x
          mad r9.y, |r3.w|, l(-0.0187292993), l(0.074261)
          mad r9.y, r9.y, |r3.w|, l(-0.212114394)
          mad r9.y, r9.y, |r3.w|, l(1.57072878)
          mul r10.x, r9.x, r9.y
          mad r10.x, r10.x, l(-2.000000), l(3.14159274)
          lt r3.w, r3.w, -r3.w
          and r3.w, r3.w, r10.x
          mad r3.w, r9.y, r9.x, r3.w
          ge r9.x, r3.z, r3.w
          not r9.y, r9.x
          mul r10.x, r9.z, l(6.28318548)
          mul r3.zw, r3.zzzw, r10.xxxx
          mul r3.w, r3.w, l(0.159154937)
          mad r3.z, r3.z, l(0.159154937), -r3.w
          div r3.z, r3.z, r8.z
          min r3.z, r3.z, l(1.000000)
          add r3.z, -r3.z, l(1.000000)
          add r3.w, -r8.y, r9.z
          div r3.w, r3.w, r8.z
          min r3.w, r3.w, l(1.000000)
          max r3.z, r3.w, r3.z
          and r3.z, r3.z, r9.x
          movc r2.w, r9.w, l(0), r3.z
          or r3.y, r9.w, r9.y
        else
          ieq r3.z, r8.x, l(2)
          dp4 r4.x, r5.xyzw, r4.xyzw
          dp4 r4.y, r5.xwyz, r6.xyzw
          lt r4.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000)
          and r3.w, r4.w, r4.z
          lt r4.zw, l(0.000000, 0.000000, -0.500000, -0.500000), r4.xxxy
          and r4.z, r4.w, r4.z
          and r3.w, r3.w, r4.z
          add r4.zw, -r8.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000)
          lt r6.xy, |r4.xyxx|, r4.zwzz
          and r6.x, r6.y, r6.x
          add r4.xy, -r4.zwzz, |r4.xyxx|
          div r4.xy, r4.xyxx, r8.zwzz
          max r4.x, r4.y, r4.x
          movc r4.x, r6.x, l(0), r4.x
          and r4.x, r3.w, r4.x
          movc r3.w, r3.w, r6.x, l(-1)
          and r2.w, r3.z, r4.x
          and r3.y, r3.w, r3.z
        endif
      endif
      log r2.w, r2.w
      mul r2.w, r2.w, r3.x
      exp r2.w, r2.w
      mul r2.w, r2.w, r7.w
      mul r2.w, r1.y, r2.w
      mul r1.w, r1.w, r2.w
      add r3.xzw, -r2.xxyz, r7.xxyz
      mad r3.xzw, r1.wwww, r3.xxzw, r2.xxyz
      movc r2.xyz, r3.yyyy, r2.xyzx, r3.xzwx
    endif
    iadd r1.z, r1.z, l(1)
  endloop
  mov r0.yzw, r2.xxyz
endif
mul_sat r0.x, r0.x, l(0.100000)
movc r2.y, r16.w, r0.x, l(0)
mov r2.xzw, l(255.000000,0,255.000000,255.000000)
mul r2.xyzw, r2.xyzw, l(0.000000, 255.000000, 0.000000, 0.000000)
ftou o1.xyzw, r2.xyzw
mul r0.x, r1.x, l(65.535004)
ftou r0.x, r0.x
umin o2.y, r0.x, l(0x0000ffff)
mov o0.xyz, r0.yzwy
mov o0.w, l(1.000000)
mov o2.x, l(0)
ret
// Approximately 925 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v0.6.163 on Thu Aug 21 16:48:22 2025
//
// struct DeferredParam
// {
//     float3 shadowColor;            // Offset:    0
//     float emissive;                // Offset:   12
//     float3 specularColor;          // Offset:   16
//     float rimLightPower;           // Offset:   28
//     float3 rimLightColor;          // Offset:   32
//     float rimIntensity;            // Offset:   44
//     float3 fresnels;               // Offset:   48
//     float specularShadowFadeRatio; // Offset:   60
//     float3 specularGlossinesses;   // Offset:   64
//     float dynamicLightIntensity;   // Offset:   76
//     float materialFogIntensity;    // Offset:   80
//     float metalness;               // Offset:   84
//     float roughness;               // Offset:   88
//     float cryRefractionIndex;      // Offset:   92
//     float cryFresnel;              // Offset:   96
//     float cryBrightness;           // Offset:  100
//     float cryBrightnessPower;      // Offset:  104
//     float glowIntensity;           // Offset:  108
//     float glowLumThreshold;        // Offset:  112
//     float glowShadowFadeRatio;     // Offset:  116
//     float ssaoIntensity;           // Offset:  120
//     float translucency;            // Offset:  124
//     float ssrDistance;             // Offset:  128
//     uint flag;                     // Offset:  132
//     float2 reserve;                // Offset:  136
// };
//
// struct OutlineShapeParam
// {
//     float4x4 mtx;                  // Offset:    0
//     float4 color;                  // Offset:   64
//     uint type;                     // Offset:   80
//     float radius;                  // Offset:   84
//     float2 gradation_size;         // Offset:   88
//     float gradation_sharpness;     // Offset:   96
//     float height_base;             // Offset:  100
//     float height_width;            // Offset:  104
//     float height_gradation_width;  // Offset:  108
//     float fan_angle;               // Offset:  112
//     float pad[3];                  // Offset:  116
// };
//
// 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_local : register(b2)
// {
//   float4 fadeBeginDistance_g : packoffset(c0);
//   float4 fadeRangeInv_g : packoffset(c1);
//   float density_g : packoffset(c2);
//   float maxThickness_g : packoffset(c2.y);
//   float depthThresholdNear_g : packoffset(c2.z);
//   float depthThresholdFar_g : packoffset(c2.w);
//   float densityByDepthDiffNear_g : packoffset(c3);
//   float densityByDepthDiffFar_g : packoffset(c3.y);
//   float2 uvClamp_g : packoffset(c3.z);
//   float4 offsetsAndWeights[8] : packoffset(c4);
// }
//
// cbuffer cb_post_sky : register(b6)
// {
//   float3 incomingLight_g : packoffset(c0);
//   float3 scatteringR_g : packoffset(c1);
//   float3 scatteringM_g : packoffset(c2);
//   float3 extinctionR_g : packoffset(c3);
//   float3 extinctionM_g : packoffset(c4);
//   float3 densityScaleHeight_g : packoffset(c5);
//   float skyHorizonBottomLimit_g : packoffset(c5.w);
//   float3 sunDirection_g : packoffset(c6);
//   float skyHorizonTopLimit_g : packoffset(c6.w);
//   float mieG_g : packoffset(c7);
//   float distanceScale_g : packoffset(c7.y);
//   float planetRadius_g : packoffset(c7.z);
//   float atmosphereHeight_g : packoffset(c7.w);
//   float sunIntensity_g : packoffset(c8);
//   float skyLutNearOverFarClip_g : packoffset(c8.y);
//   float skyLutCameraFarClip_g : packoffset(c8.z);
//   float skyBrightness_g : packoffset(c8.w);
// }
//
// cbuffer cb_deferred : register(b4)
// {
//   uint outlineShapeCount_g : packoffset(c0);
//   float2 shadowUVClamp_g : packoffset(c0.z);
//   float4 outlineShapeMaskUVParam_g : packoffset(c1);
//   float3 mapAOColor_g : packoffset(c2);
//   float mapAOIntensity_g : packoffset(c2.w);
//   float3 shadowEdgeColor_g : packoffset(c3);
//   float shadowEdgeSharpness_g : packoffset(c3.w);
// }
//
// SamplerState samPoint_s : register(s0);
// SamplerState samLinear_s : register(s1);
// SamplerState SmplCube_s : register(s14);
// SamplerState SmplLinearClamp_s : register(s15);
// SamplerComparisonState SmplShadow_s : register(s13);
// Texture2D<float4> colorTexture : register(t0);
// Texture2D<uint4> mrtTexture0 : register(t1);
// Texture2D<uint4> mrtTexture1 : register(t2);
// Texture2D<uint2> mrtTexture2 : register(t3);
// Texture2D<float4> depthTexture : register(t4);
// Texture2D<float4> ssaoTexture : register(t5);
// StructuredBuffer<DeferredParam> deferredParams_g : register(t6);
// StructuredBuffer<OutlineShapeParam> outlineShapes_g : register(t7);
// Texture2D<float4> outlineShapeMask : register(t8);
// Texture2D<float4> shadowTexture : register(t9);
// Texture2D<float4> outlinePrepareTexture : register(t10);
// StructuredBuffer<LightParam> dynamicLights_g : register(t11);
// StructuredBuffer<LightIndexData> lightIndices_g : register(t12);
// StructuredBuffer<float4x4> spotShadowMatrices_g : register(t14);
// TextureCube<float4> texEnvMap_g : register(t17);
// Texture2DArray<float4> spotShadowMaps : register(t18);
// Texture3D<float4> atmosphereInscatterLUT : register(t19);
// Texture3D<float4> atmosphereExtinctionLUT : register(t20);
// Texture2D<float4> texMirror_g : register(t21);
// Texture2D<float4> texSSRMap_g : register(t24);
//
//
// // SLT declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Texture2D<float4> StereoParams : register(t125);
//
//
// void main(
//   float4 v0 : SV_Position0,
//   float4 v1 : TEXCOORD0,
//   out float4 o0 : SV_Target0,
//   out uint4 o1 : SV_Target1,
//   out uint2 o2 : SV_Target2)
// {
//   float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20,r21;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
//   r0.xyzw = colorTexture.SampleLevel(samPoint_s, v1.xy, 0).xyzw;
//   mrtTexture0.GetDimensions(0, fDest.x, fDest.y, fDest.z);
//   r1.xy = fDest.xy;
//   r1.xy = v1.xy * r1.xy;
//   r1.xy = (int2)r1.xy;
//   r1.zw = float2(0,0);
//   r1.xyz = mrtTexture0.Load(r1.xyz).xyw;
//   mrtTexture1.GetDimensions(0, fDest.x, fDest.y, fDest.z);
//   r2.xy = fDest.xy;
//   r2.xy = v1.xy * r2.xy;
//   r2.xy = (int2)r2.xy;
//   r2.zw = float2(0,0);
//   r2.xyzw = mrtTexture1.Load(r2.xyz).xyzw;
//   mrtTexture2.GetDimensions(0, fDest.x, fDest.y, fDest.z);
//   r3.xy = fDest.xy;
//   r3.xy = v1.xy * r3.xy;
//   r3.xy = (int2)r3.xy;
//   r3.zw = float2(0,0);
//   r3.xy = mrtTexture2.Load(r3.xyz).xy;
//   r4.xyz = ssaoTexture.SampleLevel(samLinear_s, v1.xy, 0).xyz;
//   r1.w = (int)r1.z & 8;
//   if (r1.w == 0) {
//     r5.yz = (uint2)r3.xx >> int2(5,10);
//     r5.x = r3.x;
//     r5.xyz = (int3)r5.xyz & int3(31,31,31);
//     r5.xyz = (uint3)r5.xyz;
//     r6.x = 0.0322580636;
//     r6.yz = r0.yz;
//     r5.xyz = r6.xyz * r5.xyz;
//     r1.w = (int)r1.z & 1;
//     if (r1.w != 0) {
//       r6.x = r0.x;
//       r6.yz = float2(0.0322580636,0.0322580636);
//       r7.xyz = r6.xyz * r5.xyz;
//       r1.w = r4.y * r4.z;
//       r4.yzw = -r6.xyz * r5.xyz + r0.xyz;
//       r6.xyz = r1.www * r4.yzw + r7.xyz;
//       r1.w = (int)r1.z & 4;
//       if (r1.w == 0) {
//         r3.zw = outlinePrepareTexture.SampleLevel(samPoint_s, v1.xy, 0).xy;
//         r7.x = r3.z;
//         r7.yw = float2(1,1);
//         r1.w = dot(projInv_g._m22_m32, r7.xy);
//         r3.z = dot(projInv_g._m23_m33, r7.xy);
//         r1.w = r1.w / r3.z;
//         r8.xyzw = -fadeBeginDistance_g.xyzw + -r1.wwww;
//         r8.xyzw = saturate(fadeRangeInv_g.xyzw * r8.xyzw);
//         r9.xy = maxThickness_g;
//         r9.z = densityByDepthDiffNear_g;
//         r10.x = 1 + -r9.x;
//         r10.y = depthThresholdFar_g + -r9.y;
//         r10.z = densityByDepthDiffFar_g + -r9.z;
//         r4.yzw = r8.yzw * r10.xyz + r9.xyz;
//         r5.yz = offsetsAndWeights[0].xy * r4.yy + v1.xy;
//         r5.yz = min(uvClamp_g.xy, r5.yz);
//         r7.xz = outlinePrepareTexture.SampleLevel(samLinear_s, r5.yz, 0).yx;
//         r3.z = dot(projInv_g._m22_m32, r7.zw);
//         r5.y = dot(projInv_g._m23_m33, r7.zw);
//         r3.z = r3.z / r5.y;
//         r5.y = cmp(r7.x < 0);
//         r3.z = -r3.z + r1.w;
//         r5.z = cmp(r3.z >= 0);
//         r5.z = r5.z ? 1.000000 : 0;
//         r5.w = cmp(r3.z >= r4.z);
//         r9.x = r5.w ? 1.000000 : 0;
//         r5.w = -r7.x + r3.w;
//         r7.x = cmp(abs(r5.w) >= 0.0299999993);
//         r7.x = r7.x ? 1.000000 : 0;
//         r9.y = r5.z * r7.x + r9.x;
//         r7.z = abs(r3.z);
//         r7.w = r5.z * abs(r5.w) + r7.z;
//         r5.zw = offsetsAndWeights[1].xy * r4.yy + v1.xy;
//         r5.zw = min(uvClamp_g.xy, r5.zw);
//         r5.zw = outlinePrepareTexture.SampleLevel(samLinear_s, r5.zw, 0).xy;
//         r10.x = r5.z;
//         r10.yw = float2(1,1);
//         r3.z = dot(projInv_g._m22_m32, r10.xy);
//         r5.z = dot(projInv_g._m23_m33, r10.xy);
//         r3.z = r3.z / r5.z;
//         r5.z = cmp(r5.w < 0);
//         r5.y = (int)r5.y | (int)r5.z;
//         r3.z = -r3.z + r1.w;
//         r5.z = cmp(r3.z >= 0);
//         r5.z = r5.z ? 1.000000 : 0;
//         r7.x = cmp(r3.z >= r4.z);
//         r7.x = r7.x ? 1.000000 : 0;
//         r5.w = -r5.w + r3.w;
//         r8.y = cmp(abs(r5.w) >= 0.0299999993);
//         r8.y = r8.y ? 1.000000 : 0;
//         r7.y = r5.z * r8.y + r7.x;
//         r7.xy = offsetsAndWeights[1].zz * r7.xy;
//         r7.xy = r9.xy * offsetsAndWeights[0].zz + r7.xy;
//         r8.z = abs(r3.z);
//         r8.w = r5.z * abs(r5.w) + r8.z;
//         r5.zw = max(r8.zw, r7.zw);
//         r7.zw = offsetsAndWeights[2].xy * r4.yy + v1.xy;
//         r7.zw = min(uvClamp_g.xy, r7.zw);
//         r10.xz = outlinePrepareTexture.SampleLevel(samLinear_s, r7.zw, 0).yx;
//         r3.z = dot(projInv_g._m22_m32, r10.zw);
//         r7.z = dot(projInv_g._m23_m33, r10.zw);
//         r3.z = r3.z / r7.z;
//         r7.z = cmp(r10.x < 0);
//         r5.y = (int)r5.y | (int)r7.z;
//         r3.z = -r3.z + r1.w;
//         r7.z = cmp(r3.z >= 0);
//         r7.z = r7.z ? 1.000000 : 0;
//         r7.w = cmp(r3.z >= r4.z);
//         r9.x = r7.w ? 1.000000 : 0;
//         r7.w = -r10.x + r3.w;
//         r8.y = cmp(abs(r7.w) >= 0.0299999993);
//         r8.y = r8.y ? 1.000000 : 0;
//         r9.y = r7.z * r8.y + r9.x;
//         r7.xy = r9.xy * offsetsAndWeights[2].zz + r7.xy;
//         r8.z = abs(r3.z);
//         r8.w = r7.z * abs(r7.w) + r8.z;
//         r5.zw = max(r8.zw, r5.zw);
//         r7.zw = offsetsAndWeights[3].xy * r4.yy + v1.xy;
//         r7.zw = min(uvClamp_g.xy, r7.zw);
//         r7.zw = outlinePrepareTexture.SampleLevel(samLinear_s, r7.zw, 0).xy;
//         r9.x = r7.z;
//         r9.yw = float2(1,1);
//         r3.z = dot(projInv_g._m22_m32, r9.xy);
//         r7.z = dot(projInv_g._m23_m33, r9.xy);
//         r3.z = r3.z / r7.z;
//         r7.z = cmp(r7.w < 0);
//         r5.y = (int)r5.y | (int)r7.z;
//         r3.z = -r3.z + r1.w;
//         r7.z = cmp(r3.z >= 0);
//         r7.z = r7.z ? 1.000000 : 0;
//         r8.y = cmp(r3.z >= r4.z);
//         r10.x = r8.y ? 1.000000 : 0;
//         r7.w = -r7.w + r3.w;
//         r8.y = cmp(abs(r7.w) >= 0.0299999993);
//         r8.y = r8.y ? 1.000000 : 0;
//         r10.y = r7.z * r8.y + r10.x;
//         r7.xy = r10.xy * offsetsAndWeights[3].zz + r7.xy;
//         r8.z = abs(r3.z);
//         r8.w = r7.z * abs(r7.w) + r8.z;
//         r5.zw = max(r8.zw, r5.zw);
//         r7.zw = offsetsAndWeights[4].xy * r4.yy + v1.xy;
//         r7.zw = min(uvClamp_g.xy, r7.zw);
//         r9.xz = outlinePrepareTexture.SampleLevel(samLinear_s, r7.zw, 0).yx;
//         r3.z = dot(projInv_g._m22_m32, r9.zw);
//         r7.z = dot(projInv_g._m23_m33, r9.zw);
//         r3.z = r3.z / r7.z;
//         r7.z = cmp(r9.x < 0);
//         r5.y = (int)r5.y | (int)r7.z;
//         r3.z = -r3.z + r1.w;
//         r7.z = cmp(r3.z >= 0);
//         r7.z = r7.z ? 1.000000 : 0;
//         r7.w = cmp(r3.z >= r4.z);
//         r10.x = r7.w ? 1.000000 : 0;
//         r7.w = -r9.x + r3.w;
//         r8.y = cmp(abs(r7.w) >= 0.0299999993);
//         r8.y = r8.y ? 1.000000 : 0;
//         r10.y = r7.z * r8.y + r10.x;
//         r7.xy = r10.xy * offsetsAndWeights[4].zz + r7.xy;
//         r8.z = abs(r3.z);
//         r8.w = r7.z * abs(r7.w) + r8.z;
//         r5.zw = max(r8.zw, r5.zw);
//         r7.zw = offsetsAndWeights[5].xy * r4.yy + v1.xy;
//         r7.zw = min(uvClamp_g.xy, r7.zw);
//         r7.zw = outlinePrepareTexture.SampleLevel(samLinear_s, r7.zw, 0).xy;
//         r9.x = r7.z;
//         r9.yw = float2(1,1);
//         r3.z = dot(projInv_g._m22_m32, r9.xy);
//         r7.z = dot(projInv_g._m23_m33, r9.xy);
//         r3.z = r3.z / r7.z;
//         r7.z = cmp(r7.w < 0);
//         r5.y = (int)r5.y | (int)r7.z;
//         r3.z = -r3.z + r1.w;
//         r7.z = cmp(r3.z >= 0);
//         r7.z = r7.z ? 1.000000 : 0;
//         r8.y = cmp(r3.z >= r4.z);
//         r10.x = r8.y ? 1.000000 : 0;
//         r7.w = -r7.w + r3.w;
//         r8.y = cmp(abs(r7.w) >= 0.0299999993);
//         r8.y = r8.y ? 1.000000 : 0;
//         r10.y = r7.z * r8.y + r10.x;
//         r7.xy = r10.xy * offsetsAndWeights[5].zz + r7.xy;
//         r8.z = abs(r3.z);
//         r8.w = r7.z * abs(r7.w) + r8.z;
//         r5.zw = max(r8.zw, r5.zw);
//         r7.zw = offsetsAndWeights[6].xy * r4.yy + v1.xy;
//         r7.zw = min(uvClamp_g.xy, r7.zw);
//         r9.xz = outlinePrepareTexture.SampleLevel(samLinear_s, r7.zw, 0).yx;
//         r3.z = dot(projInv_g._m22_m32, r9.zw);
//         r7.z = dot(projInv_g._m23_m33, r9.zw);
//         r3.z = r3.z / r7.z;
//         r7.z = cmp(r9.x < 0);
//         r5.y = (int)r5.y | (int)r7.z;
//         r3.z = -r3.z + r1.w;
//         r7.z = cmp(r3.z >= 0);
//         r7.z = r7.z ? 1.000000 : 0;
//         r7.w = cmp(r3.z >= r4.z);
//         r10.x = r7.w ? 1.000000 : 0;
//         r7.w = -r9.x + r3.w;
//         r8.y = cmp(abs(r7.w) >= 0.0299999993);
//         r8.y = r8.y ? 1.000000 : 0;
//         r10.y = r7.z * r8.y + r10.x;
//         r7.xy = r10.xy * offsetsAndWeights[6].zz + r7.xy;
//         r8.z = abs(r3.z);
//         r8.w = r7.z * abs(r7.w) + r8.z;
//         r5.zw = max(r8.zw, r5.zw);
//         r7.zw = offsetsAndWeights[7].xy * r4.yy + v1.xy;
//         r7.zw = min(uvClamp_g.xy, r7.zw);
//         r7.zw = outlinePrepareTexture.SampleLevel(samLinear_s, r7.zw, 0).xy;
//         r9.x = r7.z;
//         r9.y = 1;
//         r3.z = dot(projInv_g._m22_m32, r9.xy);
//         r4.y = dot(projInv_g._m23_m33, r9.xy);
//         r3.z = r3.z / r4.y;
//         r4.y = cmp(r7.w < 0);
//         r4.y = (int)r5.y | (int)r4.y;
//         r1.w = -r3.z + r1.w;
//         r3.z = cmp(r1.w >= 0);
//         r3.z = r3.z ? 1.000000 : 0;
//         r4.z = cmp(r1.w >= r4.z);
//         r9.x = r4.z ? 1.000000 : 0;
//         r3.w = -r7.w + r3.w;
//         r4.z = cmp(abs(r3.w) >= 0.0299999993);
//         r4.z = r4.z ? 1.000000 : 0;
//         r9.y = r3.z * r4.z + r9.x;
//         r7.xy = r9.xy * offsetsAndWeights[7].zz + r7.xy;
//         r8.z = abs(r1.w);
//         r8.w = r3.z * abs(r3.w) + r8.z;
//         r7.zw = max(r8.zw, r5.zw);
//         r3.zw = r4.yy ? r7.xz : r7.yw;
//         r7.yw = (uint2)r2.zw >> int2(4,4);
//         r7.xz = r2.zw;
//         r7.xyzw = (int4)r7.xyzw & int4(15,15,15,15);
//         r7.xyzw = (uint4)r7.xyzw;
//         r6.w = 0.0666666701;
//         r9.xyzw = r7.xyzw * r6.xyzw;
//         r1.w = cmp(0 < r7.w);
//         r3.w = min(r3.w, r4.w);
//         r3.w = r3.w / r4.w;
//         r3.w = log2(r3.w);
//         r3.w = 1.25 * r3.w;
//         r3.w = exp2(r3.w);
//         r3.z = r3.z * r3.z;
//         r3.z = r3.z * r9.w;
//         r3.z = density_g * r3.z;
//         r3.z = min(1, r3.z);
//         r3.z = r3.z * r3.w;
//         r3.w = 1 + -r8.x;
//         r3.z = r3.z * r3.w;
//         r4.yzw = r9.xyz * float3(0.0666666701,0.0666666701,0.0666666701) + -r6.xyz;
//         r4.yzw = r3.zzz * r4.yzw + r6.xyz;
//         r6.xyz = r1.www ? r4.yzw : r6.xyz;
//       }
//     } else {
//       r1.w = 1 + -r4.x;
//       r1.w = r5.x * r1.w;
//       r4.yzw = r0.xyz * mapAOColor_g.xyz + -r0.xyz;
//       r6.xyz = r1.www * r4.yzw + r0.xyz;
//     }
//     r6.w = r0.w;
//     o0.xyzw = r6.xyzw;
//     o1.xyzw = r2.xyzw;
//     o2.xy = r3.xy;
//     return;
//   }
//   r5.z = depthTexture.SampleLevel(samPoint_s, v1.xy, 0).x;
//   r5.xy = v1.zw * float2(2,-2) + float2(-1,1);
//   r5.w = 1;
//   r6.x = dot(r5.xyzw, viewProjInv_g._m00_m10_m20_m30);
//   r6.y = dot(r5.xyzw, viewProjInv_g._m01_m11_m21_m31);
//   r6.z = dot(r5.xyzw, viewProjInv_g._m02_m12_m22_m32);
//   r6.w = dot(r5.xyzw, viewProjInv_g._m03_m13_m23_m33);
//   r5.xyzw = r6.xyzw / r6.wwww;
//   r3.zw = min(shadowUVClamp_g.xy, v1.xy);
//   r0.w = shadowTexture.SampleLevel(samLinear_s, r3.zw, 0).x;
//   r1.xy = (uint2)r1.xy;
//   r6.zw = r1.xy * float2(3.05180438e-05,3.05180438e-05) + float2(-1,-1);
//   r1.x = 3.14159274 * r6.z;
//   sincos(r1.x, r1.x, r7.x);
//   r1.y = r6.w * r6.w;
//   r1.w = -r6.w * r6.w + 1;
//   r1.w = sqrt(r1.w);
//   r6.x = r7.x * r1.w;
//   r6.y = r1.x * r1.w;
//   r2.xyzw = (uint4)r2.xyzw;
//   r7.xyzw = float4(0.00392156886,0.00392156886,0.00392156886,0.00392156886) * r2.wxyz;
//   r2.yz = (uint2)r3.yy >> int2(5,10);
//   r2.x = r3.y;
//   r2.xyz = (int3)r2.xyz & int3(31,31,31);
//   r2.xyz = (uint3)r2.xyz;
//   r3.yzw = float3(0.0322580636,0.0322580636,0.0322580636) * r2.xyz;
//   r1.x = min(0x00004e1f, (uint)r3.x);
//   r8.x = deferredParams_g[r1.x].shadowColor.x;
//   r8.y = deferredParams_g[r1.x].shadowColor.y;
//   r8.z = deferredParams_g[r1.x].shadowColor.z;
//   r8.w = deferredParams_g[r1.x].emissive;
//   r9.x = deferredParams_g[r1.x].specularColor.x;
//   r9.y = deferredParams_g[r1.x].specularColor.y;
//   r9.z = deferredParams_g[r1.x].specularColor.z;
//   r9.w = deferredParams_g[r1.x].rimLightPower;
//   r10.x = deferredParams_g[r1.x].rimLightColor.x;
//   r10.y = deferredParams_g[r1.x].rimLightColor.y;
//   r10.z = deferredParams_g[r1.x].rimLightColor.z;
//   r10.w = deferredParams_g[r1.x].rimIntensity;
//   r11.x = deferredParams_g[r1.x].fresnels.x;
//   r11.y = deferredParams_g[r1.x].fresnels.y;
//   r11.z = deferredParams_g[r1.x].fresnels.z;
//   r12.x = deferredParams_g[r1.x].specularGlossinesses.x;
//   r12.y = deferredParams_g[r1.x].specularGlossinesses.y;
//   r12.z = deferredParams_g[r1.x].specularGlossinesses.z;
//   r12.w = deferredParams_g[r1.x].dynamicLightIntensity;
//   r13.x = deferredParams_g[r1.x].materialFogIntensity;
//   r13.y = deferredParams_g[r1.x].metalness;
//   r13.z = deferredParams_g[r1.x].roughness;
//   r13.w = deferredParams_g[r1.x].cryRefractionIndex;
//   r14.x = deferredParams_g[r1.x].cryFresnel;
//   r14.y = deferredParams_g[r1.x].cryBrightness;
//   r14.z = deferredParams_g[r1.x].cryBrightnessPower;
//   r14.w = deferredParams_g[r1.x].glowIntensity;
//   r4.y = deferredParams_g[r1.x].glowLumThreshold;
//   r4.z = deferredParams_g[r1.x].glowShadowFadeRatio;
//   r4.w = deferredParams_g[r1.x].ssaoIntensity;
//   r1.x = deferredParams_g[r1.x].ssrDistance;
//   r1.w = deferredParams_g[r1.x].flag;
//   r11.w = r12.x;
//   r15.xz = r11.yz;
//   r15.yw = r12.yz;
//   r2.xy = r15.xy + -r11.xw;
//   r2.xy = r3.yy * r2.xy + r11.xw;
//   r3.xy = r15.zw + -r2.xy;
//   r2.xy = r3.zz * r3.xy + r2.xy;
//   r3.x = dot(view_g._m02_m12_m22_m32, r5.xyzw);
//   r3.yz = lightTileSizeInv_g.xy * v0.xy;
//   r3.yz = (uint2)r3.yz;
//   r3.z = (uint)r3.z << 5;
//   r6.z = (int)r3.y + (int)r3.z;
//   r6.z = lightIndices_g[r6.z].tileDepthInv;
//   r6.z = r6.z * -r3.x;
//   r6.z = min(7, r6.z);
//   r6.z = max(0, r6.z);
//   r6.z = (uint)r6.z;
//   r3.z = mad((int)r6.z, 576, (int)r3.z);
//   r3.y = (int)r3.y + (int)r3.z;
//   r3.y = min(4607, (uint)r3.y);
//   r11.xyz = lightProbe_g[1].xyz * r6.xxx + lightProbe_g[0].xyz;
//   r11.xyz = lightProbe_g[2].xyz * r6.yyy + r11.xyz;
//   r11.xyz = lightProbe_g[3].xyz * r6.www + r11.xyz;
//   r12.xyz = lightProbe_g[4].xyz * r6.www;
//   r11.xyz = r12.xyz * r6.xxx + r11.xyz;
//   r12.xyz = lightProbe_g[5].xyz * r6.yyy;
//   r11.xyz = r12.xyz * r6.www + r11.xyz;
//   r12.xyz = lightProbe_g[6].xyz * r6.yyy;
//   r11.xyz = r12.xyz * r6.xxx + r11.xyz;
//   r1.y = r1.y * 3 + -1;
//   r11.xyz = lightProbe_g[7].xyz * r1.yyy + r11.xyz;
//   r1.y = r6.y * r6.y;
//   r1.y = r6.x * r6.x + -r1.y;
//   r11.xyz = lightProbe_g[8].xyz * r1.yyy + r11.xyz;
//   r11.xyz = max(float3(0,0,0), r11.xyz);
//   r12.x = viewInv_g._m30 + -r5.x;
//   r12.y = viewInv_g._m31 + -r5.y;
//   r12.z = viewInv_g._m32 + -r5.z;
//   r1.y = dot(r12.xyz, r12.xyz);
//   r1.y = rsqrt(r1.y);
//   r15.xyz = r12.xyz * r1.yyy;
//   r8.xyz = sceneShadowColor_g.xyz + r8.xyz;
//   r8.xyz = min(float3(1,1,1), r8.xyz);
//   r3.z = r8.w * r3.w;
//   r6.z = dot(r6.xyw, r15.xyz);
//   r16.xyzw = (int4)r1.wwww & int4(1,2,4,16);
//   r0.w = r16.x ? r0.w : 1;
//   r17.xyz = r12.xyz * r1.yyy + -lightDirection_g.xyz;
//   r8.w = dot(r17.xyz, r17.xyz);
//   r8.w = rsqrt(r8.w);
//   r17.xyz = r17.xyz * r8.www;
//   r8.w = lightSpecularGlossiness_g * r2.y;
//   r11.w = saturate(dot(r17.xyz, r6.xyw));
//   r8.w = max(0.00100000005, r8.w);
//   r11.w = log2(r11.w);
//   r8.w = r11.w * r8.w;
//   r8.w = exp2(r8.w);
//   r8.w = r8.w * r0.w;
//   r8.w = lightSpecularIntensity_g * r8.w;
//   r8.w = r16.y ? r8.w : 0;
//   r9.xyz = r8.www * r9.xyz;
//   r9.xyz = lightColor_g.xyz * r9.xyz;
//   if (r16.z != 0) {
//     r16.xz = r13.yz * r7.yz;
//     r7.y = (int)r1.w & 32;
//     if (r7.y != 0) {
//       r17.y = resolutionScaling_g.y + -v1.y;
//       r17.x = v1.x;
//       r17.xyz = texMirror_g.SampleLevel(SmplLinearClamp_s, r17.xy, 0).xyz;
//     } else {
//       r8.w = r6.z + r6.z;
//       r18.xyz = r6.xyw * -r8.www + r15.xyz;
//       r8.w = uiDest.w;
//     // Unknown use of GetDimensions for resinfo_ from missing reflection info, need manual fix.
//     //     resinfo_indexable(texturecube)(float,float,float,float)_uint r8.w, l(0), t17.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=7, afImmediates[0]=0.000000
//       r18.xyz = float3(1,-1,-1) * r18.xyz;
//       r8.w = (int)r8.w + -1;
//       r8.w = (uint)r8.w;
//       r8.w = r16.z * r8.w;
//       r17.xyz = texEnvMap_g.SampleLevel(SmplCube_s, r18.xyz, r8.w).xyz;
//     }
//     r8.w = (int)r1.z & 2;
//     if (r8.w != 0) {
//       r18.xy = resolutionScaling_g.xy * v1.zw;
//       r18.xyzw = texSSRMap_g.SampleLevel(SmplLinearClamp_s, r18.xy, 0).xyzw;
//       r18.xyz = r18.xyz + -r17.xyz;
//       r17.xyz = r18.www * r18.xyz + r17.xyz;
//     }
//     r8.w = cmp(0 < r2.x);
//     r11.w = 1 + -abs(r6.z);
//     r11.w = max(0, r11.w);
//     r11.w = log2(r11.w);
//     r2.x = r11.w * r2.x;
//     r2.x = exp2(r2.x);
//     r2.x = r8.w ? r2.x : 1;
//     r8.w = r16.x * r2.x;
//     r18.xyz = r0.xyz * r17.xyz + -r0.xyz;
//     r18.xyz = r8.www * r18.xyz + r0.xyz;
//     r8.w = dot(r17.xyz, float3(0.298999995,0.587000012,0.114));
//     r11.w = r16.z * -9 + 10;
//     r8.w = log2(r8.w);
//     r8.w = r11.w * r8.w;
//     r8.w = exp2(r8.w);
//     r11.w = 1 + -r8.w;
//     r8.w = r16.x * r11.w + r8.w;
//     r17.xyz = r17.xyz * r8.www;
//     r17.xyz = r17.xyz * r2.xxx;
//     r2.x = -r7.z * r13.z + 1;
//     r17.xyz = r17.xyz * r2.xxx + r9.xyz;
//     r9.xyz = r7.yyy ? r9.xyz : r17.xyz;
//   } else {
//     r1.w = (int)r1.w & 8;
//     if (r1.w != 0) {
//       r1.w = r6.z + r6.z;
//       r17.xyz = r6.xyw * -r1.www + r15.xyz;
//       r1.w = 1 / r13.w;
//       r2.x = dot(-r15.xyz, r6.xyw);
//       r7.y = r1.w * r1.w;
//       r8.w = -r2.x * r2.x + 1;
//       r7.y = -r7.y * r8.w + 1;
//       r8.w = sqrt(r7.y);
//       r2.x = r1.w * r2.x + r8.w;
//       r7.y = cmp(r7.y >= 0);
//       r19.xyz = r2.xxx * r6.xyw;
//       r15.xyz = r1.www * -r15.xyz + -r19.xyz;
//       r15.xyz = r7.yyy ? r15.xyz : 0;
//       r1.w = r13.z * r7.z;
//       r2.x = uiDest.w;
//     // Unknown use of GetDimensions for resinfo_ from missing reflection info, need manual fix.
//     //     resinfo_indexable(texturecube)(float,float,float,float)_uint r2.x, l(0), t17.wxyz
//     // 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=7, afImmediates[0]=0.000000
//       r17.xyz = float3(1,-1,-1) * r17.xyz;
//       r2.x = (int)r2.x + -1;
//       r2.x = (uint)r2.x;
//       r1.w = r2.x * r1.w;
//       r17.xyz = texEnvMap_g.SampleLevel(SmplCube_s, r17.xyz, r1.w).xyz;
//       r2.x = (int)r1.z & 2;
//       if (r2.x != 0) {
//         r13.yw = resolutionScaling_g.xy * v1.zw;
//         r19.xyzw = texSSRMap_g.SampleLevel(SmplLinearClamp_s, r13.yw, 0).xyzw;
//         r19.xyz = r19.xyz + -r17.xyz;
//         r17.xyz = r19.www * r19.xyz + r17.xyz;
//       }
//       r15.xyz = texEnvMap_g.SampleLevel(SmplCube_s, r15.xyz, r1.w).xyz;
//       r1.w = cmp(0 < r14.x);
//       r2.x = 1 + -abs(r6.z);
//       r2.x = max(0, r2.x);
//       r2.x = log2(r2.x);
//       r2.x = r14.x * r2.x;
//       r2.x = exp2(r2.x);
//       r1.w = r1.w ? r2.x : 1;
//       r19.xyz = r0.xyz * r17.xyz + -r0.xyz;
//       r19.xyz = r1.www * r19.xyz + r0.xyz;
//       r2.x = -r2.w * 0.00392156886 + 1;
//       r7.x = r1.w * r2.x + r7.x;
//       r2.x = abs(r6.z) * r14.y;
//       r2.x = log2(r2.x);
//       r2.x = r14.z * r2.x;
//       r2.x = exp2(r2.x);
//       r14.xyz = r7.xxx * r17.xyz;
//       r14.xyz = r14.xyz * r1.www;
//       r1.w = -r7.z * r13.z + 1;
//       r9.xyz = r14.xyz * r1.www + r9.xyz;
//       r13.yzw = r2.xxx * r15.xyz;
//       r18.xyz = r19.xyz * r13.yzw;
//     } else {
//       r18.xyz = r0.xyz;
//     }
//   }
//   r1.w = r7.x * r0.w;
//   r13.yzw = float3(1,1,1) + -r8.xyz;
//   r8.xyz = r1.www * r13.yzw + r8.xyz;
//   r1.w = log2(r0.w);
//   r1.w = shadowEdgeSharpness_g * r1.w;
//   r1.w = exp2(r1.w);
//   r13.yzw = -shadowEdgeColor_g.xyz + r8.xyz;
//   r13.yzw = r0.www * r13.yzw + shadowEdgeColor_g.xyz;
//   r1.w = r1.w * r7.x;
//   r7.xyz = r13.yzw + -r8.xyz;
//   r7.xyz = r1.www * r7.xyz + r8.xyz;
//   r7.xyz = r7.xyz * lightColor_g.xyz + r11.xyz;
//   r1.w = min(1, r3.z);
//   r8.xyz = float3(1,1,1) + -r7.xyz;
//   r7.xyz = r1.www * r8.xyz + r7.xyz;
//   r1.w = 1 + -abs(r6.z);
//   r1.w = max(0, r1.w);
//   r1.w = r1.w * r10.w;
//   r1.w = log2(r1.w);
//   r1.w = r9.w * r1.w;
//   r1.w = exp2(r1.w);
//   r1.w = min(1, r1.w);
//   r8.xyz = r10.xyz * r1.www + r9.xyz;
//   if (r16.y != 0) {
//     r1.w = lightIndices_g[r3.y].pointLightCount;
//     r1.w = min(63, (uint)r1.w);
//     r9.xyz = float3(0,0,0);
//     r10.xyz = float3(0,0,0);
//     r2.x = 0;
//     while (true) {
//       r2.w = cmp((uint)r2.x >= (uint)r1.w);
//       if (r2.w != 0) break;
//       r2.w = (uint)r2.x << 2;
//     // Structured buffer using dynamic offset (needs manual fix):
//         ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r2.w, r3.y, r2.w, t12.xxxx
//       r11.x = dynamicLights_g[r2.w].pos.x;
//       r11.y = dynamicLights_g[r2.w].pos.y;
//       r11.z = dynamicLights_g[r2.w].pos.z;
//       r11.xyz = r11.xyz + -r5.xyz;
//       r3.z = dot(r11.xyz, r11.xyz);
//       r6.z = sqrt(r3.z);
//       r8.w = dynamicLights_g[r2.w].radiusInv;
//       r6.z = r8.w * r6.z;
//       r8.w = dynamicLights_g[r2.w].attenuation;
//       r6.z = log2(abs(r6.z));
//       r6.z = r8.w * r6.z;
//       r6.z = exp2(r6.z);
//       r6.z = 1 + -r6.z;
//       r6.z = max(0, r6.z);
//       r8.w = cmp(0 < r6.z);
//       if (r8.w != 0) {
//         r3.z = rsqrt(r3.z);
//         r11.xyz = r11.xyz * r3.zzz;
//         r3.z = dynamicLights_g[r2.w].translucency;
//         r8.w = dot(r11.xyz, r6.xyw);
//         r3.z = max(r8.w, r3.z);
//         r3.z = r6.z * r3.z;
//         r13.y = dynamicLights_g[r2.w].color.x;
//         r13.z = dynamicLights_g[r2.w].color.y;
//         r13.w = dynamicLights_g[r2.w].color.z;
//         r10.xyz = r13.yzw * r3.zzz + r10.xyz;
//         r11.xyz = r12.xyz * r1.yyy + r11.xyz;
//         r6.z = dot(r11.xyz, r11.xyz);
//         r6.z = rsqrt(r6.z);
//         r11.xyz = r11.xyz * r6.zzz;
//         r14.x = dynamicLights_g[r2.w].specularIntensity;
//         r14.y = dynamicLights_g[r2.w].specularGlossiness;
//         r2.w = r14.y * r2.y;
//         r6.z = saturate(dot(r11.xyz, r6.xyw));
//         r2.w = max(0.00100000005, r2.w);
//         r6.z = log2(r6.z);
//         r2.w = r6.z * r2.w;
//         r2.w = exp2(r2.w);
//         r11.xyz = r13.yzw * r2.www;
//         r11.xyz = r11.xyz * r3.zzz;
//         r9.xyz = r11.xyz * r14.xxx + r9.xyz;
//       }
//       r2.x = (int)r2.x + 1;
//     }
//     r10.xyz = r10.xyz * r12.www + r7.xyz;
//     r1.w = lightIndices_g[r3.y].spotLightCount;
//     r1.w = min(63, (uint)r1.w);
//     r11.yw = localShadowResolutionInv_g * float2(1.25,-1.25);
//     r11.xz = float2(0,0);
//     r13.yzw = r9.xyz;
//     r14.xyz = float3(0,0,0);
//     r2.x = 0;
//     while (true) {
//       r2.w = cmp((uint)r2.x >= (uint)r1.w);
//       if (r2.w != 0) break;
//       r2.w = (uint)r2.x << 2;
//       r2.w = (int)r2.w + 256;
//     // Structured buffer using dynamic offset (needs manual fix):
//         ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r2.w, r3.y, r2.w, t12.xxxx
//       r15.x = dynamicLights_g[r2.w].pos.x;
//       r15.y = dynamicLights_g[r2.w].pos.y;
//       r15.z = dynamicLights_g[r2.w].pos.z;
//       r15.xyz = r15.xyz + -r5.xyz;
//       r3.z = dot(r15.xyz, r15.xyz);
//       r6.z = rsqrt(r3.z);
//       r15.xyz = r15.xyz * r6.zzz;
//       r17.x = dynamicLights_g[r2.w].vec.x;
//       r17.y = dynamicLights_g[r2.w].vec.y;
//       r17.z = dynamicLights_g[r2.w].vec.z;
//       r17.w = dynamicLights_g[r2.w].spotAngleInv;
//       r6.z = dot(r15.xyz, r17.xyz);
//       r6.z = max(0, r6.z);
//       r6.z = 1 + -r6.z;
//       r6.z = r6.z * r17.w;
//       r8.w = dynamicLights_g[r2.w].attenuationAngle;
//       r6.z = log2(r6.z);
//       r6.z = r8.w * r6.z;
//       r6.z = exp2(r6.z);
//       r6.z = 1 + -r6.z;
//       r6.z = max(0, r6.z);
//       r8.w = cmp(0 < r6.z);
//       if (r8.w != 0) {
//         r3.z = sqrt(r3.z);
//         r8.w = dynamicLights_g[r2.w].radiusInv;
//         r3.z = r8.w * r3.z;
//         r8.w = dynamicLights_g[r2.w].attenuation;
//         r3.z = log2(abs(r3.z));
//         r3.z = r8.w * r3.z;
//         r3.z = exp2(r3.z);
//         r3.z = 1 + -r3.z;
//         r3.z = max(0, r3.z);
//         r3.z = r6.z * r3.z;
//         r6.z = cmp(0 < r3.z);
//         if (r6.z != 0) {
//           r16.x = dynamicLights_g[r2.w].translucency;
//           r16.y = dynamicLights_g[r2.w].shadowmapIndex;
//           r6.z = cmp((int)r16.y != -1);
//           if (r6.z != 0) {
//             r17.xyzw = spotShadowMatrices_g[r16.y]._m00_m10_m20_m30;
//             r19.xyzw = spotShadowMatrices_g[r16.y]._m01_m11_m21_m31;
//             r20.xyzw = spotShadowMatrices_g[r16.y]._m02_m12_m22_m32;
//             r21.xyzw = spotShadowMatrices_g[r16.y]._m03_m13_m23_m33;
//             r17.x = dot(r5.xyzw, r17.xyzw);
//             r17.y = dot(r5.xyzw, r19.xyzw);
//             r17.z = dot(r5.xyzw, r20.xyzw);
//             r6.z = dot(r5.xyzw, r21.xyzw);
//             r17.xyz = r17.xyz / r6.zzz;
//             r17.w = (uint)r16.y;
//             r6.z = spotShadowMaps.SampleCmpLevelZero(SmplShadow_s, r17.xyw, r17.z).x;
//             r19.xy = r17.xy + r11.yx;
//             r19.z = r17.w;
//             r8.w = spotShadowMaps.SampleCmpLevelZero(SmplShadow_s, r19.xyz, r17.z).x;
//             r8.w = 0.200000003 * r8.w;
//             r6.z = r6.z * 0.200000003 + r8.w;
//             r19.xy = r17.xy + r11.wz;
//             r8.w = spotShadowMaps.SampleCmpLevelZero(SmplShadow_s, r19.xyz, r17.z).x;
//             r6.z = r8.w * 0.200000003 + r6.z;
//             r19.xy = r17.xy + r11.xy;
//             r8.w = spotShadowMaps.SampleCmpLevelZero(SmplShadow_s, r19.xyz, r17.z).x;
//             r6.z = r8.w * 0.200000003 + r6.z;
//             r19.xy = r17.xy + r11.zw;
//             r8.w = spotShadowMaps.SampleCmpLevelZero(SmplShadow_s, r19.xyz, r17.z).x;
//             r6.z = r8.w * 0.200000003 + r6.z;
//             r3.z = r6.z * r3.z;
//           }
//           r6.z = dot(r15.xyz, r6.xyw);
//           r6.z = max(r16.x, r6.z);
//           r3.z = r6.z * r3.z;
//           r16.x = dynamicLights_g[r2.w].color.x;
//           r16.y = dynamicLights_g[r2.w].color.y;
//           r16.z = dynamicLights_g[r2.w].color.z;
//           r14.xyz = r16.xyz * r3.zzz + r14.xyz;
//           r15.xyz = r12.xyz * r1.yyy + r15.xyz;
//           r6.z = dot(r15.xyz, r15.xyz);
//           r6.z = rsqrt(r6.z);
//           r15.xyz = r15.xyz * r6.zzz;
//           r17.x = dynamicLights_g[r2.w].specularIntensity;
//           r17.y = dynamicLights_g[r2.w].specularGlossiness;
//           r2.w = r17.y * r2.y;
//           r6.z = saturate(dot(r15.xyz, r6.xyw));
//           r2.w = max(0.00100000005, r2.w);
//           r6.z = log2(r6.z);
//           r2.w = r6.z * r2.w;
//           r2.w = exp2(r2.w);
//           r15.xyz = r16.xyz * r2.www;
//           r15.xyz = r15.xyz * r3.zzz;
//           r13.yzw = r15.xyz * r17.xxx + r13.yzw;
//         }
//       }
//       r2.x = (int)r2.x + 1;
//     }
//     r2.xyw = r14.xyz * r12.www + r10.xyz;
//     r8.xyz = r13.yzw * r12.www + r8.xyz;
//   } else {
//     r1.y = lightIndices_g[r3.y].pointLightCount;
//     r1.y = min(63, (uint)r1.y);
//     r9.xyzw = float4(0,0,0,0);
//     while (true) {
//       r1.w = cmp((uint)r9.w >= (uint)r1.y);
//       if (r1.w != 0) break;
//       r1.w = (uint)r9.w << 2;
//     // Structured buffer using dynamic offset (needs manual fix):
//         ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r1.w, r3.y, r1.w, t12.xxxx
//       r10.x = dynamicLights_g[r1.w].pos.x;
//       r10.y = dynamicLights_g[r1.w].pos.y;
//       r10.z = dynamicLights_g[r1.w].pos.z;
//       r10.xyz = r10.xyz + -r5.xyz;
//       r3.z = dot(r10.xyz, r10.xyz);
//       r6.z = sqrt(r3.z);
//       r8.w = dynamicLights_g[r1.w].radiusInv;
//       r6.z = r8.w * r6.z;
//       r8.w = dynamicLights_g[r1.w].attenuation;
//       r6.z = log2(abs(r6.z));
//       r6.z = r8.w * r6.z;
//       r6.z = exp2(r6.z);
//       r6.z = 1 + -r6.z;
//       r6.z = max(0, r6.z);
//       r8.w = cmp(0 < r6.z);
//       if (r8.w != 0) {
//         r8.w = dynamicLights_g[r1.w].translucency;
//         r3.z = rsqrt(r3.z);
//         r10.xyz = r10.xyz * r3.zzz;
//         r3.z = dot(r10.xyz, r6.xyw);
//         r3.z = max(r8.w, r3.z);
//         r10.x = dynamicLights_g[r1.w].color.x;
//         r10.y = dynamicLights_g[r1.w].color.y;
//         r10.z = dynamicLights_g[r1.w].color.z;
//         r10.xyz = r10.xyz * r6.zzz;
//         r9.xyz = r10.xyz * r3.zzz + r9.xyz;
//       }
//       r9.w = (int)r9.w + 1;
//     }
//     r7.xyz = r9.xyz * r12.www + r7.xyz;
//     r1.y = lightIndices_g[r3.y].spotLightCount;
//     r1.y = min(63, (uint)r1.y);
//     r9.yw = localShadowResolutionInv_g * float2(1.25,-1.25);
//     r9.xz = float2(0,0);
//     r10.xyzw = float4(0,0,0,0);
//     while (true) {
//       r1.w = cmp((uint)r10.w >= (uint)r1.y);
//       if (r1.w != 0) break;
//       r1.w = (uint)r10.w << 2;
//       r1.w = (int)r1.w + 256;
//     // Structured buffer using dynamic offset (needs manual fix):
//         ld_structured_indexable(structured_buffer, stride=576)(mixed,mixed,mixed,mixed) r1.w, r3.y, r1.w, t12.xxxx
//       r11.x = dynamicLights_g[r1.w].pos.x;
//       r11.y = dynamicLights_g[r1.w].pos.y;
//       r11.z = dynamicLights_g[r1.w].pos.z;
//       r11.xyz = r11.xyz + -r5.xyz;
//       r3.z = dot(r11.xyz, r11.xyz);
//       r6.z = rsqrt(r3.z);
//       r11.xyz = r11.xyz * r6.zzz;
//       r15.x = dynamicLights_g[r1.w].vec.x;
//       r15.y = dynamicLights_g[r1.w].vec.y;
//       r15.z = dynamicLights_g[r1.w].vec.z;
//       r15.w = dynamicLights_g[r1.w].spotAngleInv;
//       r6.z = dot(r11.xyz, r15.xyz);
//       r6.z = max(0, r6.z);
//       r6.z = 1 + -r6.z;
//       r6.z = r6.z * r15.w;
//       r8.w = dynamicLights_g[r1.w].attenuationAngle;
//       r6.z = log2(r6.z);
//       r6.z = r8.w * r6.z;
//       r6.z = exp2(r6.z);
//       r6.z = 1 + -r6.z;
//       r6.z = max(0, r6.z);
//       r8.w = cmp(0 < r6.z);
//       if (r8.w != 0) {
//         r3.z = sqrt(r3.z);
//         r8.w = dynamicLights_g[r1.w].radiusInv;
//         r3.z = r8.w * r3.z;
//         r8.w = dynamicLights_g[r1.w].attenuation;
//         r3.z = log2(abs(r3.z));
//         r3.z = r8.w * r3.z;
//         r3.z = exp2(r3.z);
//         r3.z = 1 + -r3.z;
//         r3.z = max(0, r3.z);
//         r3.z = r6.z * r3.z;
//         r6.z = cmp(0 < r3.z);
//         if (r6.z != 0) {
//           r12.x = dynamicLights_g[r1.w].translucency;
//           r12.y = dynamicLights_g[r1.w].shadowmapIndex;
//           r6.z = cmp((int)r12.y != -1);
//           if (r6.z != 0) {
//             r15.xyzw = spotShadowMatrices_g[r12.y]._m00_m10_m20_m30;
//             r17.xyzw = spotShadowMatrices_g[r12.y]._m01_m11_m21_m31;
//             r19.xyzw = spotShadowMatrices_g[r12.y]._m02_m12_m22_m32;
//             r20.xyzw = spotShadowMatrices_g[r12.y]._m03_m13_m23_m33;
//             r14.x = dot(r5.xyzw, r15.xyzw);
//             r14.y = dot(r5.xyzw, r17.xyzw);
//             r14.z = dot(r5.xyzw, r19.xyzw);
//             r6.z = dot(r5.xyzw, r20.xyzw);
//             r15.xyz = r14.xyz / r6.zzz;
//             r15.w = (uint)r12.y;
//             r6.z = spotShadowMaps.SampleCmpLevelZero(SmplShadow_s, r15.xyw, r15.z).x;
//             r14.xy = r15.xy + r9.yx;
//             r14.z = r15.w;
//             r8.w = spotShadowMaps.SampleCmpLevelZero(SmplShadow_s, r14.xyz, r15.z).x;
//             r8.w = 0.200000003 * r8.w;
//             r6.z = r6.z * 0.200000003 + r8.w;
//             r14.xy = r15.xy + r9.wz;
//             r8.w = spotShadowMaps.SampleCmpLevelZero(SmplShadow_s, r14.xyz, r15.z).x;
//             r6.z = r8.w * 0.200000003 + r6.z;
//             r14.xy = r15.xy + r9.xy;
//             r8.w = spotShadowMaps.SampleCmpLevelZero(SmplShadow_s, r14.xyz, r15.z).x;
//             r6.z = r8.w * 0.200000003 + r6.z;
//             r14.xy = r15.xy + r9.zw;
//             r8.w = spotShadowMaps.SampleCmpLevelZero(SmplShadow_s, r14.xyz, r15.z).x;
//             r6.z = r8.w * 0.200000003 + r6.z;
//             r3.z = r6.z * r3.z;
//           }
//           r6.z = dot(r11.xyz, r6.xyw);
//           r6.z = max(r12.x, r6.z);
//           r11.x = dynamicLights_g[r1.w].color.x;
//           r11.y = dynamicLights_g[r1.w].color.y;
//           r11.z = dynamicLights_g[r1.w].color.z;
//           r11.xyz = r11.xyz * r3.zzz;
//           r10.xyz = r11.xyz * r6.zzz + r10.xyz;
//         }
//       }
//       r10.w = (int)r10.w + 1;
//     }
//     r2.xyw = r10.xyz * r12.www + r7.xyz;
//   }
//   r6.xyz = r8.xyz * r7.www;
//   r2.xyw = r18.xyz * r2.xyw + r6.xyz;
//   r1.y = cmp(0 < r4.y);
//   r0.x = dot(r0.xyz, float3(0.298999995,0.587000012,0.114));
//   r0.x = r0.x + -r4.y;
//   r0.x = max(0, r0.x);
//   r0.x = r0.x / r4.y;
//   r0.x = min(1, r0.x);
//   r0.x = r1.y ? r0.x : 1;
//   r0.y = r14.w * r3.w;
//   r0.x = r0.y * r0.x;
//   r0.y = -1 + r0.w;
//   r0.y = r4.z * r0.y + 1;
//   r0.x = r0.x * r0.y;
//   r0.y = 1 + -r4.x;
//   r0.y = r4.w * r0.y;
//   r0.y = mapAOIntensity_g * r0.y;
//   r3.yzw = r2.xyw * mapAOColor_g.xyz + -r2.xyw;
//   r0.yzw = r0.yyy * r3.yzw + r2.xyw;
//   r1.y = -fogNearDistance_g + -r3.x;
//   r1.y = saturate(fogFadeRangeInv_g * r1.y);
//   r1.w = -fogHeight_g + r5.y;
//   r1.w = saturate(fogHeightRangeInv_g * r1.w);
//   r1.y = r1.y * r1.w;
//   r1.y = fogIntensity_g * r1.y;
//   r1.z = (int)r1.z & 16;
//   r1.w = -r2.z * 0.0322580636 + 1;
//   r1.z = r1.z ? r1.w : 1;
//   r1.y = r1.y * r13.x;
//   r1.y = r1.y * r1.z;
//   r2.xyz = fogColor_g.xyz + -r0.yzw;
//   r0.yzw = r1.yyy * r2.xyz + r0.yzw;
//   r1.y = -r3.x / skyLutCameraFarClip_g;
//   r2.xy = invVPSize_g.xy * v0.xy;
//   r1.y = -skyLutNearOverFarClip_g + r1.y;
//   r1.z = -skyLutNearOverFarClip_g + 1;
//   r2.z = r1.y / r1.z;
//   r1.yzw = atmosphereInscatterLUT.SampleLevel(samLinear_s, r2.xyz, 0).xyz;
//   r2.xyz = atmosphereExtinctionLUT.SampleLevel(samLinear_s, r2.xyz, 0).xyz;
//   r0.yzw = r0.yzw * r2.xyz + r1.yzw;
//   if (outlineShapeCount_g != 0) {
//     r1.yz = -outlineShapeMaskUVParam_g.xy + r5.xz;
//     r1.yz = outlineShapeMaskUVParam_g.zw * r1.yz;
//     r2.xy = cmp(r1.yz >= float2(0,0));
//     r1.w = r2.y ? r2.x : 0;
//     r2.xy = cmp(float2(1,1) >= r1.yz);
//     r2.x = r2.y ? r2.x : 0;
//     r1.w = r2.x ? r1.w : 0;
//     if (r1.w != 0) {
//       r1.y = outlineShapeMask.SampleLevel(samLinear_s, r1.yz, 0).x;
//     } else {
//       r1.y = 1;
//     }
//     r5.w = 1;
//     r2.xyz = r0.yzw;
//     r1.z = 0;
//     while (true) {
//       r1.w = cmp((uint)r1.z >= outlineShapeCount_g);
//       if (r1.w != 0) break;
//       r3.x = outlineShapes_g[r1.z].gradation_sharpness;
//       r3.y = outlineShapes_g[r1.z].height_base;
//       r3.z = outlineShapes_g[r1.z].height_width;
//       r3.w = outlineShapes_g[r1.z].height_gradation_width;
//       r1.w = r5.y + -r3.y;
//       r2.w = cmp(r3.z >= abs(r1.w));
//       if (r2.w != 0) {
//         r4.x = outlineShapes_g[r1.z].mtx._m00;
//         r4.y = outlineShapes_g[r1.z].mtx._m10;
//         r4.z = outlineShapes_g[r1.z].mtx._m20;
//         r4.w = outlineShapes_g[r1.z].mtx._m30;
//         r6.x = outlineShapes_g[r1.z].mtx._m02;
//         r6.y = outlineShapes_g[r1.z].mtx._m32;
//         r6.z = outlineShapes_g[r1.z].mtx._m12;
//         r6.w = outlineShapes_g[r1.z].mtx._m22;
//         r7.x = outlineShapes_g[r1.z].color.x;
//         r7.y = outlineShapes_g[r1.z].color.y;
//         r7.z = outlineShapes_g[r1.z].color.z;
//         r7.w = outlineShapes_g[r1.z].color.w;
//         r8.x = outlineShapes_g[r1.z].type;
//         r8.y = outlineShapes_g[r1.z].radius;
//         r8.z = outlineShapes_g[r1.z].gradation_size.x;
//         r8.w = outlineShapes_g[r1.z].gradation_size.y;
//         r2.w = abs(r1.w) + r3.w;
//         r2.w = cmp(r3.z < r2.w);
//         r1.w = r3.z + -abs(r1.w);
//         r1.w = r1.w / r3.w;
//         r1.w = log2(r1.w);
//         r1.w = 0.25 * r1.w;
//         r1.w = exp2(r1.w);
//         r1.w = r2.w ? r1.w : 1;
//         if (r8.x == 0) {
//           r6.x = r4.w;
//           r3.yz = -r6.xy + r5.xz;
//           r2.w = dot(r3.yz, r3.yz);
//           r2.w = sqrt(r2.w);
//           r3.y = cmp(r8.y < r2.w);
//           r3.z = r8.y + -r8.z;
//           r3.w = cmp(r2.w >= r3.z);
//           r9.x = ~(int)r3.w;
//           r2.w = -r3.z + r2.w;
//           r2.w = r2.w / r8.z;
//           r2.w = r3.w ? r2.w : 0;
//           r2.w = r3.y ? 0 : r2.w;
//           r3.y = (int)r3.y | (int)r9.x;
//         } else {
//           r3.z = cmp((int)r8.x == 1);
//           if (r3.z != 0) {
//             r3.z = outlineShapes_g[r1.z].fan_angle;
//             r6.xz = r4.wz;
//             r9.xy = -r6.xy + r5.xz;
//             r3.w = dot(r9.xy, r9.xy);
//             r9.z = sqrt(r3.w);
//             r9.w = cmp(r8.y < r9.z);
//             r8.y = r8.y + -r8.z;
//             r3.w = rsqrt(r3.w);
//             r9.xy = r9.xy * r3.ww;
//             r3.w = dot(r6.zw, r9.xy);
//             r9.x = 1 + -abs(r3.w);
//             r9.x = sqrt(r9.x);
//             r9.y = abs(r3.w) * -0.0187292993 + 0.0742610022;
//             r9.y = r9.y * abs(r3.w) + -0.212114394;
//             r9.y = r9.y * abs(r3.w) + 1.57072878;
//             r10.x = r9.y * r9.x;
//             r10.x = r10.x * -2 + 3.14159274;
//             r3.w = cmp(r3.w < -r3.w);
//             r3.w = r3.w ? r10.x : 0;
//             r3.w = r9.y * r9.x + r3.w;
//             r9.x = cmp(r3.z >= r3.w);
//             r9.y = ~(int)r9.x;
//             r10.x = 6.28318548 * r9.z;
//             r3.zw = r10.xx * r3.zw;
//             r3.w = 0.159154937 * r3.w;
//             r3.z = r3.z * 0.159154937 + -r3.w;
//             r3.z = r3.z / r8.z;
//             r3.z = min(1, r3.z);
//             r3.z = 1 + -r3.z;
//             r3.w = r9.z + -r8.y;
//             r3.w = r3.w / r8.z;
//             r3.w = min(1, r3.w);
//             r3.z = max(r3.z, r3.w);
//             r3.z = r9.x ? r3.z : 0;
//             r2.w = r9.w ? 0 : r3.z;
//             r3.y = (int)r9.w | (int)r9.y;
//           } else {
//             r3.z = cmp((int)r8.x == 2);
//             r4.x = dot(r5.xyzw, r4.xyzw);
//             r4.y = dot(r5.xwyz, r6.xyzw);
//             r4.zw = cmp(r4.xy < float2(0.5,0.5));
//             r3.w = r4.w ? r4.z : 0;
//             r4.zw = cmp(float2(-0.5,-0.5) < r4.xy);
//             r4.z = r4.w ? r4.z : 0;
//             r3.w = r4.z ? r3.w : 0;
//             r4.zw = float2(0.5,0.5) + -r8.zw;
//             r6.xy = cmp(abs(r4.xy) < r4.zw);
//             r6.x = r6.y ? r6.x : 0;
//             r4.xy = abs(r4.xy) + -r4.zw;
//             r4.xy = r4.xy / r8.zw;
//             r4.x = max(r4.x, r4.y);
//             r4.x = r6.x ? 0 : r4.x;
//             r4.x = (int)r3.w & (int)r4.x;
//             r3.w = r3.w ? r6.x : -1;
//             r2.w = r3.z ? r4.x : 0;
//             r3.y = r3.z ? r3.w : 0;
//           }
//         }
//         r2.w = log2(r2.w);
//         r2.w = r3.x * r2.w;
//         r2.w = exp2(r2.w);
//         r2.w = r7.w * r2.w;
//         r2.w = r2.w * r1.y;
//         r1.w = r2.w * r1.w;
//         r3.xzw = r7.xyz + -r2.xyz;
//         r3.xzw = r1.www * r3.xzw + r2.xyz;
//         r2.xyz = r3.yyy ? r2.xyz : r3.xzw;
//       }
//       r1.z = (int)r1.z + 1;
//     }
//     r0.yzw = r2.xyz;
//   }
//   r0.x = saturate(0.100000001 * r0.x);
//   r2.y = r16.w ? r0.x : 0;
//   r2.xzw = float3(255,255,255);
//   r2.xyzw = float4(0,255,0,0) * r2.xyzw;
//   o1.xyzw = (uint4)r2.xyzw;
//   r0.x = 65.5350037 * r1.x;
//   r0.x = (uint)r0.x;
//   o2.y = min(0x0000ffff, (uint)r0.x);
//   o0.xyz = r0.yzw;
//   o0.w = 1;
//   o2.x = 0;
//   return;
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// D:\SteamLibrary\steamapps\common\Trails in the Sky 1st Chapter Demo\ShaderFixes\e49978a78bd4be0e-ps_replace.txt(615,5-6): error X3004: undeclared identifier 'tx'
/////////////////////////////////////////////////////////////////////////////
