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

cbuffer PER_BATCH : register(b0)
{
  row_major float4x4 mViewProjPrev : packoffset(c0);
  float4 PS_WorldViewPos : packoffset(c4);
  float4 vBBoxMin : packoffset(c5);
  float4 vBBoxMax : packoffset(c6);
  float4 PS_NearFarClipDist : packoffset(c7);
  float4 PS_HPosScale : packoffset(c8);
}

cbuffer PER_INSTANCE : register(b1)
{
  row_major float4x4 mViewProj : packoffset(c0);
}

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

cbuffer PER_MATERIAL : register(b3)
{
  float4 MatSpecColor : packoffset(c29);
  float3 __0FoamSoftIntersectionFactor__1FoamAmount__2FoamTilling__3 : packoffset(c31);
  float2 __0RealtimeReflMul__1EnvCubeReflMul__2__3 : packoffset(c33);
  float2 __0DetailNormalsScale__1NormalsScale__2__3 : packoffset(c34);
  float4 __0__1__2__3EnvCubeScale : packoffset(c35);
  float4 __0SoftIntersectionFactor__1RainTilling__2DetailTilling__3Tilling : packoffset(c36);
}


cbuffer imported : register(b13)
 {
   row_major float4x4 g_VS_ViewProjMatr : packoffset(c0);
   float4 g_VS_SunLightDir : packoffset(c4);
   float4 g_VS_WorldViewPos : packoffset(c6);
   float4 g_VS_ScreenSize : packoffset(c7);
   float4 g_VS_AnimGenParams : packoffset(c8);
   float4 g_VS_NearFarClipDist : packoffset(c9);
   row_major float4x4 g_VS_ViewProjZeroMatr : packoffset(c10);
   float4 g_VS_HPosScale : packoffset(c21);
 }

SamplerState RefractionHalfResSampler_s : register(s0);
SamplerState ReflSamplerPrev_s : register(s1);
SamplerState envMapSamplerCUBE_s : register(s2);
SamplerState sceneDepthSamplerScaled_s : register(s3);
Texture2D<float4> sceneDepthSamplerScaled : register(t0);
TextureCube<float4> envMapSamplerCUBE : register(t1);
Texture2D<float4> RefractionHalfResSampler : register(t2);
Texture2D<float4> ReflSamplerPrev : register(t3);


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

void main(
  float4 v0 : SV_Position0,
  float4 v1 : TEXCOORD0,
  float4 v2 : TEXCOORD1,
  float4 v3 : TEXCOORD2,
  float4 v4 : TEXCOORD3,
  float4 v5 : TEXCOORD4,
  out float4 o0 : SV_Target0)
{
  float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14;
  uint4 bitmask, uiDest;
  float4 fDest;
  row_major matrix vp;
row_major matrix ivp;

vp=g_VS_ViewProjMatr;
ivp = inverse(g_VS_ViewProjMatr);

  r0.z = PS_NearFarClipDist.w * v2.w;
  r1.xy = v2.xy / v2.ww;
  r1.x = sceneDepthSamplerScaled.Sample(sceneDepthSamplerScaled_s, r1.xy).x;
  r1.x = -v2.w * PS_NearFarClipDist.w + r1.x;
  r1.x = cmp(r1.x < 0);
  if (r1.x != 0) discard;
  r1.xyz = PS_WorldViewPos.xyz + -v5.xyz;
  r1.xyz = r1.zzz * float3(-0,-0,-2) + r1.xyz;
  r1.w = dot(r1.xyz, r1.xyz);
  r1.w = rsqrt(r1.w);
  r1.xyz = r1.xyz * r1.www;

float4 stereo = StereoParams.Load(0);
float4 params = IniParams.Load(0);
 r1.x -= stereo.x * (r1.w - stereo.y)/20;
 r1.y -= stereo.x * (r1.w - stereo.y)/20;
 float4 tmp=mul(vp,r1);
 tmp=tmp/tmp.w;
 tmp.x-=stereo.x * (tmp.w - stereo.y);
 r1=mul(ivp,tmp)/tmp.w;

  r2.xyz = vBBoxMax.xyz + vBBoxMin.xyz;
  r3.xyz = float3(0.5,0.5,0.5) * r2.xyz;
  r4.xyz = -r2.xyz * float3(0.5,0.5,0.5) + vBBoxMax.xyz;
  r4.xyz = __0__1__2__3EnvCubeScale.www * r4.xyz + r3.xyz;
  r5.xyz = -r2.xyz * float3(0.5,0.5,0.5) + vBBoxMin.xyz;
  r3.xyz = __0__1__2__3EnvCubeScale.www * r5.xyz + r3.xyz;
  r4.xyz = -v5.xyz + r4.xyz;
  r4.xyz = r4.xyz / r1.xyz;
  r3.xyz = -v5.xyz + r3.xyz;
  r3.xyz = r3.xyz / r1.xyz;
  r5.xyz = cmp(float3(0,0,0) < r1.xyz);
  r3.xyz = r5.xyz ? r3.xyz : r4.xyz;
  r1.w = min(r3.x, r3.y);
  r1.w = min(r1.w, r3.z);
  r1.xyz = r1.xyz * r1.www + v5.xyz;
  r1.xyz = -r2.xyz * float3(0.5,0.5,0.5) + r1.xyz;
  r1.w = -MatSpecColor.w * 6 + 6;
  r1.xyz = envMapSamplerCUBE.SampleLevel(envMapSamplerCUBE_s, r1.xyz, r1.w).xyz;
  r1.xyz = MatSpecColor.xyz * r1.xyz;
  r1.w = 0.150000006 * PS_HPosScale.y;
  r2.xyz = -PS_WorldViewPos.xyz + v5.xyz;
  r2.w = dot(r2.xyz, r2.xyz);
  r2.w = rsqrt(r2.w);
  r2.xyz = r2.xyz * r2.www;
  r3.xyz = r2.zzz * float3(-0,-0,-2) + r2.xyz;
  r2.w = dot(r3.xyz, r3.xyz);
  r2.w = rsqrt(r2.w);
  r3.xyz = r3.xyz * r2.www;
  r4.xyz = v5.xyz;
  r4.w = 1;
  r5.x = dot(mViewProj._m00_m01_m02_m03, r4.xyzw);
  r5.y = dot(mViewProj._m10_m11_m12_m13, r4.xyzw);
  r0.w = dot(mViewProj._m30_m31_m32_m33, r4.xyzw);
  r2.w = 0.5 * r0.w;
  r5.xy = r5.xy * float2(0.5,-0.5) + r2.ww;
  r0.xy = PS_HPosScale.xy * r5.xy;
  r5.xyz = r3.xyz * float3(129,129,129) + v5.xyz;
  r5.w = 1;
  r6.x = dot(mViewProj._m00_m01_m02_m03, r5.xyzw);
  r6.y = dot(mViewProj._m10_m11_m12_m13, r5.xyzw);
  r2.w = dot(mViewProj._m30_m31_m32_m33, r5.xyzw);
  r3.w = 0.5 * r2.w;
  r5.xy = r6.xy * float2(0.5,-0.5) + r3.ww;
  r5.xy = PS_HPosScale.xy * r5.xy;
  r5.xy = r5.xy / r2.ww;
  r2.w = 1 + -r5.y;
  r2.w = min(r2.w, r5.y);
  r3.w = cmp(r1.w < r2.w);
  r2.w = saturate(r2.w / r1.w);
  r6.w = r3.w ? 1 : r2.w;
  r2.w = 3.1875 / PS_NearFarClipDist.y;
  r7.xyz = r3.xyz * float3(17,17,17) + v5.xyz;
  r7.w = 1;
  r8.x = dot(mViewProj._m00_m01_m02_m03, r7.xyzw);
  r8.y = dot(mViewProj._m10_m11_m12_m13, r7.xyzw);
  r3.w = dot(mViewProj._m20_m21_m22_m23, r7.xyzw);
  r7.w = dot(mViewProj._m30_m31_m32_m33, r7.xyzw);
  r3.w = r3.w / r7.w;
  r3.w = -g_PS_ProjRatio.x + r3.w;
  r7.z = g_PS_ProjRatio.y / r3.w;
  r3.w = 0.5 * r7.w;
  r5.zw = r8.xy * float2(0.5,-0.5) + r3.ww;
  r7.xy = PS_HPosScale.xy * r5.zw;
  r8.xyzw = r7.xyzw + -r0.xyzw;
  r9.xyzw = r8.xyzw * float4(0.125,0.125,0.125,0.125) + r0.xyzw;
  r5.zw = r9.xy / r9.ww;
  r3.w = sceneDepthSamplerScaled.Sample(sceneDepthSamplerScaled_s, r5.zw).x;
  r3.w = r3.w + -r9.z;
  r3.w = cmp(abs(r3.w) >= r2.w);
  r9.xyzw = r8.xyzw * float4(0.25,0.25,0.25,0.25) + r0.xyzw;
  r5.zw = r9.xy / r9.ww;
  r5.z = sceneDepthSamplerScaled.Sample(sceneDepthSamplerScaled_s, r5.zw).x;
  r10.xyzw = r8.xyzw * float4(0.375,0.375,0.375,0.375) + r0.xyzw;
  r9.xy = r10.xy / r10.ww;
  r5.w = sceneDepthSamplerScaled.Sample(sceneDepthSamplerScaled_s, r9.xy).x;
  r11.xyzw = r8.xyzw * float4(0.5,0.5,0.5,0.5) + r0.xyzw;
  r9.xy = r11.xy / r11.ww;
  r9.x = sceneDepthSamplerScaled.Sample(sceneDepthSamplerScaled_s, r9.xy).x;
  r12.xyzw = r8.xyzw * float4(0.625,0.625,0.625,0.625) + r0.xyzw;
  r9.yw = r12.xy / r12.ww;
  r9.y = sceneDepthSamplerScaled.Sample(sceneDepthSamplerScaled_s, r9.yw).x;
  r13.xyzw = r8.xyzw * float4(0.75,0.75,0.75,0.75) + r0.xyzw;
  r10.xy = r13.xy / r13.ww;
  r9.w = sceneDepthSamplerScaled.Sample(sceneDepthSamplerScaled_s, r10.xy).x;
  r14.xyzw = r8.xyzw * float4(0.875,0.875,0.875,0.875) + r0.xyzw;
  r10.xy = r14.xy / r14.ww;
  r0.z = sceneDepthSamplerScaled.Sample(sceneDepthSamplerScaled_s, r10.xy).x;
  r7.xy = r7.xy / r7.ww;
  r7.x = sceneDepthSamplerScaled.Sample(sceneDepthSamplerScaled_s, r7.xy).x;
  if (r3.w != 0) {
    r3.w = r5.z + -r9.z;
    r3.w = cmp(abs(r3.w) >= r2.w);
    if (r3.w != 0) {
      r3.w = r5.w + -r10.z;
      r3.w = cmp(abs(r3.w) >= r2.w);
      if (r3.w != 0) {
        r3.w = r9.x + -r11.z;
        r3.w = cmp(abs(r3.w) >= r2.w);
        if (r3.w != 0) {
          r3.w = r9.y + -r12.z;
          r3.w = cmp(abs(r3.w) >= r2.w);
          if (r3.w != 0) {
            r3.w = r9.w + -r13.z;
            r3.w = cmp(abs(r3.w) >= r2.w);
            if (r3.w != 0) {
              r0.z = r0.z + -r14.z;
              r0.z = cmp(abs(r0.z) >= r2.w);
              if (r0.z != 0) {
                r0.z = r7.x + -r7.z;
                r0.z = cmp(abs(r0.z) >= r2.w);
                r0.z = r0.z ? 0 : 1;
              } else {
                r0.z = 0.875;
              }
            } else {
              r0.z = 0.75;
            }
          } else {
            r0.z = 0.625;
          }
        } else {
          r0.z = 0.5;
        }
      } else {
        r0.z = 0.375;
      }
    } else {
      r0.z = 0.25;
    }
  } else {
    r0.z = 0.125;
  }
  r2.w = cmp(0 < r0.z);
  if (r2.w != 0) {
    r0.xyw = r8.xyw * r0.zzz + r0.xyw;
    r0.xy = r0.xy / r0.ww;
    r6.xyz = RefractionHalfResSampler.SampleLevel(RefractionHalfResSampler_s, r0.xy, 0).xyz;
    r0.x = 1 + -r0.y;
    r0.x = min(r0.x, r0.y);
    r0.y = cmp(r1.w < r0.x);
    r0.x = saturate(r0.x / r1.w);
    r0.x = r0.y ? 1 : r0.x;
    r0.y = 1 + -r0.z;
    r6.w = r0.x * r0.y + r6.w;
  } else {
    r6.xyz = RefractionHalfResSampler.SampleLevel(RefractionHalfResSampler_s, r5.xy, 0).xyz;
  }
  r0.x = dot(r2.xyz, r3.xyz);
  r0.x = saturate(0.5 + r0.x);
  r0.xyzw = r6.xyzw * r0.xxxx;
  r0.xyz = r0.xyz * r0.www;
  r0.xyz = r0.xyz / g_PS_SunLightDir.www;
  r1.xyz = __0RealtimeReflMul__1EnvCubeReflMul__2__3.yyy * r1.xyz;
  r0.w = min(1, r0.w);
  r0.xyz = r0.xyz * __0RealtimeReflMul__1EnvCubeReflMul__2__3.xxx + -r1.xyz;
  r0.xyz = r0.www * r0.xyz + r1.xyz;
  r1.x = dot(mViewProjPrev._m00_m01_m02_m03, r4.xyzw);
  r1.y = dot(mViewProjPrev._m10_m11_m12_m13, r4.xyzw);
  r0.w = dot(mViewProjPrev._m30_m31_m32_m33, r4.xyzw);
  r1.xy = r1.xy * float2(1,-1) + r0.ww;
  r1.xy = float2(0.5,0.5) * r1.xy;
  r1.xy = r1.xy / r0.ww;
  r2.x = PS_HPosScale.z * r1.x;
  r0.w = 1 + -r1.y;
  r2.y = -r0.w * PS_HPosScale.w + 1;
  r1.xyz = ReflSamplerPrev.Sample(ReflSamplerPrev_s, r2.xy).xyz;
  r1.xyz = r1.xyz / g_PS_SunLightDir.www;
  r2.xyz = (int3)r1.xyz & int3(0,0,0);
  r2.xyz = cmp((int3)r2.xyz != int3(0,0,0));
  r1.xyz = r2.xyz ? r1.xyz : 0;
  r1.xyz = float3(0.25,0.25,0.25) * r1.xyz;
  r0.xyz = r0.xyz * float3(0.75,0.75,0.75) + r1.xyz;
  o0.xyz = g_PS_SunLightDir.www * r0.xyz;
  o0.w = 1;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.30.960.8229
//
//   using 3Dmigoto v1.3.10 on Wed May 02 20:03:28 2018
//
//
// Buffer Definitions:
//
// cbuffer PER_BATCH
// {
//
//   row_major float4x4 mViewProjPrev;  // Offset:    0 Size:    64
//   float4 PS_WorldViewPos;            // Offset:   64 Size:    16
//   float4 vBBoxMin;                   // Offset:   80 Size:    16
//   float4 vBBoxMax;                   // Offset:   96 Size:    16
//   float4 PS_NearFarClipDist;         // Offset:  112 Size:    16
//   float4 PS_HPosScale;               // Offset:  128 Size:    16
//
// }
//
// cbuffer PER_INSTANCE
// {
//
//   row_major float4x4 mViewProj;      // Offset:    0 Size:    64
//
// }
//
// cbuffer PER_FRAME
// {
//
//   float4 g_PS_SunLightDir;           // Offset:   32 Size:    16
//   float4 g_PS_ProjRatio;             // Offset: 3568 Size:    16
//
// }
//
// cbuffer PER_MATERIAL
// {
//
//   float4 MatSpecColor;               // Offset:  464 Size:    16
//   float3 __0FoamSoftIntersectionFactor__1FoamAmount__2FoamTilling__3;// Offset:  496 Size:    12 [unused]
//   float2 __0RealtimeReflMul__1EnvCubeReflMul__2__3;// Offset:  528 Size:     8
//   float2 __0DetailNormalsScale__1NormalsScale__2__3;// Offset:  544 Size:     8 [unused]
//   float4 __0__1__2__3EnvCubeScale;   // Offset:  560 Size:    16
//   float4 __0SoftIntersectionFactor__1RainTilling__2DetailTilling__3Tilling;// Offset:  576 Size:    16 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// RefractionHalfResSampler          sampler      NA          NA    0        1
// ReflSamplerPrev                   sampler      NA          NA    1        1
// envMapSamplerCUBE                 sampler      NA          NA    2        1
// sceneDepthSamplerScaled           sampler      NA          NA    3        1
// sceneDepthSamplerScaled           texture  float4          2d    0        1
// envMapSamplerCUBE                 texture  float4        cube    1        1
// RefractionHalfResSampler          texture  float4          2d    2        1
// ReflSamplerPrev                   texture  float4          2d    3        1
// PER_BATCH                         cbuffer      NA          NA    0        1
// PER_INSTANCE                      cbuffer      NA          NA    1        1
// PER_FRAME                         cbuffer      NA          NA    2        1
// PER_MATERIAL                      cbuffer      NA          NA    3        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float
// TEXCOORD                 0   xyzw        1     NONE   float
// TEXCOORD                 1   xyzw        2     NONE   float   xy w
// TEXCOORD                 2   xyzw        3     NONE   float
// TEXCOORD                 3   xyzw        4     NONE   float
// TEXCOORD                 4   xyzw        5     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[9], immediateIndexed
dcl_constantbuffer cb1[4], immediateIndexed
dcl_constantbuffer cb2[224], immediateIndexed
dcl_constantbuffer cb3[36], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texturecube (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_input_ps linear v2.xyw
dcl_input_ps linear v5.xyz
dcl_output o0.xyzw
dcl_temps 15
mul r0.z, v2.w, cb0[7].w
div r1.xy, v2.xyxx, v2.wwww
sample_indexable(texture2d)(float,float,float,float) r1.x, r1.xyxx, t0.xyzw, s3
mad r1.x, -v2.w, cb0[7].w, r1.x
lt r1.x, r1.x, l(0.000000)
discard_nz r1.x
add r1.xyz, -v5.xyzx, cb0[4].xyzx
mad r1.xyz, r1.zzzz, l(-0.000000, -0.000000, -2.000000, 0.000000), r1.xyzx
dp3 r1.w, r1.xyzx, r1.xyzx
rsq r1.w, r1.w
mul r1.xyz, r1.wwww, r1.xyzx
add r2.xyz, cb0[5].xyzx, cb0[6].xyzx
mul r3.xyz, r2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
mad r4.xyz, -r2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[6].xyzx
mad r4.xyz, cb3[35].wwww, r4.xyzx, r3.xyzx
mad r5.xyz, -r2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[5].xyzx
mad r3.xyz, cb3[35].wwww, r5.xyzx, r3.xyzx
add r4.xyz, r4.xyzx, -v5.xyzx
div r4.xyz, r4.xyzx, r1.xyzx
add r3.xyz, r3.xyzx, -v5.xyzx
div r3.xyz, r3.xyzx, r1.xyzx
lt r5.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r1.xyzx
movc r3.xyz, r5.xyzx, r3.xyzx, r4.xyzx
min r1.w, r3.y, r3.x
min r1.w, r3.z, r1.w
mad r1.xyz, r1.xyzx, r1.wwww, v5.xyzx
mad r1.xyz, -r2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r1.xyzx
mad r1.w, -cb3[29].w, l(6.000000), l(6.000000)
sample_l_indexable(texturecube)(float,float,float,float) r1.xyz, r1.xyzx, t1.xyzw, s2, r1.w
mul r1.xyz, r1.xyzx, cb3[29].xyzx
mul r1.w, cb0[8].y, l(0.150000)
add r2.xyz, v5.xyzx, -cb0[4].xyzx
dp3 r2.w, r2.xyzx, r2.xyzx
rsq r2.w, r2.w
mul r2.xyz, r2.wwww, r2.xyzx
mad r3.xyz, r2.zzzz, l(-0.000000, -0.000000, -2.000000, 0.000000), r2.xyzx
dp3 r2.w, r3.xyzx, r3.xyzx
rsq r2.w, r2.w
mul r3.xyz, r2.wwww, r3.xyzx
mov r4.xyz, v5.xyzx
mov r4.w, l(1.000000)
dp4 r5.x, cb1[0].xyzw, r4.xyzw
dp4 r5.y, cb1[1].xyzw, r4.xyzw
dp4 r0.w, cb1[3].xyzw, r4.xyzw
mul r2.w, r0.w, l(0.500000)
mad r5.xy, r5.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000), r2.wwww
mul r0.xy, r5.xyxx, cb0[8].xyxx
mad r5.xyz, r3.xyzx, l(129.000000, 129.000000, 129.000000, 0.000000), v5.xyzx
mov r5.w, l(1.000000)
dp4 r6.x, cb1[0].xyzw, r5.xyzw
dp4 r6.y, cb1[1].xyzw, r5.xyzw
dp4 r2.w, cb1[3].xyzw, r5.xyzw
mul r3.w, r2.w, l(0.500000)
mad r5.xy, r6.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000), r3.wwww
mul r5.xy, r5.xyxx, cb0[8].xyxx
div r5.xy, r5.xyxx, r2.wwww
add r2.w, -r5.y, l(1.000000)
min r2.w, r5.y, r2.w
lt r3.w, r1.w, r2.w
div_sat r2.w, r2.w, r1.w
movc r6.w, r3.w, l(1.000000), r2.w
div r2.w, l(3.187500), cb0[7].y
mad r7.xyz, r3.xyzx, l(17.000000, 17.000000, 17.000000, 0.000000), v5.xyzx
mov r7.w, l(1.000000)
dp4 r8.x, cb1[0].xyzw, r7.xyzw
dp4 r8.y, cb1[1].xyzw, r7.xyzw
dp4 r3.w, cb1[2].xyzw, r7.xyzw
dp4 r7.w, cb1[3].xyzw, r7.xyzw
div r3.w, r3.w, r7.w
add r3.w, r3.w, -cb2[223].x
div r7.z, cb2[223].y, r3.w
mul r3.w, r7.w, l(0.500000)
mad r5.zw, r8.xxxy, l(0.000000, 0.000000, 0.500000, -0.500000), r3.wwww
mul r7.xy, r5.zwzz, cb0[8].xyxx
add r8.xyzw, -r0.xyzw, r7.xyzw
mad r9.xyzw, r8.xyzw, l(0.125000, 0.125000, 0.125000, 0.125000), r0.xyzw
div r5.zw, r9.xxxy, r9.wwww
sample_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t0.yzwx, s3
add r3.w, -r9.z, r3.w
ge r3.w, |r3.w|, r2.w
mad r9.xyzw, r8.xyzw, l(0.250000, 0.250000, 0.250000, 0.250000), r0.xyzw
div r5.zw, r9.xxxy, r9.wwww
sample_indexable(texture2d)(float,float,float,float) r5.z, r5.zwzz, t0.yzxw, s3
mad r10.xyzw, r8.xyzw, l(0.375000, 0.375000, 0.375000, 0.375000), r0.xyzw
div r9.xy, r10.xyxx, r10.wwww
sample_indexable(texture2d)(float,float,float,float) r5.w, r9.xyxx, t0.yzwx, s3
mad r11.xyzw, r8.xyzw, l(0.500000, 0.500000, 0.500000, 0.500000), r0.xyzw
div r9.xy, r11.xyxx, r11.wwww
sample_indexable(texture2d)(float,float,float,float) r9.x, r9.xyxx, t0.xyzw, s3
mad r12.xyzw, r8.xyzw, l(0.625000, 0.625000, 0.625000, 0.625000), r0.xyzw
div r9.yw, r12.xxxy, r12.wwww
sample_indexable(texture2d)(float,float,float,float) r9.y, r9.ywyy, t0.yxzw, s3
mad r13.xyzw, r8.xyzw, l(0.750000, 0.750000, 0.750000, 0.750000), r0.xyzw
div r10.xy, r13.xyxx, r13.wwww
sample_indexable(texture2d)(float,float,float,float) r9.w, r10.xyxx, t0.yzwx, s3
mad r14.xyzw, r8.xyzw, l(0.875000, 0.875000, 0.875000, 0.875000), r0.xyzw
div r10.xy, r14.xyxx, r14.wwww
sample_indexable(texture2d)(float,float,float,float) r0.z, r10.xyxx, t0.yzxw, s3
div r7.xy, r7.xyxx, r7.wwww
sample_indexable(texture2d)(float,float,float,float) r7.x, r7.xyxx, t0.xyzw, s3
if_nz r3.w
  add r3.w, -r9.z, r5.z
  ge r3.w, |r3.w|, r2.w
  if_nz r3.w
    add r3.w, -r10.z, r5.w
    ge r3.w, |r3.w|, r2.w
    if_nz r3.w
      add r3.w, -r11.z, r9.x
      ge r3.w, |r3.w|, r2.w
      if_nz r3.w
        add r3.w, -r12.z, r9.y
        ge r3.w, |r3.w|, r2.w
        if_nz r3.w
          add r3.w, -r13.z, r9.w
          ge r3.w, |r3.w|, r2.w
          if_nz r3.w
            add r0.z, -r14.z, r0.z
            ge r0.z, |r0.z|, r2.w
            if_nz r0.z
              add r0.z, -r7.z, r7.x
              ge r0.z, |r0.z|, r2.w
              movc r0.z, r0.z, l(0), l(1.000000)
            else
              mov r0.z, l(0.875000)
            endif
          else
            mov r0.z, l(0.750000)
          endif
        else
          mov r0.z, l(0.625000)
        endif
      else
        mov r0.z, l(0.500000)
      endif
    else
      mov r0.z, l(0.375000)
    endif
  else
    mov r0.z, l(0.250000)
  endif
else
  mov r0.z, l(0.125000)
endif
lt r2.w, l(0.000000), r0.z
if_nz r2.w
  mad r0.xyw, r8.xyxw, r0.zzzz, r0.xyxw
  div r0.xy, r0.xyxx, r0.wwww
  sample_l_indexable(texture2d)(float,float,float,float) r6.xyz, r0.xyxx, t2.xyzw, s0, l(0.000000)
  add r0.x, -r0.y, l(1.000000)
  min r0.x, r0.y, r0.x
  lt r0.y, r1.w, r0.x
  div_sat r0.x, r0.x, r1.w
  movc r0.x, r0.y, l(1.000000), r0.x
  add r0.y, -r0.z, l(1.000000)
  mad r6.w, r0.x, r0.y, r6.w
else
  sample_l_indexable(texture2d)(float,float,float,float) r6.xyz, r5.xyxx, t2.xyzw, s0, l(0.000000)
endif
dp3 r0.x, r2.xyzx, r3.xyzx
add_sat r0.x, r0.x, l(0.500000)
mul r0.xyzw, r0.xxxx, r6.xyzw
mul r0.xyz, r0.wwww, r0.xyzx
div r0.xyz, r0.xyzx, cb2[2].wwww
mul r1.xyz, r1.xyzx, cb3[33].yyyy
min r0.w, r0.w, l(1.000000)
mad r0.xyz, r0.xyzx, cb3[33].xxxx, -r1.xyzx
mad r0.xyz, r0.wwww, r0.xyzx, r1.xyzx
dp4 r1.x, cb0[0].xyzw, r4.xyzw
dp4 r1.y, cb0[1].xyzw, r4.xyzw
dp4 r0.w, cb0[3].xyzw, r4.xyzw
mad r1.xy, r1.xyxx, l(1.000000, -1.000000, 0.000000, 0.000000), r0.wwww
mul r1.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
div r1.xy, r1.xyxx, r0.wwww
mul r2.x, r1.x, cb0[8].z
add r0.w, -r1.y, l(1.000000)
mad r2.y, -r0.w, cb0[8].w, l(1.000000)
sample_indexable(texture2d)(float,float,float,float) r1.xyz, r2.xyxx, t3.xyzw, s1
div r1.xyz, r1.xyzx, cb2[2].wwww
and r2.xyz, r1.xyzx, l(0x7f800000, 0x7f800000, 0x7f800000, 0)
ine r2.xyz, r2.xyzx, l(0x7f800000, 0x7f800000, 0x7f800000, 0)
and r1.xyz, r1.xyzx, r2.xyzx
mul r1.xyz, r1.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000)
mad r0.xyz, r0.xyzx, l(0.750000, 0.750000, 0.750000, 0.000000), r1.xyzx
mul o0.xyz, r0.xyzx, cb2[2].wwww
mov o0.w, l(1.000000)
ret
// Approximately 186 instruction slots used

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