//not sure what // g_RainOcc_TransMat PS // VS cfa09d0345e340b8



//NEW
cbuffer PER_FRAME : register(b13)
{
  row_major float4x4 g_VS_ViewProjMatr : packoffset(c0);
  float4 g_VS_ScreenSize : packoffset(c7);
  float4 g_VS_NearFarClipDist : packoffset(c9);
}

cbuffer PER_BATCH : register(b0)
{
  float4 g_RainVolumeParams : packoffset(c0);
  float4 g_RainColorMultipliers : packoffset(c1);
  float4 g_WorldViewPos : packoffset(c2);
  float4 g_RainPuddleParams0 : packoffset(c3);
  float4 g_RainPuddleParams1 : packoffset(c4);
  float4 g_RainAnimParams : packoffset(c5);
  float4 g_RainOcc_WindOffs : packoffset(c6);
  row_major float4x4 g_RainOcc_TransMat : packoffset(c7);
  float4 PS_NearFarClipDist : packoffset(c11);
  float4 PS_ScreenSize : packoffset(c12);
  float4 PS_HPosScale : packoffset(c13);
}

SamplerState surfaceFlowMap_s : register(s0);
SamplerState sceneDepthMapSampler_s : register(s1);
SamplerState normalsSampler2D_s : register(s2);
SamplerState rainOccMap_s : register(s4);
SamplerState rainRipplesMap_s : register(s5);
SamplerState rainSpatterMap_s : register(s6);
SamplerState puddleMaskMap_s : register(s7);
SamplerState _tex9_s : register(s9);
SamplerState _texA_s : register(s10);
SamplerState _texB_s : register(s11);
Texture2D<float4> surfaceFlowMap : register(t0);
Texture2D<float4> sceneDepthMapSampler : register(t1);
Texture2D<float4> normalsSampler2D : register(t2);
Texture2D<float4> rainOccMap : register(t4);
Texture2D<float4> rainRipplesMap : register(t5);
Texture2D<float4> rainSpatterMap : register(t6);
Texture2D<float4> puddleMaskMap : register(t7);
Texture2D<float4> _tex9 : register(t9);
Texture2D<float4> _texA : register(t10);
Texture2D<float4> _texB : register(t11);
Texture2D<uint2> DeferredRainGBuffer_StencilTex : register(t12);


// 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,
  out float4 o0 : SV_Target0,
  out float4 o1 : SV_Target1,
  out float4 o2 : SV_Target2)
{
  float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.x = sceneDepthMapSampler.Sample(sceneDepthMapSampler_s, v1.xy).x;

  //Fix
  float4 stereo = StereoParams.Load(0);
  matrix vp = g_VS_ViewProjMatr;
  matrix ivp = inverse(vp);
  float4 tmp = mul(vp, v2 * r0.x);
  tmp.x -= stereo.x * (tmp.w - stereo.y);
  v2 = mul(ivp, tmp) / r0.x;

  r1.xyz = r0.xxx * v2.xyz + g_WorldViewPos.xyz;
  r2.xyzw = _tex9.Sample(_tex9_s, v1.xy).xyzw;
  r0.yzw = r2.xyz * float3(2,2,2) + float3(-1,-1,-1);
  r2.x = dot(r0.yzw, r0.yzw);
  r2.x = rsqrt(r2.x);
  r0.yzw = r2.xxx * r0.yzw;
  r3.xyzw = float4(0.100000001,0.100000001,0.699999988,0.699999988) * r1.xyxy;
  r2.x = puddleMaskMap.Sample(puddleMaskMap_s, r3.xy).x;
  r2.y = rainSpatterMap.Sample(rainSpatterMap_s, r3.zw).x;
  r3.xy = float2(0.300000012,0.300000012) * r1.xy;
  r2.z = rainSpatterMap.Sample(rainSpatterMap_s, r3.xy).x;
  r3.x = r2.y + r2.z;
  r3.yzw = g_RainVolumeParams.xyz + -r1.xyz;
  r3.yzw = g_RainVolumeParams.www * r3.yzw;
  r3.y = dot(r3.yzw, -r3.yzw);
  r3.y = saturate(1 + r3.y);
  r0.x = saturate(g_RainColorMultipliers.w * r0.x + 10);
  r0.x = r3.y * r0.x;
  r3.y = saturate(r0.w);
  r3.z = 0.200000003 + -r3.y;
  r3.y = 1 / -r3.y;
  r3.y = saturate(r3.z * r3.y);
  r3.z = r3.y * -2 + 3;
  r3.y = r3.y * r3.y;
  r3.y = r3.z * r3.y;
  r0.x = r3.y * r0.x;
  r1.w = 1;
  r4.x = dot(g_RainOcc_TransMat._m00_m01_m02_m03, r1.xyzw);
  r3.y = dot(g_RainOcc_TransMat._m10_m11_m12_m13, r1.xyzw);
  r1.w = dot(g_RainOcc_TransMat._m20_m21_m22_m23, r1.xyzw);
  r4.y = 1 + -r3.y;
  r3.y = r3.x * 0.0078125 + -0.00390625;
  r3.yz = r4.xy + r3.yy;
  r4.x = rainOccMap.Sample(rainOccMap_s, r3.yz).x;
  r3.yz = g_RainOcc_WindOffs.xy + r3.yz;
  r4.y = rainOccMap.Sample(rainOccMap_s, r3.yz).x;
  r3.yz = cmp(r4.xy == float2(1,1));
  r4.xy = float2(-0.0299999993,-0.0299999993) + r4.xy;
  r4.xy = cmp(r4.xy < r1.ww);
  r3.yz = (int2)r3.yz | (int2)r4.xy;
  r3.zw = r3.yz ? float2(1,1) : 0;
  r1.w = r3.y ? -1 : -0;
  r1.w = r3.w + r1.w;
  r1.w = r1.w * 0.5 + r3.z;
  r0.x = r1.w * r0.x;
  r3.yz = v1.xy / PS_HPosScale.xy;
  r3.yz = PS_ScreenSize.xy * r3.yz;
  r4.xy = (int2)r3.yz;
  r4.zw = float2(0,0);
  r1.w = DeferredRainGBuffer_StencilTex.Load(r4.xyz).y;
  r1.w = (int)r1.w & 128;
  r3.y = r2.x * 20 + 0.5;
  r3.y = saturate(-g_RainPuddleParams1.x * 20 + r3.y);
  r3.y = r3.y * r0.x;
  r3.y = r1.w ? r3.y : 0;
  r3.z = cmp(r0.x < 0.00100000005);
  r3.w = cmp(g_RainPuddleParams0.z < 0.00100000005);
  r4.x = cmp(r3.y < 0.00100000005);
  r3.w = r3.w ? r4.x : 0;
  r3.z = (int)r3.w | (int)r3.z;
  if (r3.z != 0) discard;
  r4.xyzw = _texB.Sample(_texB_s, v1.xy).xyzw;
  r5.xyzw = _texA.Sample(_texA_s, v1.xy).xyzw;
  r2.w = 3.99609375 * r2.w;
  r3.z = floor(r2.w);
  r3.w = (int)r3.z;
  r4.xyz = r4.xyz * r4.xyz;
  r6.xz = r5.zw * float2(2.00787401,2.00787401) + float2(-1,-1);
  r7.yz = r3.ww ? float2(0,0) : r6.xz;
  r7.x = r5.y;
  r8.y = dot(float3(1,-0.344099998,-0.714100003), r7.xyz);
  r8.xz = r7.zy * float2(1.40199995,1.77199996) + r5.yy;
  r5.y = 3.99609375 * r4.w;
  r4.w = cmp(r4.w >= 0.250244379);
  r5.y = r3.w ? r5.y : 0;
  r5.zw = cmp((int2)r3.ww == int2(1,2));
  r6.y = frac(r2.w);
  r7.y = dot(float3(-0.344099998,1,-0.714100003), r6.xyz);
  r7.xz = r6.zx * float2(1.40199995,1.77199996) + r6.yy;
  r6.yzw = r7.xyz * r7.xyz;
  r6.yzw = r5.zzz ? r6.yzw : 0;
  r6.x = saturate(r6.x);
  r2.w = r5.w ? r6.x : 0;
  r3.w = saturate(r0.w * 5 + -4);
  r6.x = g_RainPuddleParams0.z * r3.w;
  r2.x = r2.x * 0.5 + 0.5;
  r2.x = saturate(r6.x * r2.x);
  r7.xy = g_RainPuddleParams0.xy * float2(0.0500000007,0.0500000007) + r1.xy;
  r7.xy = rainRipplesMap.Sample(rainRipplesMap_s, r7.xy).xy;
  r6.x = r3.w * r3.y;
  r7.z = saturate(r6.x);
  r7.xy = r7.yx * g_RainPuddleParams1.yy + -r0.yz;
  r7.xy = r7.zz * r7.xy + r0.yz;
  r7.z = 0.5 + -r5.x;
  r7.z = saturate(3.33333325 * r7.z);
  r3.y = cmp(0 != r3.y);
  r7.w = 3 * r0.x;
  r8.w = g_RainPuddleParams0.z * r0.x;
  r3.y = r3.y ? r7.w : r8.w;
  r7.w = saturate(g_RainPuddleParams0.w * r7.z);
  r3.y = r7.w * r3.y;
  r3.y = r3.y * -0.800000012 + 1;
  r9.xyz = r4.xyz * r3.yyy;
  r7.z = r7.z * -0.25 + -r5.x;
  r7.w = r2.x * r0.x;
  r7.z = 0.850000024 + r7.z;
  r5.x = r7.w * r7.z + r5.x;
  r7.z = 0.930000007 + -r5.x;
  r5.x = r6.x * r7.z + r5.x;
  r10.xyzw = float4(5,5,0.800000012,0.800000012) * r1.xyxy;
  r6.x = rainSpatterMap.Sample(rainSpatterMap_s, r10.xy).x;
  if (r1.w == 0) {
    r2.z = r6.x;
  }
  r2.z = r3.x + r2.z;
  r2.z = g_RainAnimParams.y + r2.z;
  r2.z = frac(r2.z);
  r2.y = cmp(r2.y >= 0.449999988);
  r2.y = r2.y ? 1.000000 : 0;
  r2.y = r2.z * r2.y;
  r1.xyz = g_WorldViewPos.xyz + -r1.xyz;
  r1.x = dot(r1.xyz, r1.xyz);
  r1.x = sqrt(r1.x);
  r1.xy = float2(0.00999999978,0.0850000009) * r1.xx;
  r1.xy = min(float2(1,1), r1.xy);
  r1.x = -r1.x * r1.y + r1.x;
  r1.y = r2.x * 0.5 + 1;
  r1.x = saturate(r1.x * r1.y);
  r1.y = saturate(r2.y * 20 + -18);
  r1.x = r1.y * r1.x;
  r1.y = g_RainPuddleParams1.z * r3.w;
  r0.x = r1.y * r0.x;
  r0.x = r1.x * r0.x;
  r1.x = r1.w ? 1 : 5;
  r0.x = r1.x * r0.x;
  r1.xyz = -r4.xyz * r3.yyy + float3(0.699999988,0.699999988,0.699999988);
  r1.xyz = r0.xxx * r1.xyz + r9.xyz;
  o1.x = r0.x * 0.5 + r5.x;
  r2.xy = surfaceFlowMap.Sample(surfaceFlowMap_s, r10.zw).xy;
  r0.x = cmp(r0.x >= 0.00999999978);
  r0.x = r0.x ? 1.000000 : 0;
  r2.xy = r0.xx * r2.yx;
  r0.yz = r2.xy * float2(0.300000012,0.300000012) + r7.xy;
  r0.xyz = r0.yzw * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5);
  r0.xyz = r0.xyz * float3(2,2,2) + float3(-1,-1,-1);
  r0.w = dot(r0.xyz, r0.xyz);
  r0.w = rsqrt(r0.w);
  r0.xyz = r0.xyz * r0.www;
  r0.w = max(abs(r0.x), abs(r0.y));
  r0.w = max(abs(r0.z), r0.w);
  r2.xy = cmp(abs(r0.zy) < r0.ww);
  r2.yz = r2.yy ? abs(r0.zy) : abs(r0.zx);
  r2.xy = r2.xx ? r2.yz : abs(r0.yx);
  r1.w = cmp(r2.y < r2.x);
  r2.xy = r1.ww ? r2.xy : r2.yx;
  r2.z = r2.y / r2.x;
  r0.xyz = r0.xyz / r0.www;
  r0.w = normalsSampler2D.Sample(normalsSampler2D_s, r2.xz).w;
  r0.xyz = r0.xyz * r0.www;
  o0.xyz = r0.xyz * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5);
  o2.xyz = sqrt(r1.xyz);
  o1.y = dot(float3(0.298999995,0.587000012,0.114), abs(r8.xyz));
  r0.x = dot(float3(-0.168699995,-0.331200004,0.5), abs(r8.xyz));
  r0.y = dot(float3(0.5,-0.418599993,-0.0812999979), abs(r8.xyz));
  r1.z = r0.x * 0.498039216 + 0.498039216;
  r0.w = r0.y * 0.498039216 + 0.498039216;
  r1.x = frac(r5.y);
  r1.x = cmp(0.00999999978 < r1.x);
  r1.w = 0.250244379 * r5.y;
  r7.y = r1.x ? r1.w : 0;
  r2.xyz = sqrt(r6.yzw);
  r7.x = dot(float3(0.298999995,0.587000012,0.114), r2.xyz);
  r1.x = dot(float3(-0.168699995,-0.331200004,0.5), r2.xyz);
  r1.w = dot(float3(0.5,-0.418599993,-0.0812999979), r2.xyz);
  r7.z = r1.x * 0.498039216 + 0.498039216;
  r7.w = r1.w * 0.498039216 + 0.498039216;
  r2.z = r2.w * 0.498039216 + 0.498039216;
  r1.y = r4.w ? 1.000000 : 0;
  r2.y = 0;
  r0.yz = r5.ww ? r2.yz : r1.yz;
  r0.x = 0;
  r0.xyzw = r5.zzzz ? r7.xyzw : r0.xyzw;
  r0.x = r0.x * 0.99609375 + r3.z;
  o0.w = 0.250244379 * r0.x;
  o1.zw = r0.zw;
  o2.w = r0.y;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.30.960.8229
//
//   using 3Dmigoto v1.2.69 on Wed Feb 14 18:06:05 2018
//
//
// Buffer Definitions: 
//
// cbuffer PER_BATCH
// {
//
//   float4 g_RainVolumeParams;         // Offset:    0 Size:    16
//   float4 g_RainColorMultipliers;     // Offset:   16 Size:    16
//   float4 g_WorldViewPos;             // Offset:   32 Size:    16
//   float4 g_RainPuddleParams0;        // Offset:   48 Size:    16
//   float4 g_RainPuddleParams1;        // Offset:   64 Size:    16
//   float4 g_RainAnimParams;           // Offset:   80 Size:    16
//   float4 g_RainOcc_WindOffs;         // Offset:   96 Size:    16
//   row_major float4x4 g_RainOcc_TransMat;// Offset:  112 Size:    64
//   float4 PS_NearFarClipDist;         // Offset:  176 Size:    16 [unused]
//   float4 PS_ScreenSize;              // Offset:  192 Size:    16
//   float4 PS_HPosScale;               // Offset:  208 Size:    16
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// surfaceFlowMap                    sampler      NA          NA    0        1
// sceneDepthMapSampler              sampler      NA          NA    1        1
// normalsSampler2D                  sampler      NA          NA    2        1
// rainOccMap                        sampler      NA          NA    4        1
// rainRipplesMap                    sampler      NA          NA    5        1
// rainSpatterMap                    sampler      NA          NA    6        1
// puddleMaskMap                     sampler      NA          NA    7        1
// _tex9                             sampler      NA          NA    9        1
// _texA                             sampler      NA          NA   10        1
// _texB                             sampler      NA          NA   11        1
// surfaceFlowMap                    texture  float4          2d    0        1
// sceneDepthMapSampler              texture  float4          2d    1        1
// normalsSampler2D                  texture  float4          2d    2        1
// rainOccMap                        texture  float4          2d    4        1
// rainRipplesMap                    texture  float4          2d    5        1
// rainSpatterMap                    texture  float4          2d    6        1
// puddleMaskMap                     texture  float4          2d    7        1
// _tex9                             texture  float4          2d    9        1
// _texA                             texture  float4          2d   10        1
// _texB                             texture  float4          2d   11        1
// DeferredRainGBuffer_StencilTex    texture   uint2          2d   12        1
// PER_BATCH                         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   xy  
// TEXCOORD                 1   xyzw        2     NONE   float   xyz 
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
// SV_Target                1   xyzw        1   TARGET   float   xyzw
// SV_Target                2   xyzw        2   TARGET   float   xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[14], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_sampler s4, mode_default
dcl_sampler s5, mode_default
dcl_sampler s6, mode_default
dcl_sampler s7, mode_default
dcl_sampler s9, mode_default
dcl_sampler s10, mode_default
dcl_sampler s11, 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) 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_resource_texture2d (float,float,float,float) t9
dcl_resource_texture2d (float,float,float,float) t10
dcl_resource_texture2d (float,float,float,float) t11
dcl_resource_texture2d (uint,uint,uint,uint) t12
dcl_input_ps linear v1.xy
dcl_input_ps linear v2.xyz
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_temps 11
sample_indexable(texture2d)(float,float,float,float) r0.x, v1.xyxx, t1.xyzw, s1
mad r1.xyz, r0.xxxx, v2.xyzx, cb0[2].xyzx
sample_indexable(texture2d)(float,float,float,float) r2.xyzw, v1.xyxx, t9.xyzw, s9
mad r0.yzw, r2.xxyz, l(0.000000, 2.000000, 2.000000, 2.000000), l(0.000000, -1.000000, -1.000000, -1.000000)
dp3 r2.x, r0.yzwy, r0.yzwy
rsq r2.x, r2.x
mul r0.yzw, r0.yyzw, r2.xxxx
mul r3.xyzw, r1.xyxy, l(0.100000, 0.100000, 0.700000, 0.700000)
sample_indexable(texture2d)(float,float,float,float) r2.x, r3.xyxx, t7.xyzw, s7
sample_indexable(texture2d)(float,float,float,float) r2.y, r3.zwzz, t6.yxzw, s6
mul r3.xy, r1.xyxx, l(0.300000, 0.300000, 0.000000, 0.000000)
sample_indexable(texture2d)(float,float,float,float) r2.z, r3.xyxx, t6.yzxw, s6
add r3.x, r2.z, r2.y
add r3.yzw, -r1.xxyz, cb0[0].xxyz
mul r3.yzw, r3.yyzw, cb0[0].wwww
dp3 r3.y, r3.yzwy, -r3.yzwy
add_sat r3.y, r3.y, l(1.000000)
mad_sat r0.x, cb0[1].w, r0.x, l(10.000000)
mul r0.x, r0.x, r3.y
mov_sat r3.y, r0.w
add r3.z, -r3.y, l(0.200000)
div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), -r3.y
mul_sat r3.y, r3.y, r3.z
mad r3.z, r3.y, l(-2.000000), l(3.000000)
mul r3.y, r3.y, r3.y
mul r3.y, r3.y, r3.z
mul r0.x, r0.x, r3.y
mov r1.w, l(1.000000)
dp4 r4.x, cb0[7].xyzw, r1.xyzw
dp4 r3.y, cb0[8].xyzw, r1.xyzw
dp4 r1.w, cb0[9].xyzw, r1.xyzw
add r4.y, -r3.y, l(1.000000)
mad r3.y, r3.x, l(0.00781250000), l(-0.00390625000)
add r3.yz, r3.yyyy, r4.xxyx
sample_indexable(texture2d)(float,float,float,float) r4.x, r3.yzyy, t4.xyzw, s4
add r3.yz, r3.yyzy, cb0[6].xxyx
sample_indexable(texture2d)(float,float,float,float) r4.y, r3.yzyy, t4.yxzw, s4
eq r3.yz, r4.xxyx, l(0.000000, 1.000000, 1.000000, 0.000000)
add r4.xy, r4.xyxx, l(-0.030000, -0.030000, 0.000000, 0.000000)
lt r4.xy, r4.xyxx, r1.wwww
or r3.yz, r3.yyzy, r4.xxyx
and r3.zw, r3.yyyz, l(0, 0, 0x3f800000, 0x3f800000)
movc r1.w, r3.y, l(-1.000000), l(-0.000000)
add r1.w, r1.w, r3.w
mad r1.w, r1.w, l(0.500000), r3.z
mul r0.x, r0.x, r1.w
div r3.yz, v1.xxyx, cb0[13].xxyx
mul r3.yz, r3.yyzy, cb0[12].xxyx
ftoi r4.xy, r3.yzyy
mov r4.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r1.w, r4.xyzw, t12.xzwy
and r1.w, r1.w, l(128)
mad r3.y, r2.x, l(20.000000), l(0.500000)
mad_sat r3.y, -cb0[4].x, l(20.000000), r3.y
mul r3.y, r0.x, r3.y
movc r3.y, r1.w, r3.y, l(0)
lt r3.z, r0.x, l(0.001000)
lt r3.w, cb0[3].z, l(0.001000)
lt r4.x, r3.y, l(0.001000)
and r3.w, r3.w, r4.x
or r3.z, r3.w, r3.z
discard_nz r3.z
sample_indexable(texture2d)(float,float,float,float) r4.xyzw, v1.xyxx, t11.xyzw, s11
sample_indexable(texture2d)(float,float,float,float) r5.xyzw, v1.xyxx, t10.xyzw, s10
mul r2.w, r2.w, l(3.99609375)
round_ni r3.z, r2.w
ftoi r3.w, r3.z
mul r4.xyz, r4.xyzx, r4.xyzx
mad r6.xz, r5.zzwz, l(2.007874, 0.000000, 2.007874, 0.000000), l(-1.000000, 0.000000, -1.000000, 0.000000)
movc r7.yz, r3.wwww, l(0,0,0,0), r6.xxzx
mov r7.x, r5.y
dp3 r8.y, l(1.000000, -0.344100, -0.714100, 0.000000), r7.xyzx
mad r8.xz, r7.zzyz, l(1.402000, 0.000000, 1.772000, 0.000000), r5.yyyy
mul r5.y, r4.w, l(3.99609375)
ge r4.w, r4.w, l(0.250244379)
movc r5.y, r3.w, r5.y, l(0)
ieq r5.zw, r3.wwww, l(0, 0, 1, 2)
frc r6.y, r2.w
dp3 r7.y, l(-0.344100, 1.000000, -0.714100, 0.000000), r6.xyzx
mad r7.xz, r6.zzxz, l(1.402000, 0.000000, 1.772000, 0.000000), r6.yyyy
mul r6.yzw, r7.xxyz, r7.xxyz
and r6.yzw, r5.zzzz, r6.yyzw
mov_sat r6.x, r6.x
and r2.w, r5.w, r6.x
mad_sat r3.w, r0.w, l(5.000000), l(-4.000000)
mul r6.x, r3.w, cb0[3].z
mad r2.x, r2.x, l(0.500000), l(0.500000)
mul_sat r2.x, r2.x, r6.x
mad r7.xy, cb0[3].xyxx, l(0.050000, 0.050000, 0.000000, 0.000000), r1.xyxx
sample_indexable(texture2d)(float,float,float,float) r7.xy, r7.xyxx, t5.xyzw, s5
mul r6.x, r3.y, r3.w
mov_sat r7.z, r6.x
mad r7.xy, r7.yxyy, cb0[4].yyyy, -r0.yzyy
mad r7.xy, r7.zzzz, r7.xyxx, r0.yzyy
add r7.z, -r5.x, l(0.500000)
mul_sat r7.z, r7.z, l(3.33333325)
ne r3.y, l(0.000000, 0.000000, 0.000000, 0.000000), r3.y
mul r7.w, r0.x, l(3.000000)
mul r8.w, r0.x, cb0[3].z
movc r3.y, r3.y, r7.w, r8.w
mul_sat r7.w, r7.z, cb0[3].w
mul r3.y, r3.y, r7.w
mad r3.y, r3.y, l(-0.800000), l(1.000000)
mul r9.xyz, r3.yyyy, r4.xyzx
mad r7.z, r7.z, l(-0.250000), -r5.x
mul r7.w, r0.x, r2.x
add r7.z, r7.z, l(0.850000)
mad r5.x, r7.w, r7.z, r5.x
add r7.z, -r5.x, l(0.930000)
mad r5.x, r6.x, r7.z, r5.x
mul r10.xyzw, r1.xyxy, l(5.000000, 5.000000, 0.800000, 0.800000)
sample_indexable(texture2d)(float,float,float,float) r6.x, r10.xyxx, t6.xyzw, s6
if_z r1.w
  mov r2.z, r6.x
endif 
add r2.z, r2.z, r3.x
add r2.z, r2.z, cb0[5].y
frc r2.z, r2.z
ge r2.y, r2.y, l(0.450000)
and r2.y, r2.y, l(0x3f800000)
mul r2.y, r2.y, r2.z
add r1.xyz, -r1.xyzx, cb0[2].xyzx
dp3 r1.x, r1.xyzx, r1.xyzx
sqrt r1.x, r1.x
mul r1.xy, r1.xxxx, l(0.010000, 0.085000, 0.000000, 0.000000)
min r1.xy, r1.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
mad r1.x, -r1.x, r1.y, r1.x
mad r1.y, r2.x, l(0.500000), l(1.000000)
mul_sat r1.x, r1.y, r1.x
mad_sat r1.y, r2.y, l(20.000000), l(-18.000000)
mul r1.x, r1.x, r1.y
mul r1.y, r3.w, cb0[4].z
mul r0.x, r0.x, r1.y
mul r0.x, r0.x, r1.x
movc r1.x, r1.w, l(1.000000), l(5.000000)
mul r0.x, r0.x, r1.x
mad r1.xyz, -r4.xyzx, r3.yyyy, l(0.700000, 0.700000, 0.700000, 0.000000)
mad r1.xyz, r0.xxxx, r1.xyzx, r9.xyzx
mad o1.x, r0.x, l(0.500000), r5.x
sample_indexable(texture2d)(float,float,float,float) r2.xy, r10.zwzz, t0.xyzw, s0
ge r0.x, r0.x, l(0.010000)
and r0.x, r0.x, l(0x3f800000)
mul r2.xy, r2.yxyy, r0.xxxx
mad r0.yz, r2.xxyx, l(0.000000, 0.300000, 0.300000, 0.000000), r7.xxyx
mad r0.xyz, r0.yzwy, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
mad r0.xyz, r0.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
dp3 r0.w, r0.xyzx, r0.xyzx
rsq r0.w, r0.w
mul r0.xyz, r0.wwww, r0.xyzx
max r0.w, |r0.y|, |r0.x|
max r0.w, r0.w, |r0.z|
lt r2.xy, |r0.zyzz|, r0.wwww
movc r2.yz, r2.yyyy, |r0.zzyz|, |r0.zzxz|
movc r2.xy, r2.xxxx, r2.yzyy, |r0.yxyy|
lt r1.w, r2.y, r2.x
movc r2.xy, r1.wwww, r2.xyxx, r2.yxyy
div r2.z, r2.y, r2.x
div r0.xyz, r0.xyzx, r0.wwww
sample_indexable(texture2d)(float,float,float,float) r0.w, r2.xzxx, t2.xyzw, s2
mul r0.xyz, r0.wwww, r0.xyzx
mad o0.xyz, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
sqrt o2.xyz, r1.xyzx
dp3 o1.y, l(0.299000, 0.587000, 0.114000, 0.000000), |r8.xyzx|
dp3 r0.x, l(-0.168700, -0.331200, 0.500000, 0.000000), |r8.xyzx|
dp3 r0.y, l(0.500000, -0.418600, -0.081300, 0.000000), |r8.xyzx|
mad r1.z, r0.x, l(0.498039216), l(0.498039216)
mad r0.w, r0.y, l(0.498039216), l(0.498039216)
frc r1.x, r5.y
lt r1.x, l(0.010000), r1.x
mul r1.w, r5.y, l(0.250244379)
and r7.y, r1.w, r1.x
sqrt r2.xyz, r6.yzwy
dp3 r7.x, l(0.299000, 0.587000, 0.114000, 0.000000), r2.xyzx
dp3 r1.x, l(-0.168700, -0.331200, 0.500000, 0.000000), r2.xyzx
dp3 r1.w, l(0.500000, -0.418600, -0.081300, 0.000000), r2.xyzx
mad r7.z, r1.x, l(0.498039216), l(0.498039216)
mad r7.w, r1.w, l(0.498039216), l(0.498039216)
mad r2.z, r2.w, l(0.498039216), l(0.498039216)
and r1.y, r4.w, l(0x3f800000)
mov r2.y, l(0)
movc r0.yz, r5.wwww, r2.yyzy, r1.yyzy
mov r0.x, l(0)
movc r0.xyzw, r5.zzzz, r7.xyzw, r0.xyzw
mad r0.x, r0.x, l(0.996093750), r3.z
mul o0.w, r0.x, l(0.250244379)
mov o1.zw, r0.zzzw
mov o2.w, r0.y
ret 
// Approximately 188 instruction slots used

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