//SH2 radial blur PS 1. Vignette. Barrel distortion in final boss.
// ---- Created with geo-11 v0.6.198 on Wed Nov  6 12:13:10 2024
Texture2D<float4> t2 : register(t2);

Texture2D<float4> t1 : register(t1);

Texture2D<float4> t0 : register(t0);

SamplerState s1_s : register(s1);

SamplerState s0_s : register(s0);

cbuffer cb2 : register(b2)
{
  float4 cb2[14];
}

cbuffer cb1 : register(b1)
{
  float4 cb1[144];
}

cbuffer cb0 : register(b0)
{
  float4 cb0[39];
}




// 3Dmigoto 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)
{
  float4 r0,r1,r2,r3,r4,r5,r6;
  uint4 bitmask, uiDest;
  float4 fDest;
  
  float4 stereo = StereoParams.Load(0);
  
  r0.xy = asuint(cb0[37].xy);
  r0.xy = v0.xy + -r0.xy;
  r0.zw = cb0[38].zw * r0.xy;
  r1.xy = r0.zw * cb0[5].xy + cb0[4].xy;
  
  r0.z-=stereo.x*0.5;
  
  r2.xyz = t2.Sample(s1_s, r1.xy).xyz;
  
  r1.x-=stereo.x*0.5;
  
  r1.z = 0.00872664619 * cb2[3].x;
  r1.z = sin(r1.z);
  r3.xy = r1.yx * float2(2,2) + float2(-1,-1);
  r1.w = dot(r3.xy, r3.xy);
  r1.w = sqrt(r1.w);
  r2.w = 0.909090877 * r1.w;
  r2.w = min(1, r2.w);
  r2.w = 1 + -r2.w;
  r3.z = 2 + -r1.z;
  r1.w = cmp(r1.w < r3.z);
  r3.zw = r3.yx * r1.zz;
  r1.z = dot(r3.zw, r3.zw);
  r3.z = sqrt(r1.z);
  r1.z = 1 + -r1.z;
  r1.z = sqrt(r1.z);
  r3.w = min(r3.z, r1.z);
  r4.x = max(r3.z, r1.z);
  r4.x = 1 / r4.x;
  r3.w = r4.x * r3.w;
  r4.x = r3.w * r3.w;
  r4.y = r4.x * 0.0208350997 + -0.0851330012;
  r4.y = r4.x * r4.y + 0.180141002;
  r4.y = r4.x * r4.y + -0.330299497;
  r4.x = r4.x * r4.y + 0.999866009;
  r4.y = r4.x * r3.w;
  r1.z = cmp(r1.z < r3.z);
  r3.z = r4.y * -2 + 1.57079637;
  r1.z = r1.z ? r3.z : 0;
  r1.z = r3.w * r4.x + r1.z;
  r1.z = 0.318309873 * r1.z;
  r3.z = min(abs(r3.x), abs(r3.y));
  r3.w = max(abs(r3.x), abs(r3.y));
  r3.w = 1 / r3.w;
  r3.z = r3.z * r3.w;
  r3.w = r3.z * r3.z;
  r4.x = r3.w * 0.0208350997 + -0.0851330012;
  r4.x = r3.w * r4.x + 0.180141002;
  r4.x = r3.w * r4.x + -0.330299497;
  r3.w = r3.w * r4.x + 0.999866009;
  r4.x = r3.z * r3.w;
  r4.y = cmp(abs(r3.y) < abs(r3.x));
  r4.x = r4.x * -2 + 1.57079637;
  r4.x = r4.y ? r4.x : 0;
  r3.z = r3.z * r3.w + r4.x;
  r3.w = cmp(r3.y < -r3.y);
  r3.w = r3.w ? -3.141593 : 0;
  r3.z = r3.z + r3.w;
  r3.w = min(r3.x, r3.y);
  r3.x = max(r3.x, r3.y);
  r3.y = cmp(r3.w < -r3.w);
  r3.x = cmp(r3.x >= -r3.x);
  r3.x = r3.x ? r3.y : 0;
  r3.x = r3.x ? -r3.z : r3.z;
  sincos(r3.x, r3.x, r4.x);
  r4.x = r1.z * r4.x + 0.5;
  r4.y = r1.z * r3.x + 0.5;
  r1.zw = r1.ww ? r4.xy : r1.xy;
  r2.w = cb2[3].y * r2.w;
  r1.zw = r1.zw + -r1.xy;
  r1.xy = r2.ww * r1.zw + r1.xy;
  r1.z = cb2[3].z * cb1[143].y;
  r1.z = floor(r1.z);
  r1.z = 0.000244319584 * r1.z;
  r1.z = frac(r1.z);
  r1.z = r1.z * r1.z;
  r1.z = 4093 * r1.z;
  r1.z = frac(r1.z);
  r1.z = r1.z * r1.z;
  r1.z = 4093 * r1.z;
  r1.z = frac(r1.z);
  r1.z = min(0.999000013, r1.z);
  r1.z = frac(r1.z);
  r0.zw = frac(r0.zw);
  r1.w = cmp(9.99999975e-05 < cb2[5].x);
  if (r1.w != 0) {
    r1.w = cb2[3].w * r1.z;
    r2.w = cb2[4].x * r1.w;
    r3.x = (uint)r2.w;
    r3.y = (int)r3.x + 1;
    r3.z = cb2[4].x * cb2[3].w;
    r3.z = (uint)r3.z;
    r3.y = (uint)r3.y % (uint)r3.z;
    r3.z = r0.z / cb2[4].x;
    r3.w = r0.w / cb2[3].w;
    r4.x = 1 / cb2[4].x;
    r4.x = -cb2[4].y + r4.x;
    r3.zw = max(cb2[4].yz, r3.zw);
    r3.z = min(r3.z, r4.x);
    r4.x = 1 / cb2[3].w;
    r4.x = -cb2[4].z + r4.x;
    r3.w = min(r4.x, r3.w);
    r4.x = (uint)cb2[4].x;
    uiDest.x = (uint)r3.x / (uint)r4.x;
    r5.x = (uint)r3.x % (uint)r4.x;
    r3.x = uiDest.x;
    r4.y = (uint)r5.x;
    r4.y = r4.y / cb2[4].x;
    r5.x = r4.y + r3.z;
    r3.x = (uint)r3.x;
    r3.x = r3.x / cb2[3].w;
    r5.y = r3.w + r3.x;
    uiDest.x = (uint)r3.y / (uint)r4.x;
    r4.x = (uint)r3.y % (uint)r4.x;
    r3.x = uiDest.x;
    r3.y = (uint)r4.x;
    r3.y = r3.y / cb2[4].x;
    r3.x = (uint)r3.x;
    r3.x = r3.x / cb2[3].w;
    r4.xy = r3.zw + r3.yx;
    r3.xy = t0.SampleLevel(s0_s, r5.xy, 0).xy;
    r3.zw = t0.SampleLevel(s0_s, r4.xy, 0).xy;
    r2.w = floor(r2.w);
    r2.w = (uint)r2.w;
    r2.w = (uint)r2.w;
    r1.w = r1.w * cb2[4].x + -r2.w;
    r3.zw = r3.zw + -r3.xy;
    r3.xy = r1.ww * r3.zw + r3.xy;
    r3.xy = r3.xy * float2(2,2) + float2(-1,-1);
    r3.xy = cb2[4].ww * r3.xy;
    r3.zw = float2(-0.5,-0.5) + r1.xy;
	
	//r3.z-=stereo.x*0.5;
	r1.x+=stereo.x*0.5;
	
    r1.w = dot(r3.zw, r3.zw);
    r1.w = sqrt(r1.w);
    r2.w = max(0.00100000005, r1.w);
    r3.zw = r3.zw / r2.ww;
    r1.w = -0.0500000007 + r1.w;
    r1.w = max(0, r1.w);
    r2.w = r1.w * r1.w;
    r1.w = -r1.w * r1.w + r1.w;
    r1.w = r1.w * 0.5 + r2.w;
    r3.zw = r3.zw * r1.ww;
    r3.zw = cb2[5].xx * r3.zw;
    r4.xy = float2(-0.00100000005,-0.00100000005) + cb0[5].xy;
    r5.xyz = float3(0,0,0);
    r1.w = 1;
    r2.w = 0;
    while (true) {
      r4.z = cmp((int)r2.w >= 16);
      if (r4.z != 0) break;
      r4.z = (int)r2.w;
      r4.z = 0.0666666701 * r4.z;
      r4.zw = cb0[3].zw * r4.zz;
      r6.xy = r3.zw * r4.zw + r1.xy;
      r4.zw = r3.xy * r4.zw + r6.xy;
      r4.zw = max(float2(0.00100000005,0.00100000005), r4.zw);
      r4.zw = min(r4.zw, r4.xy);
      r6.xyz = t2.SampleLevel(s1_s, r4.zw, 0).xyz;
      r5.xyz = r6.xyz * r1.www + r5.xyz;
      r2.w = (int)r2.w + 1;
      r1.w = 0.850000024 * r1.w;
    }
    r3.xyz = float3(0.162030965,0.162030965,0.162030965) * r5.xyz;
  } else {
    r3.xyz = t2.SampleLevel(s1_s, r1.xy, 0).xyz;
  }
  r1.x = dot(r3.xyz, float3(0.300000012,0.600000024,0.100000001));
  r1.xyw = r1.xxx + -r3.xyz;
  r1.xyw = cb2[5].yyy * r1.xyw + r3.xyz;
  r1.xyw = cb2[6].xyz * r1.xyw;
  r1.z = cb2[6].w * r1.z;
  r2.w = cb2[7].x * r1.z;
  r3.x = (uint)r2.w;
  r3.y = (int)r3.x + 1;
  r3.z = cb2[7].x * cb2[6].w;
  r3.z = (uint)r3.z;
  r3.y = (uint)r3.y % (uint)r3.z;
  r0.z = r0.z / cb2[7].x;
  r0.w = r0.w / cb2[6].w;
  r3.z = 1 / cb2[7].x;
  r3.z = -cb2[7].y + r3.z;
  r0.zw = max(cb2[7].yz, r0.zw);
  r0.z = min(r0.z, r3.z);
  r3.z = 1 / cb2[6].w;
  r3.z = -cb2[7].z + r3.z;
  r0.w = min(r3.z, r0.w);
  r3.z = (uint)cb2[7].x;
  uiDest.x = (uint)r3.x / (uint)r3.z;
  r4.x = (uint)r3.x % (uint)r3.z;
  r3.x = uiDest.x;
  r3.w = (uint)r4.x;
  r3.w = r3.w / cb2[7].x;
  r3.x = (uint)r3.x;
  r3.x = r3.x / cb2[6].w;
  r4.xy = r3.wx + r0.zw;
  uiDest.x = (uint)r3.y / (uint)r3.z;
  r5.x = (uint)r3.y % (uint)r3.z;
  r3.x = uiDest.x;
  r3.y = (uint)r5.x;
  r3.y = r3.y / cb2[7].x;
  r5.x = r3.y + r0.z;
  r0.z = (uint)r3.x;
  r0.z = r0.z / cb2[6].w;
  r5.y = r0.w + r0.z;
  r3.xyz = t1.SampleLevel(s0_s, r4.xy, 0).xyz;
  r4.xyz = t1.SampleLevel(s0_s, r5.xy, 0).xyz;
  r0.z = floor(r2.w);
  r0.z = (uint)r0.z;
  r0.z = (uint)r0.z;
  r0.z = r1.z * cb2[7].x + -r0.z;
  r4.xyz = r4.xyz + -r3.xyz;
  r3.xyz = r0.zzz * r4.xyz + r3.xyz;
  r3.xyz = float3(-1,-1,-1) + r3.xyz;
  r3.xyz = cb2[7].www * r3.xyz + float3(1,1,1);
  r1.xyz = r3.xyz * r1.xyw;
  r3.xyz = cb2[8].xxx + -cb2[8].yzw;
  r1.xyz = saturate(r1.xyz * r3.xyz + cb2[8].yzw);
  r0.xy = r0.xy * cb0[38].zw + float2(-0.5,-0.5);
  r0.xy = cb2[10].xy * r0.xy;
  
  //Vignette part.
  r0.x-=stereo.x*0.5;
  
  r0.x = dot(r0.xy, r0.xy);
  r0.x = sqrt(r0.x);
  r0.y = min(cb2[9].x, r0.x);
  r0.y = -r0.y * r0.y + cb2[10].z;
  r0.y = max(0, r0.y);
  r0.y = sqrt(r0.y);
  r0.y = saturate(cb2[10].w * r0.y);
  r0.z = cmp(0 >= r0.y);
  r0.y = log2(r0.y);
  r0.y = cb2[11].x * r0.y;
  r0.y = exp2(r0.y);
  r0.y = -0.333000004 + r0.y;
  r0.w = dot(r1.xyz, float3(0.300000012,0.600000024,0.100000001));
  r0.x = min(cb2[11].y, r0.x);
  r0.x = -r0.x * r0.x + cb2[11].z;
  r0.x = max(0, r0.x);
  r0.x = sqrt(r0.x);
  r0.x = saturate(cb2[11].w * r0.x);
  r1.w = cmp(0 >= r0.x);
  r0.x = log2(r0.x);
  r0.x = cb2[12].x * r0.x;
  r0.x = exp2(r0.x);
  r0.x = -0.333000004 + r0.x;
  r0.xy = saturate(float2(1.66600001,1.66600001) * r0.xy);
  r3.xyz = r1.xyz + -r0.www;
  r3.xyz = r3.xyz * r0.xxx;
  r3.xyz = r1.www ? float3(0,0,0) : r3.xyz;
  r3.xyz = r3.xyz + r0.www;
  r0.xyw = r3.xyz * r0.yyy;
  r0.xyz = r0.zzz ? float3(0,0,0) : r0.xyw;
  r0.xyz = r0.xyz + -r1.xyz;
  r0.xyz = cb2[12].yyy * r0.xyz + r1.xyz;
  r0.xyz = r0.xyz + -r2.xyz;
  r0.xyz = cb2[12].zzz * r0.xyz + r2.xyz;
  r1.xyz = cb2[13].xyz + -r0.xyz;
  r0.xyz = cb2[12].www * r1.xyz + r0.xyz;
  o0.xyz = max(float3(0,0,0), r0.xyz);
  o0.w = 0;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v0.6.198 on Wed Nov  6 12:13:10 2024
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION              0   xyzw        0      POS   float   xy
// TEXCOORD                 0   xyzw        1     NONE   float
//
//
// 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[39], immediateIndexed
dcl_constantbuffer CB1[144], immediateIndexed
dcl_constantbuffer CB2[14], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, 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_input_ps_siv linear noperspective v0.xy, position
dcl_output o0.xyzw
dcl_temps 7
utof r0.xy, cb0[37].xyxx
add r0.xy, -r0.xyxx, v0.xyxx
mul r0.zw, r0.xxxy, cb0[38].zzzw
mad r1.xy, r0.zwzz, cb0[5].xyxx, cb0[4].xyxx
sample_indexable(texture2d)(float,float,float,float) r2.xyz, r1.xyxx, t2.xyzw, s1
mul r1.z, cb2[3].x, l(0.00872664619)
sincos r1.z, null, r1.z
mad r3.xy, r1.yxyy, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
dp2 r1.w, r3.xyxx, r3.xyxx
sqrt r1.w, r1.w
mul r2.w, r1.w, l(0.909090877)
min r2.w, r2.w, l(1.000000)
add r2.w, -r2.w, l(1.000000)
add r3.z, -r1.z, l(2.000000)
lt r1.w, r1.w, r3.z
mul r3.zw, r1.zzzz, r3.yyyx
dp2 r1.z, r3.zwzz, r3.zwzz
sqrt r3.z, r1.z
add r1.z, -r1.z, l(1.000000)
sqrt r1.z, r1.z
min r3.w, r1.z, r3.z
max r4.x, r1.z, r3.z
div r4.x, l(1.000000, 1.000000, 1.000000, 1.000000), r4.x
mul r3.w, r3.w, r4.x
mul r4.x, r3.w, r3.w
mad r4.y, r4.x, l(0.0208350997), l(-0.085133)
mad r4.y, r4.x, r4.y, l(0.180141)
mad r4.y, r4.x, r4.y, l(-0.330299497)
mad r4.x, r4.x, r4.y, l(0.999866)
mul r4.y, r3.w, r4.x
lt r1.z, r1.z, r3.z
mad r3.z, r4.y, l(-2.000000), l(1.57079637)
and r1.z, r1.z, r3.z
mad r1.z, r3.w, r4.x, r1.z
mul r1.z, r1.z, l(0.318309873)
min r3.z, |r3.y|, |r3.x|
max r3.w, |r3.y|, |r3.x|
div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r3.w
mul r3.z, r3.w, r3.z
mul r3.w, r3.z, r3.z
mad r4.x, r3.w, l(0.0208350997), l(-0.085133)
mad r4.x, r3.w, r4.x, l(0.180141)
mad r4.x, r3.w, r4.x, l(-0.330299497)
mad r3.w, r3.w, r4.x, l(0.999866)
mul r4.x, r3.w, r3.z
lt r4.y, |r3.y|, |r3.x|
mad r4.x, r4.x, l(-2.000000), l(1.57079637)
and r4.x, r4.y, r4.x
mad r3.z, r3.z, r3.w, r4.x
lt r3.w, r3.y, -r3.y
and r3.w, r3.w, l(0xc0490fdb)
add r3.z, r3.w, r3.z
min r3.w, r3.y, r3.x
max r3.x, r3.y, r3.x
lt r3.y, r3.w, -r3.w
ge r3.x, r3.x, -r3.x
and r3.x, r3.x, r3.y
movc r3.x, r3.x, -r3.z, r3.z
sincos r3.x, r4.x, r3.x
mad r4.x, r1.z, r4.x, l(0.500000)
mad r4.y, r1.z, r3.x, l(0.500000)
movc r1.zw, r1.wwww, r4.xxxy, r1.xxxy
mul r2.w, r2.w, cb2[3].y
add r1.zw, -r1.xxxy, r1.zzzw
mad r1.xy, r2.wwww, r1.zwzz, r1.xyxx
mul r1.z, cb1[143].y, cb2[3].z
round_ni r1.z, r1.z
mul r1.z, r1.z, l(0.000244319584)
frc r1.z, r1.z
mul r1.z, r1.z, r1.z
mul r1.z, r1.z, l(4093.000000)
frc r1.z, r1.z
mul r1.z, r1.z, r1.z
mul r1.z, r1.z, l(4093.000000)
frc r1.z, r1.z
min r1.z, r1.z, l(0.999000)
frc r1.z, r1.z
frc r0.zw, r0.zzzw
lt r1.w, l(0.000100), cb2[5].x
if_nz r1.w
  mul r1.w, r1.z, cb2[3].w
  mul r2.w, r1.w, cb2[4].x
  ftou r3.x, r2.w
  iadd r3.y, r3.x, l(1)
  mul r3.z, cb2[3].w, cb2[4].x
  ftou r3.z, r3.z
  udiv null, r3.y, r3.y, r3.z
  div r3.z, r0.z, cb2[4].x
  div r3.w, r0.w, cb2[3].w
  div r4.x, l(1.000000, 1.000000, 1.000000, 1.000000), cb2[4].x
  add r4.x, r4.x, -cb2[4].y
  max r3.zw, r3.zzzw, cb2[4].yyyz
  min r3.z, r4.x, r3.z
  div r4.x, l(1.000000, 1.000000, 1.000000, 1.000000), cb2[3].w
  add r4.x, r4.x, -cb2[4].z
  min r3.w, r3.w, r4.x
  ftou r4.x, cb2[4].x
  udiv r3.x, r5.x, r3.x, r4.x
  utof r4.y, r5.x
  div r4.y, r4.y, cb2[4].x
  add r5.x, r3.z, r4.y
  utof r3.x, r3.x
  div r3.x, r3.x, cb2[3].w
  add r5.y, r3.x, r3.w
  udiv r3.x, r4.x, r3.y, r4.x
  utof r3.y, r4.x
  div r3.y, r3.y, cb2[4].x
  utof r3.x, r3.x
  div r3.x, r3.x, cb2[3].w
  add r4.xy, r3.yxyy, r3.zwzz
  sample_l_indexable(texture2d)(float,float,float,float) r3.xy, r5.xyxx, t0.xyzw, s0, l(0.000000)
  sample_l_indexable(texture2d)(float,float,float,float) r3.zw, r4.xyxx, t0.zwxy, s0, l(0.000000)
  round_ni r2.w, r2.w
  ftou r2.w, r2.w
  utof r2.w, r2.w
  mad r1.w, r1.w, cb2[4].x, -r2.w
  add r3.zw, -r3.xxxy, r3.zzzw
  mad r3.xy, r1.wwww, r3.zwzz, r3.xyxx
  mad r3.xy, r3.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
  mul r3.xy, r3.xyxx, cb2[4].wwww
  add r3.zw, r1.xxxy, l(0.000000, 0.000000, -0.500000, -0.500000)
  dp2 r1.w, r3.zwzz, r3.zwzz
  sqrt r1.w, r1.w
  max r2.w, r1.w, l(0.001000)
  div r3.zw, r3.zzzw, r2.wwww
  add r1.w, r1.w, l(-0.050000)
  max r1.w, r1.w, l(0.000000)
  mul r2.w, r1.w, r1.w
  mad r1.w, -r1.w, r1.w, r1.w
  mad r1.w, r1.w, l(0.500000), r2.w
  mul r3.zw, r1.wwww, r3.zzzw
  mul r3.zw, r3.zzzw, cb2[5].xxxx
  add r4.xy, cb0[5].xyxx, l(-0.001000, -0.001000, 0.000000, 0.000000)
  mov r5.xyz, l(0,0,0,0)
  mov r1.w, l(1.000000)
  mov r2.w, l(0)
  loop
    ige r4.z, r2.w, l(16)
    breakc_nz r4.z
    itof r4.z, r2.w
    mul r4.z, r4.z, l(0.0666666701)
    mul r4.zw, r4.zzzz, cb0[3].zzzw
    mad r6.xy, r3.zwzz, r4.zwzz, r1.xyxx
    mad r4.zw, r3.xxxy, r4.zzzw, r6.xxxy
    max r4.zw, r4.zzzw, l(0.000000, 0.000000, 0.001000, 0.001000)
    min r4.zw, r4.xxxy, r4.zzzw
    sample_l_indexable(texture2d)(float,float,float,float) r6.xyz, r4.zwzz, t2.xyzw, s1, l(0.000000)
    mad r5.xyz, r6.xyzx, r1.wwww, r5.xyzx
    iadd r2.w, r2.w, l(1)
    mul r1.w, r1.w, l(0.850000)
  endloop
  mul r3.xyz, r5.xyzx, l(0.162030965, 0.162030965, 0.162030965, 0.000000)
else
  sample_l_indexable(texture2d)(float,float,float,float) r3.xyz, r1.xyxx, t2.xyzw, s1, l(0.000000)
endif
dp3 r1.x, r3.xyzx, l(0.300000, 0.600000, 0.100000, 0.000000)
add r1.xyw, -r3.xyxz, r1.xxxx
mad r1.xyw, cb2[5].yyyy, r1.xyxw, r3.xyxz
mul r1.xyw, r1.xyxw, cb2[6].xyxz
mul r1.z, r1.z, cb2[6].w
mul r2.w, r1.z, cb2[7].x
ftou r3.x, r2.w
iadd r3.y, r3.x, l(1)
mul r3.z, cb2[6].w, cb2[7].x
ftou r3.z, r3.z
udiv null, r3.y, r3.y, r3.z
div r0.z, r0.z, cb2[7].x
div r0.w, r0.w, cb2[6].w
div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), cb2[7].x
add r3.z, r3.z, -cb2[7].y
max r0.zw, r0.zzzw, cb2[7].yyyz
min r0.z, r3.z, r0.z
div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), cb2[6].w
add r3.z, r3.z, -cb2[7].z
min r0.w, r0.w, r3.z
ftou r3.z, cb2[7].x
udiv r3.x, r4.x, r3.x, r3.z
utof r3.w, r4.x
div r3.w, r3.w, cb2[7].x
utof r3.x, r3.x
div r3.x, r3.x, cb2[6].w
add r4.xy, r0.zwzz, r3.wxww
udiv r3.x, r5.x, r3.y, r3.z
utof r3.y, r5.x
div r3.y, r3.y, cb2[7].x
add r5.x, r0.z, r3.y
utof r0.z, r3.x
div r0.z, r0.z, cb2[6].w
add r5.y, r0.z, r0.w
sample_l_indexable(texture2d)(float,float,float,float) r3.xyz, r4.xyxx, t1.xyzw, s0, l(0.000000)
sample_l_indexable(texture2d)(float,float,float,float) r4.xyz, r5.xyxx, t1.xyzw, s0, l(0.000000)
round_ni r0.z, r2.w
ftou r0.z, r0.z
utof r0.z, r0.z
mad r0.z, r1.z, cb2[7].x, -r0.z
add r4.xyz, -r3.xyzx, r4.xyzx
mad r3.xyz, r0.zzzz, r4.xyzx, r3.xyzx
add r3.xyz, r3.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000)
mad r3.xyz, cb2[7].wwww, r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
mul r1.xyz, r1.xywx, r3.xyzx
add r3.xyz, -cb2[8].yzwy, cb2[8].xxxx
mad_sat r1.xyz, r1.xyzx, r3.xyzx, cb2[8].yzwy
mad r0.xy, r0.xyxx, cb0[38].zwzz, l(-0.500000, -0.500000, 0.000000, 0.000000)
mul r0.xy, r0.xyxx, cb2[10].xyxx
dp2 r0.x, r0.xyxx, r0.xyxx
sqrt r0.x, r0.x
min r0.y, r0.x, cb2[9].x
mad r0.y, -r0.y, r0.y, cb2[10].z
max r0.y, r0.y, l(0.000000)
sqrt r0.y, r0.y
mul_sat r0.y, r0.y, cb2[10].w
ge r0.z, l(0.000000), r0.y
log r0.y, r0.y
mul r0.y, r0.y, cb2[11].x
exp r0.y, r0.y
add r0.y, r0.y, l(-0.333000)
dp3 r0.w, r1.xyzx, l(0.300000, 0.600000, 0.100000, 0.000000)
min r0.x, r0.x, cb2[11].y
mad r0.x, -r0.x, r0.x, cb2[11].z
max r0.x, r0.x, l(0.000000)
sqrt r0.x, r0.x
mul_sat r0.x, r0.x, cb2[11].w
ge r1.w, l(0.000000), r0.x
log r0.x, r0.x
mul r0.x, r0.x, cb2[12].x
exp r0.x, r0.x
add r0.x, r0.x, l(-0.333000)
mul_sat r0.xy, r0.xyxx, l(1.666000, 1.666000, 0.000000, 0.000000)
add r3.xyz, -r0.wwww, r1.xyzx
mul r3.xyz, r0.xxxx, r3.xyzx
movc r3.xyz, r1.wwww, l(0,0,0,0), r3.xyzx
add r3.xyz, r0.wwww, r3.xyzx
mul r0.xyw, r0.yyyy, r3.xyxz
movc r0.xyz, r0.zzzz, l(0,0,0,0), r0.xywx
add r0.xyz, -r1.xyzx, r0.xyzx
mad r0.xyz, cb2[12].yyyy, r0.xyzx, r1.xyzx
add r0.xyz, -r2.xyzx, r0.xyzx
mad r0.xyz, cb2[12].zzzz, r0.xyzx, r2.xyzx
add r1.xyz, -r0.xyzx, cb2[13].xyzx
mad r0.xyz, cb2[12].wwww, r1.xyzx, r0.xyzx
max o0.xyz, r0.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
mov o0.w, l(0)
ret
// Approximately 0 instruction slots used

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