// Raindrops splatter - [ShaderOverrideRainSplatter]

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_RainOcc_WindOffs : packoffset(c5);
  row_major float4x4 g_RainOcc_TransMat : packoffset(c6);
  float4 PS_NearFarClipDist : packoffset(c10);
  float4 PS_ScreenSize : packoffset(c11);
  float4 PS_HPosScale : packoffset(c12);
}


cbuffer PER_FRAME : 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);
}


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> normalsSampler2D : register(t0);
Texture2D<float4> sceneDepthMapSampler : register(t1);
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;
  uint4 bitmask, uiDest;
  float4 fDest;
  r0.x = sceneDepthMapSampler.Sample(sceneDepthMapSampler_s, v1.xy).x;

//fix DJ-RK
float4 stereo = StereoParams.Load(0);
float4 params = IniParams.Load(0);
row_major matrix ivp = inverse(g_VS_ViewProjMatr);
float4 tmp = mul(g_VS_ViewProjMatr, 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;
  r2.y = r2.y + r2.z;
  r3.xyz = g_RainVolumeParams.xyz + -r1.xyz;
  r3.xyz = g_RainVolumeParams.www * r3.xyz;
  r2.z = dot(r3.xyz, -r3.xyz);
  r2.z = saturate(1 + r2.z);
  r0.x = saturate(g_RainColorMultipliers.w * r0.x + 10);
  r0.x = r2.z * r0.x;
  r2.z = saturate(r0.w);
  r3.x = 0.200000003 + -r2.z;
  r2.z = 1 / -r2.z;
  r2.z = saturate(r3.x * r2.z);
  r3.x = r2.z * -2 + 3;
  r2.z = r2.z * r2.z;
  r2.z = r3.x * r2.z;
  r0.x = r2.z * r0.x;
  r1.w = 1;
  r3.x = dot(g_RainOcc_TransMat._m00_m01_m02_m03, r1.xyzw);
  r2.z = dot(g_RainOcc_TransMat._m10_m11_m12_m13, r1.xyzw);
  r1.z = dot(g_RainOcc_TransMat._m20_m21_m22_m23, r1.xyzw);
  r3.y = 1 + -r2.z;
  r1.w = r2.y * 0.0078125 + -0.00390625;
  r2.yz = r3.xy + r1.ww;
  r3.x = rainOccMap.Sample(rainOccMap_s, r2.yz).x;
  r2.yz = g_RainOcc_WindOffs.xy + r2.yz;
  r3.y = rainOccMap.Sample(rainOccMap_s, r2.yz).x;
  r2.yz = cmp(r3.xy == float2(1,1));
  r3.xy = float2(-0.0299999993,-0.0299999993) + r3.xy;
  r1.zw = cmp(r3.xy < r1.zz);
  r1.zw = (int2)r2.yz | (int2)r1.zw;
  r2.yz = r1.zw ? float2(1,1) : 0;
  r1.z = r1.z ? -1 : -0;
  r1.z = r2.z + r1.z;
  r1.z = r1.z * 0.5 + r2.y;
  r0.x = r1.z * r0.x;
  r1.zw = v1.xy / PS_HPosScale.xy;
  r1.zw = PS_ScreenSize.xy * r1.zw;
  r3.xy = (int2)r1.zw;
  r3.zw = float2(0,0);
  r1.z = DeferredRainGBuffer_StencilTex.Load(r3.xyz).y;
  r1.z = (int)r1.z & 128;
  r1.w = r2.x * 20 + 0.5;
  r1.w = saturate(-g_RainPuddleParams1.x * 20 + r1.w);
  r1.w = r1.w * r0.x;
  r1.z = r1.z ? r1.w : 0;
  r1.w = cmp(r0.x < 0.00100000005);
  r2.y = cmp(g_RainPuddleParams0.z < 0.00100000005);
  r2.z = cmp(r1.z < 0.00100000005);
  r2.y = r2.z ? r2.y : 0;
  r1.w = (int)r1.w | (int)r2.y;
  if (r1.w != 0) discard;
  r3.xyzw = _texB.Sample(_texB_s, v1.xy).xyzw;
  r4.xyzw = _texA.Sample(_texA_s, v1.xy).xyzw;
  r1.w = 3.99609375 * r2.w;
  r2.y = floor(r1.w);
  r2.z = (int)r2.y;
  r3.xyz = r3.xyz * r3.xyz;
  r5.xz = r4.zw * float2(2.00787401,2.00787401) + float2(-1,-1);
  r6.yz = r2.zz ? float2(0,0) : r5.xz;
  r6.x = r4.y;
  r7.y = dot(float3(1,-0.344099998,-0.714100003), r6.xyz);
  r7.xz = r6.zy * float2(1.40199995,1.77199996) + r4.yy;
  r2.w = 3.99609375 * r3.w;
  r3.w = cmp(r3.w >= 0.250244379);
  r2.w = r2.z ? r2.w : 0;
  r4.yz = cmp((int2)r2.zz == int2(1,2));
  r5.y = frac(r1.w);
  r6.y = dot(float3(-0.344099998,1,-0.714100003), r5.xyz);
  r6.xz = r5.zx * float2(1.40199995,1.77199996) + r5.yy;
  r5.yzw = r6.xyz * r6.xyz;
  r5.yzw = r4.yyy ? r5.yzw : 0;
  r5.x = saturate(r5.x);
  r1.w = r4.z ? r5.x : 0;
  r2.z = saturate(r0.w * 5 + -4);
  r4.w = g_RainPuddleParams0.z * r2.z;
  r2.x = r2.x * 0.5 + 0.5;
  r2.x = saturate(r4.w * r2.x);
  r1.xy = g_RainPuddleParams0.xy * float2(0.0500000007,0.0500000007) + r1.xy;
  r1.xy = rainRipplesMap.Sample(rainRipplesMap_s, r1.xy).xy;
  r2.z = r2.z * r1.z;
  r4.w = saturate(r2.z);
  r1.xy = r1.yx * g_RainPuddleParams1.yy + -r0.yz;
  r0.yz = r4.ww * r1.xy + r0.yz;
  r1.x = 0.5 + -r4.x;
  r1.x = saturate(3.33333325 * r1.x);
  r1.y = cmp(0 != r1.z);
  r1.z = 3 * r0.x;
  r4.w = g_RainPuddleParams0.z * r0.x;
  r1.y = r1.y ? r1.z : r4.w;
  r1.z = saturate(g_RainPuddleParams0.w * r1.x);
  r1.y = r1.z * r1.y;
  r1.y = r1.y * -0.800000012 + 1;
  r3.xyz = r3.xyz * r1.yyy;
  r1.x = r1.x * -0.25 + -r4.x;
  r0.x = r2.x * r0.x;
  r1.x = 0.850000024 + r1.x;
  r0.x = r0.x * r1.x + r4.x;
  r1.x = 0.930000007 + -r0.x;
  o1.x = r2.z * r1.x + r0.x;
  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);
  r1.xy = cmp(abs(r0.zy) < r0.ww);
  r1.yz = r1.yy ? abs(r0.zy) : abs(r0.zx);
  r1.xy = r1.xx ? r1.yz : abs(r0.yx);
  r1.z = cmp(r1.y < r1.x);
  r1.xy = r1.zz ? r1.xy : r1.yx;
  r1.z = r1.y / r1.x;
  r0.xyz = r0.xyz / r0.www;
  r0.w = normalsSampler2D.Sample(normalsSampler2D_s, r1.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(r3.xyz);
  o1.y = dot(float3(0.298999995,0.587000012,0.114), abs(r7.xyz));
  r0.x = dot(float3(-0.168699995,-0.331200004,0.5), abs(r7.xyz));
  r0.y = dot(float3(0.5,-0.418599993,-0.0812999979), abs(r7.xyz));
  r1.z = r0.x * 0.498039216 + 0.498039216;
  r0.w = r0.y * 0.498039216 + 0.498039216;
  r1.x = frac(r2.w);
  r1.x = cmp(0.00999999978 < r1.x);
  r2.x = 0.250244379 * r2.w;
  r6.y = r1.x ? r2.x : 0;
  r2.xzw = sqrt(r5.yzw);
  r6.x = dot(float3(0.298999995,0.587000012,0.114), r2.xzw);
  r1.x = dot(float3(-0.168699995,-0.331200004,0.5), r2.xzw);
  r2.x = dot(float3(0.5,-0.418599993,-0.0812999979), r2.xzw);
  r6.z = r1.x * 0.498039216 + 0.498039216;
  r6.w = r2.x * 0.498039216 + 0.498039216;
  r3.z = r1.w * 0.498039216 + 0.498039216;
  r1.y = r3.w ? 1.000000 : 0;
  r3.y = 0;
  r0.yz = r4.zz ? r3.yz : r1.yz;
  r0.x = 0;
  r0.xyzw = r4.yyyy ? r6.xyzw : r0.xyzw;
  r0.x = r0.x * 0.99609375 + r2.y;
  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.3.3 on Tue Feb 20 20:22:07 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_RainOcc_WindOffs;         // Offset:   80 Size:    16
//   row_major float4x4 g_RainOcc_TransMat;// Offset:   96 Size:    64
//   float4 PS_NearFarClipDist;         // Offset:  160 Size:    16 [unused]
//   float4 PS_ScreenSize;              // Offset:  176 Size:    16
//   float4 PS_HPosScale;               // Offset:  192 Size:    16
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// 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
// normalsSampler2D                  texture  float4          2d    0        1
// sceneDepthMapSampler              texture  float4          2d    1        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[13], immediateIndexed
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) 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 8
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 r2.y, r2.z, r2.y
add r3.xyz, -r1.xyzx, cb0[0].xyzx
mul r3.xyz, r3.xyzx, cb0[0].wwww
dp3 r2.z, r3.xyzx, -r3.xyzx
add_sat r2.z, r2.z, l(1.000000)
mad_sat r0.x, cb0[1].w, r0.x, l(10.000000)
mul r0.x, r0.x, r2.z
mov_sat r2.z, r0.w
add r3.x, -r2.z, l(0.200000)
div r2.z, l(1.000000, 1.000000, 1.000000, 1.000000), -r2.z
mul_sat r2.z, r2.z, r3.x
mad r3.x, r2.z, l(-2.000000), l(3.000000)
mul r2.z, r2.z, r2.z
mul r2.z, r2.z, r3.x
mul r0.x, r0.x, r2.z
mov r1.w, l(1.000000)
dp4 r3.x, cb0[6].xyzw, r1.xyzw
dp4 r2.z, cb0[7].xyzw, r1.xyzw
dp4 r1.z, cb0[8].xyzw, r1.xyzw
add r3.y, -r2.z, l(1.000000)
mad r1.w, r2.y, l(0.00781250000), l(-0.00390625000)
add r2.yz, r1.wwww, r3.xxyx
sample_indexable(texture2d)(float,float,float,float) r3.x, r2.yzyy, t4.xyzw, s4
add r2.yz, r2.yyzy, cb0[5].xxyx
sample_indexable(texture2d)(float,float,float,float) r3.y, r2.yzyy, t4.yxzw, s4
eq r2.yz, r3.xxyx, l(0.000000, 1.000000, 1.000000, 0.000000)
add r3.xy, r3.xyxx, l(-0.030000, -0.030000, 0.000000, 0.000000)
lt r1.zw, r3.xxxy, r1.zzzz
or r1.zw, r2.yyyz, r1.zzzw
and r2.yz, r1.zzwz, l(0, 0x3f800000, 0x3f800000, 0)
movc r1.z, r1.z, l(-1.000000), l(-0.000000)
add r1.z, r1.z, r2.z
mad r1.z, r1.z, l(0.500000), r2.y
mul r0.x, r0.x, r1.z
div r1.zw, v1.xxxy, cb0[12].xxxy
mul r1.zw, r1.zzzw, cb0[11].xxxy
ftoi r3.xy, r1.zwzz
mov r3.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r1.z, r3.xyzw, t12.xzyw
and r1.z, r1.z, l(128)
mad r1.w, r2.x, l(20.000000), l(0.500000)
mad_sat r1.w, -cb0[4].x, l(20.000000), r1.w
mul r1.w, r0.x, r1.w
movc r1.z, r1.z, r1.w, l(0)
lt r1.w, r0.x, l(0.001000)
lt r2.y, cb0[3].z, l(0.001000)
lt r2.z, r1.z, l(0.001000)
and r2.y, r2.z, r2.y
or r1.w, r1.w, r2.y
discard_nz r1.w
sample_indexable(texture2d)(float,float,float,float) r3.xyzw, v1.xyxx, t11.xyzw, s11
sample_indexable(texture2d)(float,float,float,float) r4.xyzw, v1.xyxx, t10.xyzw, s10
mul r1.w, r2.w, l(3.99609375)
round_ni r2.y, r1.w
ftoi r2.z, r2.y
mul r3.xyz, r3.xyzx, r3.xyzx
mad r5.xz, r4.zzwz, l(2.007874, 0.000000, 2.007874, 0.000000), l(-1.000000, 0.000000, -1.000000, 0.000000)
movc r6.yz, r2.zzzz, l(0,0,0,0), r5.xxzx
mov r6.x, r4.y
dp3 r7.y, l(1.000000, -0.344100, -0.714100, 0.000000), r6.xyzx
mad r7.xz, r6.zzyz, l(1.402000, 0.000000, 1.772000, 0.000000), r4.yyyy
mul r2.w, r3.w, l(3.99609375)
ge r3.w, r3.w, l(0.250244379)
movc r2.w, r2.z, r2.w, l(0)
ieq r4.yz, r2.zzzz, l(0, 1, 2, 0)
frc r5.y, r1.w
dp3 r6.y, l(-0.344100, 1.000000, -0.714100, 0.000000), r5.xyzx
mad r6.xz, r5.zzxz, l(1.402000, 0.000000, 1.772000, 0.000000), r5.yyyy
mul r5.yzw, r6.xxyz, r6.xxyz
and r5.yzw, r4.yyyy, r5.yyzw
mov_sat r5.x, r5.x
and r1.w, r4.z, r5.x
mad_sat r2.z, r0.w, l(5.000000), l(-4.000000)
mul r4.w, r2.z, cb0[3].z
mad r2.x, r2.x, l(0.500000), l(0.500000)
mul_sat r2.x, r2.x, r4.w
mad r1.xy, cb0[3].xyxx, l(0.050000, 0.050000, 0.000000, 0.000000), r1.xyxx
sample_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t5.xyzw, s5
mul r2.z, r1.z, r2.z
mov_sat r4.w, r2.z
mad r1.xy, r1.yxyy, cb0[4].yyyy, -r0.yzyy
mad r0.yz, r4.wwww, r1.xxyx, r0.yyzy
add r1.x, -r4.x, l(0.500000)
mul_sat r1.x, r1.x, l(3.33333325)
ne r1.y, l(0.000000, 0.000000, 0.000000, 0.000000), r1.z
mul r1.z, r0.x, l(3.000000)
mul r4.w, r0.x, cb0[3].z
movc r1.y, r1.y, r1.z, r4.w
mul_sat r1.z, r1.x, cb0[3].w
mul r1.y, r1.y, r1.z
mad r1.y, r1.y, l(-0.800000), l(1.000000)
mul r3.xyz, r1.yyyy, r3.xyzx
mad r1.x, r1.x, l(-0.250000), -r4.x
mul r0.x, r0.x, r2.x
add r1.x, r1.x, l(0.850000)
mad r0.x, r0.x, r1.x, r4.x
add r1.x, -r0.x, l(0.930000)
mad o1.x, r2.z, r1.x, r0.x
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 r1.xy, |r0.zyzz|, r0.wwww
movc r1.yz, r1.yyyy, |r0.zzyz|, |r0.zzxz|
movc r1.xy, r1.xxxx, r1.yzyy, |r0.yxyy|
lt r1.z, r1.y, r1.x
movc r1.xy, r1.zzzz, r1.xyxx, r1.yxyy
div r1.z, r1.y, r1.x
div r0.xyz, r0.xyzx, r0.wwww
sample_indexable(texture2d)(float,float,float,float) r0.w, r1.xzxx, t0.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, r3.xyzx
dp3 o1.y, l(0.299000, 0.587000, 0.114000, 0.000000), |r7.xyzx|
dp3 r0.x, l(-0.168700, -0.331200, 0.500000, 0.000000), |r7.xyzx|
dp3 r0.y, l(0.500000, -0.418600, -0.081300, 0.000000), |r7.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, r2.w
lt r1.x, l(0.010000), r1.x
mul r2.x, r2.w, l(0.250244379)
and r6.y, r1.x, r2.x
sqrt r2.xzw, r5.yyzw
dp3 r6.x, l(0.299000, 0.587000, 0.114000, 0.000000), r2.xzwx
dp3 r1.x, l(-0.168700, -0.331200, 0.500000, 0.000000), r2.xzwx
dp3 r2.x, l(0.500000, -0.418600, -0.081300, 0.000000), r2.xzwx
mad r6.z, r1.x, l(0.498039216), l(0.498039216)
mad r6.w, r2.x, l(0.498039216), l(0.498039216)
mad r3.z, r1.w, l(0.498039216), l(0.498039216)
and r1.y, r3.w, l(0x3f800000)
mov r3.y, l(0)
movc r0.yz, r4.zzzz, r3.yyzy, r1.yyzy
mov r0.x, l(0)
movc r0.xyzw, r4.yyyy, r6.xyzw, r0.xyzw
mad r0.x, r0.x, l(0.996093750), r2.y
mul o0.w, r0.x, l(0.250244379)
mov o1.zw, r0.zzzw
mov o2.w, r0.y
ret
// Approximately 154 instruction slots used

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