// Normal Reflections
Texture2D<float4> t5 : register(t5);

Texture2D<float4> t4 : register(t4);

Texture2D<float4> t3 : register(t3);

Texture2D<float4> t2 : register(t2);

Texture2D<float4> t1 : register(t1);

Texture2D<float4> t0 : register(t0);

SamplerState s5_s : register(s5);

SamplerState s4_s : register(s4);

SamplerState s3_s : register(s3);

SamplerState s2_s : register(s2);

SamplerState s1_s : register(s1);

SamplerState s0_s : register(s0);

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

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




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


void main( 
  linear noperspective float4 v0 : TEXCOORD0,
  float4 v1 : SV_POSITION0,
  out float4 o0 : SV_Target0)
{
  float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20,r21,r22,r23;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.xy = t1.SampleLevel(s1_s, v0.xy, 0).zw;
  r0.y = 255 * r0.y;
  r0.y = round(r0.y);
  r0.y = (uint)r0.y;
  r0.z = (int)r0.y & 15;
  r0.zw = cmp((int2)r0.zz == int2(4,0));
  if (r0.z != 0) {
    r1.xy = t2.SampleLevel(s2_s, v0.xy, 0).xy;
    r0.y = (int)r0.y & 16;
    r0.yz = r0.yy ? float2(0,0) : r1.xy;
    r0.z = r0.z + -r0.x;
    r0.x = r0.y * r0.z + r0.x;
  }
  r0.y = r0.x * cb0[19].y + 2;
  r1.x = min(1, r0.y);
  r0.y = cmp(0 >= r1.x);
  r0.y = (int)r0.w | (int)r0.y;
  if (r0.y != 0) {
    o0.xyzw = float4(0,0,0,0);
    return;
  }
  r0.yz = (int2)v1.xy;
  r2.xyz = t0.SampleLevel(s0_s, v0.xy, 0).xyz;
  r2.xyz = r2.xyz * float3(2,2,2) + float3(-1,-1,-1);
  r0.w = dot(r2.xyz, r2.xyz);
  r0.w = rsqrt(r0.w);
  r2.xyz = r2.xyz * r0.www;
  r0.w = t3.SampleLevel(s3_s, v0.xy, 0).x;
  r1.w = r0.w * cb1[53].x + cb1[53].y;
  r0.w = r0.w * cb1[53].z + -cb1[53].w;
  r0.w = 1 / r0.w;
  r0.w = r1.w + r0.w;
  r3.xy = v0.zw * r0.ww;
  
  float4 stereo = StereoParams.Load(0);
  r3.x += stereo.x * (-r0.w + stereo.y) / 2;
  
  r3.yzw = cb1[45].xyz * r3.yyy;
  r3.xyz = r3.xxx * cb1[44].xyz + r3.yzw;
  r3.xyz = r0.www * cb1[46].xyz + r3.xyz;
  r3.xyz = cb1[47].xyz + r3.xyz;
  r4.xyz = cb1[56].xyz + -r3.xyz;
  r1.w = dot(r4.xyz, r4.xyz);
  r1.w = rsqrt(r1.w);
  r4.xyz = r4.xyz * r1.www;
  r5.xy = (int2)r0.yz & int2(3,3);
  bitmask.y = ((~(-1 << 2)) << 2) & 0xffffffff;  r0.y = (((uint)r0.y << 2) & bitmask.y) | ((uint)0 & ~bitmask.y);
  bitmask.z = ((~(-1 << 2)) << 2) & 0xffffffff;  r0.z = (((uint)r0.z << 2) & bitmask.z) | ((uint)0 & ~bitmask.z);
  r0.yz = (int2)r0.yz ^ (int2)r5.xy;
  r5.xy = (int2)r0.yz & int2(3,3);
  bitmask.y = ((~(-1 << 2)) << 1) & 0xffffffff;  r0.y = (((uint)r0.y << 1) & bitmask.y) | ((uint)0 & ~bitmask.y);
  bitmask.z = ((~(-1 << 2)) << 1) & 0xffffffff;  r0.z = (((uint)r0.z << 1) & bitmask.z) | ((uint)0 & ~bitmask.z);
  r0.yz = (int2)r0.yz ^ (int2)r5.xy;
  r0.z = (uint)r0.z << 1;
  r0.yz = (int2)r0.yz & int2(5,10);
  r0.y = (int)r0.z + (int)r0.y;
  bitmask.x = ((~(-1 << 2)) << 2) & 0xffffffff;  r5.x = (((uint)r0.y << 2) & bitmask.x) | ((uint)0 & ~bitmask.x);
  bitmask.y = ((~(-1 << 2)) << 3) & 0xffffffff;  r5.y = (((uint)r0.y << 3) & bitmask.y) | ((uint)0 & ~bitmask.y);
  r0.y = (uint)r0.y >> 2;
  bitmask.y = ((~(-1 << 2)) << 0) & 0xffffffff;  r0.y = (((uint)r0.y << 0) & bitmask.y) | ((uint)r5.x & ~bitmask.y);
  bitmask.z = ((~(-1 << 2)) << 1) & 0xffffffff;  r0.z = (((uint)r0.y << 1) & bitmask.z) | ((uint)r5.y & ~bitmask.z);
  r0.y = (uint)r0.y >> 1;
  r0.yz = (int2)r0.yz & int2(5,10);
  r0.y = (int)r0.y + (int)r0.z;
  r0.z = asuint(cb1[127].z);
  r5.xyz = r0.zzz * float3(97,71,97) + v1.xyx;
  r5.xyz = float3(0.0078125,0.0078125,0.0078125) * r5.xyz;
  r5.xyz = frac(r5.xyz);
  r5.xyz = r5.xyz * float3(128,128,128) + float3(-64.3406219,-72.4656219,-64.3406219);
  r5.xyz = r5.xyz * r5.xyy;
  r0.z = dot(r5.xyz, float3(20.390625,60.703125,2.42812085));
  r0.z = frac(r0.z);
  r5.xy = float2(51540816,287478368) * r0.zz;
  r5.xy = (uint2)r5.xy;
  r0.z = (int)r5.x & 0x0000ffff;
  r0.z = (uint)r0.z;
  r0.z = 1.52587891e-005 * r0.z;
  r1.w = r0.x * r0.x;
  r1.w = r1.w * r1.w;
  r1.w = 2 / r1.w;
  r1.w = -1 + r1.w;
  r1.w = 1 / r1.w;
  r2.w = cmp(abs(r2.z) < 0.999000013);
  r5.xzw = r2.www ? float3(1,0,0) : float3(0,1,0);
  r6.xyz = r5.xzw * r2.yzx;
  r5.xzw = r5.wxz * r2.zxy + -r6.xyz;
  r2.w = dot(r5.xzw, r5.xzw);
  r2.w = rsqrt(r2.w);
  r5.xzw = r5.xzw * r2.www;
  r6.xyz = r5.zwx * r2.zxy;
  r6.xyz = r2.yzx * r5.wxz + -r6.xyz;
  r7.xyzw = cb1[9].xyzw * r3.yyyy;
  r7.xyzw = r3.xxxx * cb1[8].xyzw + r7.xyzw;
  r3.xyzw = r3.zzzz * cb1[10].xyzw + r7.xyzw;
  r3.xyzw = cb1[11].xyzw + r3.xyzw;
  r7.xyzw = cb1[25].xyzw * r3.yyyy;
  r7.xyzw = r3.xxxx * cb1[24].xyzw + r7.xyzw;
  r7.xyzw = r3.zzzz * cb1[26].xyzw + r7.xyzw;
  r7.xyzw = r3.wwww * cb1[27].xyzw + r7.xyzw;
  r8.xyz = r7.xyz / r7.www;
  r7.xy = r0.ww * cb1[26].zw + r7.zw;
  r2.w = r7.x / r7.y;
  r7.xy = r8.xy * float2(0.5,-0.5) + float2(0.5,0.5);
  r7.xy = cb0[18].xy * r7.xy;
  r2.w = r8.z + -r2.w;
  r2.w = 4 * r2.w;
  r7.z = r8.z;
  r9.w = 1;
  r10.z = 2;
  r11.z = 3;
  r12.z = 1;
  r13.z = 0;
  r14.xyzw = float4(0,0,0,0);
  r4.w = 0;
  while (true) {
    r6.w = cmp((int)r4.w >= 12);
    if (r6.w != 0) break;
    r6.w = (int)r4.w * 117;
    r6.w = (int)r6.w;
    r6.w = cb0[19].w + r6.w;
    r6.w = (uint)r6.w;
    r7.w = (uint)r6.w << 2;
    r7.w = (int)r7.w & 0xcccccccc;
    r6.w = (uint)r6.w >> 2;
    r6.w = (int)r6.w & 0x33333333;
    r6.w = (int)r6.w + (int)r7.w;
    r7.w = (uint)r6.w << 1;
    r7.w = (int)r7.w & 0xaaaaaaaa;
    r6.w = (uint)r6.w >> 1;
    r6.w = (int)r6.w & 0x55555555;
    r6.w = (int)r6.w + (int)r7.w;
    r6.w = (int)r0.y + (int)r6.w;
    r6.w = (int)r6.w & 15;
    r6.w = (uint)r6.w;
    r6.w = r6.w * 0.0666666701 + -0.5;
    r7.w = (uint)r4.w;
    r7.w = r7.w * 0.0833333358 + r0.z;
    r7.w = frac(r7.w);
    r8.w = reversebits((uint)r4.w);
    r8.w = (int)r5.y ^ (int)r8.w;
    r8.w = (uint)r8.w;
    r8.w = 2.32830644e-010 * r8.w;
    r7.w = 6.28318548 * r7.w;
    r8.w = max(9.99999997e-007, r8.w);
    r8.w = log2(r8.w);
    r8.w = r8.w * r1.w;
    r8.w = exp2(r8.w);
    r10.w = -r8.w * r8.w + 1;
    r10.w = sqrt(r10.w);
    sincos(r7.w, r15.x, r16.x);
    r7.w = r16.x * r10.w;
    r10.w = r15.x * r10.w;
    r15.xyz = r10.www * r6.xyz;
    r15.xyz = r5.xzw * r7.www + r15.xyz;
    r15.xyz = r2.xyz * r8.www + r15.xyz;
    r7.w = dot(r4.xyz, r15.xyz);
    r7.w = r7.w + r7.w;
    r15.xyz = r7.www * r15.xyz + -r4.xyz;
    r15.xyz = r15.xyz * r0.www;
    r16.xyzw = cb1[9].xyzw * r15.yyyy;
    r16.xyzw = r15.xxxx * cb1[8].xyzw + r16.xyzw;
    r15.xyzw = r15.zzzz * cb1[10].xyzw + r16.xyzw;
    r15.xyzw = r15.xyzw + r3.xyzw;
    r16.xyzw = cb1[25].xyzw * r15.yyyy;
    r16.xyzw = r15.xxxx * cb1[24].xyzw + r16.xyzw;
    r16.xyzw = r15.zzzz * cb1[26].xyzw + r16.xyzw;
    r15.xyzw = r15.wwww * cb1[27].xyzw + r16.xyzw;
    r15.xyz = r15.xyz / r15.www;
    r15.xyz = r15.xyz + -r8.xyz;
    r7.w = dot(r15.xy, r15.xy);
    r7.w = sqrt(r7.w);
    r8.w = 0.5 * r7.w;
    r16.xy = r8.xy * r8.ww + r15.xy;
    r16.xy = -r7.ww * float2(0.5,0.5) + abs(r16.xy);
    r16.xy = max(float2(0,0), r16.xy);
    r16.xy = -r16.xy + abs(r15.xy);
    r16.xy = r16.xy / abs(r15.xy);
    r7.w = min(r16.x, r16.y);
    r7.w = r7.w / r8.w;
    r15.xyz = r15.xyz * r7.www;
    r15.xy = cb0[18].xy * r15.xy;
    r7.w = max(abs(r15.z), r2.w);
    r8.w = 0.0833333358 * r7.w;
    r16.xyz = float3(0.0416666679,-0.0416666679,0.0833333358) * r15.xyz;
    r17.xyz = r16.xyz * r6.www + r7.xyz;
    r18.xyz = float3(0,0,0);
    r6.w = 1;
    r13.x = 0;
    r10.w = 1;
    r19.xyz = r17.xyz;
    r11.w = 0;
    while (true) {
      r12.w = cmp((int)r11.w >= 12);
      if (r12.w != 0) break;
      r20.xyzw = r15.xyxy * float4(0.0416666679,-0.0416666679,0.0833333358,-0.0833333358) + r19.xyxy;
      r21.xyzw = r15.xyxy * float4(0.125,-0.125,0.166666672,-0.166666672) + r19.xyxy;
      r22.xyzw = r15.zzzz * float4(0.0833333358,0.166666672,0.25,0.333333343) + r19.zzzz;
      r23.x = t5.SampleLevel(s5_s, r20.xy, r10.w).x;
      r23.y = t5.SampleLevel(s5_s, r20.zw, r10.w).x;
      r23.z = t5.SampleLevel(s5_s, r21.xy, r10.w).x;
      r23.w = t5.SampleLevel(s5_s, r21.zw, r10.w).x;
      r20.xyzw = -r23.xyzw + r22.xyzw;
      r21.xyzw = -r7.wwww * float4(0.0833333358,0.0833333358,0.0833333358,0.0833333358) + -r20.xyzw;
      r21.xyzw = cmp(abs(r21.xyzw) < r8.wwww);
      r22.xy = (int2)r21.zw | (int2)r21.xy;
      r12.w = (int)r22.y | (int)r22.x;
      if (r12.w != 0) {
        r10.xy = r20.yz;
        r11.xy = r20.zw;
        r22.xyz = r21.zzz ? r10.xyz : r11.xyz;
        r12.xy = r20.xy;
        r20.xyz = r21.yyy ? r12.xyz : r22.xyz;
        r13.y = r12.x;
        r12.xyw = r21.xxx ? r13.xyz : r20.xyz;
        r10.x = r12.x + -r12.y;
        r10.x = saturate(r12.x / r10.x);
        r10.x = r12.w + r10.x;
        r18.xyz = r16.xyz * r10.xxx + r19.xyz;
        r6.w = 0.5;
        break;
      }
      r10.w = r0.x * 1.33333337 + r10.w;
      r19.xyz = r15.xyz * float3(0.166666672,-0.166666672,0.333333343) + r19.xyz;
      r13.x = r20.w;
      r11.w = (int)r11.w + 4;
      r18.xyz = float3(0,0,0);
      r6.w = 1;
    }
    r7.w = cmp(r6.w < 1);
    if (r7.w != 0) {
      r10.xy = cb0[18].zw * r18.xy;
      r10.xy = r10.xy * float2(2,-2) + float2(-1,1);
      r10.xy = cb1[54].xy * r10.xy;
      r10.xy = r10.xy / cb1[54].xy;
      r11.xyw = cb1[111].xyw * r10.yyy;
      r10.xyw = r10.xxx * cb1[110].xyw + r11.xyw;
      r10.xyw = r18.zzz * cb1[112].xyw + r10.xyw;
      r10.xyw = cb1[113].xyw + r10.xyw;
      r10.xy = r10.xy / r10.ww;
      r11.xy = r10.xy * cb1[54].xy + cb1[54].wz;
      r9.xyz = t4.SampleLevel(s4_s, r11.xy, 0).xyz;
      r10.xy = saturate(abs(r10.xy) * float2(5,5) + float2(-4,-4));
      r7.w = dot(r10.xy, r10.xy);
      r7.w = 1 + -r7.w;
      r7.w = max(0, r7.w);
      r15.xyzw = r9.xyzw * r7.wwww;
      r9.xyz = min(float3(0,0,0), -r15.xyz);
      r7.w = dot(-r9.xyz, float3(0.300000012,0.589999974,0.109999999));
      r7.w = 1 + r7.w;
      r15.xyz = -r9.xyz / r7.www;
      r14.xyzw = r15.xyzw + r14.xyzw;
    }
    r4.w = (int)r4.w + 1;
  }
  r1.y = 0.0833333358;
  r0.xyzw = r14.xyzw * r1.yyyx;
  r1.w = dot(r0.xyz, float3(0.300000012,0.589999974,0.109999999));
  r1.w = 1 + -r1.w;
  r0.xyz = r0.xyz / r1.www;
  r1.z = cb0[19].x;
  
  r1.x = 0;
  
  r0.xyzw = r1.xxxz * r0.xyzw;
  o0.xyzw = r0.xyzw * r1.zzzy;
  
  
  
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Original ASM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD                 0   xyzw        0     NONE   float   xyzw
// SV_POSITION              0   xyzw        1      POS   float   xy  
//
//
// 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[20], immediateIndexed
dcl_constantbuffer cb1[128], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_sampler s4, mode_default
dcl_sampler s5, 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) t3
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t5
dcl_input_ps linear noperspective v0.xyzw
dcl_input_ps_siv linear noperspective v1.xy, position
dcl_output o0.xyzw
dcl_temps 24
sample_l_indexable(texture2d)(float,float,float,float) r0.xy, v0.xyxx, t1.zwxy, s1, l(0.000000)
mul r0.y, r0.y, l(255.000000)
round_ne r0.y, r0.y
ftou r0.y, r0.y
and r0.z, r0.y, l(15)
ieq r0.zw, r0.zzzz, l(0, 0, 4, 0)
if_nz r0.z
  sample_l_indexable(texture2d)(float,float,float,float) r1.xy, v0.xyxx, t2.xyzw, s2, l(0.000000)
  and r0.y, r0.y, l(16)
  movc r0.yz, r0.yyyy, l(0,0,0,0), r1.xxyx
  add r0.z, -r0.x, r0.z
  mad r0.x, r0.y, r0.z, r0.x
endif 
mad r0.y, r0.x, cb0[19].y, l(2.000000)
min r1.x, r0.y, l(1.000000)
ge r0.y, l(0.000000), r1.x
or r0.y, r0.w, r0.y
if_nz r0.y
  mov o0.xyzw, l(0,0,0,0)
  ret 
endif 
ftoi r0.yz, v1.xxyx
sample_l_indexable(texture2d)(float,float,float,float) r2.xyz, v0.xyxx, t0.xyzw, s0, l(0.000000)
mad r2.xyz, r2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
dp3 r0.w, r2.xyzx, r2.xyzx
rsq r0.w, r0.w
mul r2.xyz, r0.wwww, r2.xyzx
sample_l_indexable(texture2d)(float,float,float,float) r0.w, v0.xyxx, t3.yzwx, s3, l(0.000000)
mad r1.w, r0.w, cb1[53].x, cb1[53].y
mad r0.w, r0.w, cb1[53].z, -cb1[53].w
div r0.w, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w
add r0.w, r0.w, r1.w
mul r3.xy, r0.wwww, v0.zwzz
mul r3.yzw, r3.yyyy, cb1[45].xxyz
mad r3.xyz, r3.xxxx, cb1[44].xyzx, r3.yzwy
mad r3.xyz, r0.wwww, cb1[46].xyzx, r3.xyzx
add r3.xyz, r3.xyzx, cb1[47].xyzx
add r4.xyz, -r3.xyzx, cb1[56].xyzx
dp3 r1.w, r4.xyzx, r4.xyzx
rsq r1.w, r1.w
mul r4.xyz, r1.wwww, r4.xyzx
and r5.xy, r0.yzyy, l(3, 3, 0, 0)
bfi r0.yz, l(0, 2, 2, 0), l(0, 2, 2, 0), r0.yyzy, l(0, 0, 0, 0)
xor r0.yz, r0.yyzy, r5.xxyx
and r5.xy, r0.yzyy, l(3, 3, 0, 0)
bfi r0.yz, l(0, 2, 2, 0), l(0, 1, 1, 0), r0.yyzy, l(0, 0, 0, 0)
xor r0.yz, r0.yyzy, r5.xxyx
ishl r0.z, r0.z, l(1)
and r0.yz, r0.yyzy, l(0, 5, 10, 0)
iadd r0.y, r0.z, r0.y
bfi r5.xy, l(2, 2, 0, 0), l(2, 3, 0, 0), r0.yyyy, l(0, 0, 0, 0)
ushr r0.y, r0.y, l(2)
bfi r0.yz, l(0, 2, 2, 0), l(0, 0, 1, 0), r0.yyyy, r5.xxyx
ushr r0.y, r0.y, l(1)
and r0.yz, r0.yyzy, l(0, 5, 10, 0)
iadd r0.y, r0.y, r0.z
utof r0.z, cb1[127].z
mad r5.xyz, r0.zzzz, l(97.000000, 71.000000, 97.000000, 0.000000), v1.xyxx
mul r5.xyz, r5.xyzx, l(0.007813, 0.007813, 0.007813, 0.000000)
frc r5.xyz, r5.xyzx
mad r5.xyz, r5.xyzx, l(128.000000, 128.000000, 128.000000, 0.000000), l(-64.340622, -72.465622, -64.340622, 0.000000)
mul r5.xyz, r5.xyyx, r5.xyzx
dp3 r0.z, r5.xyzx, l(20.390625, 60.703125, 2.428121, 0.000000)
frc r0.z, r0.z
mul r5.xy, r0.zzzz, l(51540816.000000, 287478368.000000, 0.000000, 0.000000)
ftou r5.xy, r5.xyxx
and r0.z, r5.x, l(0x0000ffff)
utof r0.z, r0.z
mul r0.z, r0.z, l(0.000015)
mul r1.w, r0.x, r0.x
mul r1.w, r1.w, r1.w
div r1.w, l(2.000000), r1.w
add r1.w, r1.w, l(-1.000000)
div r1.w, l(1.000000, 1.000000, 1.000000, 1.000000), r1.w
lt r2.w, |r2.z|, l(0.999000)
movc r5.xzw, r2.wwww, l(1.000000,0,0,0), l(0,0,1.000000,0)
mul r6.xyz, r2.yzxy, r5.xzwx
mad r5.xzw, r5.wwxz, r2.zzxy, -r6.xxyz
dp3 r2.w, r5.xzwx, r5.xzwx
rsq r2.w, r2.w
mul r5.xzw, r2.wwww, r5.xxzw
mul r6.xyz, r2.zxyz, r5.zwxz
mad r6.xyz, r2.yzxy, r5.wxzw, -r6.xyzx
mul r7.xyzw, r3.yyyy, cb1[9].xyzw
mad r7.xyzw, r3.xxxx, cb1[8].xyzw, r7.xyzw
mad r3.xyzw, r3.zzzz, cb1[10].xyzw, r7.xyzw
add r3.xyzw, r3.xyzw, cb1[11].xyzw
mul r7.xyzw, r3.yyyy, cb1[25].xyzw
mad r7.xyzw, r3.xxxx, cb1[24].xyzw, r7.xyzw
mad r7.xyzw, r3.zzzz, cb1[26].xyzw, r7.xyzw
mad r7.xyzw, r3.wwww, cb1[27].xyzw, r7.xyzw
div r8.xyz, r7.xyzx, r7.wwww
mad r7.xy, r0.wwww, cb1[26].zwzz, r7.zwzz
div r2.w, r7.x, r7.y
mad r7.xy, r8.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
mul r7.xy, r7.xyxx, cb0[18].xyxx
add r2.w, -r2.w, r8.z
mul r2.w, r2.w, l(4.000000)
mov r7.z, r8.z
mov r9.w, l(1.000000)
mov r10.z, l(2.000000)
mov r11.z, l(3.000000)
mov r12.z, l(1.000000)
mov r13.z, l(0)
mov r14.xyzw, l(0,0,0,0)
mov r4.w, l(0)
loop 
  ige r6.w, r4.w, l(12)
  breakc_nz r6.w
  imul null, r6.w, r4.w, l(117)
  itof r6.w, r6.w
  add r6.w, r6.w, cb0[19].w
  ftou r6.w, r6.w
  ishl r7.w, r6.w, l(2)
  and r7.w, r7.w, l(0xcccccccc)
  ushr r6.w, r6.w, l(2)
  and r6.w, r6.w, l(0x33333333)
  iadd r6.w, r6.w, r7.w
  ishl r7.w, r6.w, l(1)
  and r7.w, r7.w, l(0xaaaaaaaa)
  ushr r6.w, r6.w, l(1)
  and r6.w, r6.w, l(0x55555555)
  iadd r6.w, r6.w, r7.w
  iadd r6.w, r0.y, r6.w
  and r6.w, r6.w, l(15)
  utof r6.w, r6.w
  mad r6.w, r6.w, l(0.066667), l(-0.500000)
  utof r7.w, r4.w
  mad r7.w, r7.w, l(0.083333), r0.z
  frc r7.w, r7.w
  bfrev r8.w, r4.w
  xor r8.w, r5.y, r8.w
  utof r8.w, r8.w
  mul r8.w, r8.w, l(0.000000)
  mul r7.w, r7.w, l(6.283185)
  max r8.w, r8.w, l(0.000001)
  log r8.w, r8.w
  mul r8.w, r1.w, r8.w
  exp r8.w, r8.w
  mad r10.w, -r8.w, r8.w, l(1.000000)
  sqrt r10.w, r10.w
  sincos r15.x, r16.x, r7.w
  mul r7.w, r10.w, r16.x
  mul r10.w, r10.w, r15.x
  mul r15.xyz, r6.xyzx, r10.wwww
  mad r15.xyz, r5.xzwx, r7.wwww, r15.xyzx
  mad r15.xyz, r2.xyzx, r8.wwww, r15.xyzx
  dp3 r7.w, r4.xyzx, r15.xyzx
  add r7.w, r7.w, r7.w
  mad r15.xyz, r7.wwww, r15.xyzx, -r4.xyzx
  mul r15.xyz, r0.wwww, r15.xyzx
  mul r16.xyzw, r15.yyyy, cb1[9].xyzw
  mad r16.xyzw, r15.xxxx, cb1[8].xyzw, r16.xyzw
  mad r15.xyzw, r15.zzzz, cb1[10].xyzw, r16.xyzw
  add r15.xyzw, r3.xyzw, r15.xyzw
  mul r16.xyzw, r15.yyyy, cb1[25].xyzw
  mad r16.xyzw, r15.xxxx, cb1[24].xyzw, r16.xyzw
  mad r16.xyzw, r15.zzzz, cb1[26].xyzw, r16.xyzw
  mad r15.xyzw, r15.wwww, cb1[27].xyzw, r16.xyzw
  div r15.xyz, r15.xyzx, r15.wwww
  add r15.xyz, -r8.xyzx, r15.xyzx
  dp2 r7.w, r15.xyxx, r15.xyxx
  sqrt r7.w, r7.w
  mul r8.w, r7.w, l(0.500000)
  mad r16.xy, r8.xyxx, r8.wwww, r15.xyxx
  mad r16.xy, -r7.wwww, l(0.500000, 0.500000, 0.000000, 0.000000), |r16.xyxx|
  max r16.xy, r16.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
  add r16.xy, |r15.xyxx|, -r16.xyxx
  div r16.xy, r16.xyxx, |r15.xyxx|
  min r7.w, r16.y, r16.x
  div r7.w, r7.w, r8.w
  mul r15.xyz, r7.wwww, r15.xyzx
  mul r15.xy, r15.xyxx, cb0[18].xyxx
  max r7.w, r2.w, |r15.z|
  mul r8.w, r7.w, l(0.083333)
  mul r16.xyz, r15.xyzx, l(0.041667, -0.041667, 0.083333, 0.000000)
  mad r17.xyz, r16.xyzx, r6.wwww, r7.xyzx
  mov r18.xyz, l(0,0,0,0)
  mov r6.w, l(1.000000)
  mov r13.x, l(0)
  mov r10.w, l(1.000000)
  mov r19.xyz, r17.xyzx
  mov r11.w, l(0)
  loop 
    ige r12.w, r11.w, l(12)
    breakc_nz r12.w
    mad r20.xyzw, r15.xyxy, l(0.041667, -0.041667, 0.083333, -0.083333), r19.xyxy
    mad r21.xyzw, r15.xyxy, l(0.125000, -0.125000, 0.166667, -0.166667), r19.xyxy
    mad r22.xyzw, r15.zzzz, l(0.083333, 0.166667, 0.250000, 0.333333), r19.zzzz
    sample_l_indexable(texture2d)(float,float,float,float) r23.x, r20.xyxx, t5.xyzw, s5, r10.w
    sample_l_indexable(texture2d)(float,float,float,float) r23.y, r20.zwzz, t5.yxzw, s5, r10.w
    sample_l_indexable(texture2d)(float,float,float,float) r23.z, r21.xyxx, t5.yzxw, s5, r10.w
    sample_l_indexable(texture2d)(float,float,float,float) r23.w, r21.zwzz, t5.yzwx, s5, r10.w
    add r20.xyzw, r22.xyzw, -r23.xyzw
    mad r21.xyzw, -r7.wwww, l(0.083333, 0.083333, 0.083333, 0.083333), -r20.xyzw
    lt r21.xyzw, |r21.xyzw|, r8.wwww
    or r22.xy, r21.zwzz, r21.xyxx
    or r12.w, r22.y, r22.x
    if_nz r12.w
      mov r10.xy, r20.yzyy
      mov r11.xy, r20.zwzz
      movc r22.xyz, r21.zzzz, r10.xyzx, r11.xyzx
      mov r12.xy, r20.xyxx
      movc r20.xyz, r21.yyyy, r12.xyzx, r22.xyzx
      mov r13.y, r12.x
      movc r12.xyw, r21.xxxx, r13.xyxz, r20.xyxz
      add r10.x, -r12.y, r12.x
      div_sat r10.x, r12.x, r10.x
      add r10.x, r10.x, r12.w
      mad r18.xyz, r16.xyzx, r10.xxxx, r19.xyzx
      mov r6.w, l(0.500000)
      break 
    endif 
    mad r10.w, r0.x, l(1.333333), r10.w
    mad r19.xyz, r15.xyzx, l(0.166667, -0.166667, 0.333333, 0.000000), r19.xyzx
    mov r13.x, r20.w
    iadd r11.w, r11.w, l(4)
    mov r18.xyz, l(0,0,0,0)
    mov r6.w, l(1.000000)
  endloop 
  lt r7.w, r6.w, l(1.000000)
  if_nz r7.w
    mul r10.xy, r18.xyxx, cb0[18].zwzz
    mad r10.xy, r10.xyxx, l(2.000000, -2.000000, 0.000000, 0.000000), l(-1.000000, 1.000000, 0.000000, 0.000000)
    mul r10.xy, r10.xyxx, cb1[54].xyxx
    div r10.xy, r10.xyxx, cb1[54].xyxx
    mul r11.xyw, r10.yyyy, cb1[111].xyxw
    mad r10.xyw, r10.xxxx, cb1[110].xyxw, r11.xyxw
    mad r10.xyw, r18.zzzz, cb1[112].xyxw, r10.xyxw
    add r10.xyw, r10.xyxw, cb1[113].xyxw
    div r10.xy, r10.xyxx, r10.wwww
    mad r11.xy, r10.xyxx, cb1[54].xyxx, cb1[54].wzww
    sample_l_indexable(texture2d)(float,float,float,float) r9.xyz, r11.xyxx, t4.xyzw, s4, l(0.000000)
    mad_sat r10.xy, |r10.xyxx|, l(5.000000, 5.000000, 0.000000, 0.000000), l(-4.000000, -4.000000, 0.000000, 0.000000)
    dp2 r7.w, r10.xyxx, r10.xyxx
    add r7.w, -r7.w, l(1.000000)
    max r7.w, r7.w, l(0.000000)
    mul r15.xyzw, r7.wwww, r9.xyzw
    min r9.xyz, -r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
    dp3 r7.w, -r9.xyzx, l(0.300000, 0.590000, 0.110000, 0.000000)
    add r7.w, r7.w, l(1.000000)
    div r15.xyz, -r9.xyzx, r7.wwww
    add r14.xyzw, r14.xyzw, r15.xyzw
  endif 
  iadd r4.w, r4.w, l(1)
endloop 
mov r1.y, l(0.083333)
mul r0.xyzw, r1.yyyx, r14.xyzw
dp3 r1.w, r0.xyzx, l(0.300000, 0.590000, 0.110000, 0.000000)
add r1.w, -r1.w, l(1.000000)
div r0.xyz, r0.xyzx, r1.wwww
mov r1.z, cb0[19].x
mul r0.xyzw, r0.xyzw, r1.xxxz
mul o0.xyzw, r1.zzzy, r0.xyzw
ret 
// Approximately 0 instruction slots used

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


/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HLSL errors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:\GAMES\ECHO\Echo\Binaries\Win64\ShaderCache\22fa2d981158ae4b-ps_replace.txt(189,24-32): warning X4114: Literal floating-point value out of integer range for conversion: 2147483648.000000
D:\GAMES\ECHO\Echo\Binaries\Win64\ShaderCache\22fa2d981158ae4b-ps_replace.txt(189,24-32): warning X4114: Literal floating-point value out of integer range for conversion: 3221225472.000000
D:\GAMES\ECHO\Echo\Binaries\Win64\ShaderCache\22fa2d981158ae4b-ps_replace.txt(189,24-32): warning X4114: Literal floating-point value out of integer range for conversion: 2684354560.000000
D:\GAMES\ECHO\Echo\Binaries\Win64\ShaderCache\22fa2d981158ae4b-ps_replace.txt(189,24-32): warning X4114: Literal floating-point value out of integer range for conversion: 3758096384.000000
D:\GAMES\ECHO\Echo\Binaries\Win64\ShaderCache\22fa2d981158ae4b-ps_replace.txt(189,24-32): warning X4114: Literal floating-point value out of integer range for conversion: 2415919104.000000
D:\GAMES\ECHO\Echo\Binaries\Win64\ShaderCache\22fa2d981158ae4b-ps_replace.txt(189,24-32): warning X4114: Literal floating-point value out of integer range for conversion: 3489660928.000000
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
