// Directional Lighting - Max Quality

cbuffer _Globals : register(b0)
{
  row_major float4x4 m_shadow : packoffset(c0);
}

cbuffer static_globals : register(b1)
{
  row_major float3x4 m_V : packoffset(c0);
  row_major float4x4 m_P : packoffset(c3);
  row_major float4x4 m_VP : packoffset(c7);
  float4 timers : packoffset(c11);
  float4 fog_plane : packoffset(c12);
  float4 fog_params : packoffset(c13);
  float4 fog_color : packoffset(c14);
  float4 L_ambient : packoffset(c15);
  float3 L_sun_color : packoffset(c16);
  float3 L_sun_dir_w : packoffset(c17);
  float4 L_hemi_color : packoffset(c18);
  float3 eye_position : packoffset(c19);
  float4 pos_decompression_params : packoffset(c20);
  float4 pos_decompression_params2 : packoffset(c21);
}

cbuffer dynamic_light : register(b2)
{
  float4 Ldynamic_color : packoffset(c0);
  float4 Ldynamic_pos : packoffset(c1);
  float4 Ldynamic_dir : packoffset(c2);
}

SamplerState smp_nofilter_s : register(s0);
SamplerState smp_material_s : register(s1);
SamplerComparisonState smp_smap_s : register(s2);
Texture2D<float4> s_smap : register(t0);
Texture2DMS<float4,4> s_position : register(t1);
Texture3D<float4> s_material : register(t2);


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


void main( 
  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;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.xy = (int2)v1.xy;
  r0.zw = float2(0,0);
  r0.xyzw = s_position.Load(r0.xy, 0).xyzw;
  r1.x = abs(r0.y) * 2 + -1;
  r1.w = -r1.x * r1.x + 1;
  r1.w = -r0.x * r0.x + r1.w;
  r1.w = sqrt(abs(r1.w));
  r0.y = cmp(r0.y < 0);
  r0.y = r0.y ? -1 : 1;
  r1.y = r0.y * r1.w;
  r2.xy = v1.xy * pos_decompression_params.zw + -pos_decompression_params.xy;
  r2.xy = r2.xy * r0.zz;
float4 stereo = StereoParams.Load(0);
float4 params = IniParams.Load(0);
r2.x -= stereo.x * (r0.z - stereo.y)/m_P._m00;
  r2.z = r0.z;
  r1.z = r0.x;
  r2.xyz = r1.xyz * float3(0.0149999997,0.0149999997,0.0149999997) + r2.xyz;
  r2.w = 1;
  r0.x = dot(m_shadow._m00_m01_m02_m03, r2.xyzw);
  r0.y = dot(m_shadow._m10_m11_m12_m13, r2.xyzw);
  r0.z = dot(m_shadow._m20_m21_m22_m23, r2.xyzw);
  r1.w = dot(m_shadow._m30_m31_m32_m33, r2.xyzw);
  r0.xyz = r0.xyz / r1.www;
  r3.xy = r0.xy * float2(2048,2048) + float2(0.5,0.5);
  r3.zw = floor(r3.xy);
  r3.xy = r3.xy + -r3.zw;
  r0.xy = -r3.xy * float2(0.00048828125,0.00048828125) + r0.xy;
  r0.z = -9.99999975e-005 + r0.z;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(-5, -5)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r1.w = dot(r4.xyzw, r5.xyzw);
  r2.w = dot(r5.xyzw, float4(1,1,1,1));
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(-3, -5)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(-1, -5)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(1, -5)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(3, -5)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(5, -5)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(-5, -3)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(-3, -3)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(-1, -3)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(1, -3)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(3, -3)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(5, -3)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(-5, -1)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(-3, -1)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(-1, -1)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(1, -1)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(3, -1)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(5, -1)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(-5, 1)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(-3, 1)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(-1, 1)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(1, 1)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(3, 1)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(5, 1)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(-5, 3)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(-3, 3)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(-1, 3)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(1, 3)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(3, 3)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(5, 3)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(-5, 5)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(-3, 5)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(-1, 5)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(1, 5)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(3, 5)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r4.xyzw = s_smap.Gather(smp_nofilter_s, r0.xy, int2(5, 5)).xyzw;
  r5.xyzw = cmp(r4.xyzw >= r0.zzzz);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : float4(1,1,1,1);
  r3.z = dot(r4.xyzw, r5.xyzw);
  r3.w = dot(r5.xyzw, float4(1,1,1,1));
  r2.w = r3.w + r2.w;
  r1.w = r3.z + r1.w;
  r1.w = r1.w / r2.w;
  r2.w = cmp(0 < r2.w);
  r3.z = -r1.w + r0.z;
  r3.z = 300 * r3.z;
  r1.w = saturate(r3.z / r1.w);
  r1.w = r1.w * r1.w;
  r1.w = r2.w ? r1.w : 0;
  r2.w = r1.w * r1.w;
  r3.z = r2.w * r1.w;
  r4.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(5,-5)).xyzw;
  r4.yz = r4.zy * r3.xx;
  r4.yz = r4.yz * r3.zz;
  r3.w = 1 + -r1.w;
  r5.x = 3 * r2.w;
  r5.y = r5.x * r3.w;
  r5.z = 0.200000003 * r5.y;
  r5.z = r3.x * r5.z + r3.z;
  r5.w = r4.x * r5.z + r4.z;
  r4.xy = r4.wx * r3.zz + r4.yz;
  r4.z = r3.w * r3.w;
  r4.w = r4.z * r1.w;
  r6.xy = r4.ww * float2(3,0.600000024) + r5.yy;
  r4.w = 3 * r4.w;
  r5.y = r5.y * 0.200000003 + r3.z;
  r6.xy = r2.ww * r1.ww + r6.xy;
  r7.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(-1,-3)).xyzw;
  r6.z = dot(r7.xy, r6.yy);
  r6.w = dot(r7.wz, r6.yy);
  r8.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(3,-5)).xyzw;
  r9.x = dot(r8.xy, r3.zz);
  r8.z = dot(r8.wz, r3.zz);
  r8.x = dot(r8.xy, r5.yy);
  r10.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(1,-5)).xyzw;
  r8.y = dot(r10.xy, r3.zz);
  r8.w = dot(r10.wz, r3.zz);
  r9.y = dot(r10.xy, r5.yy);
  r10.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(-1,-5)).xyzw;
  r9.z = dot(r10.xy, r3.zz);
  r9.w = dot(r10.wz, r3.zz);
  r10.x = dot(r10.xy, r5.yy);
  r11.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(-3,-5)).xyzw;
  r10.y = dot(r11.xy, r3.zz);
  r10.z = dot(r11.wz, r3.zz);
  r10.w = dot(r11.xy, r5.yy);
  r11.x = -r3.z * r3.x + r3.z;
  r12.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(-5,-5)).xyzw;
  r11.yz = r12.wx * r11.xx;
  r11.yw = r12.zy * r3.zz + r11.yz;
  r11.w = r11.w * r3.y;
  r12.x = 1 + -r3.y;
  r11.y = r12.x * r11.y + r11.w;
  r10.z = r12.x * r10.z + r11.y;
  r10.y = r3.y * r10.y + r10.z;
  r9.w = r12.x * r9.w + r10.y;
  r9.z = r3.y * r9.z + r9.w;
  r8.w = r12.x * r8.w + r9.z;
  r8.y = r3.y * r8.y + r8.w;
  r8.y = r12.x * r8.z + r8.y;
  r8.y = r3.y * r9.x + r8.y;
  r4.x = r12.x * r4.x + r8.y;
  r4.x = r3.y * r4.y + r4.x;
  r4.y = r2.w * r1.w + -r5.y;
  r4.y = r3.x * r4.y + r5.y;
  r13.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(-5,-3)).xyzw;
  r8.yz = r13.yz * r4.yy;
  r8.yz = r13.xw * r11.xx + r8.yz;
  r4.x = r12.x * r8.z + r4.x;
  r4.x = r3.y * r8.y + r4.x;
  r8.w = r12.y * r4.y + r11.z;
  r4.x = r12.x * r8.w + r4.x;
  r4.x = r3.y * r8.z + r4.x;
  r8.z = -r6.y + r5.y;
  r8.z = r3.x * r8.z + r6.y;
  r13.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(-3,-3)).xyzw;
  r9.xz = r13.wx * r8.zz;
  r9.xw = r13.zy * r6.yy + r9.xz;
  r4.x = r12.x * r9.x + r4.x;
  r4.x = r3.y * r9.w + r4.x;
  r4.x = r12.x * r10.w + r4.x;
  r8.w = dot(r13.wz, r5.yy);
  r4.x = r3.y * r8.w + r4.x;
  r4.x = r12.x * r6.w + r4.x;
  r4.x = r3.y * r6.z + r4.x;
  r4.x = r12.x * r10.x + r4.x;
  r6.z = dot(r7.wz, r5.yy);
  r6.w = dot(r7.xy, r6.xx);
  r4.x = r3.y * r6.z + r4.x;
  r7.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(1,-3)).xyzw;
  r6.z = dot(r7.wz, r6.yy);
  r4.x = r12.x * r6.z + r4.x;
  r6.z = dot(r7.xy, r6.yy);
  r4.x = r3.y * r6.z + r4.x;
  r4.x = r12.x * r9.y + r4.x;
  r6.z = dot(r7.wz, r5.yy);
  r7.x = dot(r7.xy, r6.xx);
  r4.x = r3.y * r6.z + r4.x;
  r6.z = r6.y + -r5.y;
  r6.z = r3.x * r6.z + r5.y;
  r10.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(3,-3)).xyzw;
  r7.yz = r10.zy * r6.zz;
  r7.yw = r10.wx * r6.yy + r7.yz;
  r4.x = r12.x * r7.y + r4.x;
  r4.x = r3.y * r7.w + r4.x;
  r4.x = r12.x * r8.x + r4.x;
  r7.y = dot(r10.wz, r5.yy);
  r4.x = r3.y * r7.y + r4.x;
  r14.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(5,-3)).xyzw;
  r7.yw = r14.yz * r3.xx;
  r7.yw = r7.yw * r3.zz;
  r7.yw = r14.xw * r5.zz + r7.yw;
  r4.x = r12.x * r7.w + r4.x;
  r4.x = r3.y * r7.y + r4.x;
  r4.x = r12.x * r5.w + r4.x;
  r4.x = r3.y * r7.w + r4.x;
  r14.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(-5,-1)).xyzw;
  r8.xw = r14.yz * r4.yy;
  r8.xw = r14.xw * r11.xx + r8.xw;
  r4.x = r12.x * r8.w + r4.x;
  r4.x = r3.y * r8.x + r4.x;
  r4.x = r12.x * r8.y + r4.x;
  r4.x = r3.y * r8.w + r4.x;
  r8.yw = r6.yx + -r6.xy;
  r8.yw = r3.xx * r8.yw + r6.xy;
  r14.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(-3,-1)).xyzw;
  r9.xy = r14.yz * r8.yy;
  r9.xy = r14.xw * r8.zz + r9.xy;
  r4.x = r12.x * r9.y + r4.x;
  r4.x = r3.y * r9.x + r4.x;
  r5.w = r13.y * r8.y + r9.z;
  r4.x = r12.x * r5.w + r4.x;
  r4.x = r3.y * r9.y + r4.x;
  r5.w = r4.z * r3.w;
  r4.z = r4.z * r3.w + r4.w;
  r4.w = r5.w * 0.100000001 + r4.w;
  r4.w = r5.x * r3.w + r4.w;
  r3.w = r5.x * r3.w + r4.z;
  r3.w = r2.w * r1.w + r3.w;
  r1.w = r2.w * r1.w + r4.w;
  r2.w = r6.x + -r1.w;
  r2.w = r3.x * r2.w + r1.w;
  r13.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(-1,-1)).xyzw;
  r4.zw = r13.wx * r2.ww;
  r5.xw = r13.zy * r1.ww + r4.zw;
  r4.x = r12.x * r5.x + r4.x;
  r4.x = r3.y * r5.w + r4.x;
  r4.x = r12.x * r6.w + r4.x;
  r4.z = dot(r13.wz, r6.xx);
  r4.x = r3.y * r4.z + r4.x;
  r4.z = r1.w + -r6.x;
  r4.z = r3.x * r4.z + r6.x;
  r14.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(1,-1)).xyzw;
  r5.xw = r14.zy * r4.zz;
  r9.yz = r14.wx * r1.ww + r5.xw;
  r4.x = r12.x * r9.y + r4.x;
  r4.x = r3.y * r9.z + r4.x;
  r4.x = r12.x * r7.x + r4.x;
  r5.x = dot(r14.wz, r6.xx);
  r4.x = r3.y * r5.x + r4.x;
  r15.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(3,-1)).xyzw;
  r7.xw = r15.yz * r6.zz;
  r7.xw = r15.xw * r8.ww + r7.xw;
  r4.x = r12.x * r7.w + r4.x;
  r4.x = r3.y * r7.x + r4.x;
  r5.x = r10.x * r8.w + r7.z;
  r4.x = r12.x * r5.x + r4.x;
  r4.x = r3.y * r7.w + r4.x;
  r10.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(5,-1)).xyzw;
  r7.zw = r10.yz * r3.xx;
  r7.zw = r7.zw * r3.zz;
  r7.zw = r10.xw * r5.zz + r7.zw;
  r4.x = r12.x * r7.w + r4.x;
  r4.x = r3.y * r7.z + r4.x;
  r4.x = r12.x * r7.y + r4.x;
  r4.x = r3.y * r7.w + r4.x;
  r10.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(-5,1)).xyzw;
  r7.yw = r10.yz * r4.yy;
  r7.yw = r10.xw * r11.xx + r7.yw;
  r4.x = r12.x * r7.w + r4.x;
  r4.x = r3.y * r7.y + r4.x;
  r4.x = r12.x * r8.x + r4.x;
  r4.x = r3.y * r7.w + r4.x;
  r10.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(-3,1)).xyzw;
  r9.yz = r10.yz * r8.yy;
  r9.yz = r10.xw * r8.zz + r9.yz;
  r4.x = r12.x * r9.z + r4.x;
  r4.x = r3.y * r9.y + r4.x;
  r5.x = r3.w + -r1.w;
  r5.x = r3.x * r5.x + r1.w;
  r5.w = r14.x * r5.x + r5.w;
  r10.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(1,1)).xyzw;
  r11.yz = r10.zy * r4.zz;
  r11.zw = r10.wx * r1.ww + r11.yz;
  r4.z = r10.w * r5.x + r11.y;
  r5.x = dot(r10.xy, r6.xx);
  r6.w = r1.w + -r3.w;
  r6.w = r3.x * r6.w + r3.w;
  r10.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(-1,1)).xyzw;
  r12.yz = r10.wx * r2.ww;
  r2.w = r10.z * r6.w + r12.y;
  r4.w = r13.y * r6.w + r4.w;
  r10.zw = r10.zy * r1.ww + r12.yz;
  r6.w = dot(r10.xy, r6.xx);
  r4.x = r12.x * r9.x + r4.x;
  r4.x = r3.y * r9.z + r4.x;
  r4.x = r12.x * r10.z + r4.x;
  r4.x = r3.y * r10.w + r4.x;
  r4.x = r12.x * r4.w + r4.x;
  r2.w = r3.y * r2.w + r4.x;
  r2.w = r12.x * r11.z + r2.w;
  r2.w = r3.y * r11.w + r2.w;
  r2.w = r12.x * r5.w + r2.w;
  r2.w = r3.y * r4.z + r2.w;
  r10.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(3,1)).xyzw;
  r4.xz = r10.yz * r6.zz;
  r4.xz = r10.xw * r8.ww + r4.xz;
  r2.w = r12.x * r4.z + r2.w;
  r2.w = r3.y * r4.x + r2.w;
  r2.w = r12.x * r7.x + r2.w;
  r2.w = r3.y * r4.z + r2.w;
  r10.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(5,1)).xyzw;
  r4.zw = r10.yz * r3.xx;
  r4.zw = r4.zw * r3.zz;
  r4.zw = r10.xw * r5.zz + r4.zw;
  r2.w = r12.x * r4.w + r2.w;
  r2.w = r3.y * r4.z + r2.w;
  r2.w = r12.x * r7.z + r2.w;
  r2.w = r3.y * r4.w + r2.w;
  r10.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(-5,3)).xyzw;
  r7.xz = r10.yz * r4.yy;
  r7.xz = r10.xw * r11.xx + r7.xz;
  r2.w = r12.x * r7.z + r2.w;
  r2.w = r3.y * r7.x + r2.w;
  r2.w = r12.x * r7.y + r2.w;
  r2.w = r3.y * r7.z + r2.w;
  r10.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(-3,3)).xyzw;
  r7.yz = r10.wx * r8.zz;
  r7.zw = r10.zy * r6.yy + r7.yz;
  r4.w = r10.z * r8.y + r7.y;
  r5.w = dot(r10.xy, r5.yy);
  r2.w = r12.x * r7.z + r2.w;
  r2.w = r3.y * r7.w + r2.w;
  r2.w = r12.x * r9.y + r2.w;
  r2.w = r3.y * r4.w + r2.w;
  r9.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(-1,3)).xyzw;
  r4.w = dot(r9.wz, r6.yy);
  r2.w = r12.x * r4.w + r2.w;
  r4.w = dot(r9.xy, r6.yy);
  r2.w = r3.y * r4.w + r2.w;
  r2.w = r12.x * r6.w + r2.w;
  r4.w = dot(r9.wz, r6.xx);
  r6.w = dot(r9.xy, r5.yy);
  r2.w = r3.y * r4.w + r2.w;
  r9.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(1,3)).xyzw;
  r4.w = dot(r9.wz, r6.yy);
  r2.w = r12.x * r4.w + r2.w;
  r4.w = dot(r9.xy, r6.yy);
  r2.w = r3.y * r4.w + r2.w;
  r2.w = r12.x * r5.x + r2.w;
  r4.w = dot(r9.wz, r6.xx);
  r5.x = dot(r9.xy, r5.yy);
  r2.w = r3.y * r4.w + r2.w;
  r9.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(3,3)).xyzw;
  r7.yz = r9.zy * r6.zz;
  r7.zw = r9.wx * r6.yy + r7.yz;
  r4.w = r9.w * r8.w + r7.y;
  r6.z = dot(r9.xy, r5.yy);
  r2.w = r12.x * r7.z + r2.w;
  r2.w = r3.y * r7.w + r2.w;
  r2.w = r12.x * r4.x + r2.w;
  r2.w = r3.y * r4.w + r2.w;
  r8.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(5,3)).xyzw;
  r4.xw = r8.yz * r3.xx;
  r4.xw = r4.xw * r3.zz;
  r4.xw = r8.xw * r5.zz + r4.xw;
  r2.w = r12.x * r4.w + r2.w;
  r2.w = r3.y * r4.x + r2.w;
  r2.w = r12.x * r4.z + r2.w;
  r2.w = r3.y * r4.w + r2.w;
  r8.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(-5,5)).xyzw;
  r4.zw = r8.wx * r11.xx;
  r7.yz = r8.zy * r3.zz + r4.zw;
  r4.y = r8.z * r4.y + r4.z;
  r2.w = r12.x * r7.y + r2.w;
  r2.w = r3.y * r7.z + r2.w;
  r2.w = r12.x * r7.x + r2.w;
  r2.w = r3.y * r4.y + r2.w;
  r7.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(-3,5)).xyzw;
  r4.y = dot(r7.wz, r3.zz);
  r2.w = r12.x * r4.y + r2.w;
  r4.y = dot(r7.xy, r3.zz);
  r4.z = dot(r7.wz, r5.yy);
  r2.w = r3.y * r4.y + r2.w;
  r2.w = r12.x * r5.w + r2.w;
  r2.w = r3.y * r4.z + r2.w;
  r7.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(-1,5)).xyzw;
  r4.y = dot(r7.wz, r3.zz);
  r2.w = r12.x * r4.y + r2.w;
  r4.y = dot(r7.xy, r3.zz);
  r4.z = dot(r7.wz, r5.yy);
  r2.w = r3.y * r4.y + r2.w;
  r2.w = r12.x * r6.w + r2.w;
  r2.w = r3.y * r4.z + r2.w;
  r7.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(1,5)).xyzw;
  r4.y = dot(r7.wz, r3.zz);
  r2.w = r12.x * r4.y + r2.w;
  r4.y = dot(r7.xy, r3.zz);
  r4.z = dot(r7.wz, r5.yy);
  r2.w = r3.y * r4.y + r2.w;
  r2.w = r12.x * r5.x + r2.w;
  r2.w = r3.y * r4.z + r2.w;
  r7.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(3,5)).xyzw;
  r8.xyzw = s_smap.GatherCmp(smp_smap_s, r0.xy, r0.z, int2(5,5)).xyzw;
  r0.x = dot(r7.wz, r3.zz);
  r0.x = r12.x * r0.x + r2.w;
  r0.y = dot(r7.xy, r3.zz);
  r0.z = dot(r7.wz, r5.yy);
  r0.x = r3.y * r0.y + r0.x;
  r0.x = r12.x * r6.z + r0.x;
  r0.x = r3.y * r0.z + r0.x;
  r0.y = (int)r0.w & 0x80000000;
  if (4 == 0) r0.z = 0; else if (4+21 < 32) {   r0.z = (uint)r0.w << (32-(4 + 21)); r0.z = (uint)r0.z >> (32-4);  } else r0.z = (uint)r0.w >> 21;
  r0.y = r0.y ? 16 : 0;
  bitmask.y = ((~(-1 << 4)) << 0) & 0xffffffff;
  r0.y = (((uint)r0.z << 0) & bitmask.y) | ((uint)r0.y & ~bitmask.y);
  r0.y = (uint)r0.y;
  r7.z = 0.0430107526 * r0.y;
  r0.y = dot(r2.xyz, r2.xyz);
  r0.y = rsqrt(r0.y);
  r0.yzw = -r2.xyz * r0.yyy + -Ldynamic_dir.xyz;
  r2.x = dot(r0.yzw, r0.yzw);
  r2.x = rsqrt(r2.x);
  r0.yzw = r2.xxx * r0.yzw;
  r7.y = dot(r0.yzw, r1.xyz);
  r7.x = dot(-Ldynamic_dir.xyz, r1.xyz);
  r0.yz = s_material.Sample(smp_material_s, r7.xyz).xy;
  r2.xyzw = Ldynamic_color.xyzw * r0.yyyz;
  r0.y = 14 * r3.z;
  r0.y = r5.y * 10 + r0.y;
  r0.y = r6.y * 7 + r0.y;
  r0.y = r0.y + r5.y;
  r0.y = r3.z * 2 + r0.y;
  r0.y = r0.y + r5.y;
  r0.y = r0.y + r6.y;
  r0.y = r6.x * 5 + r0.y;
  r0.y = r0.y + r6.y;
  r0.y = r0.y + r5.y;
  r0.y = r3.z * 2 + r0.y;
  r0.y = r0.y + r5.y;
  r0.y = r0.y + r6.y;
  r0.y = r0.y + r6.x;
  r0.y = r1.w * 3 + r0.y;
  r0.y = r0.y + r6.x;
  r0.y = r0.y + r6.y;
  r0.y = r0.y + r5.y;
  r0.y = r3.z * 2 + r0.y;
  r0.y = r0.y + r5.y;
  r0.y = r0.y + r6.y;
  r0.y = r0.y + r6.x;
  r0.y = r0.y + r1.w;
  r0.y = r0.y + r3.w;
  r0.y = r0.y + r1.w;
  r0.y = r0.y + r6.x;
  r0.y = r0.y + r6.y;
  r0.y = r0.y + r5.y;
  r0.y = r3.z * 2 + r0.y;
  r0.y = r0.y + r5.y;
  r0.y = r0.y + r6.y;
  r0.y = r0.y + r6.x;
  r0.y = r1.w * 3 + r0.y;
  r0.y = r0.y + r6.x;
  r0.y = r0.y + r6.y;
  r0.y = r0.y + r5.y;
  r0.y = r3.z * 2 + r0.y;
  r0.y = r0.y + r5.y;
  r0.y = r0.y + r6.y;
  r0.y = r6.x * 5 + r0.y;
  r0.y = r0.y + r6.y;
  r0.y = r0.y + r5.y;
  r0.y = r3.z * 2 + r0.y;
  r0.y = r0.y + r5.y;
  r0.y = r6.y * 7 + r0.y;
  r0.y = r0.y + r5.y;
  r0.y = r3.z * 2 + r0.y;
  r0.y = r5.y * 9 + r0.y;
  r0.y = r3.z * 12 + r0.y;
  r0.zw = r8.zy * r3.xx;
  r0.zw = r0.zw * r3.zz;
  r1.xy = r8.wx * r3.zz + r0.zw;
  r0.z = r8.w * r5.z + r0.z;
  r0.x = r12.x * r1.x + r0.x;
  r0.x = r3.y * r1.y + r0.x;
  r0.x = r12.x * r4.x + r0.x;
  r0.x = r3.y * r0.z + r0.x;
  r0.x = r0.x / r0.y;
  o0.xyzw = r2.xyzw * r0.xxxx;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Original ASM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.27.952.3022
//
//
// Buffer Definitions: 
//
// cbuffer $Globals
// {
//
//   row_major float4x4 m_shadow;       // Offset:    0 Size:    64
//
// }
//
// cbuffer static_globals
// {
//
//   row_major float3x4 m_V;            // Offset:    0 Size:    48 [unused]
//   row_major float4x4 m_P;            // Offset:   48 Size:    64 [unused]
//   row_major float4x4 m_VP;           // Offset:  112 Size:    64 [unused]
//   float4 timers;                     // Offset:  176 Size:    16 [unused]
//   float4 fog_plane;                  // Offset:  192 Size:    16 [unused]
//   float4 fog_params;                 // Offset:  208 Size:    16 [unused]
//   float4 fog_color;                  // Offset:  224 Size:    16 [unused]
//   float4 L_ambient;                  // Offset:  240 Size:    16 [unused]
//   float3 L_sun_color;                // Offset:  256 Size:    12 [unused]
//   float3 L_sun_dir_w;                // Offset:  272 Size:    12 [unused]
//   float4 L_hemi_color;               // Offset:  288 Size:    16 [unused]
//   float3 eye_position;               // Offset:  304 Size:    12 [unused]
//   float4 pos_decompression_params;   // Offset:  320 Size:    16
//   float4 pos_decompression_params2;  // Offset:  336 Size:    16 [unused]
//
// }
//
// cbuffer dynamic_light
// {
//
//   float4 Ldynamic_color;             // Offset:    0 Size:    16
//   float4 Ldynamic_pos;               // Offset:   16 Size:    16 [unused]
//   float4 Ldynamic_dir;               // Offset:   32 Size:    16
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// smp_nofilter                      sampler      NA          NA    0        1
// smp_material                      sampler      NA          NA    1        1
// smp_smap                        sampler_c      NA          NA    2        1
// s_smap                            texture  float4          2d    0        1
// s_position                        texture  float4       2dMS4    1        1
// s_material                        texture  float4          3d    2        1
// $Globals                          cbuffer      NA          NA    0        1
// static_globals                    cbuffer      NA          NA    1        1
// dynamic_light                     cbuffer      NA          NA    2        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD                 0   xyzw        0     NONE   float       
// 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[4], immediateIndexed
dcl_constantbuffer cb1[21], immediateIndexed
dcl_constantbuffer cb2[3], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_comparison
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2dms(4) (float,float,float,float) t1
dcl_resource_texture3d (float,float,float,float) t2
dcl_input_ps_siv linear noperspective v1.xy, position
dcl_output o0.xyzw
dcl_temps 16
ftoi r0.xy, v1.xyxx
mov r0.zw, l(0,0,0,0)
ldms_indexable(texture2dms)(float,float,float,float) r0.xyzw, r0.xyzw, t1.xyzw, l(0)
mad r1.x, |r0.y|, l(2.000000), l(-1.000000)
mad r1.w, -r1.x, r1.x, l(1.000000)
mad r1.w, -r0.x, r0.x, r1.w
sqrt r1.w, |r1.w|
lt r0.y, r0.y, l(0.000000)
movc r0.y, r0.y, l(-1.000000), l(1.000000)
mul r1.y, r1.w, r0.y
mad r2.xy, v1.xyxx, cb1[20].zwzz, -cb1[20].xyxx
mul r2.xy, r0.zzzz, r2.xyxx
mov r2.z, r0.z
mov r1.z, r0.x
mad r2.xyz, r1.xyzx, l(0.015000, 0.015000, 0.015000, 0.000000), r2.xyzx
mov r2.w, l(1.000000)
dp4 r0.x, cb0[0].xyzw, r2.xyzw
dp4 r0.y, cb0[1].xyzw, r2.xyzw
dp4 r0.z, cb0[2].xyzw, r2.xyzw
dp4 r1.w, cb0[3].xyzw, r2.xyzw
div r0.xyz, r0.xyzx, r1.wwww
mad r3.xy, r0.xyxx, l(2048.000000, 2048.000000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
round_ni r3.zw, r3.xxxy
add r3.xy, -r3.zwzz, r3.xyxx
mad r0.xy, -r3.xyxx, l(0.000488, 0.000488, 0.000000, 0.000000), r0.xyxx
add r0.z, r0.z, l(-0.000100)
gather4_aoffimmi_indexable(-5,-5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r1.w, r4.xyzw, r5.xyzw
dp4 r2.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
gather4_aoffimmi_indexable(-3,-5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-1,-5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(1,-5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(3,-5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(5,-5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-5,-3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-3,-3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-1,-3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(1,-3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(3,-3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(5,-3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-5,-1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-3,-1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-1,-1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(1,-1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(3,-1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(5,-1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-5,1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-3,1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-1,1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(1,1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(3,1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(5,1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-5,3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-3,3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-1,3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(1,3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(3,3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(5,3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-5,5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-3,5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-1,5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(1,5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(3,5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(5,5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
div r1.w, r1.w, r2.w
lt r2.w, l(0.000000), r2.w
add r3.z, r0.z, -r1.w
mul r3.z, r3.z, l(300.000000)
div_sat r1.w, r3.z, r1.w
mul r1.w, r1.w, r1.w
and r1.w, r1.w, r2.w
mul r2.w, r1.w, r1.w
mul r3.z, r1.w, r2.w
gather4_c_aoffimmi_indexable(5,-5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r4.yz, r3.xxxx, r4.zzyz
mul r4.yz, r3.zzzz, r4.yyzy
add r3.w, -r1.w, l(1.000000)
mul r5.x, r2.w, l(3.000000)
mul r5.y, r3.w, r5.x
mul r5.z, r5.y, l(0.200000)
mad r5.z, r3.x, r5.z, r3.z
mad r5.w, r4.x, r5.z, r4.z
mad r4.xy, r4.wxww, r3.zzzz, r4.yzyy
mul r4.z, r3.w, r3.w
mul r4.w, r1.w, r4.z
mad r6.xy, r4.wwww, l(3.000000, 0.600000, 0.000000, 0.000000), r5.yyyy
mul r4.w, r4.w, l(3.000000)
mad r5.y, r5.y, l(0.200000), r3.z
mad r6.xy, r2.wwww, r1.wwww, r6.xyxx
gather4_c_aoffimmi_indexable(-1,-3,0)(texture2d)(float,float,float,float) r7.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r6.z, r7.xyxx, r6.yyyy
dp2 r6.w, r7.wzww, r6.yyyy
gather4_c_aoffimmi_indexable(3,-5,0)(texture2d)(float,float,float,float) r8.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r9.x, r8.xyxx, r3.zzzz
dp2 r8.z, r8.wzww, r3.zzzz
dp2 r8.x, r8.xyxx, r5.yyyy
gather4_c_aoffimmi_indexable(1,-5,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r8.y, r10.xyxx, r3.zzzz
dp2 r8.w, r10.wzww, r3.zzzz
dp2 r9.y, r10.xyxx, r5.yyyy
gather4_c_aoffimmi_indexable(-1,-5,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r9.z, r10.xyxx, r3.zzzz
dp2 r9.w, r10.wzww, r3.zzzz
dp2 r10.x, r10.xyxx, r5.yyyy
gather4_c_aoffimmi_indexable(-3,-5,0)(texture2d)(float,float,float,float) r11.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r10.y, r11.xyxx, r3.zzzz
dp2 r10.z, r11.wzww, r3.zzzz
dp2 r10.w, r11.xyxx, r5.yyyy
mad r11.x, -r3.z, r3.x, r3.z
gather4_c_aoffimmi_indexable(-5,-5,0)(texture2d)(float,float,float,float) r12.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r11.yz, r11.xxxx, r12.wwxw
mad r11.yw, r12.zzzy, r3.zzzz, r11.yyyz
mul r11.w, r3.y, r11.w
add r12.x, -r3.y, l(1.000000)
mad r11.y, r12.x, r11.y, r11.w
mad r10.z, r12.x, r10.z, r11.y
mad r10.y, r3.y, r10.y, r10.z
mad r9.w, r12.x, r9.w, r10.y
mad r9.z, r3.y, r9.z, r9.w
mad r8.w, r12.x, r8.w, r9.z
mad r8.y, r3.y, r8.y, r8.w
mad r8.y, r12.x, r8.z, r8.y
mad r8.y, r3.y, r9.x, r8.y
mad r4.x, r12.x, r4.x, r8.y
mad r4.x, r3.y, r4.y, r4.x
mad r4.y, r2.w, r1.w, -r5.y
mad r4.y, r3.x, r4.y, r5.y
gather4_c_aoffimmi_indexable(-5,-3,0)(texture2d)(float,float,float,float) r13.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r8.yz, r4.yyyy, r13.yyzy
mad r8.yz, r13.xxwx, r11.xxxx, r8.yyzy
mad r4.x, r12.x, r8.z, r4.x
mad r4.x, r3.y, r8.y, r4.x
mad r8.w, r12.y, r4.y, r11.z
mad r4.x, r12.x, r8.w, r4.x
mad r4.x, r3.y, r8.z, r4.x
add r8.z, r5.y, -r6.y
mad r8.z, r3.x, r8.z, r6.y
gather4_c_aoffimmi_indexable(-3,-3,0)(texture2d)(float,float,float,float) r13.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r9.xz, r8.zzzz, r13.wwxw
mad r9.xw, r13.zzzy, r6.yyyy, r9.xxxz
mad r4.x, r12.x, r9.x, r4.x
mad r4.x, r3.y, r9.w, r4.x
mad r4.x, r12.x, r10.w, r4.x
dp2 r8.w, r13.wzww, r5.yyyy
mad r4.x, r3.y, r8.w, r4.x
mad r4.x, r12.x, r6.w, r4.x
mad r4.x, r3.y, r6.z, r4.x
mad r4.x, r12.x, r10.x, r4.x
dp2 r6.z, r7.wzww, r5.yyyy
dp2 r6.w, r7.xyxx, r6.xxxx
mad r4.x, r3.y, r6.z, r4.x
gather4_c_aoffimmi_indexable(1,-3,0)(texture2d)(float,float,float,float) r7.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r6.z, r7.wzww, r6.yyyy
mad r4.x, r12.x, r6.z, r4.x
dp2 r6.z, r7.xyxx, r6.yyyy
mad r4.x, r3.y, r6.z, r4.x
mad r4.x, r12.x, r9.y, r4.x
dp2 r6.z, r7.wzww, r5.yyyy
dp2 r7.x, r7.xyxx, r6.xxxx
mad r4.x, r3.y, r6.z, r4.x
add r6.z, -r5.y, r6.y
mad r6.z, r3.x, r6.z, r5.y
gather4_c_aoffimmi_indexable(3,-3,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r7.yz, r6.zzzz, r10.zzyz
mad r7.yw, r10.wwwx, r6.yyyy, r7.yyyz
mad r4.x, r12.x, r7.y, r4.x
mad r4.x, r3.y, r7.w, r4.x
mad r4.x, r12.x, r8.x, r4.x
dp2 r7.y, r10.wzww, r5.yyyy
mad r4.x, r3.y, r7.y, r4.x
gather4_c_aoffimmi_indexable(5,-3,0)(texture2d)(float,float,float,float) r14.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r7.yw, r3.xxxx, r14.yyyz
mul r7.yw, r3.zzzz, r7.yyyw
mad r7.yw, r14.xxxw, r5.zzzz, r7.yyyw
mad r4.x, r12.x, r7.w, r4.x
mad r4.x, r3.y, r7.y, r4.x
mad r4.x, r12.x, r5.w, r4.x
mad r4.x, r3.y, r7.w, r4.x
gather4_c_aoffimmi_indexable(-5,-1,0)(texture2d)(float,float,float,float) r14.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r8.xw, r4.yyyy, r14.yyyz
mad r8.xw, r14.xxxw, r11.xxxx, r8.xxxw
mad r4.x, r12.x, r8.w, r4.x
mad r4.x, r3.y, r8.x, r4.x
mad r4.x, r12.x, r8.y, r4.x
mad r4.x, r3.y, r8.w, r4.x
add r8.yw, -r6.xxxy, r6.yyyx
mad r8.yw, r3.xxxx, r8.yyyw, r6.xxxy
gather4_c_aoffimmi_indexable(-3,-1,0)(texture2d)(float,float,float,float) r14.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r9.xy, r8.yyyy, r14.yzyy
mad r9.xy, r14.xwxx, r8.zzzz, r9.xyxx
mad r4.x, r12.x, r9.y, r4.x
mad r4.x, r3.y, r9.x, r4.x
mad r5.w, r13.y, r8.y, r9.z
mad r4.x, r12.x, r5.w, r4.x
mad r4.x, r3.y, r9.y, r4.x
mul r5.w, r3.w, r4.z
mad r4.z, r4.z, r3.w, r4.w
mad r4.w, r5.w, l(0.100000), r4.w
mad r4.w, r5.x, r3.w, r4.w
mad r3.w, r5.x, r3.w, r4.z
mad r3.w, r2.w, r1.w, r3.w
mad r1.w, r2.w, r1.w, r4.w
add r2.w, -r1.w, r6.x
mad r2.w, r3.x, r2.w, r1.w
gather4_c_aoffimmi_indexable(-1,-1,0)(texture2d)(float,float,float,float) r13.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r4.zw, r2.wwww, r13.wwwx
mad r5.xw, r13.zzzy, r1.wwww, r4.zzzw
mad r4.x, r12.x, r5.x, r4.x
mad r4.x, r3.y, r5.w, r4.x
mad r4.x, r12.x, r6.w, r4.x
dp2 r4.z, r13.wzww, r6.xxxx
mad r4.x, r3.y, r4.z, r4.x
add r4.z, -r6.x, r1.w
mad r4.z, r3.x, r4.z, r6.x
gather4_c_aoffimmi_indexable(1,-1,0)(texture2d)(float,float,float,float) r14.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r5.xw, r4.zzzz, r14.zzzy
mad r9.yz, r14.wwxw, r1.wwww, r5.xxwx
mad r4.x, r12.x, r9.y, r4.x
mad r4.x, r3.y, r9.z, r4.x
mad r4.x, r12.x, r7.x, r4.x
dp2 r5.x, r14.wzww, r6.xxxx
mad r4.x, r3.y, r5.x, r4.x
gather4_c_aoffimmi_indexable(3,-1,0)(texture2d)(float,float,float,float) r15.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r7.xw, r6.zzzz, r15.yyyz
mad r7.xw, r15.xxxw, r8.wwww, r7.xxxw
mad r4.x, r12.x, r7.w, r4.x
mad r4.x, r3.y, r7.x, r4.x
mad r5.x, r10.x, r8.w, r7.z
mad r4.x, r12.x, r5.x, r4.x
mad r4.x, r3.y, r7.w, r4.x
gather4_c_aoffimmi_indexable(5,-1,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r7.zw, r3.xxxx, r10.yyyz
mul r7.zw, r3.zzzz, r7.zzzw
mad r7.zw, r10.xxxw, r5.zzzz, r7.zzzw
mad r4.x, r12.x, r7.w, r4.x
mad r4.x, r3.y, r7.z, r4.x
mad r4.x, r12.x, r7.y, r4.x
mad r4.x, r3.y, r7.w, r4.x
gather4_c_aoffimmi_indexable(-5,1,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r7.yw, r4.yyyy, r10.yyyz
mad r7.yw, r10.xxxw, r11.xxxx, r7.yyyw
mad r4.x, r12.x, r7.w, r4.x
mad r4.x, r3.y, r7.y, r4.x
mad r4.x, r12.x, r8.x, r4.x
mad r4.x, r3.y, r7.w, r4.x
gather4_c_aoffimmi_indexable(-3,1,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r9.yz, r8.yyyy, r10.yyzy
mad r9.yz, r10.xxwx, r8.zzzz, r9.yyzy
mad r4.x, r12.x, r9.z, r4.x
mad r4.x, r3.y, r9.y, r4.x
add r5.x, -r1.w, r3.w
mad r5.x, r3.x, r5.x, r1.w
mad r5.w, r14.x, r5.x, r5.w
gather4_c_aoffimmi_indexable(1,1,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r11.yz, r4.zzzz, r10.zzyz
mad r11.zw, r10.wwwx, r1.wwww, r11.yyyz
mad r4.z, r10.w, r5.x, r11.y
dp2 r5.x, r10.xyxx, r6.xxxx
add r6.w, -r3.w, r1.w
mad r6.w, r3.x, r6.w, r3.w
gather4_c_aoffimmi_indexable(-1,1,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r12.yz, r2.wwww, r10.wwxw
mad r2.w, r10.z, r6.w, r12.y
mad r4.w, r13.y, r6.w, r4.w
mad r10.zw, r10.zzzy, r1.wwww, r12.yyyz
dp2 r6.w, r10.xyxx, r6.xxxx
mad r4.x, r12.x, r9.x, r4.x
mad r4.x, r3.y, r9.z, r4.x
mad r4.x, r12.x, r10.z, r4.x
mad r4.x, r3.y, r10.w, r4.x
mad r4.x, r12.x, r4.w, r4.x
mad r2.w, r3.y, r2.w, r4.x
mad r2.w, r12.x, r11.z, r2.w
mad r2.w, r3.y, r11.w, r2.w
mad r2.w, r12.x, r5.w, r2.w
mad r2.w, r3.y, r4.z, r2.w
gather4_c_aoffimmi_indexable(3,1,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r4.xz, r6.zzzz, r10.yyzy
mad r4.xz, r10.xxwx, r8.wwww, r4.xxzx
mad r2.w, r12.x, r4.z, r2.w
mad r2.w, r3.y, r4.x, r2.w
mad r2.w, r12.x, r7.x, r2.w
mad r2.w, r3.y, r4.z, r2.w
gather4_c_aoffimmi_indexable(5,1,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r4.zw, r3.xxxx, r10.yyyz
mul r4.zw, r3.zzzz, r4.zzzw
mad r4.zw, r10.xxxw, r5.zzzz, r4.zzzw
mad r2.w, r12.x, r4.w, r2.w
mad r2.w, r3.y, r4.z, r2.w
mad r2.w, r12.x, r7.z, r2.w
mad r2.w, r3.y, r4.w, r2.w
gather4_c_aoffimmi_indexable(-5,3,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r7.xz, r4.yyyy, r10.yyzy
mad r7.xz, r10.xxwx, r11.xxxx, r7.xxzx
mad r2.w, r12.x, r7.z, r2.w
mad r2.w, r3.y, r7.x, r2.w
mad r2.w, r12.x, r7.y, r2.w
mad r2.w, r3.y, r7.z, r2.w
gather4_c_aoffimmi_indexable(-3,3,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r7.yz, r8.zzzz, r10.wwxw
mad r7.zw, r10.zzzy, r6.yyyy, r7.yyyz
mad r4.w, r10.z, r8.y, r7.y
dp2 r5.w, r10.xyxx, r5.yyyy
mad r2.w, r12.x, r7.z, r2.w
mad r2.w, r3.y, r7.w, r2.w
mad r2.w, r12.x, r9.y, r2.w
mad r2.w, r3.y, r4.w, r2.w
gather4_c_aoffimmi_indexable(-1,3,0)(texture2d)(float,float,float,float) r9.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r4.w, r9.wzww, r6.yyyy
mad r2.w, r12.x, r4.w, r2.w
dp2 r4.w, r9.xyxx, r6.yyyy
mad r2.w, r3.y, r4.w, r2.w
mad r2.w, r12.x, r6.w, r2.w
dp2 r4.w, r9.wzww, r6.xxxx
dp2 r6.w, r9.xyxx, r5.yyyy
mad r2.w, r3.y, r4.w, r2.w
gather4_c_aoffimmi_indexable(1,3,0)(texture2d)(float,float,float,float) r9.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r4.w, r9.wzww, r6.yyyy
mad r2.w, r12.x, r4.w, r2.w
dp2 r4.w, r9.xyxx, r6.yyyy
mad r2.w, r3.y, r4.w, r2.w
mad r2.w, r12.x, r5.x, r2.w
dp2 r4.w, r9.wzww, r6.xxxx
dp2 r5.x, r9.xyxx, r5.yyyy
mad r2.w, r3.y, r4.w, r2.w
gather4_c_aoffimmi_indexable(3,3,0)(texture2d)(float,float,float,float) r9.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r7.yz, r6.zzzz, r9.zzyz
mad r7.zw, r9.wwwx, r6.yyyy, r7.yyyz
mad r4.w, r9.w, r8.w, r7.y
dp2 r6.z, r9.xyxx, r5.yyyy
mad r2.w, r12.x, r7.z, r2.w
mad r2.w, r3.y, r7.w, r2.w
mad r2.w, r12.x, r4.x, r2.w
mad r2.w, r3.y, r4.w, r2.w
gather4_c_aoffimmi_indexable(5,3,0)(texture2d)(float,float,float,float) r8.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r4.xw, r3.xxxx, r8.yyyz
mul r4.xw, r3.zzzz, r4.xxxw
mad r4.xw, r8.xxxw, r5.zzzz, r4.xxxw
mad r2.w, r12.x, r4.w, r2.w
mad r2.w, r3.y, r4.x, r2.w
mad r2.w, r12.x, r4.z, r2.w
mad r2.w, r3.y, r4.w, r2.w
gather4_c_aoffimmi_indexable(-5,5,0)(texture2d)(float,float,float,float) r8.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r4.zw, r11.xxxx, r8.wwwx
mad r7.yz, r8.zzyz, r3.zzzz, r4.zzwz
mad r4.y, r8.z, r4.y, r4.z
mad r2.w, r12.x, r7.y, r2.w
mad r2.w, r3.y, r7.z, r2.w
mad r2.w, r12.x, r7.x, r2.w
mad r2.w, r3.y, r4.y, r2.w
gather4_c_aoffimmi_indexable(-3,5,0)(texture2d)(float,float,float,float) r7.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r4.y, r7.wzww, r3.zzzz
mad r2.w, r12.x, r4.y, r2.w
dp2 r4.y, r7.xyxx, r3.zzzz
dp2 r4.z, r7.wzww, r5.yyyy
mad r2.w, r3.y, r4.y, r2.w
mad r2.w, r12.x, r5.w, r2.w
mad r2.w, r3.y, r4.z, r2.w
gather4_c_aoffimmi_indexable(-1,5,0)(texture2d)(float,float,float,float) r7.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r4.y, r7.wzww, r3.zzzz
mad r2.w, r12.x, r4.y, r2.w
dp2 r4.y, r7.xyxx, r3.zzzz
dp2 r4.z, r7.wzww, r5.yyyy
mad r2.w, r3.y, r4.y, r2.w
mad r2.w, r12.x, r6.w, r2.w
mad r2.w, r3.y, r4.z, r2.w
gather4_c_aoffimmi_indexable(1,5,0)(texture2d)(float,float,float,float) r7.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r4.y, r7.wzww, r3.zzzz
mad r2.w, r12.x, r4.y, r2.w
dp2 r4.y, r7.xyxx, r3.zzzz
dp2 r4.z, r7.wzww, r5.yyyy
mad r2.w, r3.y, r4.y, r2.w
mad r2.w, r12.x, r5.x, r2.w
mad r2.w, r3.y, r4.z, r2.w
gather4_c_aoffimmi_indexable(3,5,0)(texture2d)(float,float,float,float) r7.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
gather4_c_aoffimmi_indexable(5,5,0)(texture2d)(float,float,float,float) r8.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r0.x, r7.wzww, r3.zzzz
mad r0.x, r12.x, r0.x, r2.w
dp2 r0.y, r7.xyxx, r3.zzzz
dp2 r0.z, r7.wzww, r5.yyyy
mad r0.x, r3.y, r0.y, r0.x
mad r0.x, r12.x, r6.z, r0.x
mad r0.x, r3.y, r0.z, r0.x
and r0.y, r0.w, l(0x80000000)
ubfe r0.z, l(4), l(21), r0.w
movc r0.y, r0.y, l(16), l(0)
bfi r0.y, l(4), l(0), r0.z, r0.y
utof r0.y, r0.y
mul r7.z, r0.y, l(0.043011)
dp3 r0.y, r2.xyzx, r2.xyzx
rsq r0.y, r0.y
mad r0.yzw, -r2.xxyz, r0.yyyy, -cb2[2].xxyz
dp3 r2.x, r0.yzwy, r0.yzwy
rsq r2.x, r2.x
mul r0.yzw, r0.yyzw, r2.xxxx
dp3 r7.y, r0.yzwy, r1.xyzx
dp3 r7.x, -cb2[2].xyzx, r1.xyzx
sample_indexable(texture3d)(float,float,float,float) r0.yz, r7.xyzx, t2.zxyw, s1
mul r2.xyzw, r0.yyyz, cb2[0].xyzw
mul r0.y, r3.z, l(14.000000)
mad r0.y, r5.y, l(10.000000), r0.y
mad r0.y, r6.y, l(7.000000), r0.y
add r0.y, r5.y, r0.y
mad r0.y, r3.z, l(2.000000), r0.y
add r0.y, r5.y, r0.y
add r0.y, r6.y, r0.y
mad r0.y, r6.x, l(5.000000), r0.y
add r0.y, r6.y, r0.y
add r0.y, r5.y, r0.y
mad r0.y, r3.z, l(2.000000), r0.y
add r0.y, r5.y, r0.y
add r0.y, r6.y, r0.y
add r0.y, r6.x, r0.y
mad r0.y, r1.w, l(3.000000), r0.y
add r0.y, r6.x, r0.y
add r0.y, r6.y, r0.y
add r0.y, r5.y, r0.y
mad r0.y, r3.z, l(2.000000), r0.y
add r0.y, r5.y, r0.y
add r0.y, r6.y, r0.y
add r0.y, r6.x, r0.y
add r0.y, r1.w, r0.y
add r0.y, r3.w, r0.y
add r0.y, r1.w, r0.y
add r0.y, r6.x, r0.y
add r0.y, r6.y, r0.y
add r0.y, r5.y, r0.y
mad r0.y, r3.z, l(2.000000), r0.y
add r0.y, r5.y, r0.y
add r0.y, r6.y, r0.y
add r0.y, r6.x, r0.y
mad r0.y, r1.w, l(3.000000), r0.y
add r0.y, r6.x, r0.y
add r0.y, r6.y, r0.y
add r0.y, r5.y, r0.y
mad r0.y, r3.z, l(2.000000), r0.y
add r0.y, r5.y, r0.y
add r0.y, r6.y, r0.y
mad r0.y, r6.x, l(5.000000), r0.y
add r0.y, r6.y, r0.y
add r0.y, r5.y, r0.y
mad r0.y, r3.z, l(2.000000), r0.y
add r0.y, r5.y, r0.y
mad r0.y, r6.y, l(7.000000), r0.y
add r0.y, r5.y, r0.y
mad r0.y, r3.z, l(2.000000), r0.y
mad r0.y, r5.y, l(9.000000), r0.y
mad r0.y, r3.z, l(12.000000), r0.y
mul r0.zw, r3.xxxx, r8.zzzy
mul r0.zw, r3.zzzz, r0.zzzw
mad r1.xy, r8.wxww, r3.zzzz, r0.zwzz
mad r0.z, r8.w, r5.z, r0.z
mad r0.x, r12.x, r1.x, r0.x
mad r0.x, r3.y, r1.y, r0.x
mad r0.x, r12.x, r4.x, r0.x
mad r0.x, r3.y, r0.z, r0.x
div r0.x, r0.x, r0.y
mul o0.xyzw, r0.xxxx, r2.xyzw
ret 
// Approximately 671 instruction slots used

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


/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Recompiled ASM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.20789
//
//   using 3Dmigoto v1.2.39 on Wed May 18 08:41:42 2016
//
//
// Buffer Definitions: 
//
// cbuffer _Globals
// {
//
//   row_major float4x4 m_shadow;       // Offset:    0 Size:    64
//
// }
//
// cbuffer static_globals
// {
//
//   row_major float3x4 m_V;            // Offset:    0 Size:    48 [unused]
//   row_major float4x4 m_P;            // Offset:   48 Size:    64 [unused]
//   row_major float4x4 m_VP;           // Offset:  112 Size:    64 [unused]
//   float4 timers;                     // Offset:  176 Size:    16 [unused]
//   float4 fog_plane;                  // Offset:  192 Size:    16 [unused]
//   float4 fog_params;                 // Offset:  208 Size:    16 [unused]
//   float4 fog_color;                  // Offset:  224 Size:    16 [unused]
//   float4 L_ambient;                  // Offset:  240 Size:    16 [unused]
//   float3 L_sun_color;                // Offset:  256 Size:    12 [unused]
//   float3 L_sun_dir_w;                // Offset:  272 Size:    12 [unused]
//   float4 L_hemi_color;               // Offset:  288 Size:    16 [unused]
//   float3 eye_position;               // Offset:  304 Size:    12 [unused]
//   float4 pos_decompression_params;   // Offset:  320 Size:    16
//   float4 pos_decompression_params2;  // Offset:  336 Size:    16 [unused]
//
// }
//
// cbuffer dynamic_light
// {
//
//   float4 Ldynamic_color;             // Offset:    0 Size:    16
//   float4 Ldynamic_pos;               // Offset:   16 Size:    16 [unused]
//   float4 Ldynamic_dir;               // Offset:   32 Size:    16
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// smp_nofilter_s                    sampler      NA          NA    0        1
// smp_material_s                    sampler      NA          NA    1        1
// smp_smap_s                      sampler_c      NA          NA    2        1
// s_smap                            texture  float4          2d    0        1
// s_position                        texture  float4       2dMS4    1        1
// s_material                        texture  float4          3d    2        1
// _Globals                          cbuffer      NA          NA    0        1
// static_globals                    cbuffer      NA          NA    1        1
// dynamic_light                     cbuffer      NA          NA    2        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD                 0   xyzw        0     NONE   float       
// 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[4], immediateIndexed
dcl_constantbuffer cb1[21], immediateIndexed
dcl_constantbuffer cb2[3], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_comparison
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2dms(4) (float,float,float,float) t1
dcl_resource_texture3d (float,float,float,float) t2
dcl_input_ps_siv linear noperspective v1.xy, position
dcl_output o0.xyzw
dcl_temps 16
round_z r0.xy, v1.xyxx
ftoi r0.xy, r0.xyxx
mov r0.zw, l(0,0,0,0)
ldms_indexable(texture2dms)(float,float,float,float) r0.xyzw, r0.xyzw, t1.xyzw, l(0)
mad r1.x, |r0.y|, l(2.000000), l(-1.000000)
mad r1.w, -r1.x, r1.x, l(1.000000)
mad r1.w, -r0.x, r0.x, r1.w
sqrt r1.w, |r1.w|
lt r0.y, r0.y, l(0.000000)
movc r0.y, r0.y, l(-1.000000), l(1.000000)
mul r1.y, r1.w, r0.y
mad r2.xy, v1.xyxx, cb1[20].zwzz, -cb1[20].xyxx
mul r2.xy, r0.zzzz, r2.xyxx
mov r2.z, r0.z
mov r1.z, r0.x
mad r2.xyz, r1.xyzx, l(0.015000, 0.015000, 0.015000, 0.000000), r2.xyzx
mov r2.w, l(1.000000)
dp4 r0.x, cb0[0].xyzw, r2.xyzw
dp4 r0.y, cb0[1].xyzw, r2.xyzw
dp4 r0.z, cb0[2].xyzw, r2.xyzw
dp4 r1.w, cb0[3].xyzw, r2.xyzw
div r0.xyz, r0.xyzx, r1.wwww
mad r3.xy, r0.xyxx, l(2048.000000, 2048.000000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
round_ni r3.zw, r3.xxxy
add r3.xy, -r3.zwzz, r3.xyxx
mad r0.xy, r3.xyxx, l(-0.000488281250, -0.000488281250, 0.000000, 0.000000), r0.xyxx
add r0.z, r0.z, l(-0.000100)
gather4_aoffimmi_indexable(-5,-5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r1.w, r4.xyzw, r5.xyzw
dp4 r2.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
gather4_aoffimmi_indexable(-3,-5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-1,-5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(1,-5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(3,-5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(5,-5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-5,-3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-3,-3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-1,-3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(1,-3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(3,-3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(5,-3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-5,-1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-3,-1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-1,-1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(1,-1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(3,-1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(5,-1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-5,1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-3,1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-1,1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(1,1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(3,1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(5,1,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-5,3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-3,3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-1,3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(1,3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(3,3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(5,3,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-5,5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-3,5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(-1,5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(1,5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(3,5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
gather4_aoffimmi_indexable(5,5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s0.x
ge r5.xyzw, r4.xyzw, r0.zzzz
movc r5.xyzw, r5.xyzw, l(0,0,0,0), l(1.000000,1.000000,1.000000,1.000000)
dp4 r3.z, r4.xyzw, r5.xyzw
dp4 r3.w, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
add r2.w, r2.w, r3.w
add r1.w, r1.w, r3.z
div r1.w, r1.w, r2.w
lt r2.w, l(0.000000), r2.w
add r3.z, r0.z, -r1.w
mul r3.z, r3.z, l(300.000000)
div_sat r1.w, r3.z, r1.w
mul r1.w, r1.w, r1.w
and r1.w, r1.w, r2.w
mul r2.w, r1.w, r1.w
mul r3.z, r1.w, r2.w
gather4_c_aoffimmi_indexable(5,-5,0)(texture2d)(float,float,float,float) r4.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r4.yz, r3.xxxx, r4.zzyz
mul r4.yz, r3.zzzz, r4.yyzy
add r3.w, -r1.w, l(1.000000)
mul r5.x, r2.w, r3.w
mul r5.yz, r5.xxxx, l(0.000000, 3.000000, 0.600000, 0.000000)
mad r5.z, r3.x, r5.z, r3.z
mad r5.w, r4.x, r5.z, r4.z
mad r4.xy, r4.wxww, r3.zzzz, r4.yzyy
mul r4.z, r3.w, r3.w
mul r4.w, r1.w, r4.z
mad r6.xy, r4.wwww, l(0.600000, 3.000000, 0.000000, 0.000000), r5.yyyy
mul r4.w, r4.w, l(3.000000)
mad r6.xy, r2.wwww, r1.wwww, r6.xyxx
gather4_c_aoffimmi_indexable(-1,-3,0)(texture2d)(float,float,float,float) r7.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r5.y, r7.xyxx, r6.xxxx
dp2 r6.z, r7.wzww, r6.xxxx
gather4_c_aoffimmi_indexable(3,-5,0)(texture2d)(float,float,float,float) r8.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r6.w, r8.xyxx, r3.zzzz
dp2 r8.z, r8.wzww, r3.zzzz
gather4_c_aoffimmi_indexable(1,-5,0)(texture2d)(float,float,float,float) r9.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r8.w, r9.xyxx, r3.zzzz
dp2 r9.z, r9.wzww, r3.zzzz
gather4_c_aoffimmi_indexable(-1,-5,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r9.w, r10.xyxx, r3.zzzz
dp2 r10.z, r10.wzww, r3.zzzz
gather4_c_aoffimmi_indexable(-3,-5,0)(texture2d)(float,float,float,float) r11.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r10.w, r11.xyxx, r3.zzzz
dp2 r11.z, r11.wzww, r3.zzzz
mad r11.w, -r3.z, r3.x, r3.z
gather4_c_aoffimmi_indexable(-5,-5,0)(texture2d)(float,float,float,float) r12.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r12.xw, r11.wwww, r12.wwwx
mad r12.xz, r12.zzyz, r3.zzzz, r12.xxwx
mul r12.z, r3.y, r12.z
add r13.x, -r3.y, l(1.000000)
mad r12.x, r13.x, r12.x, r12.z
mad r11.z, r13.x, r11.z, r12.x
mad r10.w, r3.y, r10.w, r11.z
mad r10.z, r13.x, r10.z, r10.w
mad r9.w, r3.y, r9.w, r10.z
mad r9.z, r13.x, r9.z, r9.w
mad r8.w, r3.y, r8.w, r9.z
mad r8.z, r13.x, r8.z, r8.w
mad r6.w, r3.y, r6.w, r8.z
mad r4.x, r13.x, r4.x, r6.w
mad r4.x, r3.y, r4.y, r4.x
mad r4.y, r5.x, l(0.600000), r3.z
mad r6.w, r2.w, r1.w, -r4.y
mad r6.w, r3.x, r6.w, r4.y
gather4_c_aoffimmi_indexable(-5,-3,0)(texture2d)(float,float,float,float) r14.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r8.zw, r6.wwww, r14.yyyz
mad r8.zw, r14.xxxw, r11.wwww, r8.zzzw
mad r4.x, r13.x, r8.w, r4.x
mad r4.x, r3.y, r8.z, r4.x
mad r9.z, r12.y, r6.w, r12.w
mad r4.x, r13.x, r9.z, r4.x
mad r4.x, r3.y, r8.w, r4.x
add r8.w, r4.y, -r6.x
mad r8.w, r3.x, r8.w, r6.x
gather4_c_aoffimmi_indexable(-3,-3,0)(texture2d)(float,float,float,float) r12.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r9.zw, r8.wwww, r12.wwwx
mad r10.zw, r12.zzzy, r6.xxxx, r9.zzzw
mad r4.x, r13.x, r10.z, r4.x
mad r4.x, r3.y, r10.w, r4.x
dp2 r9.z, r11.xyxx, r4.yyyy
mad r4.x, r13.x, r9.z, r4.x
dp2 r9.z, r12.wzww, r4.yyyy
mad r4.x, r3.y, r9.z, r4.x
mad r4.x, r13.x, r6.z, r4.x
mad r4.x, r3.y, r5.y, r4.x
dp2 r5.y, r10.xyxx, r4.yyyy
mad r4.x, r13.x, r5.y, r4.x
dp2 r5.y, r7.wzww, r4.yyyy
dp2 r6.z, r7.xyxx, r6.yyyy
mad r4.x, r3.y, r5.y, r4.x
gather4_c_aoffimmi_indexable(1,-3,0)(texture2d)(float,float,float,float) r7.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r5.y, r7.wzww, r6.xxxx
mad r4.x, r13.x, r5.y, r4.x
dp2 r5.y, r7.xyxx, r6.xxxx
mad r4.x, r3.y, r5.y, r4.x
dp2 r5.y, r9.xyxx, r4.yyyy
mad r4.x, r13.x, r5.y, r4.x
dp2 r5.y, r7.wzww, r4.yyyy
dp2 r7.x, r7.xyxx, r6.yyyy
mad r4.x, r3.y, r5.y, r4.x
add r5.y, -r4.y, r6.x
mad r5.y, r3.x, r5.y, r4.y
gather4_c_aoffimmi_indexable(3,-3,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r7.yz, r5.yyyy, r10.zzyz
mad r7.yw, r10.wwwx, r6.xxxx, r7.yyyz
mad r4.x, r13.x, r7.y, r4.x
mad r4.x, r3.y, r7.w, r4.x
dp2 r7.y, r8.xyxx, r4.yyyy
mad r4.x, r13.x, r7.y, r4.x
dp2 r7.y, r10.wzww, r4.yyyy
mad r4.x, r3.y, r7.y, r4.x
gather4_c_aoffimmi_indexable(5,-3,0)(texture2d)(float,float,float,float) r14.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r7.yw, r3.xxxx, r14.yyyz
mul r7.yw, r3.zzzz, r7.yyyw
mad r7.yw, r14.xxxw, r5.zzzz, r7.yyyw
mad r4.x, r13.x, r7.w, r4.x
mad r4.x, r3.y, r7.y, r4.x
mad r4.x, r13.x, r5.w, r4.x
mad r4.x, r3.y, r7.w, r4.x
gather4_c_aoffimmi_indexable(-5,-1,0)(texture2d)(float,float,float,float) r14.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r8.xy, r6.wwww, r14.yzyy
mad r8.xy, r14.xwxx, r11.wwww, r8.xyxx
mad r4.x, r13.x, r8.y, r4.x
mad r4.x, r3.y, r8.x, r4.x
mad r4.x, r13.x, r8.z, r4.x
mad r4.x, r3.y, r8.y, r4.x
add r8.yz, -r6.yyxy, r6.xxyx
mad r8.yz, r3.xxxx, r8.yyzy, r6.yyxy
gather4_c_aoffimmi_indexable(-3,-1,0)(texture2d)(float,float,float,float) r14.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r9.xy, r8.yyyy, r14.yzyy
mad r9.xy, r14.xwxx, r8.wwww, r9.xyxx
mad r4.x, r13.x, r9.y, r4.x
mad r4.x, r3.y, r9.x, r4.x
mad r5.w, r12.y, r8.y, r9.w
mad r4.x, r13.x, r5.w, r4.x
mad r4.x, r3.y, r9.y, r4.x
mul r5.w, r3.w, r4.z
mad r3.w, r4.z, r3.w, r4.w
mad r4.z, r5.w, l(0.100000), r4.w
mad r4.z, r5.x, l(3.000000), r4.z
mad r3.w, r5.x, l(3.000000), r3.w
mad r3.w, r2.w, r1.w, r3.w
mad r1.w, r2.w, r1.w, r4.z
add r2.w, -r1.w, r6.y
mad r2.w, r3.x, r2.w, r1.w
gather4_c_aoffimmi_indexable(-1,-1,0)(texture2d)(float,float,float,float) r12.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r4.zw, r2.wwww, r12.wwwx
mad r5.xw, r12.zzzy, r1.wwww, r4.zzzw
mad r4.x, r13.x, r5.x, r4.x
mad r4.x, r3.y, r5.w, r4.x
mad r4.x, r13.x, r6.z, r4.x
dp2 r4.z, r12.wzww, r6.yyyy
mad r4.x, r3.y, r4.z, r4.x
add r4.z, -r6.y, r1.w
mad r4.z, r3.x, r4.z, r6.y
gather4_c_aoffimmi_indexable(1,-1,0)(texture2d)(float,float,float,float) r14.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r5.xw, r4.zzzz, r14.zzzy
mad r9.yz, r14.wwxw, r1.wwww, r5.xxwx
mad r4.x, r13.x, r9.y, r4.x
mad r4.x, r3.y, r9.z, r4.x
mad r4.x, r13.x, r7.x, r4.x
dp2 r5.x, r14.wzww, r6.yyyy
mad r4.x, r3.y, r5.x, r4.x
gather4_c_aoffimmi_indexable(3,-1,0)(texture2d)(float,float,float,float) r15.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r7.xw, r5.yyyy, r15.yyyz
mad r7.xw, r15.xxxw, r8.zzzz, r7.xxxw
mad r4.x, r13.x, r7.w, r4.x
mad r4.x, r3.y, r7.x, r4.x
mad r5.x, r10.x, r8.z, r7.z
mad r4.x, r13.x, r5.x, r4.x
mad r4.x, r3.y, r7.w, r4.x
gather4_c_aoffimmi_indexable(5,-1,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r7.zw, r3.xxxx, r10.yyyz
mul r7.zw, r3.zzzz, r7.zzzw
mad r7.zw, r10.xxxw, r5.zzzz, r7.zzzw
mad r4.x, r13.x, r7.w, r4.x
mad r4.x, r3.y, r7.z, r4.x
mad r4.x, r13.x, r7.y, r4.x
mad r4.x, r3.y, r7.w, r4.x
gather4_c_aoffimmi_indexable(-5,1,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r7.yw, r6.wwww, r10.yyyz
mad r7.yw, r10.xxxw, r11.wwww, r7.yyyw
mad r4.x, r13.x, r7.w, r4.x
mad r4.x, r3.y, r7.y, r4.x
mad r4.x, r13.x, r8.x, r4.x
mad r4.x, r3.y, r7.w, r4.x
gather4_c_aoffimmi_indexable(-3,1,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r9.yz, r8.yyyy, r10.yyzy
mad r9.yz, r10.xxwx, r8.wwww, r9.yyzy
mad r4.x, r13.x, r9.z, r4.x
gather4_c_aoffimmi_indexable(1,1,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r11.xy, r4.zzzz, r10.zyzz
mad r11.yz, r10.wwxw, r1.wwww, r11.xxyx
add r4.z, -r3.w, r1.w
mad r4.z, r3.x, r4.z, r3.w
gather4_c_aoffimmi_indexable(-1,1,0)(texture2d)(float,float,float,float) r15.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r12.xz, r2.wwww, r15.wwxw
mad r2.w, r15.z, r4.z, r12.x
mad r4.z, r12.y, r4.z, r4.w
mad r12.xy, r15.zyzz, r1.wwww, r12.xzxx
dp2 r4.w, r15.xyxx, r6.yyyy
mad r4.x, r3.y, r9.y, r4.x
mad r4.x, r13.x, r9.x, r4.x
mad r4.x, r3.y, r9.z, r4.x
mad r4.x, r13.x, r12.x, r4.x
mad r4.x, r3.y, r12.y, r4.x
mad r4.x, r13.x, r4.z, r4.x
mad r2.w, r3.y, r2.w, r4.x
mad r2.w, r13.x, r11.y, r2.w
mad r2.w, r3.y, r11.z, r2.w
add r4.x, -r1.w, r3.w
mad r4.x, r3.x, r4.x, r1.w
mad r4.z, r14.x, r4.x, r5.w
mad r4.x, r10.w, r4.x, r11.x
dp2 r5.x, r10.xyxx, r6.yyyy
mad r2.w, r13.x, r4.z, r2.w
mad r2.w, r3.y, r4.x, r2.w
gather4_c_aoffimmi_indexable(3,1,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r4.xz, r5.yyyy, r10.yyzy
mad r4.xz, r10.xxwx, r8.zzzz, r4.xxzx
mad r2.w, r13.x, r4.z, r2.w
mad r2.w, r3.y, r4.x, r2.w
mad r2.w, r13.x, r7.x, r2.w
mad r2.w, r3.y, r4.z, r2.w
gather4_c_aoffimmi_indexable(5,1,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r7.xw, r3.xxxx, r10.yyyz
mul r7.xw, r3.zzzz, r7.xxxw
mad r7.xw, r10.xxxw, r5.zzzz, r7.xxxw
mad r2.w, r13.x, r7.w, r2.w
mad r2.w, r3.y, r7.x, r2.w
mad r2.w, r13.x, r7.z, r2.w
mad r2.w, r3.y, r7.w, r2.w
gather4_c_aoffimmi_indexable(-5,3,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r7.zw, r6.wwww, r10.yyyz
mad r7.zw, r10.xxxw, r11.wwww, r7.zzzw
mad r2.w, r13.x, r7.w, r2.w
mad r2.w, r3.y, r7.z, r2.w
mad r2.w, r13.x, r7.y, r2.w
mad r2.w, r3.y, r7.w, r2.w
gather4_c_aoffimmi_indexable(-3,3,0)(texture2d)(float,float,float,float) r10.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r7.yw, r8.wwww, r10.wwwx
mad r8.xw, r10.zzzy, r6.xxxx, r7.yyyw
mad r4.z, r10.z, r8.y, r7.y
dp2 r5.w, r10.xyxx, r4.yyyy
mad r2.w, r13.x, r8.x, r2.w
mad r2.w, r3.y, r8.w, r2.w
mad r2.w, r13.x, r9.y, r2.w
mad r2.w, r3.y, r4.z, r2.w
gather4_c_aoffimmi_indexable(-1,3,0)(texture2d)(float,float,float,float) r9.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r4.z, r9.wzww, r6.xxxx
mad r2.w, r13.x, r4.z, r2.w
dp2 r4.z, r9.xyxx, r6.xxxx
mad r2.w, r3.y, r4.z, r2.w
mad r2.w, r13.x, r4.w, r2.w
dp2 r4.z, r9.wzww, r6.yyyy
dp2 r4.w, r9.xyxx, r4.yyyy
mad r2.w, r3.y, r4.z, r2.w
gather4_c_aoffimmi_indexable(1,3,0)(texture2d)(float,float,float,float) r9.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r4.z, r9.wzww, r6.xxxx
mad r2.w, r13.x, r4.z, r2.w
dp2 r4.z, r9.xyxx, r6.xxxx
mad r2.w, r3.y, r4.z, r2.w
mad r2.w, r13.x, r5.x, r2.w
dp2 r4.z, r9.wzww, r6.yyyy
dp2 r5.x, r9.xyxx, r4.yyyy
mad r2.w, r3.y, r4.z, r2.w
gather4_c_aoffimmi_indexable(3,3,0)(texture2d)(float,float,float,float) r9.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r7.yw, r5.yyyy, r9.zzzy
mad r8.xy, r9.wxww, r6.xxxx, r7.ywyy
mad r4.z, r9.w, r8.z, r7.y
dp2 r5.y, r9.xyxx, r4.yyyy
mad r2.w, r13.x, r8.x, r2.w
mad r2.w, r3.y, r8.y, r2.w
mad r2.w, r13.x, r4.x, r2.w
mad r2.w, r3.y, r4.z, r2.w
gather4_c_aoffimmi_indexable(5,3,0)(texture2d)(float,float,float,float) r8.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r4.xz, r3.xxxx, r8.yyzy
mul r4.xz, r3.zzzz, r4.xxzx
mad r4.xz, r8.xxwx, r5.zzzz, r4.xxzx
mad r2.w, r13.x, r4.z, r2.w
mad r2.w, r3.y, r4.x, r2.w
mad r2.w, r13.x, r7.x, r2.w
mad r2.w, r3.y, r4.z, r2.w
gather4_c_aoffimmi_indexable(-5,5,0)(texture2d)(float,float,float,float) r8.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
mul r7.xy, r11.wwww, r8.wxww
mad r7.yw, r8.zzzy, r3.zzzz, r7.xxxy
mad r4.z, r8.z, r6.w, r7.x
mad r2.w, r13.x, r7.y, r2.w
mad r2.w, r3.y, r7.w, r2.w
mad r2.w, r13.x, r7.z, r2.w
mad r2.w, r3.y, r4.z, r2.w
gather4_c_aoffimmi_indexable(-3,5,0)(texture2d)(float,float,float,float) r7.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r4.z, r7.wzww, r3.zzzz
mad r2.w, r13.x, r4.z, r2.w
dp2 r4.z, r7.xyxx, r3.zzzz
dp2 r6.z, r7.wzww, r4.yyyy
mad r2.w, r3.y, r4.z, r2.w
mad r2.w, r13.x, r5.w, r2.w
mad r2.w, r3.y, r6.z, r2.w
gather4_c_aoffimmi_indexable(-1,5,0)(texture2d)(float,float,float,float) r7.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r4.z, r7.wzww, r3.zzzz
mad r2.w, r13.x, r4.z, r2.w
dp2 r4.z, r7.xyxx, r3.zzzz
dp2 r5.w, r7.wzww, r4.yyyy
mad r2.w, r3.y, r4.z, r2.w
mad r2.w, r13.x, r4.w, r2.w
mad r2.w, r3.y, r5.w, r2.w
gather4_c_aoffimmi_indexable(1,5,0)(texture2d)(float,float,float,float) r7.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r4.z, r7.wzww, r3.zzzz
mad r2.w, r13.x, r4.z, r2.w
dp2 r4.z, r7.xyxx, r3.zzzz
dp2 r4.w, r7.wzww, r4.yyyy
mad r2.w, r3.y, r4.z, r2.w
mad r2.w, r13.x, r5.x, r2.w
mad r2.w, r3.y, r4.w, r2.w
gather4_c_aoffimmi_indexable(3,5,0)(texture2d)(float,float,float,float) r7.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
gather4_c_aoffimmi_indexable(5,5,0)(texture2d)(float,float,float,float) r8.xyzw, r0.xyxx, t0.xyzw, s2.x, r0.z
dp2 r0.x, r7.wzww, r3.zzzz
mad r0.x, r13.x, r0.x, r2.w
dp2 r0.y, r7.xyxx, r3.zzzz
dp2 r0.z, r7.wzww, r4.yyyy
mad r0.x, r3.y, r0.y, r0.x
ftoi r0.y, r0.w
ftou r0.w, r0.w
ubfe r0.w, l(4), l(21), r0.w
and r0.y, r0.y, l(0x80000000)
utof r0.y, r0.y
ne r0.y, l(0.000000, 0.000000, 0.000000, 0.000000), r0.y
and r0.y, r0.y, l(16)
iadd r0.y, r0.y, r0.w
utof r0.y, r0.y
mul r7.z, r0.y, l(0.0430107526)
dp3 r0.y, r2.xyzx, r2.xyzx
rsq r0.y, r0.y
mad r2.xyz, -r2.xyzx, r0.yyyy, -cb2[2].xyzx
dp3 r0.y, r2.xyzx, r2.xyzx
rsq r0.y, r0.y
mul r2.xyz, r2.xyzx, r0.yyyy
dp3 r7.y, r2.xyzx, r1.xyzx
dp3 r7.x, -cb2[2].xyzx, r1.xyzx
sample_indexable(texture3d)(float,float,float,float) r0.yw, r7.xyzx, t2.zxwy, s1
mul r2.xyzw, r0.yyyw, cb2[0].xyzw
mul r0.y, r3.z, l(14.000000)
mad r0.y, r4.y, l(10.000000), r0.y
mad r0.y, r6.x, l(7.000000), r0.y
add r0.y, r4.y, r0.y
mad r0.y, r3.z, l(2.000000), r0.y
add r0.y, r4.y, r0.y
add r0.y, r6.x, r0.y
mad r0.y, r6.y, l(5.000000), r0.y
add r0.y, r6.x, r0.y
add r0.y, r4.y, r0.y
mad r0.y, r3.z, l(2.000000), r0.y
add r0.y, r4.y, r0.y
add r0.y, r6.x, r0.y
add r0.y, r6.y, r0.y
mad r0.y, r1.w, l(3.000000), r0.y
add r0.y, r6.y, r0.y
add r0.y, r6.x, r0.y
add r0.y, r4.y, r0.y
mad r0.y, r3.z, l(2.000000), r0.y
add r0.y, r4.y, r0.y
add r0.y, r6.x, r0.y
add r0.y, r6.y, r0.y
add r0.y, r1.w, r0.y
add r0.y, r3.w, r0.y
add r0.y, r1.w, r0.y
add r0.y, r6.y, r0.y
add r0.y, r6.x, r0.y
add r0.y, r4.y, r0.y
mad r0.y, r3.z, l(2.000000), r0.y
add r0.y, r4.y, r0.y
add r0.y, r6.x, r0.y
add r0.y, r6.y, r0.y
mad r0.y, r1.w, l(3.000000), r0.y
add r0.y, r6.y, r0.y
add r0.y, r6.x, r0.y
add r0.y, r4.y, r0.y
mad r0.y, r3.z, l(2.000000), r0.y
add r0.y, r4.y, r0.y
add r0.y, r6.x, r0.y
mad r0.y, r6.y, l(5.000000), r0.y
add r0.y, r6.x, r0.y
add r0.y, r4.y, r0.y
mad r0.y, r3.z, l(2.000000), r0.y
add r0.y, r4.y, r0.y
mad r0.y, r6.x, l(7.000000), r0.y
add r0.y, r4.y, r0.y
mad r0.y, r3.z, l(2.000000), r0.y
mad r0.y, r4.y, l(9.000000), r0.y
mad r0.y, r3.z, l(12.000000), r0.y
mul r1.xy, r3.xxxx, r8.zyzz
mul r1.xy, r3.zzzz, r1.xyxx
mad r1.yz, r8.wwxw, r3.zzzz, r1.xxyx
mad r0.w, r8.w, r5.z, r1.x
mad r0.x, r13.x, r5.y, r0.x
mad r0.x, r3.y, r0.z, r0.x
mad r0.x, r13.x, r1.y, r0.x
mad r0.x, r3.y, r1.z, r0.x
mad r0.x, r13.x, r4.x, r0.x
mad r0.x, r3.y, r0.w, r0.x
div r0.x, r0.x, r0.y
mul o0.xyzw, r0.xxxx, r2.xyzw
ret 
// Approximately 675 instruction slots used

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