// ---- Created with 3Dmigoto v1.3.10 on Wed May 02 20:26:53 2018

cbuffer PER_BATCH : register(b0)
{
  float4 vCamPos : packoffset(c0);
  float4 vWBasisX : packoffset(c1);
  float4 vWBasisY : packoffset(c2);
  float4 vWBasisZ : packoffset(c3);
  float4 vfHeightDensityRampParams : packoffset(c4);
  float4 vfScatteringParams : packoffset(c5);
  float4 vAdaption : packoffset(c6);
  float4 vfScatteringBlendParams : packoffset(c7);
  row_major float4x4 TexGen1 : packoffset(c8);
  float4 vfScatteringColor : packoffset(c12);
  float4 vfSamplingParams : packoffset(c13);
  row_major float4x4 TexGen0 : packoffset(c14);
  float3 vfColGradDelta : packoffset(c18);
  float4 irreg_kernel_2d[8] : packoffset(c19);
  float4 vfRampParams : packoffset(c27);
  float4 vfColGradRadial : packoffset(c28);
  float4 CloudShadowParams : packoffset(c29);
  float4 PS_NearFarClipDist : packoffset(c30);
  float4 vfColGradParams : packoffset(c31);
  float4 vfHeightDensityParams : packoffset(c32);
  float3 cameraFrontVector : packoffset(c33);
  row_major float4x4 TexGen2 : packoffset(c34);
  float4 volFogShadowDarkeningSunAmb : packoffset(c38);
  float4 PS_ScreenSize : packoffset(c39);
  float3 vfColGradBase : packoffset(c40);
  float4 volFogShadowRange : packoffset(c41);
  float4 fOneDivFarDist : packoffset(c42);
  float4 cFogColorDensity : packoffset(c43);
  float4 cFogPlane : packoffset(c44);
  float4 fDepthTestBias : packoffset(c45);
  row_major float4x4 TexGen3 : packoffset(c46);
  float4 vfDistanceParams : packoffset(c50);
  float4 vInvShadowMapSize : packoffset(c51);
  float4 vfParams : packoffset(c52);
  float4 vfTimeParams : packoffset(c53);
  float4 volFogShadowDarkening : packoffset(c54);
  float4 CloudShadowAnimParams : packoffset(c55);
  float4 vfScatteringSecondaryColor : packoffset(c56);
  float3 vfSunDir : packoffset(c57);
  float4 vfViewPos : packoffset(c58);
  float4 fKernelRadius : packoffset(c59);
}

cbuffer PER_FRAME : register(b2)
{
  float4 g_PS_SunLightDir : packoffset(c2);
}

SamplerState sceneDepthSampler_s : register(s1);
SamplerState sRotSampler_s : register(s2);
SamplerState volFogShadowSampler_s : register(s3);
SamplerState interleaveSampler_s : register(s4);
SamplerComparisonState SAMPLER_STATE_depthMapSampler_s : register(s0);
Texture2D<float4> sceneDepthSampler : register(t0);
Texture2D<float4> sRotSampler : register(t1);
Texture2D<float4> interleaveSampler : register(t2);
Texture2D<float4> volFogShadowSampler : register(t3);
Texture2D<float4> depthMapSampler3 : register(t4);
Texture2D<float4> depthMapSampler2 : register(t5);
Texture2D<float4> depthMapSampler0 : register(t6);
Texture2D<float4> depthMapSampler1 : register(t7);


// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);


void main(
  float4 v0 : SV_POSITION0,
  float4 v1 : TEXCOORD0,
  linear centroid float3 v2 : TEXCOORD1,
  out float4 o0 : SV_Target0)
{
  float4 r0,r1,r2,r3,r4,r5,r6,r7;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.xy = v1.xy / v1.ww;
  r0.z = sceneDepthSampler.Sample(sceneDepthSampler_s, r0.xy).x;
  r0.w = PS_NearFarClipDist.y * r0.z;
  r1.x = dot(v2.xyz, -cameraFrontVector.xyz);
  r0.z = r0.z * PS_NearFarClipDist.y + -r1.x;
  r0.z = max(0, r0.z);
  r0.z = -cFogColorDensity.w * r0.z;
  r1.y = dot(v2.xyz, v2.xyz);
  r1.z = rsqrt(r1.y);
  r2.xyz = v2.xyz * r1.zzz;
  r1.z = dot(r2.xyz, -cameraFrontVector.xyz);
  r1.z = max(0.00100000005, r1.z);
  r0.z = r0.z / r1.z;
  o0.w = exp2(r0.z);
  r3.xyz = vfViewPos.xyz + v2.xyz;
  r0.z = cmp(r0.w < r1.x);
  if (fKernelRadius.z != 0) {
    r3.w = 1;
    r4.x = dot(TexGen0._m00_m01_m02_m03, r3.xyzw);
    r4.y = dot(TexGen0._m10_m11_m12_m13, r3.xyzw);
    r1.x = dot(TexGen0._m20_m21_m22_m23, r3.xyzw);
    r1.z = dot(TexGen0._m30_m31_m32_m33, r3.xyzw);
    r4.xyzw = r4.xyxy / r1.zzzz;
    r1.x = r1.x * fOneDivFarDist.x + -fDepthTestBias.x;
    r1.zw = cmp(r4.zw >= float2(0,0));
    r5.xy = cmp(float2(1,1) >= r4.zw);
    r1.z = r1.z ? r5.x : 0;
    r1.z = r1.w ? r1.z : 0;
    r1.z = r5.y ? r1.z : 0;
    r1.w = cmp(1 >= r1.x);
    r1.z = r1.w ? r1.z : 0;
    r5.xy = float2(16500,16500) * r4.zw;
    r5.xy = sRotSampler.Sample(sRotSampler_s, r5.xy).xy;
    if (r1.z != 0) {
      r1.w = (int)fKernelRadius.z & 16;
      if (r1.w != 0) {
        r1.w = depthMapSampler0.SampleCmpLevelZero(SAMPLER_STATE_depthMapSampler_s, r4.zw, r1.x).x;
      } else {
        r2.w = 1.10000002 * vInvShadowMapSize.x;
        r5.xyz = r5.yxx * r2.www;
        r5.w = -r5.x;
        r6.xyzw = irreg_kernel_2d[0].yyzz * r5.xzzw;
        r6.xyzw = r5.zwxz * irreg_kernel_2d[0].xxww + r6.xyzw;
        r6.xyzw = r6.xyzw + r4.zwzw;
        r7.x = depthMapSampler0.SampleCmpLevelZero(SAMPLER_STATE_depthMapSampler_s, r6.xy, r1.x).x;
        r7.y = depthMapSampler0.SampleCmpLevelZero(SAMPLER_STATE_depthMapSampler_s, r6.zw, r1.x).x;
        r6.xyzw = irreg_kernel_2d[1].yyzz * r5.xyzw;
        r5.xyzw = r5.zwxz * irreg_kernel_2d[1].xxww + r6.xyzw;
        r4.xyzw = r5.xyzw + r4.xyzw;
        r7.z = depthMapSampler0.SampleCmpLevelZero(SAMPLER_STATE_depthMapSampler_s, r4.xy, r1.x).x;
        r7.w = depthMapSampler0.SampleCmpLevelZero(SAMPLER_STATE_depthMapSampler_s, r4.zw, r1.x).x;
        r1.x = dot(r7.xyzw, float4(0.25,0.25,0.25,0.25));
        r1.w = r1.x * r1.x;
      }
      r1.x = -1;
    } else {
      r1.w = 1;
    }
    r1.x = r1.z ? r1.x : 0;
    r1.x = ~(int)r1.x;
    r1.z = (int)fKernelRadius.z & 2;
    r1.z = cmp((int)r1.z != 0);
    r1.x = r1.z ? r1.x : 0;
    if (r1.x != 0) {
      r4.x = dot(TexGen1._m00_m01_m02_m03, r3.xyzw);
      r4.y = dot(TexGen1._m10_m11_m12_m13, r3.xyzw);
      r1.x = dot(TexGen1._m20_m21_m22_m23, r3.xyzw);
      r1.z = dot(TexGen1._m30_m31_m32_m33, r3.xyzw);
      r4.xy = r4.xy / r1.zz;
      r1.x = r1.x * fOneDivFarDist.y + -fDepthTestBias.y;
      r4.zw = cmp(r4.xy >= float2(0,0));
      r5.xy = cmp(float2(1,1) >= r4.xy);
      r1.z = r4.z ? r5.x : 0;
      r1.z = r4.w ? r1.z : 0;
      r1.z = r5.y ? r1.z : 0;
      r2.w = cmp(1 >= r1.x);
      r1.z = r2.w ? r1.z : 0;
      if (r1.z != 0) {
        r1.w = depthMapSampler1.SampleCmpLevelZero(SAMPLER_STATE_depthMapSampler_s, r4.xy, r1.x).x;
        r1.x = -1;
      } else {
        r1.w = 1;
      }
      r1.x = (int)r1.x & (int)r1.z;
      r1.x = ~(int)r1.x;
      r1.z = (int)fKernelRadius.z & 4;
      r1.z = cmp((int)r1.z != 0);
      r1.x = r1.z ? r1.x : 0;
      if (r1.x != 0) {
        r4.x = dot(TexGen2._m00_m01_m02_m03, r3.xyzw);
        r4.y = dot(TexGen2._m10_m11_m12_m13, r3.xyzw);
        r1.x = dot(TexGen2._m20_m21_m22_m23, r3.xyzw);
        r1.z = dot(TexGen2._m30_m31_m32_m33, r3.xyzw);
        r4.xy = r4.xy / r1.zz;
        r1.x = r1.x * fOneDivFarDist.z + -fDepthTestBias.z;
        r4.zw = cmp(r4.xy >= float2(0,0));
        r5.xy = cmp(float2(1,1) >= r4.xy);
        r1.z = r4.z ? r5.x : 0;
        r1.z = r4.w ? r1.z : 0;
        r1.z = r5.y ? r1.z : 0;
        r2.w = cmp(1 >= r1.x);
        r1.z = r2.w ? r1.z : 0;
        if (r1.z != 0) {
          r1.w = depthMapSampler2.SampleCmpLevelZero(SAMPLER_STATE_depthMapSampler_s, r4.xy, r1.x).x;
          r1.x = -1;
        } else {
          r1.w = 1;
        }
        r1.x = (int)r1.x & (int)r1.z;
        r1.x = ~(int)r1.x;
        r1.z = (int)fKernelRadius.z & 8;
        r1.z = cmp((int)r1.z != 0);
        r1.x = r1.z ? r1.x : 0;
        if (r1.x != 0) {
          r4.x = dot(TexGen3._m00_m01_m02_m03, r3.xyzw);
          r4.y = dot(TexGen3._m10_m11_m12_m13, r3.xyzw);
          r1.x = dot(TexGen3._m20_m21_m22_m23, r3.xyzw);
          r1.z = dot(TexGen3._m30_m31_m32_m33, r3.xyzw);
          r3.xy = r4.xy / r1.zz;
          r1.x = r1.x * fOneDivFarDist.w + -fDepthTestBias.w;
          r4.xy = cmp(r3.xy >= float2(0,0));
          r4.zw = cmp(float2(1,1) >= r3.xy);
          r1.z = r4.z ? r4.x : 0;
          r1.z = r4.y ? r1.z : 0;
          r1.z = r4.w ? r1.z : 0;
          r2.w = cmp(1 >= r1.x);
          r1.z = r2.w ? r1.z : 0;
          if (r1.z != 0) {
            r1.w = depthMapSampler3.SampleCmpLevelZero(SAMPLER_STATE_depthMapSampler_s, r3.xy, r1.x).x;
          } else {
            r1.w = 1;
          }
        }
      }
    }
  } else {
    r1.w = 1;
  }
  r0.z = r0.z ? 1 : r1.w;
  r0.w = r0.w / PS_NearFarClipDist.y;
  r0.w = min(volFogShadowRange.x, r0.w);
  r1.xz = float2(0.015625,0.015625) * v0.xy;
  r1.xz = interleaveSampler.Sample(interleaveSampler_s, r1.xz).xw;
  r4.xyzw = PS_ScreenSize.zwzw * float4(50,50,40,40) + r0.xyxy;
  r3.x = volFogShadowSampler.Sample(volFogShadowSampler_s, r4.xy).w;
  r3.y = volFogShadowSampler.Sample(volFogShadowSampler_s, r4.zw).w;
  r4.xy = PS_ScreenSize.zw * float2(30,30) + r0.xy;
  r3.w = volFogShadowSampler.Sample(volFogShadowSampler_s, r4.xy).w;
  r3.xyw = min(r3.xyw, r0.zzz);
  r1.z = 0.0009765625 * r1.z;
  r1.w = vWBasisX.z * v0.x + vWBasisZ.z;
  r1.w = vWBasisY.z * v0.y + r1.w;
  r2.w = 0;
  r4.xyzw = float4(0,0,0,0);
  while (true) {
    r5.x = cmp((int)r4.w >= 16);
    if (r5.x != 0) break;
    r5.x = (int)r4.w;
    r5.x = r5.x + r1.x;
    r5.x = r5.x * 0.0625 + r1.z;
    r5.x = r5.x * r0.w;
    r5.x = r1.w * r5.x + vCamPos.z;
    r5.y = -cFogPlane.w + -r5.x;
    r5.y = cFogColorDensity.w * r5.y;
    r5.y = saturate(0.100000001 * r5.y);
    r2.w = max(r5.y, r2.w);
    r5.x = cmp(-cFogPlane.w >= r5.x);
    r5.xyz = r5.xxx ? r3.xyw : r0.zzz;
    r4.xyz = r5.xyz + r4.xyz;
    r4.w = (int)r4.w + 1;
  }
  r1.xzw = float3(0.0625,0.0625,0.0625) * r4.xyz;
  r0.z = r2.w * r2.w;
  r3.xyw = -r4.xyz * float3(0.0625,0.0625,0.0625) + float3(1,1,1);
  r1.xzw = r0.zzz * r3.xyw + r1.xzw;
  r0.x = volFogShadowSampler.Sample(volFogShadowSampler_s, r0.xy).w;
  r0.yz = saturate(r0.xx * volFogShadowDarkeningSunAmb.xz + volFogShadowDarkeningSunAmb.yw);
  r0.w = vfParams.x * v2.z;
  r2.w = cmp(0.00999999978 < abs(r0.w));
  r3.x = 1.44269502 * r0.w;
  r3.x = exp2(r3.x);
  r3.x = -1 + r3.x;
  r0.w = r3.x / r0.w;
  r0.w = r2.w ? r0.w : 1;
  r1.y = sqrt(r1.y);
  r2.w = vfParams.y * r1.y;
  r0.w = r2.w * r0.w;
  r0.w = exp2(-r0.w);
  r0.w = min(1, r0.w);
  r2.w = saturate(r1.y * vfRampParams.x + vfRampParams.y);
  r3.x = 2 + -r2.w;
  r2.w = r3.x * r2.w;
  r2.w = r2.w * vfRampParams.z + vfRampParams.w;
  r0.w = 1 + -r0.w;
  r0.w = -r0.w * r2.w + 1;
  r0.w = saturate(max(vfParams.w, r0.w));
  r2.w = saturate(r3.z * vfColGradParams.x + vfColGradParams.y);
  r3.x = 2 + -r2.w;
  r2.w = r3.x * r2.w;
  r3.xyz = r2.www * vfColGradDelta.xyz + vfColGradBase.xyz;
  r1.y = saturate(vfColGradRadial.w * r1.y);
  r1.y = log2(r1.y);
  r1.y = vfColGradParams.w * r1.y;
  r1.y = exp2(r1.y);
  r2.x = dot(r2.xyz, vfSunDir.xyz);
  r2.x = r2.x * -vfColGradParams.z + vfColGradParams.z;
  r2.x = exp2(r2.x);
  r1.y = r2.x * r1.y;
  r2.xyz = vfColGradRadial.xyz * r1.yyy;
  r2.xyz = r2.xyz * r0.yyy;
  r2.xyz = r3.xyz * r0.zzz + r2.xyz;
  r3.xyz = volFogShadowDarkening.xxx * r2.xyz;
  r2.xyz = -r2.xyz * volFogShadowDarkening.xxx + r2.xyz;
  r0.xyz = r0.xxx * r2.xyz + r3.xyz;
  r1.xyz = cFogColorDensity.xyz * r1.xzw + -r0.xyz;
  r0.xyz = r0.www * r1.xyz + r0.xyz;
  o0.xyz = g_PS_SunLightDir.www * r0.xyz;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.30.960.8229
//
//   using 3Dmigoto v1.3.10 on Wed May 02 20:26:53 2018
//
//
// Buffer Definitions:
//
// cbuffer PER_BATCH
// {
//
//   float4 vCamPos;                    // Offset:    0 Size:    16
//   float4 vWBasisX;                   // Offset:   16 Size:    16
//   float4 vWBasisY;                   // Offset:   32 Size:    16
//   float4 vWBasisZ;                   // Offset:   48 Size:    16
//   float4 vfHeightDensityRampParams;  // Offset:   64 Size:    16 [unused]
//   float4 vfScatteringParams;         // Offset:   80 Size:    16 [unused]
//   float4 vAdaption;                  // Offset:   96 Size:    16 [unused]
//   float4 vfScatteringBlendParams;    // Offset:  112 Size:    16 [unused]
//   row_major float4x4 TexGen1;        // Offset:  128 Size:    64
//   float4 vfScatteringColor;          // Offset:  192 Size:    16 [unused]
//   float4 vfSamplingParams;           // Offset:  208 Size:    16 [unused]
//   row_major float4x4 TexGen0;        // Offset:  224 Size:    64
//   float3 vfColGradDelta;             // Offset:  288 Size:    12
//   float4 irreg_kernel_2d[8];         // Offset:  304 Size:   128
//   float4 vfRampParams;               // Offset:  432 Size:    16
//   float4 vfColGradRadial;            // Offset:  448 Size:    16
//   float4 CloudShadowParams;          // Offset:  464 Size:    16 [unused]
//   float4 PS_NearFarClipDist;         // Offset:  480 Size:    16
//   float4 vfColGradParams;            // Offset:  496 Size:    16
//   float4 vfHeightDensityParams;      // Offset:  512 Size:    16 [unused]
//   float3 cameraFrontVector;          // Offset:  528 Size:    12
//   row_major float4x4 TexGen2;        // Offset:  544 Size:    64
//   float4 volFogShadowDarkeningSunAmb;// Offset:  608 Size:    16
//   float4 PS_ScreenSize;              // Offset:  624 Size:    16
//   float3 vfColGradBase;              // Offset:  640 Size:    12
//   float4 volFogShadowRange;          // Offset:  656 Size:    16
//   float4 fOneDivFarDist;             // Offset:  672 Size:    16
//   float4 cFogColorDensity;           // Offset:  688 Size:    16
//   float4 cFogPlane;                  // Offset:  704 Size:    16
//   float4 fDepthTestBias;             // Offset:  720 Size:    16
//   row_major float4x4 TexGen3;        // Offset:  736 Size:    64
//   float4 vfDistanceParams;           // Offset:  800 Size:    16 [unused]
//   float4 vInvShadowMapSize;          // Offset:  816 Size:    16
//   float4 vfParams;                   // Offset:  832 Size:    16
//   float4 vfTimeParams;               // Offset:  848 Size:    16 [unused]
//   float4 volFogShadowDarkening;      // Offset:  864 Size:    16
//   float4 CloudShadowAnimParams;      // Offset:  880 Size:    16 [unused]
//   float4 vfScatteringSecondaryColor; // Offset:  896 Size:    16 [unused]
//   float3 vfSunDir;                   // Offset:  912 Size:    12
//   float4 vfViewPos;                  // Offset:  928 Size:    16
//   float4 fKernelRadius;              // Offset:  944 Size:    16
//
// }
//
// cbuffer PER_FRAME
// {
//
//   float4 g_PS_SunLightDir;           // Offset:   32 Size:    16
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// SAMPLER_STATE_depthMapSampler   sampler_c      NA          NA    0        1
// sceneDepthSampler                 sampler      NA          NA    1        1
// sRotSampler                       sampler      NA          NA    2        1
// volFogShadowSampler               sampler      NA          NA    3        1
// interleaveSampler                 sampler      NA          NA    4        1
// sceneDepthSampler                 texture  float4          2d    0        1
// sRotSampler                       texture  float4          2d    1        1
// interleaveSampler                 texture  float4          2d    2        1
// volFogShadowSampler               texture  float4          2d    3        1
// depthMapSampler3                  texture  float4          2d    4        1
// depthMapSampler2                  texture  float4          2d    5        1
// depthMapSampler0                  texture  float4          2d    6        1
// depthMapSampler1                  texture  float4          2d    7        1
// PER_BATCH                         cbuffer      NA          NA    0        1
// PER_FRAME                         cbuffer      NA          NA    2        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION              0   xyzw        0      POS   float   xy
// TEXCOORD                 0   xyzw        1     NONE   float   xy w
// TEXCOORD                 1   xyz         2     NONE   float   xyz
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[60], immediateIndexed
dcl_constantbuffer cb2[3], immediateIndexed
dcl_sampler s0, mode_comparison
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_sampler s4, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t5
dcl_resource_texture2d (float,float,float,float) t6
dcl_resource_texture2d (float,float,float,float) t7
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_input_ps linear v1.xyw
dcl_input_ps linear centroid v2.xyz
dcl_output o0.xyzw
dcl_temps 8
div r0.xy, v1.xyxx, v1.wwww
sample_indexable(texture2d)(float,float,float,float) r0.z, r0.xyxx, t0.yzxw, s1
mul r0.w, r0.z, cb0[30].y
dp3 r1.x, v2.xyzx, -cb0[33].xyzx
mad r0.z, r0.z, cb0[30].y, -r1.x
max r0.z, r0.z, l(0.000000)
mul r0.z, r0.z, -cb0[43].w
dp3 r1.y, v2.xyzx, v2.xyzx
rsq r1.z, r1.y
mul r2.xyz, r1.zzzz, v2.xyzx
dp3 r1.z, r2.xyzx, -cb0[33].xyzx
max r1.z, r1.z, l(0.001000)
div r0.z, r0.z, r1.z
exp o0.w, r0.z
add r3.xyz, v2.xyzx, cb0[58].xyzx
lt r0.z, r0.w, r1.x
if_nz cb0[59].z
  mov r3.w, l(1.000000)
  dp4 r4.x, cb0[14].xyzw, r3.xyzw
  dp4 r4.y, cb0[15].xyzw, r3.xyzw
  dp4 r1.x, cb0[16].xyzw, r3.xyzw
  dp4 r1.z, cb0[17].xyzw, r3.xyzw
  div r4.xyzw, r4.xyxy, r1.zzzz
  mad r1.x, r1.x, cb0[42].x, -cb0[45].x
  ge r1.zw, r4.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000)
  ge r5.xy, l(1.000000, 1.000000, 0.000000, 0.000000), r4.zwzz
  and r1.z, r1.z, r5.x
  and r1.z, r1.w, r1.z
  and r1.z, r5.y, r1.z
  ge r1.w, l(1.000000), r1.x
  and r1.z, r1.w, r1.z
  mul r5.xy, r4.zwzz, l(16500.000000, 16500.000000, 0.000000, 0.000000)
  sample_indexable(texture2d)(float,float,float,float) r5.xy, r5.xyxx, t1.xyzw, s2
  if_nz r1.z
    and r1.w, cb0[59].z, l(16)
    if_nz r1.w
      sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r4.zwzz, t6.xxxx, s0, r1.x
    else
      mul r2.w, cb0[51].x, l(1.100000)
      mul r5.xyz, r2.wwww, r5.yxxy
      mov r5.w, -r5.x
      mul r6.xyzw, r5.xzzw, cb0[19].yyzz
      mad r6.xyzw, r5.zwxz, cb0[19].xxww, r6.xyzw
      add r6.xyzw, r4.zwzw, r6.xyzw
      sample_c_lz_indexable(texture2d)(float,float,float,float) r7.x, r6.xyxx, t6.xxxx, s0, r1.x
      sample_c_lz_indexable(texture2d)(float,float,float,float) r7.y, r6.zwzz, t6.xxxx, s0, r1.x
      mul r6.xyzw, r5.xyzw, cb0[20].yyzz
      mad r5.xyzw, r5.zwxz, cb0[20].xxww, r6.xyzw
      add r4.xyzw, r4.xyzw, r5.xyzw
      sample_c_lz_indexable(texture2d)(float,float,float,float) r7.z, r4.xyxx, t6.xxxx, s0, r1.x
      sample_c_lz_indexable(texture2d)(float,float,float,float) r7.w, r4.zwzz, t6.xxxx, s0, r1.x
      dp4 r1.x, r7.xyzw, l(0.250000, 0.250000, 0.250000, 0.250000)
      mul r1.w, r1.x, r1.x
    endif
    mov r1.x, l(-1)
  else
    mov r1.w, l(1.000000)
  endif
  and r1.x, r1.x, r1.z
  not r1.x, r1.x
  and r1.z, cb0[59].z, l(2)
  ine r1.z, r1.z, l(0)
  and r1.x, r1.z, r1.x
  if_nz r1.x
    dp4 r4.x, cb0[8].xyzw, r3.xyzw
    dp4 r4.y, cb0[9].xyzw, r3.xyzw
    dp4 r1.x, cb0[10].xyzw, r3.xyzw
    dp4 r1.z, cb0[11].xyzw, r3.xyzw
    div r4.xy, r4.xyxx, r1.zzzz
    mad r1.x, r1.x, cb0[42].y, -cb0[45].y
    ge r4.zw, r4.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000)
    ge r5.xy, l(1.000000, 1.000000, 0.000000, 0.000000), r4.xyxx
    and r1.z, r4.z, r5.x
    and r1.z, r4.w, r1.z
    and r1.z, r5.y, r1.z
    ge r2.w, l(1.000000), r1.x
    and r1.z, r1.z, r2.w
    if_nz r1.z
      sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r4.xyxx, t7.xxxx, s0, r1.x
      mov r1.x, l(-1)
    else
      mov r1.w, l(1.000000)
    endif
    and r1.x, r1.x, r1.z
    not r1.x, r1.x
    and r1.z, cb0[59].z, l(4)
    ine r1.z, r1.z, l(0)
    and r1.x, r1.z, r1.x
    if_nz r1.x
      dp4 r4.x, cb0[34].xyzw, r3.xyzw
      dp4 r4.y, cb0[35].xyzw, r3.xyzw
      dp4 r1.x, cb0[36].xyzw, r3.xyzw
      dp4 r1.z, cb0[37].xyzw, r3.xyzw
      div r4.xy, r4.xyxx, r1.zzzz
      mad r1.x, r1.x, cb0[42].z, -cb0[45].z
      ge r4.zw, r4.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000)
      ge r5.xy, l(1.000000, 1.000000, 0.000000, 0.000000), r4.xyxx
      and r1.z, r4.z, r5.x
      and r1.z, r4.w, r1.z
      and r1.z, r5.y, r1.z
      ge r2.w, l(1.000000), r1.x
      and r1.z, r1.z, r2.w
      if_nz r1.z
        sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r4.xyxx, t5.xxxx, s0, r1.x
        mov r1.x, l(-1)
      else
        mov r1.w, l(1.000000)
      endif
      and r1.x, r1.x, r1.z
      not r1.x, r1.x
      and r1.z, cb0[59].z, l(8)
      ine r1.z, r1.z, l(0)
      and r1.x, r1.z, r1.x
      if_nz r1.x
        dp4 r4.x, cb0[46].xyzw, r3.xyzw
        dp4 r4.y, cb0[47].xyzw, r3.xyzw
        dp4 r1.x, cb0[48].xyzw, r3.xyzw
        dp4 r1.z, cb0[49].xyzw, r3.xyzw
        div r3.xy, r4.xyxx, r1.zzzz
        mad r1.x, r1.x, cb0[42].w, -cb0[45].w
        ge r4.xy, r3.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
        ge r4.zw, l(0.000000, 0.000000, 1.000000, 1.000000), r3.xxxy
        and r1.z, r4.z, r4.x
        and r1.z, r4.y, r1.z
        and r1.z, r4.w, r1.z
        ge r2.w, l(1.000000), r1.x
        and r1.z, r1.z, r2.w
        if_nz r1.z
          sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r3.xyxx, t4.xxxx, s0, r1.x
        else
          mov r1.w, l(1.000000)
        endif
      endif
    endif
  endif
else
  mov r1.w, l(1.000000)
endif
movc r0.z, r0.z, l(1.000000), r1.w
div r0.w, r0.w, cb0[30].y
min r0.w, r0.w, cb0[41].x
mul r1.xz, v0.xxyx, l(0.015625, 0.000000, 0.015625, 0.000000)
sample_indexable(texture2d)(float,float,float,float) r1.xz, r1.xzxx, t2.xywz, s4
mad r4.xyzw, cb0[39].zwzw, l(50.000000, 50.000000, 40.000000, 40.000000), r0.xyxy
sample_indexable(texture2d)(float,float,float,float) r3.x, r4.xyxx, t3.wxzy, s3
sample_indexable(texture2d)(float,float,float,float) r3.y, r4.zwzz, t3.xwzy, s3
mad r4.xy, cb0[39].zwzz, l(30.000000, 30.000000, 0.000000, 0.000000), r0.xyxx
sample_indexable(texture2d)(float,float,float,float) r3.w, r4.xyxx, t3.xyzw, s3
min r3.xyw, r0.zzzz, r3.xyxw
mul r1.z, r1.z, l(0.000976562500)
mad r1.w, cb0[1].z, v0.x, cb0[3].z
mad r1.w, cb0[2].z, v0.y, r1.w
mov r2.w, l(0)
mov r4.xyzw, l(0,0,0,0)
loop
  ige r5.x, r4.w, l(16)
  breakc_nz r5.x
  itof r5.x, r4.w
  add r5.x, r1.x, r5.x
  mad r5.x, r5.x, l(0.062500), r1.z
  mul r5.x, r0.w, r5.x
  mad r5.x, r1.w, r5.x, cb0[0].z
  add r5.y, -r5.x, -cb0[44].w
  mul r5.y, r5.y, cb0[43].w
  mul_sat r5.y, r5.y, l(0.100000)
  max r2.w, r2.w, r5.y
  ge r5.x, -cb0[44].w, r5.x
  movc r5.xyz, r5.xxxx, r3.xywx, r0.zzzz
  add r4.xyz, r4.xyzx, r5.xyzx
  iadd r4.w, r4.w, l(1)
endloop
mul r1.xzw, r4.xxyz, l(0.062500, 0.000000, 0.062500, 0.062500)
mul r0.z, r2.w, r2.w
mad r3.xyw, -r4.xyxz, l(0.062500, 0.062500, 0.000000, 0.062500), l(1.000000, 1.000000, 0.000000, 1.000000)
mad r1.xzw, r0.zzzz, r3.xxyw, r1.xxzw
sample_indexable(texture2d)(float,float,float,float) r0.x, r0.xyxx, t3.wxyz, s3
mad_sat r0.yz, r0.xxxx, cb0[38].xxzx, cb0[38].yywy
mul r0.w, v2.z, cb0[52].x
lt r2.w, l(0.010000), |r0.w|
mul r3.x, r0.w, l(1.442695)
exp r3.x, r3.x
add r3.x, r3.x, l(-1.000000)
div r0.w, r3.x, r0.w
movc r0.w, r2.w, r0.w, l(1.000000)
sqrt r1.y, r1.y
mul r2.w, r1.y, cb0[52].y
mul r0.w, r0.w, r2.w
exp r0.w, -r0.w
min r0.w, r0.w, l(1.000000)
mad_sat r2.w, r1.y, cb0[27].x, cb0[27].y
add r3.x, -r2.w, l(2.000000)
mul r2.w, r2.w, r3.x
mad r2.w, r2.w, cb0[27].z, cb0[27].w
add r0.w, -r0.w, l(1.000000)
mad r0.w, -r0.w, r2.w, l(1.000000)
max_sat r0.w, r0.w, cb0[52].w
mad_sat r2.w, r3.z, cb0[31].x, cb0[31].y
add r3.x, -r2.w, l(2.000000)
mul r2.w, r2.w, r3.x
mad r3.xyz, r2.wwww, cb0[18].xyzx, cb0[40].xyzx
mul_sat r1.y, r1.y, cb0[28].w
log r1.y, r1.y
mul r1.y, r1.y, cb0[31].w
exp r1.y, r1.y
dp3 r2.x, r2.xyzx, cb0[57].xyzx
mad r2.x, r2.x, -cb0[31].z, cb0[31].z
exp r2.x, r2.x
mul r1.y, r1.y, r2.x
mul r2.xyz, r1.yyyy, cb0[28].xyzx
mul r2.xyz, r0.yyyy, r2.xyzx
mad r2.xyz, r3.xyzx, r0.zzzz, r2.xyzx
mul r3.xyz, r2.xyzx, cb0[54].xxxx
mad r2.xyz, -r2.xyzx, cb0[54].xxxx, r2.xyzx
mad r0.xyz, r0.xxxx, r2.xyzx, r3.xyzx
mad r1.xyz, cb0[43].xyzx, r1.xzwx, -r0.xyzx
mad r0.xyz, r0.wwww, r1.xyzx, r0.xyzx
mul o0.xyz, r0.xyzx, cb2[2].wwww
ret
// Approximately 218 instruction slots used

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
