//HBAO+. 4.02 update.
// ---- Created with 3Dmigoto v1.3.16 on Tue Mar 14 20:44:48 2023
Texture2D<float4> t1 : register(t1);

Texture2DArray<float4> t0 : register(t0);

SamplerState s0_s : register(s0);

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

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

cbuffer cb13 : register(b13)
{
  float4 cb13[234];
}


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


void main(
  float4 v0 : SV_Position0,
  float2 v1 : TEXCOORD0,
  out float o0 : SV_TARGET0)
{
  float4 r0,r1,r2,r3,r4,r5,r6,r7;
  uint4 bitmask, uiDest;
  float4 fDest;
  
  float4 stereo = StereoParams.Load(0);
  float fov = -cb13[13].x;
  
  r0.xy = floor(v0.xy);
  r0.xy = r0.xy * float2(4,4) + cb1[1].xy;
  r0.zw = cb0[1].xy * r0.xy;
  r1.xy = float2(0.25,0.25) * r0.zw;
  r1.z = 0;
  r2.z = t0.SampleLevel(s0_s, r1.xyz, 0).x;
  r3.x = cb0[3].x / r2.z;
  r0.zw = cmp(cb0[8].xy != float2(-1,-1));
  if (r0.z != 0) {
    r0.z = cb0[8].x / r3.x;
    r0.z = max(1, r0.z);
    r3.x = r3.x * r0.z;
    r0.z = r0.z * r0.z;
    r0.z = 1 / r0.z;
    r3.y = cb0[3].z * r0.z;
  } else {
    r3.y = cb0[3].z;
  }
  if (r0.w != 0) {
    r0.z = cb0[8].y / r3.x;
    r0.z = min(1, r0.z);
    r3.x = r3.x * r0.z;
    r0.z = r0.z * r0.z;
    r0.z = 1 / r0.z;
    r3.y = r3.y * r0.z;
  }
  r0.z = cmp(r3.x < 1);
  if (r0.z != 0) {
    o0.x = 1;
    return;
  }
  r0.zw = cb0[2].xy * r1.xy + cb0[2].zw;
  r2.xy = r0.zw * r2.zz;
  
  r2.x+=stereo.x*(r2.z-stereo.y)/fov;
  
  r0.xy = cb0[7].xy + r0.xy;
  r0.xy = (int2)r0.xy;
  r0.zw = float2(0,0);
  r0.xyz = t1.Load(r0.xyz).xyz;
  r0.xyz = r0.xyz * cb0[13].xxx + cb0[13].yyy;
  r4.xyz = cb0[10].xyz * r0.yyy;
  r0.xyw = r0.xxx * cb0[9].xyz + r4.xyz;
  r0.xyz = r0.zzz * cb0[11].xyz + r0.xyw;
  r0.w = dot(r0.xyz, r0.xyz);
  r0.w = rsqrt(r0.w);
  r0.xyz = r0.xyz * r0.www;
  r0.w = 0.0500000007 * r3.x;
  r0.w = cb1[0].z * r0.w + 1;
  r1.zw = cb1[0].xy * r0.ww;
  r1.zw = round(r1.zw);
  r4.xy = r1.zw * cb0[1].xy + r1.xy;
  r4.z = 0;
  r5.z = t0.SampleLevel(s0_s, r4.xyz, 0).x;
  r1.zw = cb0[2].xy * r4.xy + cb0[2].zw;
  r5.xy = r1.zw * r5.zz;
  
  r5.x+=stereo.x*(r5.z-stereo.y)/fov;
  
  r1.z = r3.x * 0.0500000007 + r0.w;
  r4.xyz = r5.xyz + -r2.xyz;
  r1.w = dot(r4.xyz, r4.xyz);
  r2.w = dot(r0.xyz, r4.xyz);
  r3.z = rsqrt(r1.w);
  r2.w = saturate(r2.w * r3.z + -cb0[3].w);
  r1.w = saturate(r1.w * r3.y + 1);
  r3.zw = cb1[0].xy * r1.zz;
  r3.zw = round(r3.zw);
  r4.xy = r3.zw * cb0[1].xy + r1.xy;
  r4.z = 0;
  r5.z = t0.SampleLevel(s0_s, r4.xyz, 0).x;
  r3.zw = cb0[2].xy * r4.xy + cb0[2].zw;
  r5.xy = r3.zw * r5.zz;
  
  r5.x+=stereo.x*(r5.z-stereo.y)/fov;
  
  r3.z = r3.x * 0.0500000007 + r1.z;
  r4.xyz = r5.xyz + -r2.xyz;
  r3.w = dot(r4.xyz, r4.xyz);
  r4.x = dot(r0.xyz, r4.xyz);
  r4.y = rsqrt(r3.w);
  r4.x = saturate(r4.x * r4.y + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r4.yz = cb1[0].xy * r3.zz;
  r4.yz = round(r4.yz);
  r5.xy = r4.yz * cb0[1].xy + r1.xy;
  r5.z = 0;
  r4.w = t0.SampleLevel(s0_s, r5.xyz, 0).x;
  r5.xy = cb0[2].xy * r5.xy + cb0[2].zw;
  r4.yz = r5.xy * r4.ww;
  
  r4.y+=stereo.x*(r4.w-stereo.y)/fov;
  
  r3.x = r3.x * 0.0500000007 + r3.z;
  r4.yzw = r4.yzw + -r2.xyz;
  r5.x = dot(r4.yzw, r4.yzw);
  r4.y = dot(r0.xyz, r4.yzw);
  r4.z = rsqrt(r5.x);
  r4.y = saturate(r4.y * r4.z + -cb0[3].w);
  r4.z = saturate(r5.x * r3.y + 1);
  r4.y = r4.y * r4.z;
  r3.w = r4.x * r3.w + r4.y;
  r4.xy = cb1[0].xy * r3.xx;
  r4.xy = round(r4.xy);
  r4.xy = r4.xy * cb0[1].xy + r1.xy;
  r4.z = 0;
  r5.z = t0.SampleLevel(s0_s, r4.xyz, 0).x;
  r4.xy = cb0[2].xy * r4.xy + cb0[2].zw;
  r5.xy = r4.xy * r5.zz;
  
  r5.x+=stereo.x*(r5.z-stereo.y)/fov;
  
  r4.xyz = r5.xyz + -r2.xyz;
  r4.w = dot(r4.xyz, r4.xyz);
  r4.x = dot(r0.xyz, r4.xyz);
  r4.y = rsqrt(r4.w);
  r4.x = saturate(r4.x * r4.y + -cb0[3].w);
  r4.y = saturate(r4.w * r3.y + 1);
  r3.w = r4.x * r4.y + r3.w;
  r4.xy = float2(0.707106769,0.707106769) * cb1[0].xy;
  r5.x = cb1[0].x * 0.707106769 + -r4.y;
  r5.y = r4.y + r4.x;
  r4.zw = r5.xy * r0.ww;
  r4.zw = round(r4.zw);
  r6.xy = r4.zw * cb0[1].xy + r1.xy;
  r6.z = 0;
  r7.z = t0.SampleLevel(s0_s, r6.xyz, 0).x;
  r4.zw = cb0[2].xy * r6.xy + cb0[2].zw;
  r7.xy = r4.zw * r7.zz;
  
  r7.x+=stereo.x*(r7.z-stereo.y)/fov;
  
  r6.xyz = r7.xyz + -r2.xyz;
  r4.z = dot(r6.xyz, r6.xyz);
  r4.w = dot(r0.xyz, r6.xyz);
  r5.z = rsqrt(r4.z);
  r4.w = saturate(r4.w * r5.z + -cb0[3].w);
  r4.z = saturate(r4.z * r3.y + 1);
  r4.z = r4.w * r4.z;
  r1.w = r2.w * r1.w + r4.z;
  r4.zw = r5.xy * r1.zz;
  r4.zw = round(r4.zw);
  r6.xy = r4.zw * cb0[1].xy + r1.xy;
  r6.z = 0;
  r7.z = t0.SampleLevel(s0_s, r6.xyz, 0).x;
  r4.zw = cb0[2].xy * r6.xy + cb0[2].zw;
  r7.xy = r4.zw * r7.zz;
  
  r7.x+=stereo.x*(r7.z-stereo.y)/fov;
  
  r6.xyz = r7.xyz + -r2.xyz;
  r2.w = dot(r6.xyz, r6.xyz);
  r4.z = dot(r0.xyz, r6.xyz);
  r4.w = rsqrt(r2.w);
  r4.z = saturate(r4.z * r4.w + -cb0[3].w);
  r2.w = saturate(r2.w * r3.y + 1);
  r2.w = r4.z * r2.w + r3.w;
  r4.zw = r5.xy * r3.zz;
  r4.zw = round(r4.zw);
  r6.xy = r4.zw * cb0[1].xy + r1.xy;
  r6.z = 0;
  r7.z = t0.SampleLevel(s0_s, r6.xyz, 0).x;
  r4.zw = cb0[2].xy * r6.xy + cb0[2].zw;
  r7.xy = r4.zw * r7.zz;
  
  r7.x+=stereo.x*(r7.z-stereo.y)/fov;
  
  r6.xyz = r7.xyz + -r2.xyz;
  r3.w = dot(r6.xyz, r6.xyz);
  r4.z = dot(r0.xyz, r6.xyz);
  r4.w = rsqrt(r3.w);
  r4.z = saturate(r4.z * r4.w + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r2.w = r4.z * r3.w + r2.w;
  r4.zw = r5.xy * r3.xx;
  r4.zw = round(r4.zw);
  r5.xy = r4.zw * cb0[1].xy + r1.xy;
  r5.z = 0;
  r6.z = t0.SampleLevel(s0_s, r5.xyz, 0).x;
  r4.zw = cb0[2].xy * r5.xy + cb0[2].zw;
  r6.xy = r4.zw * r6.zz;
  
  r6.x+=stereo.x*(r6.z-stereo.y)/fov;
  
  r5.xyz = r6.xyz + -r2.xyz;
  r3.w = dot(r5.xyz, r5.xyz);
  r4.z = dot(r0.xyz, r5.xyz);
  r4.w = rsqrt(r3.w);
  r4.z = saturate(r4.z * r4.w + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r2.w = r4.z * r3.w + r2.w;
  r5.x = cb1[0].x * -4.37113883e-08 + -cb1[0].y;
  r5.y = cb1[0].y * -4.37113883e-08 + cb1[0].x;
  r4.zw = r5.xy * r0.ww;
  r4.zw = round(r4.zw);
  r6.xy = r4.zw * cb0[1].xy + r1.xy;
  r6.z = 0;
  r7.z = t0.SampleLevel(s0_s, r6.xyz, 0).x;
  r4.zw = cb0[2].xy * r6.xy + cb0[2].zw;
  r7.xy = r4.zw * r7.zz;
  
  r7.x+=stereo.x*(r7.z-stereo.y)/fov;
  
  r6.xyz = r7.xyz + -r2.xyz;
  r3.w = dot(r6.xyz, r6.xyz);
  r4.z = dot(r0.xyz, r6.xyz);
  r4.w = rsqrt(r3.w);
  r4.z = saturate(r4.z * r4.w + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r1.w = r4.z * r3.w + r1.w;
  r4.zw = r5.xy * r1.zz;
  r4.zw = round(r4.zw);
  r6.xy = r4.zw * cb0[1].xy + r1.xy;
  r6.z = 0;
  r7.z = t0.SampleLevel(s0_s, r6.xyz, 0).x;
  r4.zw = cb0[2].xy * r6.xy + cb0[2].zw;
  r7.xy = r4.zw * r7.zz;
  
  r7.x+=stereo.x*(r7.z-stereo.y)/fov;
  
  r6.xyz = r7.xyz + -r2.xyz;
  r3.w = dot(r6.xyz, r6.xyz);
  r4.z = dot(r0.xyz, r6.xyz);
  r4.w = rsqrt(r3.w);
  r4.z = saturate(r4.z * r4.w + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r2.w = r4.z * r3.w + r2.w;
  r4.zw = r5.xy * r3.zz;
  r4.zw = round(r4.zw);
  r6.xy = r4.zw * cb0[1].xy + r1.xy;
  r6.z = 0;
  r7.z = t0.SampleLevel(s0_s, r6.xyz, 0).x;
  r4.zw = cb0[2].xy * r6.xy + cb0[2].zw;
  r7.xy = r4.zw * r7.zz;
  
  r7.x+=stereo.x*(r7.z-stereo.y)/fov;
  
  r6.xyz = r7.xyz + -r2.xyz;
  r3.w = dot(r6.xyz, r6.xyz);
  r4.z = dot(r0.xyz, r6.xyz);
  r4.w = rsqrt(r3.w);
  r4.z = saturate(r4.z * r4.w + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r2.w = r4.z * r3.w + r2.w;
  r4.zw = r5.xy * r3.xx;
  r4.zw = round(r4.zw);
  r5.xy = r4.zw * cb0[1].xy + r1.xy;
  r5.z = 0;
  r6.z = t0.SampleLevel(s0_s, r5.xyz, 0).x;
  r4.zw = cb0[2].xy * r5.xy + cb0[2].zw;
  r6.xy = r4.zw * r6.zz;
  
  r6.x+=stereo.x*(r6.z-stereo.y)/fov;
  
  r5.xyz = r6.xyz + -r2.xyz;
  r3.w = dot(r5.xyz, r5.xyz);
  r4.z = dot(r0.xyz, r5.xyz);
  r4.w = rsqrt(r3.w);
  r4.z = saturate(r4.z * r4.w + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r2.w = r4.z * r3.w + r2.w;
  r5.x = cb1[0].x * -0.707106769 + -r4.y;
  r5.y = cb1[0].y * -0.707106769 + r4.x;
  r4.xy = r5.xy * r0.ww;
  r4.xy = round(r4.xy);
  r4.xy = r4.xy * cb0[1].xy + r1.xy;
  r4.z = 0;
  r6.z = t0.SampleLevel(s0_s, r4.xyz, 0).x;
  r4.xy = cb0[2].xy * r4.xy + cb0[2].zw;
  r6.xy = r4.xy * r6.zz;
  
  r6.x+=stereo.x*(r6.z-stereo.y)/fov;
  
  r4.xyz = r6.xyz + -r2.xyz;
  r3.w = dot(r4.xyz, r4.xyz);
  r4.x = dot(r0.xyz, r4.xyz);
  r4.y = rsqrt(r3.w);
  r4.x = saturate(r4.x * r4.y + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r1.w = r4.x * r3.w + r1.w;
  r4.xy = r5.xy * r1.zz;
  r4.xy = round(r4.xy);
  r4.xy = r4.xy * cb0[1].xy + r1.xy;
  r4.z = 0;
  r6.z = t0.SampleLevel(s0_s, r4.xyz, 0).x;
  r4.xy = cb0[2].xy * r4.xy + cb0[2].zw;
  r6.xy = r4.xy * r6.zz;
  
  r6.x+=stereo.x*(r6.z-stereo.y)/fov;
  
  r4.xyz = r6.xyz + -r2.xyz;
  r3.w = dot(r4.xyz, r4.xyz);
  r4.x = dot(r0.xyz, r4.xyz);
  r4.y = rsqrt(r3.w);
  r4.x = saturate(r4.x * r4.y + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r2.w = r4.x * r3.w + r2.w;
  r4.xy = r5.xy * r3.zz;
  r4.xy = round(r4.xy);
  r4.xy = r4.xy * cb0[1].xy + r1.xy;
  r4.z = 0;
  r6.z = t0.SampleLevel(s0_s, r4.xyz, 0).x;
  r4.xy = cb0[2].xy * r4.xy + cb0[2].zw;
  r6.xy = r4.xy * r6.zz;
  
  r6.x+=stereo.x*(r6.z-stereo.y)/fov;
  
  r4.xyz = r6.xyz + -r2.xyz;
  r3.w = dot(r4.xyz, r4.xyz);
  r4.x = dot(r0.xyz, r4.xyz);
  r4.y = rsqrt(r3.w);
  r4.x = saturate(r4.x * r4.y + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r2.w = r4.x * r3.w + r2.w;
  r4.xy = r5.xy * r3.xx;
  r4.xy = round(r4.xy);
  r4.xy = r4.xy * cb0[1].xy + r1.xy;
  r4.z = 0;
  r5.z = t0.SampleLevel(s0_s, r4.xyz, 0).x;
  r4.xy = cb0[2].xy * r4.xy + cb0[2].zw;
  r5.xy = r4.xy * r5.zz;
  
  r5.x+=stereo.x*(r5.z-stereo.y)/fov;
  
  r4.xyz = r5.xyz + -r2.xyz;
  r3.w = dot(r4.xyz, r4.xyz);
  r4.x = dot(r0.xyz, r4.xyz);
  r4.y = rsqrt(r3.w);
  r4.x = saturate(r4.x * r4.y + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r2.w = r4.x * r3.w + r2.w;
  r4.x = -cb1[0].y * -8.74227766e-08 + -cb1[0].x;
  r4.y = cb1[0].x * -8.74227766e-08 + -cb1[0].y;
  r4.zw = r4.xy * r0.ww;
  r4.zw = round(r4.zw);
  r5.xy = r4.zw * cb0[1].xy + r1.xy;
  r5.z = 0;
  r6.z = t0.SampleLevel(s0_s, r5.xyz, 0).x;
  r4.zw = cb0[2].xy * r5.xy + cb0[2].zw;
  r6.xy = r4.zw * r6.zz;
  
  r6.x+=stereo.x*(r6.z-stereo.y)/fov;
  
  r5.xyz = r6.xyz + -r2.xyz;
  r3.w = dot(r5.xyz, r5.xyz);
  r4.z = dot(r0.xyz, r5.xyz);
  r4.w = rsqrt(r3.w);
  r4.z = saturate(r4.z * r4.w + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r1.w = r4.z * r3.w + r1.w;
  r4.zw = r4.xy * r1.zz;
  r4.zw = round(r4.zw);
  r5.xy = r4.zw * cb0[1].xy + r1.xy;
  r5.z = 0;
  r6.z = t0.SampleLevel(s0_s, r5.xyz, 0).x;
  r4.zw = cb0[2].xy * r5.xy + cb0[2].zw;
  r6.xy = r4.zw * r6.zz;
  
  r6.x+=stereo.x*(r6.z-stereo.y)/fov;
  
  r5.xyz = r6.xyz + -r2.xyz;
  r3.w = dot(r5.xyz, r5.xyz);
  r4.z = dot(r0.xyz, r5.xyz);
  r4.w = rsqrt(r3.w);
  r4.z = saturate(r4.z * r4.w + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r2.w = r4.z * r3.w + r2.w;
  r4.zw = r4.xy * r3.zz;
  r4.zw = round(r4.zw);
  r5.xy = r4.zw * cb0[1].xy + r1.xy;
  r5.z = 0;
  r6.z = t0.SampleLevel(s0_s, r5.xyz, 0).x;
  r4.zw = cb0[2].xy * r5.xy + cb0[2].zw;
  r6.xy = r4.zw * r6.zz;
  
  r6.x+=stereo.x*(r6.z-stereo.y)/fov;
  
  r5.xyz = r6.xyz + -r2.xyz;
  r3.w = dot(r5.xyz, r5.xyz);
  r4.z = dot(r0.xyz, r5.xyz);
  r4.w = rsqrt(r3.w);
  r4.z = saturate(r4.z * r4.w + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r2.w = r4.z * r3.w + r2.w;
  r4.xy = r4.xy * r3.xx;
  r4.xy = round(r4.xy);
  r4.xy = r4.xy * cb0[1].xy + r1.xy;
  r4.z = 0;
  r5.z = t0.SampleLevel(s0_s, r4.xyz, 0).x;
  r4.xy = cb0[2].xy * r4.xy + cb0[2].zw;
  r5.xy = r4.xy * r5.zz;
  
  r5.x+=stereo.x*(r5.z-stereo.y)/fov;
  
  r4.xyz = r5.xyz + -r2.xyz;
  r3.w = dot(r4.xyz, r4.xyz);
  r4.x = dot(r0.xyz, r4.xyz);
  r4.y = rsqrt(r3.w);
  r4.x = saturate(r4.x * r4.y + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r2.w = r4.x * r3.w + r2.w;
  r3.w = -0.707106888 * cb1[0].y;
  r4.x = cb1[0].x * -0.70710665 + -r3.w;
  r4.y = dot(cb1[0].yx, float2(-0.70710665,-0.707106888));
  r4.zw = r4.xy * r0.ww;
  r4.zw = round(r4.zw);
  r5.xy = r4.zw * cb0[1].xy + r1.xy;
  r5.z = 0;
  r6.z = t0.SampleLevel(s0_s, r5.xyz, 0).x;
  r4.zw = cb0[2].xy * r5.xy + cb0[2].zw;
  r6.xy = r4.zw * r6.zz;
  
  r6.x+=stereo.x*(r6.z-stereo.y)/fov;
  
  r5.xyz = r6.xyz + -r2.xyz;
  r3.w = dot(r5.xyz, r5.xyz);
  r4.z = dot(r0.xyz, r5.xyz);
  r4.w = rsqrt(r3.w);
  r4.z = saturate(r4.z * r4.w + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r1.w = r4.z * r3.w + r1.w;
  r4.zw = r4.xy * r1.zz;
  r4.zw = round(r4.zw);
  r5.xy = r4.zw * cb0[1].xy + r1.xy;
  r5.z = 0;
  r6.z = t0.SampleLevel(s0_s, r5.xyz, 0).x;
  r4.zw = cb0[2].xy * r5.xy + cb0[2].zw;
  r6.xy = r4.zw * r6.zz;
  
  r6.x+=stereo.x*(r6.z-stereo.y)/fov;
  
  r5.xyz = r6.xyz + -r2.xyz;
  r3.w = dot(r5.xyz, r5.xyz);
  r4.z = dot(r0.xyz, r5.xyz);
  r4.w = rsqrt(r3.w);
  r4.z = saturate(r4.z * r4.w + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r2.w = r4.z * r3.w + r2.w;
  r4.zw = r4.xy * r3.zz;
  r4.zw = round(r4.zw);
  r5.xy = r4.zw * cb0[1].xy + r1.xy;
  r5.z = 0;
  r6.z = t0.SampleLevel(s0_s, r5.xyz, 0).x;
  r4.zw = cb0[2].xy * r5.xy + cb0[2].zw;
  r6.xy = r4.zw * r6.zz;
  
  r6.x+=stereo.x*(r6.z-stereo.y)/fov;
  
  r5.xyz = r6.xyz + -r2.xyz;
  r3.w = dot(r5.xyz, r5.xyz);
  r4.z = dot(r0.xyz, r5.xyz);
  r4.w = rsqrt(r3.w);
  r4.z = saturate(r4.z * r4.w + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r2.w = r4.z * r3.w + r2.w;
  r4.xy = r4.xy * r3.xx;
  r4.xy = round(r4.xy);
  r4.xy = r4.xy * cb0[1].xy + r1.xy;
  r4.z = 0;
  r5.z = t0.SampleLevel(s0_s, r4.xyz, 0).x;
  r4.xy = cb0[2].xy * r4.xy + cb0[2].zw;
  r5.xy = r4.xy * r5.zz;
  
  r5.x+=stereo.x*(r5.z-stereo.y)/fov;
  
  r4.xyz = r5.xyz + -r2.xyz;
  r3.w = dot(r4.xyz, r4.xyz);
  r4.x = dot(r0.xyz, r4.xyz);
  r4.y = rsqrt(r3.w);
  r4.x = saturate(r4.x * r4.y + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r2.w = r4.x * r3.w + r2.w;
  r4.x = cb1[0].x * 1.19248806e-08 + cb1[0].y;
  r4.y = cb1[0].y * 1.19248806e-08 + -cb1[0].x;
  r4.zw = r4.xy * r0.ww;
  r4.zw = round(r4.zw);
  r5.xy = r4.zw * cb0[1].xy + r1.xy;
  r5.z = 0;
  r6.z = t0.SampleLevel(s0_s, r5.xyz, 0).x;
  r4.zw = cb0[2].xy * r5.xy + cb0[2].zw;
  r6.xy = r4.zw * r6.zz;
  
  r6.x+=stereo.x*(r6.z-stereo.y)/fov;
  
  r5.xyz = r6.xyz + -r2.xyz;
  r3.w = dot(r5.xyz, r5.xyz);
  r4.z = dot(r0.xyz, r5.xyz);
  r4.w = rsqrt(r3.w);
  r4.z = saturate(r4.z * r4.w + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r1.w = r4.z * r3.w + r1.w;
  r4.zw = r4.xy * r1.zz;
  r4.zw = round(r4.zw);
  r5.xy = r4.zw * cb0[1].xy + r1.xy;
  r5.z = 0;
  r6.z = t0.SampleLevel(s0_s, r5.xyz, 0).x;
  r4.zw = cb0[2].xy * r5.xy + cb0[2].zw;
  r6.xy = r4.zw * r6.zz;
  
  r6.x+=stereo.x*(r6.z-stereo.y)/fov;
  
  r5.xyz = r6.xyz + -r2.xyz;
  r3.w = dot(r5.xyz, r5.xyz);
  r4.z = dot(r0.xyz, r5.xyz);
  r4.w = rsqrt(r3.w);
  r4.z = saturate(r4.z * r4.w + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r2.w = r4.z * r3.w + r2.w;
  r4.zw = r4.xy * r3.zz;
  r4.zw = round(r4.zw);
  r5.xy = r4.zw * cb0[1].xy + r1.xy;
  r5.z = 0;
  r6.z = t0.SampleLevel(s0_s, r5.xyz, 0).x;
  r4.zw = cb0[2].xy * r5.xy + cb0[2].zw;
  r6.xy = r4.zw * r6.zz;
  
  r6.x+=stereo.x*(r6.z-stereo.y)/fov;
  
  r5.xyz = r6.xyz + -r2.xyz;
  r3.w = dot(r5.xyz, r5.xyz);
  r4.z = dot(r0.xyz, r5.xyz);
  r4.w = rsqrt(r3.w);
  r4.z = saturate(r4.z * r4.w + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r2.w = r4.z * r3.w + r2.w;
  r4.xy = r4.xy * r3.xx;
  r4.xy = round(r4.xy);
  r4.xy = r4.xy * cb0[1].xy + r1.xy;
  r4.z = 0;
  r5.z = t0.SampleLevel(s0_s, r4.xyz, 0).x;
  r4.xy = cb0[2].xy * r4.xy + cb0[2].zw;
  r5.xy = r4.xy * r5.zz;
  
  r5.x+=stereo.x*(r5.z-stereo.y)/fov;
  
  r4.xyz = r5.xyz + -r2.xyz;
  r3.w = dot(r4.xyz, r4.xyz);
  r4.x = dot(r0.xyz, r4.xyz);
  r4.y = rsqrt(r3.w);
  r4.x = saturate(r4.x * r4.y + -cb0[3].w);
  r3.w = saturate(r3.w * r3.y + 1);
  r2.w = r4.x * r3.w + r2.w;
  r3.w = -0.707106531 * cb1[0].y;
  r4.x = cb1[0].x * 0.707107008 + -r3.w;
  r4.y = dot(cb1[0].yx, float2(0.707107008,-0.707106531));
  r4.zw = r4.xy * r0.ww;
  r4.zw = round(r4.zw);
  r5.xy = r4.zw * cb0[1].xy + r1.xy;
  r5.z = 0;
  r6.z = t0.SampleLevel(s0_s, r5.xyz, 0).x;
  r4.zw = cb0[2].xy * r5.xy + cb0[2].zw;
  r6.xy = r4.zw * r6.zz;
  
  r6.x+=stereo.x*(r6.z-stereo.y)/fov;
  
  r5.xyz = r6.xyz + -r2.xyz;
  r0.w = dot(r5.xyz, r5.xyz);
  r3.w = dot(r0.xyz, r5.xyz);
  r4.z = rsqrt(r0.w);
  r3.w = saturate(r3.w * r4.z + -cb0[3].w);
  r0.w = saturate(r0.w * r3.y + 1);
  r0.w = r3.w * r0.w + r1.w;
  r1.zw = r4.xy * r1.zz;
  r1.zw = round(r1.zw);
  r5.xy = r1.zw * cb0[1].xy + r1.xy;
  r5.z = 0;
  r6.z = t0.SampleLevel(s0_s, r5.xyz, 0).x;
  r1.zw = cb0[2].xy * r5.xy + cb0[2].zw;
  r6.xy = r1.zw * r6.zz;
  
  r6.x+=stereo.x*(r6.z-stereo.y)/fov;
  
  r5.xyz = r6.xyz + -r2.xyz;
  r1.z = dot(r5.xyz, r5.xyz);
  r1.w = dot(r0.xyz, r5.xyz);
  r3.w = rsqrt(r1.z);
  r1.w = saturate(r1.w * r3.w + -cb0[3].w);
  r1.z = saturate(r1.z * r3.y + 1);
  r1.z = r1.w * r1.z + r2.w;
  r3.zw = r4.xy * r3.zz;
  r3.zw = round(r3.zw);
  r5.xy = r3.zw * cb0[1].xy + r1.xy;
  r5.z = 0;
  r6.z = t0.SampleLevel(s0_s, r5.xyz, 0).x;
  r3.zw = cb0[2].xy * r5.xy + cb0[2].zw;
  r6.xy = r3.zw * r6.zz;
  
  r6.x+=stereo.x*(r6.z-stereo.y)/fov;
  
  r5.xyz = r6.xyz + -r2.xyz;
  r1.w = dot(r5.xyz, r5.xyz);
  r2.w = dot(r0.xyz, r5.xyz);
  r3.z = rsqrt(r1.w);
  r2.w = saturate(r2.w * r3.z + -cb0[3].w);
  r1.w = saturate(r1.w * r3.y + 1);
  r1.z = r2.w * r1.w + r1.z;
  r3.xz = r4.xy * r3.xx;
  r3.xz = round(r3.xz);
  r4.xy = r3.xz * cb0[1].xy + r1.xy;
  r4.z = 0;
  r1.w = t0.SampleLevel(s0_s, r4.xyz, 0).x;
  r3.xz = cb0[2].xy * r4.xy + cb0[2].zw;
  r1.xy = r3.xz * r1.ww;
  
  r1.x+=stereo.x*(r1.w-stereo.y)/fov;
  
  r1.xyw = r1.xyw + -r2.xyz;
  r2.x = dot(r1.xyw, r1.xyw);
  r0.x = dot(r0.xyz, r1.xyw);
  r0.y = rsqrt(r2.x);
  r0.x = saturate(r0.x * r0.y + -cb0[3].w);
  r0.y = saturate(r2.x * r3.y + 1);
  r0.x = r0.x * r0.y + r1.z;
  r0.x = cb0[4].y * r0.x;
  r0.x = r0.w * cb0[4].x + r0.x;
  r0.x = 0.03125 * r0.x;
  r0.y = cmp(cb0[7].w != -1.000000);
  if (r0.y != 0) {
    r0.y = r2.z * cb0[7].z + 1;
    r0.y = saturate(cb0[7].w * r0.y);
    r0.x = r0.x * r0.y;
  }
  o0.x = saturate(-r0.x * 2 + 1);
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.3.16 on Tue Mar 14 20:44:48 2023
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float   xy
// TEXCOORD                 0   xy          1     NONE   float
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_TARGET                0   x           0   TARGET   float   x
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer CB0[14], immediateIndexed
dcl_constantbuffer CB1[2], immediateIndexed
dcl_sampler s0, mode_default
dcl_resource_texture2darray (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_output o0.x
dcl_temps 8
round_ni r0.xy, v0.xyxx
mad r0.xy, r0.xyxx, l(4.000000, 4.000000, 0.000000, 0.000000), cb1[1].xyxx
mul r0.zw, r0.xxxy, cb0[1].xxxy
mul r1.xy, r0.zwzz, l(0.250000, 0.250000, 0.000000, 0.000000)
mov r1.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r2.z, r1.xyzx, t0.yzxw, s0, l(0.000000)
div r3.x, cb0[3].x, r2.z
ne r0.zw, cb0[8].xxxy, l(0.000000, 0.000000, -1.000000, -1.000000)
if_nz r0.z
  div r0.z, cb0[8].x, r3.x
  max r0.z, r0.z, l(1.000000)
  mul r3.x, r0.z, r3.x
  mul r0.z, r0.z, r0.z
  div r0.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.z
  mul r3.y, r0.z, cb0[3].z
else
  mov r3.y, cb0[3].z
endif
if_nz r0.w
  div r0.z, cb0[8].y, r3.x
  min r0.z, r0.z, l(1.000000)
  mul r3.x, r0.z, r3.x
  mul r0.z, r0.z, r0.z
  div r0.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.z
  mul r3.y, r0.z, r3.y
endif
lt r0.z, r3.x, l(1.000000)
if_nz r0.z
  mov o0.x, l(1.000000)
  ret
endif
mad r0.zw, cb0[2].xxxy, r1.xxxy, cb0[2].zzzw
mul r2.xy, r2.zzzz, r0.zwzz
add r0.xy, r0.xyxx, cb0[7].xyxx
ftoi r0.xy, r0.xyxx
mov r0.zw, l(0,0,0,0)
ld_indexable(texture2d)(float,float,float,float) r0.xyz, r0.xyzw, t1.xyzw
mad r0.xyz, r0.xyzx, cb0[13].xxxx, cb0[13].yyyy
mul r4.xyz, r0.yyyy, cb0[10].xyzx
mad r0.xyw, r0.xxxx, cb0[9].xyxz, r4.xyxz
mad r0.xyz, r0.zzzz, cb0[11].xyzx, r0.xywx
dp3 r0.w, r0.xyzx, r0.xyzx
rsq r0.w, r0.w
mul r0.xyz, r0.wwww, r0.xyzx
mul r0.w, r3.x, l(0.050000)
mad r0.w, cb1[0].z, r0.w, l(1.000000)
mul r1.zw, r0.wwww, cb1[0].xxxy
round_ne r1.zw, r1.zzzw
mad r4.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx
mov r4.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000)
mad r1.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw
mul r5.xy, r5.zzzz, r1.zwzz
mad r1.z, r3.x, l(0.050000), r0.w
add r4.xyz, -r2.xyzx, r5.xyzx
dp3 r1.w, r4.xyzx, r4.xyzx
dp3 r2.w, r0.xyzx, r4.xyzx
rsq r3.z, r1.w
mad_sat r2.w, r2.w, r3.z, -cb0[3].w
mad_sat r1.w, r1.w, r3.y, l(1.000000)
mul r3.zw, r1.zzzz, cb1[0].xxxy
round_ne r3.zw, r3.zzzw
mad r4.xy, r3.zwzz, cb0[1].xyxx, r1.xyxx
mov r4.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000)
mad r3.zw, cb0[2].xxxy, r4.xxxy, cb0[2].zzzw
mul r5.xy, r5.zzzz, r3.zwzz
mad r3.z, r3.x, l(0.050000), r1.z
add r4.xyz, -r2.xyzx, r5.xyzx
dp3 r3.w, r4.xyzx, r4.xyzx
dp3 r4.x, r0.xyzx, r4.xyzx
rsq r4.y, r3.w
mad_sat r4.x, r4.x, r4.y, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mul r4.yz, r3.zzzz, cb1[0].xxyx
round_ne r4.yz, r4.yyzy
mad r5.xy, r4.yzyy, cb0[1].xyxx, r1.xyxx
mov r5.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r4.w, r5.xyzx, t0.wyzx, s0, l(0.000000)
mad r5.xy, cb0[2].xyxx, r5.xyxx, cb0[2].zwzz
mul r4.yz, r4.wwww, r5.xxyx
mad r3.x, r3.x, l(0.050000), r3.z
add r4.yzw, -r2.xxyz, r4.yyzw
dp3 r5.x, r4.yzwy, r4.yzwy
dp3 r4.y, r0.xyzx, r4.yzwy
rsq r4.z, r5.x
mad_sat r4.y, r4.y, r4.z, -cb0[3].w
mad_sat r4.z, r5.x, r3.y, l(1.000000)
mul r4.y, r4.z, r4.y
mad r3.w, r4.x, r3.w, r4.y
mul r4.xy, r3.xxxx, cb1[0].xyxx
round_ne r4.xy, r4.xyxx
mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx
mov r4.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz
mul r5.xy, r5.zzzz, r4.xyxx
add r4.xyz, -r2.xyzx, r5.xyzx
dp3 r4.w, r4.xyzx, r4.xyzx
dp3 r4.x, r0.xyzx, r4.xyzx
rsq r4.y, r4.w
mad_sat r4.x, r4.x, r4.y, -cb0[3].w
mad_sat r4.y, r4.w, r3.y, l(1.000000)
mad r3.w, r4.x, r4.y, r3.w
mul r4.xy, cb1[0].xyxx, l(0.707106769, 0.707106769, 0.000000, 0.000000)
mad r5.x, cb1[0].x, l(0.707106769), -r4.y
add r5.y, r4.x, r4.y
mul r4.zw, r0.wwww, r5.xxxy
round_ne r4.zw, r4.zzzw
mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx
mov r6.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw
mul r7.xy, r7.zzzz, r4.zwzz
add r6.xyz, -r2.xyzx, r7.xyzx
dp3 r4.z, r6.xyzx, r6.xyzx
dp3 r4.w, r0.xyzx, r6.xyzx
rsq r5.z, r4.z
mad_sat r4.w, r4.w, r5.z, -cb0[3].w
mad_sat r4.z, r4.z, r3.y, l(1.000000)
mul r4.z, r4.z, r4.w
mad r1.w, r2.w, r1.w, r4.z
mul r4.zw, r1.zzzz, r5.xxxy
round_ne r4.zw, r4.zzzw
mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx
mov r6.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw
mul r7.xy, r7.zzzz, r4.zwzz
add r6.xyz, -r2.xyzx, r7.xyzx
dp3 r2.w, r6.xyzx, r6.xyzx
dp3 r4.z, r0.xyzx, r6.xyzx
rsq r4.w, r2.w
mad_sat r4.z, r4.z, r4.w, -cb0[3].w
mad_sat r2.w, r2.w, r3.y, l(1.000000)
mad r2.w, r4.z, r2.w, r3.w
mul r4.zw, r3.zzzz, r5.xxxy
round_ne r4.zw, r4.zzzw
mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx
mov r6.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw
mul r7.xy, r7.zzzz, r4.zwzz
add r6.xyz, -r2.xyzx, r7.xyzx
dp3 r3.w, r6.xyzx, r6.xyzx
dp3 r4.z, r0.xyzx, r6.xyzx
rsq r4.w, r3.w
mad_sat r4.z, r4.z, r4.w, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r2.w, r4.z, r3.w, r2.w
mul r4.zw, r3.xxxx, r5.xxxy
round_ne r4.zw, r4.zzzw
mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx
mov r5.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw
mul r6.xy, r6.zzzz, r4.zwzz
add r5.xyz, -r2.xyzx, r6.xyzx
dp3 r3.w, r5.xyzx, r5.xyzx
dp3 r4.z, r0.xyzx, r5.xyzx
rsq r4.w, r3.w
mad_sat r4.z, r4.z, r4.w, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r2.w, r4.z, r3.w, r2.w
mad r5.x, cb1[0].x, l(-4.371138829E-08), -cb1[0].y
mad r5.y, cb1[0].y, l(-4.371138829E-08), cb1[0].x
mul r4.zw, r0.wwww, r5.xxxy
round_ne r4.zw, r4.zzzw
mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx
mov r6.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw
mul r7.xy, r7.zzzz, r4.zwzz
add r6.xyz, -r2.xyzx, r7.xyzx
dp3 r3.w, r6.xyzx, r6.xyzx
dp3 r4.z, r0.xyzx, r6.xyzx
rsq r4.w, r3.w
mad_sat r4.z, r4.z, r4.w, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r1.w, r4.z, r3.w, r1.w
mul r4.zw, r1.zzzz, r5.xxxy
round_ne r4.zw, r4.zzzw
mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx
mov r6.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw
mul r7.xy, r7.zzzz, r4.zwzz
add r6.xyz, -r2.xyzx, r7.xyzx
dp3 r3.w, r6.xyzx, r6.xyzx
dp3 r4.z, r0.xyzx, r6.xyzx
rsq r4.w, r3.w
mad_sat r4.z, r4.z, r4.w, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r2.w, r4.z, r3.w, r2.w
mul r4.zw, r3.zzzz, r5.xxxy
round_ne r4.zw, r4.zzzw
mad r6.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx
mov r6.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r7.z, r6.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.zw, cb0[2].xxxy, r6.xxxy, cb0[2].zzzw
mul r7.xy, r7.zzzz, r4.zwzz
add r6.xyz, -r2.xyzx, r7.xyzx
dp3 r3.w, r6.xyzx, r6.xyzx
dp3 r4.z, r0.xyzx, r6.xyzx
rsq r4.w, r3.w
mad_sat r4.z, r4.z, r4.w, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r2.w, r4.z, r3.w, r2.w
mul r4.zw, r3.xxxx, r5.xxxy
round_ne r4.zw, r4.zzzw
mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx
mov r5.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw
mul r6.xy, r6.zzzz, r4.zwzz
add r5.xyz, -r2.xyzx, r6.xyzx
dp3 r3.w, r5.xyzx, r5.xyzx
dp3 r4.z, r0.xyzx, r5.xyzx
rsq r4.w, r3.w
mad_sat r4.z, r4.z, r4.w, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r2.w, r4.z, r3.w, r2.w
mad r5.x, cb1[0].x, l(-0.707106769), -r4.y
mad r5.y, cb1[0].y, l(-0.707106769), r4.x
mul r4.xy, r0.wwww, r5.xyxx
round_ne r4.xy, r4.xyxx
mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx
mov r4.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz
mul r6.xy, r6.zzzz, r4.xyxx
add r4.xyz, -r2.xyzx, r6.xyzx
dp3 r3.w, r4.xyzx, r4.xyzx
dp3 r4.x, r0.xyzx, r4.xyzx
rsq r4.y, r3.w
mad_sat r4.x, r4.x, r4.y, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r1.w, r4.x, r3.w, r1.w
mul r4.xy, r1.zzzz, r5.xyxx
round_ne r4.xy, r4.xyxx
mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx
mov r4.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz
mul r6.xy, r6.zzzz, r4.xyxx
add r4.xyz, -r2.xyzx, r6.xyzx
dp3 r3.w, r4.xyzx, r4.xyzx
dp3 r4.x, r0.xyzx, r4.xyzx
rsq r4.y, r3.w
mad_sat r4.x, r4.x, r4.y, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r2.w, r4.x, r3.w, r2.w
mul r4.xy, r3.zzzz, r5.xyxx
round_ne r4.xy, r4.xyxx
mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx
mov r4.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r4.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz
mul r6.xy, r6.zzzz, r4.xyxx
add r4.xyz, -r2.xyzx, r6.xyzx
dp3 r3.w, r4.xyzx, r4.xyzx
dp3 r4.x, r0.xyzx, r4.xyzx
rsq r4.y, r3.w
mad_sat r4.x, r4.x, r4.y, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r2.w, r4.x, r3.w, r2.w
mul r4.xy, r3.xxxx, r5.xyxx
round_ne r4.xy, r4.xyxx
mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx
mov r4.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz
mul r5.xy, r5.zzzz, r4.xyxx
add r4.xyz, -r2.xyzx, r5.xyzx
dp3 r3.w, r4.xyzx, r4.xyzx
dp3 r4.x, r0.xyzx, r4.xyzx
rsq r4.y, r3.w
mad_sat r4.x, r4.x, r4.y, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r2.w, r4.x, r3.w, r2.w
mad r4.x, -cb1[0].y, l(-8.742277657E-08), -cb1[0].x
mad r4.y, cb1[0].x, l(-8.742277657E-08), -cb1[0].y
mul r4.zw, r0.wwww, r4.xxxy
round_ne r4.zw, r4.zzzw
mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx
mov r5.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw
mul r6.xy, r6.zzzz, r4.zwzz
add r5.xyz, -r2.xyzx, r6.xyzx
dp3 r3.w, r5.xyzx, r5.xyzx
dp3 r4.z, r0.xyzx, r5.xyzx
rsq r4.w, r3.w
mad_sat r4.z, r4.z, r4.w, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r1.w, r4.z, r3.w, r1.w
mul r4.zw, r1.zzzz, r4.xxxy
round_ne r4.zw, r4.zzzw
mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx
mov r5.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw
mul r6.xy, r6.zzzz, r4.zwzz
add r5.xyz, -r2.xyzx, r6.xyzx
dp3 r3.w, r5.xyzx, r5.xyzx
dp3 r4.z, r0.xyzx, r5.xyzx
rsq r4.w, r3.w
mad_sat r4.z, r4.z, r4.w, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r2.w, r4.z, r3.w, r2.w
mul r4.zw, r3.zzzz, r4.xxxy
round_ne r4.zw, r4.zzzw
mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx
mov r5.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw
mul r6.xy, r6.zzzz, r4.zwzz
add r5.xyz, -r2.xyzx, r6.xyzx
dp3 r3.w, r5.xyzx, r5.xyzx
dp3 r4.z, r0.xyzx, r5.xyzx
rsq r4.w, r3.w
mad_sat r4.z, r4.z, r4.w, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r2.w, r4.z, r3.w, r2.w
mul r4.xy, r3.xxxx, r4.xyxx
round_ne r4.xy, r4.xyxx
mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx
mov r4.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz
mul r5.xy, r5.zzzz, r4.xyxx
add r4.xyz, -r2.xyzx, r5.xyzx
dp3 r3.w, r4.xyzx, r4.xyzx
dp3 r4.x, r0.xyzx, r4.xyzx
rsq r4.y, r3.w
mad_sat r4.x, r4.x, r4.y, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r2.w, r4.x, r3.w, r2.w
mul r3.w, cb1[0].y, l(-0.707106888)
mad r4.x, cb1[0].x, l(-0.707106650), -r3.w
dp2 r4.y, cb1[0].yxyy, l(-0.707106650, -0.707106888, 0.000000, 0.000000)
mul r4.zw, r0.wwww, r4.xxxy
round_ne r4.zw, r4.zzzw
mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx
mov r5.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw
mul r6.xy, r6.zzzz, r4.zwzz
add r5.xyz, -r2.xyzx, r6.xyzx
dp3 r3.w, r5.xyzx, r5.xyzx
dp3 r4.z, r0.xyzx, r5.xyzx
rsq r4.w, r3.w
mad_sat r4.z, r4.z, r4.w, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r1.w, r4.z, r3.w, r1.w
mul r4.zw, r1.zzzz, r4.xxxy
round_ne r4.zw, r4.zzzw
mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx
mov r5.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw
mul r6.xy, r6.zzzz, r4.zwzz
add r5.xyz, -r2.xyzx, r6.xyzx
dp3 r3.w, r5.xyzx, r5.xyzx
dp3 r4.z, r0.xyzx, r5.xyzx
rsq r4.w, r3.w
mad_sat r4.z, r4.z, r4.w, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r2.w, r4.z, r3.w, r2.w
mul r4.zw, r3.zzzz, r4.xxxy
round_ne r4.zw, r4.zzzw
mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx
mov r5.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw
mul r6.xy, r6.zzzz, r4.zwzz
add r5.xyz, -r2.xyzx, r6.xyzx
dp3 r3.w, r5.xyzx, r5.xyzx
dp3 r4.z, r0.xyzx, r5.xyzx
rsq r4.w, r3.w
mad_sat r4.z, r4.z, r4.w, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r2.w, r4.z, r3.w, r2.w
mul r4.xy, r3.xxxx, r4.xyxx
round_ne r4.xy, r4.xyxx
mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx
mov r4.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz
mul r5.xy, r5.zzzz, r4.xyxx
add r4.xyz, -r2.xyzx, r5.xyzx
dp3 r3.w, r4.xyzx, r4.xyzx
dp3 r4.x, r0.xyzx, r4.xyzx
rsq r4.y, r3.w
mad_sat r4.x, r4.x, r4.y, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r2.w, r4.x, r3.w, r2.w
mad r4.x, cb1[0].x, l(1.192488064E-08), cb1[0].y
mad r4.y, cb1[0].y, l(1.192488064E-08), -cb1[0].x
mul r4.zw, r0.wwww, r4.xxxy
round_ne r4.zw, r4.zzzw
mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx
mov r5.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw
mul r6.xy, r6.zzzz, r4.zwzz
add r5.xyz, -r2.xyzx, r6.xyzx
dp3 r3.w, r5.xyzx, r5.xyzx
dp3 r4.z, r0.xyzx, r5.xyzx
rsq r4.w, r3.w
mad_sat r4.z, r4.z, r4.w, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r1.w, r4.z, r3.w, r1.w
mul r4.zw, r1.zzzz, r4.xxxy
round_ne r4.zw, r4.zzzw
mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx
mov r5.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw
mul r6.xy, r6.zzzz, r4.zwzz
add r5.xyz, -r2.xyzx, r6.xyzx
dp3 r3.w, r5.xyzx, r5.xyzx
dp3 r4.z, r0.xyzx, r5.xyzx
rsq r4.w, r3.w
mad_sat r4.z, r4.z, r4.w, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r2.w, r4.z, r3.w, r2.w
mul r4.zw, r3.zzzz, r4.xxxy
round_ne r4.zw, r4.zzzw
mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx
mov r5.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw
mul r6.xy, r6.zzzz, r4.zwzz
add r5.xyz, -r2.xyzx, r6.xyzx
dp3 r3.w, r5.xyzx, r5.xyzx
dp3 r4.z, r0.xyzx, r5.xyzx
rsq r4.w, r3.w
mad_sat r4.z, r4.z, r4.w, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r2.w, r4.z, r3.w, r2.w
mul r4.xy, r3.xxxx, r4.xyxx
round_ne r4.xy, r4.xyxx
mad r4.xy, r4.xyxx, cb0[1].xyxx, r1.xyxx
mov r4.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r5.z, r4.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.xy, cb0[2].xyxx, r4.xyxx, cb0[2].zwzz
mul r5.xy, r5.zzzz, r4.xyxx
add r4.xyz, -r2.xyzx, r5.xyzx
dp3 r3.w, r4.xyzx, r4.xyzx
dp3 r4.x, r0.xyzx, r4.xyzx
rsq r4.y, r3.w
mad_sat r4.x, r4.x, r4.y, -cb0[3].w
mad_sat r3.w, r3.w, r3.y, l(1.000000)
mad r2.w, r4.x, r3.w, r2.w
mul r3.w, cb1[0].y, l(-0.707106531)
mad r4.x, cb1[0].x, l(0.707107), -r3.w
dp2 r4.y, cb1[0].yxyy, l(0.707107, -0.707106531, 0.000000, 0.000000)
mul r4.zw, r0.wwww, r4.xxxy
round_ne r4.zw, r4.zzzw
mad r5.xy, r4.zwzz, cb0[1].xyxx, r1.xyxx
mov r5.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000)
mad r4.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw
mul r6.xy, r6.zzzz, r4.zwzz
add r5.xyz, -r2.xyzx, r6.xyzx
dp3 r0.w, r5.xyzx, r5.xyzx
dp3 r3.w, r0.xyzx, r5.xyzx
rsq r4.z, r0.w
mad_sat r3.w, r3.w, r4.z, -cb0[3].w
mad_sat r0.w, r0.w, r3.y, l(1.000000)
mad r0.w, r3.w, r0.w, r1.w
mul r1.zw, r1.zzzz, r4.xxxy
round_ne r1.zw, r1.zzzw
mad r5.xy, r1.zwzz, cb0[1].xyxx, r1.xyxx
mov r5.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000)
mad r1.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw
mul r6.xy, r6.zzzz, r1.zwzz
add r5.xyz, -r2.xyzx, r6.xyzx
dp3 r1.z, r5.xyzx, r5.xyzx
dp3 r1.w, r0.xyzx, r5.xyzx
rsq r3.w, r1.z
mad_sat r1.w, r1.w, r3.w, -cb0[3].w
mad_sat r1.z, r1.z, r3.y, l(1.000000)
mad r1.z, r1.w, r1.z, r2.w
mul r3.zw, r3.zzzz, r4.xxxy
round_ne r3.zw, r3.zzzw
mad r5.xy, r3.zwzz, cb0[1].xyxx, r1.xyxx
mov r5.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r6.z, r5.xyzx, t0.yzxw, s0, l(0.000000)
mad r3.zw, cb0[2].xxxy, r5.xxxy, cb0[2].zzzw
mul r6.xy, r6.zzzz, r3.zwzz
add r5.xyz, -r2.xyzx, r6.xyzx
dp3 r1.w, r5.xyzx, r5.xyzx
dp3 r2.w, r0.xyzx, r5.xyzx
rsq r3.z, r1.w
mad_sat r2.w, r2.w, r3.z, -cb0[3].w
mad_sat r1.w, r1.w, r3.y, l(1.000000)
mad r1.z, r2.w, r1.w, r1.z
mul r3.xz, r3.xxxx, r4.xxyx
round_ne r3.xz, r3.xxzx
mad r4.xy, r3.xzxx, cb0[1].xyxx, r1.xyxx
mov r4.z, l(0)
sample_l_indexable(texture2darray)(float,float,float,float) r1.w, r4.xyzx, t0.yzwx, s0, l(0.000000)
mad r3.xz, cb0[2].xxyx, r4.xxyx, cb0[2].zzwz
mul r1.xy, r1.wwww, r3.xzxx
add r1.xyw, -r2.xyxz, r1.xyxw
dp3 r2.x, r1.xywx, r1.xywx
dp3 r0.x, r0.xyzx, r1.xywx
rsq r0.y, r2.x
mad_sat r0.x, r0.x, r0.y, -cb0[3].w
mad_sat r0.y, r2.x, r3.y, l(1.000000)
mad r0.x, r0.x, r0.y, r1.z
mul r0.x, r0.x, cb0[4].y
mad r0.x, r0.w, cb0[4].x, r0.x
mul r0.x, r0.x, l(0.031250)
ne r0.y, cb0[7].w, l(-1.000000)
if_nz r0.y
  mad r0.y, r2.z, cb0[7].z, l(1.000000)
  mul_sat r0.y, r0.y, cb0[7].w
  mul r0.x, r0.y, r0.x
endif
mad_sat o0.x, -r0.x, l(2.000000), l(1.000000)
ret
// Approximately 0 instruction slots used

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