//Shadows PS 1.
// ---- Created with 3Dmigoto v0.6.163 on Thu Aug 21 16:48:20 2025
//
//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);
//}
//
//SamplerState samPoint_s : register(s0);
//SamplerComparisonState SmplShadow_s : register(s13);
//Texture2D<float4> depthTexture : register(t0);
//Texture2DArray<float4> shadowMaps : register(t16);
//
//
//// 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)
//{
//  const float4 icb[] = { { 1.000000, 0, 0, 0},
//                              { 0, 1.000000, 0, 0},
//                              { 0, 0, 1.000000, 0},
//                              { 0, 0, 0, 1.000000},
//                              { -0.840520, -0.073954, 0, 0},
//                              { -0.326235, -0.405830, 0, 0},
//                              { -0.698464, 0.457259, 0, 0},
//                              { -0.203356, 0.620584726, 0, 0},
//                              { 0.963450, -0.194353, 0, 0},
//                              { 0.473434, -0.480026, 0, 0},
//                              { 0.519454, 0.767034, 0, 0},
//                              { 0.185461, -0.894523084, 0, 0},
//                              { 0.507351, 0.064963, 0, 0},
//                              { -0.321932, 0.595434904, 0, 0} };
//  float4 r0,r1,r2,r3,r4;
//  uint4 bitmask, uiDest;
//  float4 fDest;
//  
//  float4 stereo = StereoParams.Load(0);
//  
//  r0.z = depthTexture.SampleLevel(samPoint_s, v1.xy, 0).x;
//  r0.xy = v1.zw * float2(2,-2) + float2(-1,1);
//  r0.w = 1;
//  
//  r1.w = dot(r0.xyzw, viewProjInv_g._m03_m13_m23_m33);
//  r0.x+=stereo.x*(stereo.y*r1.w-1);
//  
//  r1.x = dot(r0.xyzw, viewProjInv_g._m00_m10_m20_m30);
//  r1.y = dot(r0.xyzw, viewProjInv_g._m01_m11_m21_m31);
//  r1.z = dot(r0.xyzw, viewProjInv_g._m02_m12_m22_m32);
//  r1.w = dot(r0.xyzw, viewProjInv_g._m03_m13_m23_m33);
//  r0.xyzw = r1.xyzw / r1.wwww;
//  r1.x = -viewInv_g._m30;
//  r1.y = -viewInv_g._m31;
//  r1.z = -viewInv_g._m32;
//  r1.xyz = r1.xyz + r0.xyz;
//  r1.x = dot(r1.xyz, r1.xyz);
//  r1.x = sqrt(r1.x);
//  r1.y = cmp(4 == shadowmapCascadeCount_g);
//  r1.z = shadowSplitDistance_g.z + -5;
//  r1.z = cmp(r1.z < r1.x);
//  r1.y = r1.z ? r1.y : 0;
//  if (r1.y != 0) {
//    r2.x = dot(r0.xyzw, shadowMtx_g[3]._m00_m10_m20_m30);
//    r2.y = dot(r0.xyzw, shadowMtx_g[3]._m01_m11_m21_m31);
//    r2.z = dot(r0.xyzw, shadowMtx_g[3]._m02_m12_m22_m32);
//    r1.y = dot(r0.xyzw, shadowMtx_g[3]._m03_m13_m23_m33);
//    r1.yzw = r2.xyz / r1.yyy;
//    r2.xy = cmp(r1.yz < float2(0,0));
//    r2.zw = cmp(float2(1,1) < r1.yz);
//    r2.x = (int)r2.z | (int)r2.x;
//    r2.x = (int)r2.y | (int)r2.x;
//    r2.x = (int)r2.w | (int)r2.x;
//    if (r2.x != 0) {
//      r2.x = 1;
//    } else {
//      r3.z = 3;
//      r2.yz = float2(0,0);
//      while (true) {
//        r2.w = cmp((int)r2.z >= 10);
//        if (r2.w != 0) break;
//        r3.xy = saturate(icb[r2.z+4].xy * invShadowSize_g.xy + r1.yz);
//        r2.w = shadowMaps.SampleCmpLevelZero(SmplShadow_s, r3.xyz, r1.w).x;
//        r2.y = r2.y + r2.w;
//        r2.z = (int)r2.z + 1;
//      }
//      r2.x = 0.100000001 * r2.y;
//    }
//    r1.y = cmp(r1.x < shadowSplitDistance_g.z);
//    if (r1.y != 0) {
//      r3.x = dot(r0.xyzw, shadowMtx_g[2]._m00_m10_m20_m30);
//      r3.y = dot(r0.xyzw, shadowMtx_g[2]._m01_m11_m21_m31);
//      r3.z = dot(r0.xyzw, shadowMtx_g[2]._m02_m12_m22_m32);
//      r1.y = dot(r0.xyzw, shadowMtx_g[2]._m03_m13_m23_m33);
//      r1.yzw = r3.xyz / r1.yyy;
//      r3.z = 2;
//      r2.yz = float2(0,0);
//      while (true) {
//        r2.w = cmp((int)r2.z >= 10);
//        if (r2.w != 0) break;
//        r3.xy = saturate(icb[r2.z+4].xy * invShadowSize_g.xy + r1.yz);
//        r2.w = shadowMaps.SampleCmpLevelZero(SmplShadow_s, r3.xyz, r1.w).x;
//        r2.y = r2.y + r2.w;
//        r2.z = (int)r2.z + 1;
//      }
//      r1.y = shadowSplitDistance_g.z + -r1.x;
//      r1.y = 0.200000003 * r1.y;
//      r1.z = r2.y * 0.100000001 + -r2.x;
//      r2.x = r1.y * r1.z + r2.x;
//    }
//  } else {
//    r1.y = shadowSplitDistance_g.y + -5;
//    r1.y = cmp(r1.y < r1.x);
//    if (r1.y != 0) {
//      r3.x = dot(r0.xyzw, shadowMtx_g[2]._m00_m10_m20_m30);
//      r3.y = dot(r0.xyzw, shadowMtx_g[2]._m01_m11_m21_m31);
//      r3.z = dot(r0.xyzw, shadowMtx_g[2]._m02_m12_m22_m32);
//      r1.y = dot(r0.xyzw, shadowMtx_g[2]._m03_m13_m23_m33);
//      r1.yzw = r3.xyz / r1.yyy;
//      r2.yz = cmp(r1.yz < float2(0,0));
//      r3.xy = cmp(float2(1,1) < r1.yz);
//      r2.y = (int)r2.y | (int)r3.x;
//      r2.y = (int)r2.z | (int)r2.y;
//      r2.y = (int)r3.y | (int)r2.y;
//      if (r2.y != 0) {
//        r2.x = 1;
//      } else {
//        r3.z = 2;
//        r2.yz = float2(0,0);
//        while (true) {
//          r2.w = cmp((int)r2.z >= 10);
//          if (r2.w != 0) break;
//          r3.xy = saturate(icb[r2.z+4].xy * invShadowSize_g.xy + r1.yz);
//          r2.w = shadowMaps.SampleCmpLevelZero(SmplShadow_s, r3.xyz, r1.w).x;
//          r2.y = r2.y + r2.w;
//          r2.z = (int)r2.z + 1;
//        }
//        r2.x = 0.100000001 * r2.y;
//      }
//      r1.y = cmp(r1.x < shadowSplitDistance_g.y);
//      if (r1.y != 0) {
//        r3.x = dot(r0.xyzw, shadowMtx_g[1]._m00_m10_m20_m30);
//        r3.y = dot(r0.xyzw, shadowMtx_g[1]._m01_m11_m21_m31);
//        r3.z = dot(r0.xyzw, shadowMtx_g[1]._m02_m12_m22_m32);
//        r1.y = dot(r0.xyzw, shadowMtx_g[1]._m03_m13_m23_m33);
//        r1.yzw = r3.xyz / r1.yyy;
//        r2.yz = invShadowSize_g.xy * float2(1.125,1.125);
//        r3.z = 1;
//        r2.w = 0;
//        r3.w = 0;
//        while (true) {
//          r4.x = cmp((int)r3.w >= 10);
//          if (r4.x != 0) break;
//          r3.xy = saturate(icb[r3.w+4].xy * r2.yz + r1.yz);
//          r3.x = shadowMaps.SampleCmpLevelZero(SmplShadow_s, r3.xyz, r1.w).x;
//          r2.w = r3.x + r2.w;
//          r3.w = (int)r3.w + 1;
//        }
//        r1.y = shadowSplitDistance_g.y + -r1.x;
//        r1.y = 0.200000003 * r1.y;
//        r1.z = r2.w * 0.100000001 + -r2.x;
//        r2.x = r1.y * r1.z + r2.x;
//      }
//    } else {
//      r1.y = cmp(r1.x < shadowSplitDistance_g.x);
//      r2.yzw = r1.yyy ? float3(0,0,0) : float3(1.40129846e-45,5.60519386e-45,1);
//      r3.x = dot(r0.xyzw, shadowMtx_g[r2.z/4]._m00_m10_m20_m30);
//      r3.y = dot(r0.xyzw, shadowMtx_g[r2.z/4]._m01_m11_m21_m31);
//      r3.z = dot(r0.xyzw, shadowMtx_g[r2.z/4]._m02_m12_m22_m32);
//      r1.z = dot(r0.xyzw, shadowMtx_g[r2.z/4]._m03_m13_m23_m33);
//      r3.xyz = r3.xyz / r1.zzz;
//      r1.z = dot(float2(1.25,1.125), icb[r2.y+0].xy);
//      r1.zw = invShadowSize_g.xy * r1.zz;
//      r3.w = 0;
//      r4.x = 0;
//      while (true) {
//        r4.y = cmp((int)r4.x >= 10);
//        if (r4.y != 0) break;
//        r2.yz = saturate(icb[r4.x+4].xy * r1.zw + r3.xy);
//        r2.y = shadowMaps.SampleCmpLevelZero(SmplShadow_s, r2.yzw, r3.z).x;
//        r3.w = r3.w + r2.y;
//        r4.x = (int)r4.x + 1;
//      }
//      r2.x = 0.100000001 * r3.w;
//      r1.z = shadowSplitDistance_g.x + -5;
//      r1.z = cmp(r1.z < r1.x);
//      r1.y = r1.z ? r1.y : 0;
//      if (r1.y != 0) {
//        r3.x = dot(r0.xyzw, shadowMtx_g[1]._m00_m10_m20_m30);
//        r3.y = dot(r0.xyzw, shadowMtx_g[1]._m01_m11_m21_m31);
//        r3.z = dot(r0.xyzw, shadowMtx_g[1]._m02_m12_m22_m32);
//        r0.x = dot(r0.xyzw, shadowMtx_g[1]._m03_m13_m23_m33);
//        r0.xyz = r3.xyz / r0.xxx;
//        r1.yz = invShadowSize_g.xy * float2(1.125,1.125);
//        r3.z = 1;
//        r0.w = 0;
//        r1.w = 0;
//        while (true) {
//          r2.y = cmp((int)r1.w >= 10);
//          if (r2.y != 0) break;
//          r3.xy = saturate(icb[r1.w+4].xy * r1.yz + r0.xy);
//          r2.y = shadowMaps.SampleCmpLevelZero(SmplShadow_s, r3.xyz, r0.z).x;
//          r0.w = r2.y + r0.w;
//          r1.w = (int)r1.w + 1;
//        }
//        r0.y = shadowSplitDistance_g.x + -r1.x;
//        r0.xy = float2(0.100000001,0.200000003) * r0.wy;
//        r0.z = r3.w * 0.100000001 + -r0.x;
//        r2.x = r0.y * r0.z + r0.x;
//      }
//    }
//  }
//  r0.x = -shadowFadeNear_g + r1.x;
//  r0.x = saturate(shadowFadeRangeInv_g * r0.x);
//  r0.y = 1 + -r2.x;
//  o0.xyzw = r0.xxxx * r0.yyyy + r2.xxxx;
//  return;
//}
//
///*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
//   using 3Dmigoto v0.6.163 on Thu Aug 21 16:48:20 2025
//
//
// Buffer Definitions:
//
// cbuffer cb_scene
// {
//
//   float4x4 view_g;                   // Offset:    0 Size:    64 [unused]
//   float4x4 viewInv_g;                // Offset:   64 Size:    64
//   float4x4 proj_g;                   // Offset:  128 Size:    64 [unused]
//   float4x4 projInv_g;                // Offset:  192 Size:    64 [unused]
//   float4x4 viewProj_g;               // Offset:  256 Size:    64 [unused]
//   float4x4 viewProjInv_g;            // Offset:  320 Size:    64
//   float2 vpSize_g;                   // Offset:  384 Size:     8 [unused]
//   float2 invVPSize_g;                // Offset:  392 Size:     8 [unused]
//   float3 lightColor_g;               // Offset:  400 Size:    12 [unused]
//   float disableMapObjNearFade_g;     // Offset:  412 Size:     4 [unused]
//   float3 lightDirection_g;           // Offset:  416 Size:    12 [unused]
//   float gameTime_g;                  // Offset:  428 Size:     4 [unused]
//   float3 sceneShadowColor_g;         // Offset:  432 Size:    12 [unused]
//   int shadowmapCascadeCount_g;       // Offset:  444 Size:     4
//   float3 windDirection_g;            // Offset:  448 Size:    12 [unused]
//   float sceneTime_g;                 // Offset:  460 Size:     4 [unused]
//   float2 lightTileSizeInv_g;         // Offset:  464 Size:     8 [unused]
//   float fogNearDistance_g;           // Offset:  472 Size:     4 [unused]
//   float fogFadeRangeInv_g;           // Offset:  476 Size:     4 [unused]
//   float3 fogColor_g;                 // Offset:  480 Size:    12 [unused]
//   float fogIntensity_g;              // Offset:  492 Size:     4 [unused]
//   float fogHeight_g;                 // Offset:  496 Size:     4 [unused]
//   float fogHeightRangeInv_g;         // Offset:  500 Size:     4 [unused]
//   float windWaveTime_g;              // Offset:  504 Size:     4 [unused]
//   float windWaveFrequency_g;         // Offset:  508 Size:     4 [unused]
//   uint localLightProbeCount_g;       // Offset:  512 Size:     4 [unused]
//   float lightSpecularGlossiness_g;   // Offset:  516 Size:     4 [unused]
//   float lightSpecularIntensity_g;    // Offset:  520 Size:     4 [unused]
//   float localShadowResolutionInv_g;  // Offset:  524 Size:     4 [unused]
//   float4x4 ditherMtx_g;              // Offset:  528 Size:    64 [unused]
//   float4 lightProbe_g[9];            // Offset:  592 Size:   144 [unused]
//   float3 chrLightDir_g;              // Offset:  736 Size:    12 [unused]
//   float windForce_g;                 // Offset:  748 Size:     4 [unused]
//   float4 mapColor_g;                 // Offset:  752 Size:    16 [unused]
//   float4 clipPlane_g;                // Offset:  768 Size:    16 [unused]
//   float2 resolutionScaling_g;        // Offset:  784 Size:     8 [unused]
//   float2 invShadowSize_g;            // Offset:  792 Size:     8
//   float3 chrShadowColor_g;           // Offset:  800 Size:    12 [unused]
//   float shadowFadeNear_g;            // Offset:  812 Size:     4
//   float4 frustumPlanes_g[6];         // Offset:  816 Size:    96 [unused]
//   float3 shadowSplitDistance_g;      // Offset:  912 Size:    12
//   float shadowFadeRangeInv_g;        // Offset:  924 Size:     4
//   float4x4 shadowMtx_g[4];           // Offset:  928 Size:   256
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// samPoint                          sampler      NA          NA    0        1
// SmplShadow                      sampler_c      NA          NA   13        1
// depthTexture                      texture  float4          2d    0        1
// shadowMaps                        texture  float4     2darray   16        1
// cb_scene                          cbuffer      NA          NA    0        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float
// TEXCOORD                 0   xyzw        1     NONE   float   xyzw
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0},
                              { 0, 1.000000, 0, 0},
                              { 0, 0, 1.000000, 0},
                              { 0, 0, 0, 1.000000},
                              { -0.840520, -0.073954, 0, 0},
                              { -0.326235, -0.405830, 0, 0},
                              { -0.698464, 0.457259, 0, 0},
                              { -0.203356, 0.620584726, 0, 0},
                              { 0.963450, -0.194353, 0, 0},
                              { 0.473434, -0.480026, 0, 0},
                              { 0.519454, 0.767034, 0, 0},
                              { 0.185461, -0.894523084, 0, 0},
                              { 0.507351, 0.064963, 0, 0},
                              { -0.321932, 0.595434904, 0, 0} }
dcl_constantbuffer CB0[74], dynamicIndexed
dcl_sampler s0, mode_default
dcl_sampler s13, mode_comparison
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2darray (float,float,float,float) t16
dcl_input_ps linear v1.xyzw
dcl_output o0.xyzw
dcl_temps 35
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.z, v1.xyxx, t0.yzxw, s0, l(0.000000)
mad r0.xy, v1.zwzz, l(2.000000, -2.000000, 0.000000, 0.000000), l(-1.000000, 1.000000, 0.000000, 0.000000)
mov r0.w, l(1.000000)

dp4 r1.w, r0.xyzw, cb0[23].xyzw
mad r26.x, r25.y, r1.w, l(-1.0)
mad r0.x, r25.x, r26.x, r0.x

dp4 r1.x, r0.xyzw, cb0[20].xyzw
dp4 r1.y, r0.xyzw, cb0[21].xyzw
dp4 r1.z, r0.xyzw, cb0[22].xyzw
dp4 r1.w, r0.xyzw, cb0[23].xyzw
div r0.xyzw, r1.xyzw, r1.wwww
mov r1.x, -cb0[4].w
mov r1.y, -cb0[5].w
mov r1.z, -cb0[6].w
add r1.xyz, r0.xyzx, r1.xyzx
dp3 r1.x, r1.xyzx, r1.xyzx
sqrt r1.x, r1.x
ieq r1.y, l(4), cb0[27].w
add r1.z, l(-5.000000), cb0[57].z
lt r1.z, r1.z, r1.x
and r1.y, r1.z, r1.y
if_nz r1.y
  dp4 r2.x, r0.xyzw, cb0[70].xyzw
  dp4 r2.y, r0.xyzw, cb0[71].xyzw
  dp4 r2.z, r0.xyzw, cb0[72].xyzw
  dp4 r1.y, r0.xyzw, cb0[73].xyzw
  div r1.yzw, r2.xxyz, r1.yyyy
  lt r2.xy, r1.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000)
  lt r2.zw, l(0.000000, 0.000000, 1.000000, 1.000000), r1.yyyz
  or r2.x, r2.z, r2.x
  or r2.x, r2.y, r2.x
  or r2.x, r2.w, r2.x
  if_nz r2.x
    mov r2.x, l(1.000000)
  else
    mov r3.z, l(3.000000)
    mov r2.yz, l(0,0,0,0)
    loop
      ige r2.w, r2.z, l(10)
      breakc_nz r2.w
      mad_sat r3.xy, icb[r2.z + 4].xyxx, cb0[49].zwzz, r1.yzyy
      sample_c_lz_indexable(texture2darray)(float,float,float,float) r2.w, r3.xyzx, t16.xxxx, s13, r1.w
      add r2.y, r2.w, r2.y
      iadd r2.z, r2.z, l(1)
    endloop
    mul r2.x, r2.y, l(0.100000)
  endif
  lt r1.y, r1.x, cb0[57].z
  if_nz r1.y
    dp4 r3.x, r0.xyzw, cb0[66].xyzw
    dp4 r3.y, r0.xyzw, cb0[67].xyzw
    dp4 r3.z, r0.xyzw, cb0[68].xyzw
    dp4 r1.y, r0.xyzw, cb0[69].xyzw
    div r1.yzw, r3.xxyz, r1.yyyy
    mov r3.z, l(2.000000)
    mov r2.yz, l(0,0,0,0)
    loop
      ige r2.w, r2.z, l(10)
      breakc_nz r2.w
      mad_sat r3.xy, icb[r2.z + 4].xyxx, cb0[49].zwzz, r1.yzyy
      sample_c_lz_indexable(texture2darray)(float,float,float,float) r2.w, r3.xyzx, t16.xxxx, s13, r1.w
      add r2.y, r2.w, r2.y
      iadd r2.z, r2.z, l(1)
    endloop
    add r1.y, -r1.x, cb0[57].z
    mul r1.y, r1.y, l(0.200000)
    mad r1.z, r2.y, l(0.100000), -r2.x
    mad r2.x, r1.y, r1.z, r2.x
  endif
else
  add r1.y, l(-5.000000), cb0[57].y
  lt r1.y, r1.y, r1.x
  if_nz r1.y
    dp4 r3.x, r0.xyzw, cb0[66].xyzw
    dp4 r3.y, r0.xyzw, cb0[67].xyzw
    dp4 r3.z, r0.xyzw, cb0[68].xyzw
    dp4 r1.y, r0.xyzw, cb0[69].xyzw
    div r1.yzw, r3.xxyz, r1.yyyy
    lt r2.yz, r1.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000)
    lt r3.xy, l(1.000000, 1.000000, 0.000000, 0.000000), r1.yzyy
    or r2.y, r2.y, r3.x
    or r2.y, r2.z, r2.y
    or r2.y, r3.y, r2.y
    if_nz r2.y
      mov r2.x, l(1.000000)
    else
      mov r3.z, l(2.000000)
      mov r2.yz, l(0,0,0,0)
      loop
        ige r2.w, r2.z, l(10)
        breakc_nz r2.w
        mad_sat r3.xy, icb[r2.z + 4].xyxx, cb0[49].zwzz, r1.yzyy
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r2.w, r3.xyzx, t16.xxxx, s13, r1.w
        add r2.y, r2.w, r2.y
        iadd r2.z, r2.z, l(1)
      endloop
      mul r2.x, r2.y, l(0.100000)
    endif
    lt r1.y, r1.x, cb0[57].y
    if_nz r1.y
      dp4 r3.x, r0.xyzw, cb0[62].xyzw
      dp4 r3.y, r0.xyzw, cb0[63].xyzw
      dp4 r3.z, r0.xyzw, cb0[64].xyzw
      dp4 r1.y, r0.xyzw, cb0[65].xyzw
      div r1.yzw, r3.xxyz, r1.yyyy
      mul r2.yz, l(0.000000, 1.125000, 1.125000, 0.000000), cb0[49].zzwz
      mov r3.z, l(1.000000)
      mov r2.w, l(0)
      mov r3.w, l(0)
      loop
        ige r4.x, r3.w, l(10)
        breakc_nz r4.x
        mad_sat r3.xy, icb[r3.w + 4].xyxx, r2.yzyy, r1.yzyy
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r3.x, r3.xyzx, t16.xxxx, s13, r1.w
        add r2.w, r2.w, r3.x
        iadd r3.w, r3.w, l(1)
      endloop
      add r1.y, -r1.x, cb0[57].y
      mul r1.y, r1.y, l(0.200000)
      mad r1.z, r2.w, l(0.100000), -r2.x
      mad r2.x, r1.y, r1.z, r2.x
    endif
  else
    lt r1.y, r1.x, cb0[57].x
    movc r2.yzw, r1.yyyy, l(0,0,0,0), l(0,1,4,1.000000)
    dp4 r3.x, r0.xyzw, cb0[r2.z + 58].xyzw
    dp4 r3.y, r0.xyzw, cb0[r2.z + 59].xyzw
    dp4 r3.z, r0.xyzw, cb0[r2.z + 60].xyzw
    dp4 r1.z, r0.xyzw, cb0[r2.z + 61].xyzw
    div r3.xyz, r3.xyzx, r1.zzzz
    dp2 r1.z, l(1.250000, 1.125000, 0.000000, 0.000000), icb[r2.y + 0].xyxx
    mul r1.zw, r1.zzzz, cb0[49].zzzw
    mov r3.w, l(0)
    mov r4.x, l(0)
    loop
      ige r4.y, r4.x, l(10)
      breakc_nz r4.y
      mad_sat r2.yz, icb[r4.x + 4].xxyx, r1.zzwz, r3.xxyx
      sample_c_lz_indexable(texture2darray)(float,float,float,float) r2.y, r2.yzwy, t16.xxxx, s13, r3.z
      add r3.w, r2.y, r3.w
      iadd r4.x, r4.x, l(1)
    endloop
    mul r2.x, r3.w, l(0.100000)
    add r1.z, l(-5.000000), cb0[57].x
    lt r1.z, r1.z, r1.x
    and r1.y, r1.z, r1.y
    if_nz r1.y
      dp4 r3.x, r0.xyzw, cb0[62].xyzw
      dp4 r3.y, r0.xyzw, cb0[63].xyzw
      dp4 r3.z, r0.xyzw, cb0[64].xyzw
      dp4 r0.x, r0.xyzw, cb0[65].xyzw
      div r0.xyz, r3.xyzx, r0.xxxx
      mul r1.yz, l(0.000000, 1.125000, 1.125000, 0.000000), cb0[49].zzwz
      mov r3.z, l(1.000000)
      mov r0.w, l(0)
      mov r1.w, l(0)
      loop
        ige r2.y, r1.w, l(10)
        breakc_nz r2.y
        mad_sat r3.xy, icb[r1.w + 4].xyxx, r1.yzyy, r0.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r2.y, r3.xyzx, t16.xxxx, s13, r0.z
        add r0.w, r0.w, r2.y
        iadd r1.w, r1.w, l(1)
      endloop
      add r0.y, -r1.x, cb0[57].x
      mul r0.xy, r0.wyww, l(0.100000, 0.200000, 0.000000, 0.000000)
      mad r0.z, r3.w, l(0.100000), -r0.x
      mad r2.x, r0.y, r0.z, r0.x
    endif
  endif
endif
add r0.x, r1.x, -cb0[50].w
mul_sat r0.x, r0.x, cb0[57].w
add r0.y, -r2.x, l(1.000000)
mad o0.xyzw, r0.xxxx, r0.yyyy, r2.xxxx
ret
// Approximately 173 instruction slots used
