// PreFix

cbuffer _Globals : register(b0)
{
  float4 env_color : packoffset(c0);
  row_major float3x4 m_v2w : packoffset(c1);
  float ssao_noise_tile_factor : packoffset(c4);
  float ssao_kernel_size : packoffset(c4.y);
}

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);
}

SamplerState smp_nofilter_s : register(s0);
SamplerState smp_rtlinear_s : register(s1);
SamplerState smp_material_s : register(s2);
Texture2D<float4> s_position : register(t0);
Texture3D<float4> s_material : register(t1);
Texture2D<float4> s_diffuse : register(t2);
Texture2D<float4> s_accumulator : register(t3);
TextureCube<float4> env_s0 : register(t4);
TextureCube<float4> env_s1 : register(t5);


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


void main( 
  float4 v0 : TEXCOORD0,
  float2 v1 : TEXCOORD1,
  float4 v2 : SV_Position0,
  out float4 o0 : SV_Target0,
  out float4 o1 : SV_Target1)
{
  const float4 icb[] = { { 0, -9, 0, 0},
                              { 6, -6, 0, 0},
                              { 10, 0, 0, 0},
                              { 8, 9, 0, 0} };
  float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.xyzw = s_position.Sample(smp_nofilter_s, v0.xy).xyzw;
  r1.xy = v2.xy * pos_decompression_params.zw + -pos_decompression_params.xy;
  r1.xy = r1.xy * r0.zz;
float4 stereo = StereoParams.Load(0);
float4 params = IniParams.Load(0);
r1.x -= stereo.x * (r0.z - stereo.y)/m_P._m00;
  r2.x = abs(r0.y) * 2 + -1;
  r3.xy = cmp(r0.yz < float2(0,0.5));
  r0.y = r3.x ? -1 : 1;
  r1.w = -r2.x * r2.x + 1;
  r1.w = -r0.x * r0.x + r1.w;
  r1.w = sqrt(abs(r1.w));
  r2.y = r1.w * r0.y;
  if (4 == 0) r3.x = 0; else if (4+21 < 32) {   r3.x = (int)r0.w << (32-(4 + 21)); r3.x = (uint)r3.x >> (32-4);  } else r3.x = (uint)r0.w >> 21;
  if (8 == 0) r3.z = 0; else if (8+13 < 32) {   r3.z = (int)r0.w << (32-(8 + 13)); r3.z = (uint)r3.z >> (32-8);  } else r3.z = (uint)r0.w >> 13;
  r0.y = (int)r0.w & 0x80000000;
  r0.y = r0.y ? 16 : 0;
  bitmask.y = ((~(-1 << 4)) << 0) & 0xffffffff;
  r0.y = (((uint)r3.x << 0) & bitmask.y) | ((uint)r0.y & ~bitmask.y);
  r0.y = (uint)r0.y;
  r4.z = 0.0430107526 * r0.y;
  r0.y = (uint)r3.z;
  r4.x = 0.00392464688 * r0.y;
  r5.xyzw = s_diffuse.Sample(smp_nofilter_s, v0.xy).xyzw;
  r6.xyzw = s_accumulator.Sample(smp_nofilter_s, v0.xy).xyzw;
  r0.yw = float2(1,1) / pos_decompression_params2.xy;
  r3.xz = pos_decompression_params2.xy * v0.xy;
  r7.xy = (int2)r3.xz;
  r7.zw = float2(0,0);
  r3.xz = s_position.Load(r7.xyz, int3(0, 0, 0)).xy;
  r8.x = abs(r3.z) * 2 + -1;
  r1.w = cmp(r3.z < 0);
  r1.w = r1.w ? -1 : 1;
  r2.w = -r8.x * r8.x + 1;
  r2.w = -r3.x * r3.x + r2.w;
  r2.w = sqrt(abs(r2.w));
  r8.y = r2.w * r1.w;
  r3.zw = float2(-1,-1) + pos_decompression_params2.xy;
  r9.zw = float2(0,0);
  r10.zw = float2(0,0);
  r8.z = r3.x;
  r1.w = 0;
  r2.w = 0;
  while (true) {
    r3.x = cmp((int)r2.w >= 4);
    if (r3.x != 0) break;
    r7.zw = (int2)r7.xy + (int2)icb[r2.w+0].xy;
    r11.xy = (int2)r7.xy + (int2)-icb[r2.w+0].xy;
    r7.zw = (int2)r7.zw;
    r7.zw = min(r7.zw, r3.zw);
    r7.zw = (int2)r7.zw;
    r11.xy = (int2)r11.xy;
    r11.xy = min(r11.xy, r3.zw);
    r11.xy = (int2)r11.xy;
    r9.xy = max(int2(0,0), (int2)r7.zw);
    r10.xy = max(int2(0,0), (int2)r11.xy);
    r7.zw = s_position.Load(r9.xyz, int3(0, 0, 0)).xy;
    r11.x = abs(r7.w) * 2 + -1;
    r3.x = cmp(r7.w < 0);
    r3.x = r3.x ? -1 : 1;
    r4.w = -r11.x * r11.x + 1;
    r4.w = -r7.z * r7.z + r4.w;
    r4.w = sqrt(abs(r4.w));
    r11.y = r4.w * r3.x;
    r9.xy = s_position.Load(r10.xyz, int3(0, 0, 0)).xy;
    r12.x = abs(r9.y) * 2 + -1;
    r3.x = cmp(r9.y < 0);
    r3.x = r3.x ? -1 : 1;
    r4.w = -r12.x * r12.x + 1;
    r4.w = -r9.x * r9.x + r4.w;
    r4.w = sqrt(abs(r4.w));
    r12.y = r4.w * r3.x;
    r11.z = r7.z;
    r3.x = dot(r11.xyz, r8.xyz);
    r4.w = cmp(0.980000019 < r3.x);
    r3.x = -abs(r3.x) * 0.25 + 1;
    r3.x = r4.w ? 0 : r3.x;
    r3.x = r3.x + r1.w;
    r12.z = r9.x;
    r4.w = dot(r12.xyz, r8.xyz);
    r7.z = cmp(0.980000019 < r4.w);
    r4.w = -abs(r4.w) * 0.25 + 1;
    r4.w = r7.z ? 0 : r4.w;
    r1.w = r4.w + r3.x;
    r2.w = (int)r2.w + 1;
  }
  r1.w = r1.w * 0.125 + 0.5;
  r2.w = cmp(0.5 >= r1.w);
  r3.x = 0.100000001 * r1.w;
  r1.w = r2.w ? r3.x : r1.w;
  r2.w = r0.x * 0.100000001 + r0.z;
  r7.xyzw = v0.xyxy * pos_decompression_params2.xyxy + float4(1,-1,-2,0);
  r3.xz = r7.xy * r0.yw;
  r7.xy = r7.zw * r0.yw;
  r8.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r9.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r8.xyzw = r9.xyzw * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r8.xyzw;
  r8.xyzw = -r8.xyzw + r2.wwww;
  r9.xyzw = cmp(r8.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r9.xyzw = r9.xyzw ? 1.000000 : 0;
  r8.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r8.xyzw);
  r8.xyzw = r8.xyzw ? 1.000000 : 0;
  r8.xyzw = r9.xyzw * r8.xyzw;
  r9.xyzw = s_position.Gather(smp_nofilter_s, r7.xy).xyzw;
  r7.xyzw = s_position.Gather(smp_nofilter_s, r7.xy).xyzw;
  r7.xyzw = r7.zwxy * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r9.zwxy;
  r7.xyzw = -r7.xyzw + r2.wwww;
  r9.xyzw = cmp(r7.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r9.xyzw = r9.xyzw ? 1.000000 : 0;
  r7.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r7.xyzw);
  r7.xyzw = r7.xyzw ? 1.000000 : 0;
  r7.xyzw = r9.xyzw * r7.xyzw;
  r7.xyzw = r8.xyzw * r7.xyzw;
  r8.xyzw = v0.xyxy * pos_decompression_params2.xyxy + float4(0,1,-1,-2);
  r3.xz = r8.xy * r0.yw;
  r8.xy = r8.zw * r0.yw;
  r9.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r9.xyzw = r10.xyzw * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r9.xyzw;
  r9.xyzw = -r9.xyzw + r2.wwww;
  r10.xyzw = cmp(r9.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r9.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r9.xyzw);
  r9.xyzw = r9.xyzw ? 1.000000 : 0;
  r9.xyzw = r10.xyzw * r9.xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = r8.zwxy * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r10.zwxy;
  r8.xyzw = -r8.xyzw + r2.wwww;
  r10.xyzw = cmp(r8.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r8.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r8.xyzw);
  r8.xyzw = r8.xyzw ? 1.000000 : 0;
  r8.xyzw = r10.xyzw * r8.xyzw;
  r8.xyzw = r9.xyzw * r8.xyzw;
  r8.xyzw = float4(0.5,0.447210014,0.707109988,1) * r8.xyzw;
  r7.xyzw = r7.xyzw * float4(1,0.5,0.447210014,0.707109988) + r8.xyzw;
  r8.xyzw = v0.xyxy * pos_decompression_params2.xyxy + float4(0,3,-1,-4);
  r3.xz = r8.xy * r0.yw;
  r8.xy = r8.zw * r0.yw;
  r9.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r9.xyzw = r10.xyzw * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r9.xyzw;
  r9.xyzw = -r9.xyzw + r2.wwww;
  r10.xyzw = cmp(r9.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r9.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r9.xyzw);
  r9.xyzw = r9.xyzw ? 1.000000 : 0;
  r9.xyzw = r10.xyzw * r9.xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = r8.zwxy * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r10.zwxy;
  r8.xyzw = -r8.xyzw + r2.wwww;
  r10.xyzw = cmp(r8.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r8.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r8.xyzw);
  r8.xyzw = r8.xyzw ? 1.000000 : 0;
  r8.xyzw = r10.xyzw * r8.xyzw;
  r8.xyzw = r9.xyzw * r8.xyzw;
  r7.xyzw = r8.xyzw * float4(0.300000012,0.291040003,0.379469991,0.400000006) + r7.xyzw;
  r8.xyzw = v0.xyxy * pos_decompression_params2.xyxy + float4(2,1,-3,-2);
  r3.xz = r8.xy * r0.yw;
  r8.xy = r8.zw * r0.yw;
  r9.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r9.xyzw = r10.xyzw * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r9.xyzw;
  r9.xyzw = -r9.xyzw + r2.wwww;
  r10.xyzw = cmp(r9.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r9.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r9.xyzw);
  r9.xyzw = r9.xyzw ? 1.000000 : 0;
  r9.xyzw = r10.xyzw * r9.xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = r8.zwxy * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r10.zwxy;
  r8.xyzw = -r8.xyzw + r2.wwww;
  r10.xyzw = cmp(r8.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r8.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r8.xyzw);
  r8.xyzw = r8.xyzw ? 1.000000 : 0;
  r8.xyzw = r10.xyzw * r8.xyzw;
  r8.xyzw = r9.xyzw * r8.xyzw;
  r7.xyzw = r8.xyzw * float4(0.42425999,0.332819998,0.379469991,0.536660016) + r7.xyzw;
  r8.xyzw = v0.xyxy * pos_decompression_params2.xyxy + float4(3,-1,-4,0);
  r3.xz = r8.xy * r0.yw;
  r8.xy = r8.zw * r0.yw;
  r9.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r9.xyzw = r10.xyzw * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r9.xyzw;
  r9.xyzw = -r9.xyzw + r2.wwww;
  r10.xyzw = cmp(r9.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r9.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r9.xyzw);
  r9.xyzw = r9.xyzw ? 1.000000 : 0;
  r9.xyzw = r10.xyzw * r9.xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = r8.zwxy * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r10.zwxy;
  r8.xyzw = -r8.xyzw + r2.wwww;
  r10.xyzw = cmp(r8.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r8.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r8.xyzw);
  r8.xyzw = r8.xyzw ? 1.000000 : 0;
  r8.xyzw = r10.xyzw * r8.xyzw;
  r8.xyzw = r9.xyzw * r8.xyzw;
  r7.xyzw = r8.xyzw * float4(0.400000006,0.300000012,0.291040003,0.379469991) + r7.xyzw;
  r8.xyzw = v0.xyxy * pos_decompression_params2.xyxy + float4(1,-3,-2,2);
  r3.xz = r8.xy * r0.yw;
  r8.xy = r8.zw * r0.yw;
  r9.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r9.xyzw = r10.xyzw * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r9.xyzw;
  r9.xyzw = -r9.xyzw + r2.wwww;
  r10.xyzw = cmp(r9.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r9.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r9.xyzw);
  r9.xyzw = r9.xyzw ? 1.000000 : 0;
  r9.xyzw = r10.xyzw * r9.xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = r8.zwxy * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r10.zwxy;
  r8.xyzw = -r8.xyzw + r2.wwww;
  r10.xyzw = cmp(r8.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r8.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r8.xyzw);
  r8.xyzw = r8.xyzw ? 1.000000 : 0;
  r8.xyzw = r10.xyzw * r8.xyzw;
  r8.xyzw = r9.xyzw * r8.xyzw;
  r7.xyzw = r8.xyzw * float4(0.536660016,0.42425999,0.332819998,0.379469991) + r7.xyzw;
  r8.xyzw = v0.xyxy * pos_decompression_params2.xyxy + float4(1,-5,-2,4);
  r3.xz = r8.xy * r0.yw;
  r8.xy = r8.zw * r0.yw;
  r9.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r9.xyzw = r10.xyzw * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r9.xyzw;
  r9.xyzw = -r9.xyzw + r2.wwww;
  r10.xyzw = cmp(r9.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r9.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r9.xyzw);
  r9.xyzw = r9.xyzw ? 1.000000 : 0;
  r9.xyzw = r10.xyzw * r9.xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = r8.zwxy * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r10.zwxy;
  r8.xyzw = -r8.xyzw + r2.wwww;
  r10.xyzw = cmp(r8.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r8.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r8.xyzw);
  r8.xyzw = r8.xyzw ? 1.000000 : 0;
  r8.xyzw = r10.xyzw * r8.xyzw;
  r8.xyzw = r9.xyzw * r8.xyzw;
  r7.xyzw = r8.xyzw * float4(0.315299988,0.290690005,0.241400003,0.254949987) + r7.xyzw;
  r8.xyzw = v0.xyxy * pos_decompression_params2.xyxy + float4(3,-3,-4,2);
  r3.xz = r8.xy * r0.yw;
  r8.xy = r8.zw * r0.yw;
  r9.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r9.xyzw = r10.xyzw * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r9.xyzw;
  r9.xyzw = -r9.xyzw + r2.wwww;
  r10.xyzw = cmp(r9.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r9.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r9.xyzw);
  r9.xyzw = r9.xyzw ? 1.000000 : 0;
  r9.xyzw = r10.xyzw * r9.xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = r8.zwxy * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r10.zwxy;
  r8.xyzw = -r8.xyzw + r2.wwww;
  r10.xyzw = cmp(r8.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r8.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r8.xyzw);
  r8.xyzw = r8.xyzw ? 1.000000 : 0;
  r8.xyzw = r10.xyzw * r8.xyzw;
  r8.xyzw = r9.xyzw * r8.xyzw;
  r7.xyzw = r8.xyzw * float4(0.36056,0.290690005,0.25999999,0.306410015) + r7.xyzw;
  r8.xyzw = v0.xyxy * pos_decompression_params2.xyxy + float4(5,-1,-6,0);
  r3.xz = r8.xy * r0.yw;
  r8.xy = r8.zw * r0.yw;
  r9.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r9.xyzw = r10.xyzw * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r9.xyzw;
  r9.xyzw = -r9.xyzw + r2.wwww;
  r10.xyzw = cmp(r9.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r9.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r9.xyzw);
  r9.xyzw = r9.xyzw ? 1.000000 : 0;
  r9.xyzw = r10.xyzw * r9.xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = r8.zwxy * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r10.zwxy;
  r8.xyzw = -r8.xyzw + r2.wwww;
  r10.xyzw = cmp(r8.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r8.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r8.xyzw);
  r8.xyzw = r8.xyzw ? 1.000000 : 0;
  r8.xyzw = r10.xyzw * r8.xyzw;
  r8.xyzw = r9.xyzw * r8.xyzw;
  r7.xyzw = r8.xyzw * float4(0.25999999,0.216670007,0.213719994,0.254949987) + r7.xyzw;
  r8.xyzw = v0.xyxy * pos_decompression_params2.xyxy + float4(4,1,-5,-2);
  r3.xz = r8.xy * r0.yw;
  r8.xy = r8.zw * r0.yw;
  r9.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r9.xyzw = r10.xyzw * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r9.xyzw;
  r9.xyzw = -r9.xyzw + r2.wwww;
  r10.xyzw = cmp(r9.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r9.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r9.xyzw);
  r9.xyzw = r9.xyzw ? 1.000000 : 0;
  r9.xyzw = r10.xyzw * r9.xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = r8.zwxy * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r10.zwxy;
  r8.xyzw = -r8.xyzw + r2.wwww;
  r10.xyzw = cmp(r8.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r8.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r8.xyzw);
  r8.xyzw = r8.xyzw ? 1.000000 : 0;
  r8.xyzw = r10.xyzw * r8.xyzw;
  r8.xyzw = r9.xyzw * r8.xyzw;
  r7.xyzw = r8.xyzw * float4(0.290690005,0.241400003,0.254949987,0.315299988) + r7.xyzw;
  r8.xyzw = v0.xyxy * pos_decompression_params2.xyxy + float4(2,3,-3,-4);
  r3.xz = r8.xy * r0.yw;
  r8.xy = r8.zw * r0.yw;
  r9.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r9.xyzw = r10.xyzw * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r9.xyzw;
  r9.xyzw = -r9.xyzw + r2.wwww;
  r10.xyzw = cmp(r9.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r9.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r9.xyzw);
  r9.xyzw = r9.xyzw ? 1.000000 : 0;
  r9.xyzw = r10.xyzw * r9.xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = s_position.Gather(smp_nofilter_s, r8.xy).xyzw;
  r8.xyzw = r8.zwxy * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r10.zwxy;
  r8.xyzw = -r8.xyzw + r2.wwww;
  r10.xyzw = cmp(r8.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r8.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r8.xyzw);
  r8.xyzw = r8.xyzw ? 1.000000 : 0;
  r8.xyzw = r10.xyzw * r8.xyzw;
  r8.xyzw = r9.xyzw * r8.xyzw;
  r7.xyzw = r8.xyzw * float4(0.290690005,0.25999999,0.306410015,0.36056) + r7.xyzw;
  r8.xyzw = v0.xyxy * pos_decompression_params2.xyxy + float4(0,5,-1,-6);
  r3.xz = r8.xy * r0.yw;
  r0.yw = r8.zw * r0.yw;
  r8.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r9.xyzw = s_position.Gather(smp_nofilter_s, r3.xz).xyzw;
  r8.xyzw = r9.xyzw * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r8.xyzw;
  r8.xyzw = -r8.xyzw + r2.wwww;
  r9.xyzw = cmp(r8.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r9.xyzw = r9.xyzw ? 1.000000 : 0;
  r8.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r8.xyzw);
  r8.xyzw = r8.xyzw ? 1.000000 : 0;
  r8.xyzw = r9.xyzw * r8.xyzw;
  r9.xyzw = s_position.Gather(smp_nofilter_s, r0.yw).xyzw;
  r10.xyzw = s_position.Gather(smp_nofilter_s, r0.yw).xyzw;
  r9.xyzw = r10.zwxy * float4(0.100000001,0.100000001,0.100000001,0.100000001) + r9.zwxy;
  r9.xyzw = -r9.xyzw + r2.wwww;
  r10.xyzw = cmp(r9.xyzw < float4(0.430000007,0.430000007,0.430000007,0.430000007));
  r10.xyzw = r10.xyzw ? 1.000000 : 0;
  r9.xyzw = cmp(float4(9.99999975e-005,9.99999975e-005,9.99999975e-005,9.99999975e-005) < r9.xyzw);
  r9.xyzw = r9.xyzw ? 1.000000 : 0;
  r9.xyzw = r10.xyzw * r9.xyzw;
  r8.xyzw = r9.xyzw * r8.xyzw;
  r7.xyzw = r8.xyzw * float4(0.216670007,0.213719994,0.254949987,0.25999999) + r7.xyzw;
  r0.y = dot(r7.xyzw, float4(0.850000024,0.850000024,0.850000024,0.850000024));
  r0.y = r0.y * r1.w;
  r0.y = 0.0278912485 * r0.y;
  r0.w = saturate(-0.5 + r0.z);
  r0.w = r3.y ? 0 : r0.w;
  r0.y = r0.y * r0.w;
  r0.y = max(0, r0.y);
  r0.y = 1 + -r0.y;
  r2.z = r0.x;
  r3.x = dot(m_v2w._m00_m01_m02, r2.xyz);
  r3.y = dot(m_v2w._m10_m11_m12, r2.xyz);
  r3.z = dot(m_v2w._m20_m21_m22, r2.xyz);
  r1.z = r0.z;
  r0.x = dot(r1.xyz, r1.xyz);
  r0.z = rsqrt(r0.x);
  r1.xyz = r1.xyz * r0.zzz;
  r2.x = dot(m_v2w._m00_m01_m02, r1.xyz);
  r2.y = dot(m_v2w._m10_m11_m12, r1.xyz);
  r2.z = dot(m_v2w._m20_m21_m22, r1.xyz);
  r0.z = dot(r2.xyz, r3.xyz);
  r0.z = r0.z + r0.z;
  r1.xyz = r3.xyz * -r0.zzz + r2.xyz;
  r0.z = dot(r1.xyz, r2.xyz);
  r4.y = r0.z * 0.5 + 0.5;
  r0.zw = s_material.SampleLevel(smp_material_s, r4.xyz, 0).xy;
  r2.xyz = env_s0.SampleLevel(smp_rtlinear_s, r3.xyz, 0).xyz;
  r3.xyz = env_s1.SampleLevel(smp_rtlinear_s, r3.xyz, 0).xyz;
  r3.xyz = r3.xyz + -r2.xyz;
  r2.xyz = env_color.www * r3.xyz + r2.xyz;
  r2.xyz = env_color.xyz * r2.xyz;
  r2.xyz = r2.xyz * r2.xyz;
  r2.xyz = r2.xyz * r0.zzz + L_ambient.xyz;
  r1.w = r1.y * 2 + -1;
  r3.xyz = env_s0.SampleLevel(smp_rtlinear_s, r1.xwz, 0).xyz;
  r1.xyz = env_s1.SampleLevel(smp_rtlinear_s, r1.xwz, 0).xyz;
  r1.xyz = r1.xyz + -r3.xyz;
  r1.xyz = env_color.www * r1.xyz + r3.xyz;
  r1.xyz = env_color.xyz * r1.xyz;
  r1.xyz = r1.xyz * r1.xyz;
  r1.xyz = r1.xyz * r0.www;
  r1.xyz = r1.xyz * r5.www;
  r2.xyz = r2.xyz * r0.yyy + r6.xyz;
  r0.z = r6.w * r5.w;
  r0.yzw = r1.xyz * r0.yyy + r0.zzz;
  r0.yzw = r5.xyz * r2.xyz + r0.yzw;
  r0.x = sqrt(r0.x);
  r0.x = saturate(r0.x * fog_params.w + fog_params.x);
  r1.xyz = fog_color.xyz + -r0.yzw;
  r0.yzw = r0.xxx * r1.xyz + r0.yzw;
  r0.x = r0.x * r0.x;
  r1.xyz = v0.www * r0.yzw;
  r2.xyz = r1.xyz * float3(0.346020758,0.346020758,0.346020758) + float3(1,1,1);
  r2.xyz = r2.xyz * r1.xyz;
  r0.yzw = r0.yzw * v0.www + float3(1,1,1);
  o0.xyz = r2.xyz / r0.yzw;
  o1.xyz = float3(0.111111112,0.111111112,0.111111112) * r1.xyz;
  o0.w = r0.x;
  o1.w = r0.x;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Original ASM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.27.952.3022
//
//
// Buffer Definitions: 
//
// cbuffer $Globals
// {
//
//   float4 env_color;                  // Offset:    0 Size:    16
//   row_major float3x4 m_v2w;          // Offset:   16 Size:    48
//   float ssao_noise_tile_factor;      // Offset:   64 Size:     4 [unused]
//   float ssao_kernel_size;            // Offset:   68 Size:     4 [unused]
//
// }
//
// 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
//   float4 fog_color;                  // Offset:  224 Size:    16
//   float4 L_ambient;                  // Offset:  240 Size:    16
//   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
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// smp_nofilter                      sampler      NA          NA    0        1
// smp_rtlinear                      sampler      NA          NA    1        1
// smp_material                      sampler      NA          NA    2        1
// s_position                        texture  float4          2d    0        1
// s_material                        texture  float4          3d    1        1
// s_diffuse                         texture  float4          2d    2        1
// s_accumulator                     texture  float4          2d    3        1
// env_s0                            texture  float4        cube    4        1
// env_s1                            texture  float4        cube    5        1
// $Globals                          cbuffer      NA          NA    0        1
// static_globals                    cbuffer      NA          NA    1        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD                 0   xyzw        0     NONE   float   xyzw
// TEXCOORD                 1   xy          1     NONE   float       
// SV_Position              0   xyzw        2      POS   float   xy  
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
// SV_Target                1   xyzw        1   TARGET   float   xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_immediateConstantBuffer { { 0, -9, 0, 0},
                              { 6, -6, 0, 0},
                              { 10, 0, 0, 0},
                              { 8, 9, 0, 0} }
dcl_constantbuffer cb0[4], immediateIndexed
dcl_constantbuffer cb1[22], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture3d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texturecube (float,float,float,float) t4
dcl_resource_texturecube (float,float,float,float) t5
dcl_input_ps linear v0.xyw
dcl_input_ps_siv linear noperspective v2.xy, position
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_temps 13
sample_indexable(texture2d)(float,float,float,float) r0.xyzw, v0.xyxx, t0.xyzw, s0
mad r1.xy, v2.xyxx, cb1[20].zwzz, -cb1[20].xyxx
mul r1.xy, r0.zzzz, r1.xyxx
mad r2.x, |r0.y|, l(2.000000), l(-1.000000)
lt r3.xy, r0.yzyy, l(0.000000, 0.500000, 0.000000, 0.000000)
movc r0.y, r3.x, l(-1.000000), l(1.000000)
mad r1.w, -r2.x, r2.x, l(1.000000)
mad r1.w, -r0.x, r0.x, r1.w
sqrt r1.w, |r1.w|
mul r2.y, r0.y, r1.w
ubfe r3.xz, l(4, 0, 8, 0), l(21, 0, 13, 0), r0.wwww
and r0.y, r0.w, l(0x80000000)
movc r0.y, r0.y, l(16), l(0)
bfi r0.y, l(4), l(0), r3.x, r0.y
utof r0.y, r0.y
mul r4.z, r0.y, l(0.043011)
utof r0.y, r3.z
mul r4.x, r0.y, l(0.003925)
sample_indexable(texture2d)(float,float,float,float) r5.xyzw, v0.xyxx, t2.xyzw, s0
sample_indexable(texture2d)(float,float,float,float) r6.xyzw, v0.xyxx, t3.xyzw, s0
div r0.yw, l(1.000000, 1.000000, 1.000000, 1.000000), cb1[21].xxxy
mul r3.xz, v0.xxyx, cb1[21].xxyx
ftoi r7.xy, r3.xzxx
mov r7.zw, l(0,0,0,0)
ld_aoffimmi_indexable(0,0,0)(texture2d)(float,float,float,float) r3.xz, r7.xyzw, t0.xzyw
mad r8.x, |r3.z|, l(2.000000), l(-1.000000)
lt r1.w, r3.z, l(0.000000)
movc r1.w, r1.w, l(-1.000000), l(1.000000)
mad r2.w, -r8.x, r8.x, l(1.000000)
mad r2.w, -r3.x, r3.x, r2.w
sqrt r2.w, |r2.w|
mul r8.y, r1.w, r2.w
add r3.zw, cb1[21].xxxy, l(0.000000, 0.000000, -1.000000, -1.000000)
mov r9.zw, l(0,0,0,0)
mov r10.zw, l(0,0,0,0)
mov r8.z, r3.x
mov r1.w, l(0)
mov r2.w, l(0)
loop 
  ige r3.x, r2.w, l(4)
  breakc_nz r3.x
  iadd r7.zw, r7.xxxy, icb[r2.w + 0].xxxy
  iadd r11.xy, r7.xyxx, -icb[r2.w + 0].xyxx
  itof r7.zw, r7.zzzw
  min r7.zw, r3.zzzw, r7.zzzw
  ftoi r7.zw, r7.zzzw
  itof r11.xy, r11.xyxx
  min r11.xy, r3.zwzz, r11.xyxx
  ftoi r11.xy, r11.xyxx
  imax r9.xy, r7.zwzz, l(0, 0, 0, 0)
  imax r10.xy, r11.xyxx, l(0, 0, 0, 0)
  ld_aoffimmi_indexable(0,0,0)(texture2d)(float,float,float,float) r7.zw, r9.xyzw, t0.zwxy
  mad r11.x, |r7.w|, l(2.000000), l(-1.000000)
  lt r3.x, r7.w, l(0.000000)
  movc r3.x, r3.x, l(-1.000000), l(1.000000)
  mad r4.w, -r11.x, r11.x, l(1.000000)
  mad r4.w, -r7.z, r7.z, r4.w
  sqrt r4.w, |r4.w|
  mul r11.y, r3.x, r4.w
  ld_aoffimmi_indexable(0,0,0)(texture2d)(float,float,float,float) r9.xy, r10.xyzw, t0.xyzw
  mad r12.x, |r9.y|, l(2.000000), l(-1.000000)
  lt r3.x, r9.y, l(0.000000)
  movc r3.x, r3.x, l(-1.000000), l(1.000000)
  mad r4.w, -r12.x, r12.x, l(1.000000)
  mad r4.w, -r9.x, r9.x, r4.w
  sqrt r4.w, |r4.w|
  mul r12.y, r3.x, r4.w
  mov r11.z, r7.z
  dp3 r3.x, r11.xyzx, r8.xyzx
  lt r4.w, l(0.980000), r3.x
  mad r3.x, -|r3.x|, l(0.250000), l(1.000000)
  movc r3.x, r4.w, l(0), r3.x
  add r3.x, r1.w, r3.x
  mov r12.z, r9.x
  dp3 r4.w, r12.xyzx, r8.xyzx
  lt r7.z, l(0.980000), r4.w
  mad r4.w, -|r4.w|, l(0.250000), l(1.000000)
  movc r4.w, r7.z, l(0), r4.w
  add r1.w, r3.x, r4.w
  iadd r2.w, r2.w, l(1)
endloop 
mad r1.w, r1.w, l(0.125000), l(0.500000)
ge r2.w, l(0.500000), r1.w
mul r3.x, r1.w, l(0.100000)
movc r1.w, r2.w, r3.x, r1.w
mad r2.w, r0.x, l(0.100000), r0.z
mad r7.xyzw, v0.xyxy, cb1[21].xyxy, l(1.000000, -1.000000, -2.000000, 0.000000)
mul r3.xz, r0.yywy, r7.xxyx
mul r7.xy, r0.ywyy, r7.zwzz
gather4_indexable(texture2d)(float,float,float,float) r8.xyzw, r3.xzxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r3.xzxx, t0.xyzw, s0.x
mad r8.xyzw, r9.xyzw, l(0.100000, 0.100000, 0.100000, 0.100000), r8.xyzw
add r8.xyzw, r2.wwww, -r8.xyzw
lt r9.xyzw, r8.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r8.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r8.xyzw
and r8.xyzw, r8.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r8.xyzw, r8.xyzw, r9.xyzw
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r7.xyxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r7.xyzw, r7.xyxx, t0.xyzw, s0.x
mad r7.xyzw, r7.zwxy, l(0.100000, 0.100000, 0.100000, 0.100000), r9.zwxy
add r7.xyzw, r2.wwww, -r7.xyzw
lt r9.xyzw, r7.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r7.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r7.xyzw
and r7.xyzw, r7.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r7.xyzw, r7.xyzw, r9.xyzw
mul r7.xyzw, r7.xyzw, r8.xyzw
mad r8.xyzw, v0.xyxy, cb1[21].xyxy, l(0.000000, 1.000000, -1.000000, -2.000000)
mul r3.xz, r0.yywy, r8.xxyx
mul r8.xy, r0.ywyy, r8.zwzz
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r3.xzxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r3.xzxx, t0.xyzw, s0.x
mad r9.xyzw, r10.xyzw, l(0.100000, 0.100000, 0.100000, 0.100000), r9.xyzw
add r9.xyzw, r2.wwww, -r9.xyzw
lt r10.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r10.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r8.xyxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r8.xyzw, r8.xyxx, t0.xyzw, s0.x
mad r8.xyzw, r8.zwxy, l(0.100000, 0.100000, 0.100000, 0.100000), r10.zwxy
add r8.xyzw, r2.wwww, -r8.xyzw
lt r10.xyzw, r8.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r8.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r8.xyzw
and r8.xyzw, r8.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r8.xyzw, r8.xyzw, r10.xyzw
mul r8.xyzw, r8.xyzw, r9.xyzw
mul r8.xyzw, r8.xyzw, l(0.500000, 0.447210, 0.707110, 1.000000)
mad r7.xyzw, r7.xyzw, l(1.000000, 0.500000, 0.447210, 0.707110), r8.xyzw
mad r8.xyzw, v0.xyxy, cb1[21].xyxy, l(0.000000, 3.000000, -1.000000, -4.000000)
mul r3.xz, r0.yywy, r8.xxyx
mul r8.xy, r0.ywyy, r8.zwzz
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r3.xzxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r3.xzxx, t0.xyzw, s0.x
mad r9.xyzw, r10.xyzw, l(0.100000, 0.100000, 0.100000, 0.100000), r9.xyzw
add r9.xyzw, r2.wwww, -r9.xyzw
lt r10.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r10.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r8.xyxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r8.xyzw, r8.xyxx, t0.xyzw, s0.x
mad r8.xyzw, r8.zwxy, l(0.100000, 0.100000, 0.100000, 0.100000), r10.zwxy
add r8.xyzw, r2.wwww, -r8.xyzw
lt r10.xyzw, r8.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r8.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r8.xyzw
and r8.xyzw, r8.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r8.xyzw, r8.xyzw, r10.xyzw
mul r8.xyzw, r8.xyzw, r9.xyzw
mad r7.xyzw, r8.xyzw, l(0.300000, 0.291040, 0.379470, 0.400000), r7.xyzw
mad r8.xyzw, v0.xyxy, cb1[21].xyxy, l(2.000000, 1.000000, -3.000000, -2.000000)
mul r3.xz, r0.yywy, r8.xxyx
mul r8.xy, r0.ywyy, r8.zwzz
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r3.xzxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r3.xzxx, t0.xyzw, s0.x
mad r9.xyzw, r10.xyzw, l(0.100000, 0.100000, 0.100000, 0.100000), r9.xyzw
add r9.xyzw, r2.wwww, -r9.xyzw
lt r10.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r10.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r8.xyxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r8.xyzw, r8.xyxx, t0.xyzw, s0.x
mad r8.xyzw, r8.zwxy, l(0.100000, 0.100000, 0.100000, 0.100000), r10.zwxy
add r8.xyzw, r2.wwww, -r8.xyzw
lt r10.xyzw, r8.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r8.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r8.xyzw
and r8.xyzw, r8.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r8.xyzw, r8.xyzw, r10.xyzw
mul r8.xyzw, r8.xyzw, r9.xyzw
mad r7.xyzw, r8.xyzw, l(0.424260, 0.332820, 0.379470, 0.536660), r7.xyzw
mad r8.xyzw, v0.xyxy, cb1[21].xyxy, l(3.000000, -1.000000, -4.000000, 0.000000)
mul r3.xz, r0.yywy, r8.xxyx
mul r8.xy, r0.ywyy, r8.zwzz
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r3.xzxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r3.xzxx, t0.xyzw, s0.x
mad r9.xyzw, r10.xyzw, l(0.100000, 0.100000, 0.100000, 0.100000), r9.xyzw
add r9.xyzw, r2.wwww, -r9.xyzw
lt r10.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r10.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r8.xyxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r8.xyzw, r8.xyxx, t0.xyzw, s0.x
mad r8.xyzw, r8.zwxy, l(0.100000, 0.100000, 0.100000, 0.100000), r10.zwxy
add r8.xyzw, r2.wwww, -r8.xyzw
lt r10.xyzw, r8.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r8.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r8.xyzw
and r8.xyzw, r8.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r8.xyzw, r8.xyzw, r10.xyzw
mul r8.xyzw, r8.xyzw, r9.xyzw
mad r7.xyzw, r8.xyzw, l(0.400000, 0.300000, 0.291040, 0.379470), r7.xyzw
mad r8.xyzw, v0.xyxy, cb1[21].xyxy, l(1.000000, -3.000000, -2.000000, 2.000000)
mul r3.xz, r0.yywy, r8.xxyx
mul r8.xy, r0.ywyy, r8.zwzz
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r3.xzxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r3.xzxx, t0.xyzw, s0.x
mad r9.xyzw, r10.xyzw, l(0.100000, 0.100000, 0.100000, 0.100000), r9.xyzw
add r9.xyzw, r2.wwww, -r9.xyzw
lt r10.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r10.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r8.xyxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r8.xyzw, r8.xyxx, t0.xyzw, s0.x
mad r8.xyzw, r8.zwxy, l(0.100000, 0.100000, 0.100000, 0.100000), r10.zwxy
add r8.xyzw, r2.wwww, -r8.xyzw
lt r10.xyzw, r8.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r8.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r8.xyzw
and r8.xyzw, r8.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r8.xyzw, r8.xyzw, r10.xyzw
mul r8.xyzw, r8.xyzw, r9.xyzw
mad r7.xyzw, r8.xyzw, l(0.536660, 0.424260, 0.332820, 0.379470), r7.xyzw
mad r8.xyzw, v0.xyxy, cb1[21].xyxy, l(1.000000, -5.000000, -2.000000, 4.000000)
mul r3.xz, r0.yywy, r8.xxyx
mul r8.xy, r0.ywyy, r8.zwzz
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r3.xzxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r3.xzxx, t0.xyzw, s0.x
mad r9.xyzw, r10.xyzw, l(0.100000, 0.100000, 0.100000, 0.100000), r9.xyzw
add r9.xyzw, r2.wwww, -r9.xyzw
lt r10.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r10.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r8.xyxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r8.xyzw, r8.xyxx, t0.xyzw, s0.x
mad r8.xyzw, r8.zwxy, l(0.100000, 0.100000, 0.100000, 0.100000), r10.zwxy
add r8.xyzw, r2.wwww, -r8.xyzw
lt r10.xyzw, r8.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r8.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r8.xyzw
and r8.xyzw, r8.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r8.xyzw, r8.xyzw, r10.xyzw
mul r8.xyzw, r8.xyzw, r9.xyzw
mad r7.xyzw, r8.xyzw, l(0.315300, 0.290690, 0.241400, 0.254950), r7.xyzw
mad r8.xyzw, v0.xyxy, cb1[21].xyxy, l(3.000000, -3.000000, -4.000000, 2.000000)
mul r3.xz, r0.yywy, r8.xxyx
mul r8.xy, r0.ywyy, r8.zwzz
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r3.xzxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r3.xzxx, t0.xyzw, s0.x
mad r9.xyzw, r10.xyzw, l(0.100000, 0.100000, 0.100000, 0.100000), r9.xyzw
add r9.xyzw, r2.wwww, -r9.xyzw
lt r10.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r10.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r8.xyxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r8.xyzw, r8.xyxx, t0.xyzw, s0.x
mad r8.xyzw, r8.zwxy, l(0.100000, 0.100000, 0.100000, 0.100000), r10.zwxy
add r8.xyzw, r2.wwww, -r8.xyzw
lt r10.xyzw, r8.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r8.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r8.xyzw
and r8.xyzw, r8.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r8.xyzw, r8.xyzw, r10.xyzw
mul r8.xyzw, r8.xyzw, r9.xyzw
mad r7.xyzw, r8.xyzw, l(0.360560, 0.290690, 0.260000, 0.306410), r7.xyzw
mad r8.xyzw, v0.xyxy, cb1[21].xyxy, l(5.000000, -1.000000, -6.000000, 0.000000)
mul r3.xz, r0.yywy, r8.xxyx
mul r8.xy, r0.ywyy, r8.zwzz
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r3.xzxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r3.xzxx, t0.xyzw, s0.x
mad r9.xyzw, r10.xyzw, l(0.100000, 0.100000, 0.100000, 0.100000), r9.xyzw
add r9.xyzw, r2.wwww, -r9.xyzw
lt r10.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r10.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r8.xyxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r8.xyzw, r8.xyxx, t0.xyzw, s0.x
mad r8.xyzw, r8.zwxy, l(0.100000, 0.100000, 0.100000, 0.100000), r10.zwxy
add r8.xyzw, r2.wwww, -r8.xyzw
lt r10.xyzw, r8.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r8.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r8.xyzw
and r8.xyzw, r8.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r8.xyzw, r8.xyzw, r10.xyzw
mul r8.xyzw, r8.xyzw, r9.xyzw
mad r7.xyzw, r8.xyzw, l(0.260000, 0.216670, 0.213720, 0.254950), r7.xyzw
mad r8.xyzw, v0.xyxy, cb1[21].xyxy, l(4.000000, 1.000000, -5.000000, -2.000000)
mul r3.xz, r0.yywy, r8.xxyx
mul r8.xy, r0.ywyy, r8.zwzz
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r3.xzxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r3.xzxx, t0.xyzw, s0.x
mad r9.xyzw, r10.xyzw, l(0.100000, 0.100000, 0.100000, 0.100000), r9.xyzw
add r9.xyzw, r2.wwww, -r9.xyzw
lt r10.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r10.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r8.xyxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r8.xyzw, r8.xyxx, t0.xyzw, s0.x
mad r8.xyzw, r8.zwxy, l(0.100000, 0.100000, 0.100000, 0.100000), r10.zwxy
add r8.xyzw, r2.wwww, -r8.xyzw
lt r10.xyzw, r8.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r8.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r8.xyzw
and r8.xyzw, r8.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r8.xyzw, r8.xyzw, r10.xyzw
mul r8.xyzw, r8.xyzw, r9.xyzw
mad r7.xyzw, r8.xyzw, l(0.290690, 0.241400, 0.254950, 0.315300), r7.xyzw
mad r8.xyzw, v0.xyxy, cb1[21].xyxy, l(2.000000, 3.000000, -3.000000, -4.000000)
mul r3.xz, r0.yywy, r8.xxyx
mul r8.xy, r0.ywyy, r8.zwzz
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r3.xzxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r3.xzxx, t0.xyzw, s0.x
mad r9.xyzw, r10.xyzw, l(0.100000, 0.100000, 0.100000, 0.100000), r9.xyzw
add r9.xyzw, r2.wwww, -r9.xyzw
lt r10.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r10.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r8.xyxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r8.xyzw, r8.xyxx, t0.xyzw, s0.x
mad r8.xyzw, r8.zwxy, l(0.100000, 0.100000, 0.100000, 0.100000), r10.zwxy
add r8.xyzw, r2.wwww, -r8.xyzw
lt r10.xyzw, r8.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r8.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r8.xyzw
and r8.xyzw, r8.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r8.xyzw, r8.xyzw, r10.xyzw
mul r8.xyzw, r8.xyzw, r9.xyzw
mad r7.xyzw, r8.xyzw, l(0.290690, 0.260000, 0.306410, 0.360560), r7.xyzw
mad r8.xyzw, v0.xyxy, cb1[21].xyxy, l(0.000000, 5.000000, -1.000000, -6.000000)
mul r3.xz, r0.yywy, r8.xxyx
mul r0.yw, r0.yyyw, r8.zzzw
gather4_indexable(texture2d)(float,float,float,float) r8.xyzw, r3.xzxx, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r3.xzxx, t0.xyzw, s0.x
mad r8.xyzw, r9.xyzw, l(0.100000, 0.100000, 0.100000, 0.100000), r8.xyzw
add r8.xyzw, r2.wwww, -r8.xyzw
lt r9.xyzw, r8.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r8.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r8.xyzw
and r8.xyzw, r8.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r8.xyzw, r8.xyzw, r9.xyzw
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r0.ywyy, t0.xyzw, s0.z
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r0.ywyy, t0.xyzw, s0.x
mad r9.xyzw, r10.zwxy, l(0.100000, 0.100000, 0.100000, 0.100000), r9.zwxy
add r9.xyzw, r2.wwww, -r9.xyzw
lt r10.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r10.xyzw
mul r8.xyzw, r8.xyzw, r9.xyzw
mad r7.xyzw, r8.xyzw, l(0.216670, 0.213720, 0.254950, 0.260000), r7.xyzw
dp4 r0.y, r7.xyzw, l(0.850000, 0.850000, 0.850000, 0.850000)
mul r0.y, r1.w, r0.y
mul r0.y, r0.y, l(0.027891)
add_sat r0.w, r0.z, l(-0.500000)
movc r0.w, r3.y, l(0), r0.w
mul r0.y, r0.w, r0.y
max r0.y, r0.y, l(0.000000)
add r0.y, -r0.y, l(1.000000)
mov r2.z, r0.x
dp3 r3.x, cb0[1].xyzx, r2.xyzx
dp3 r3.y, cb0[2].xyzx, r2.xyzx
dp3 r3.z, cb0[3].xyzx, r2.xyzx
mov r1.z, r0.z
dp3 r0.x, r1.xyzx, r1.xyzx
rsq r0.z, r0.x
mul r1.xyz, r0.zzzz, r1.xyzx
dp3 r2.x, cb0[1].xyzx, r1.xyzx
dp3 r2.y, cb0[2].xyzx, r1.xyzx
dp3 r2.z, cb0[3].xyzx, r1.xyzx
dp3 r0.z, r2.xyzx, r3.xyzx
add r0.z, r0.z, r0.z
mad r1.xyz, r3.xyzx, -r0.zzzz, r2.xyzx
dp3 r0.z, r1.xyzx, r2.xyzx
mad r4.y, r0.z, l(0.500000), l(0.500000)
sample_l_indexable(texture3d)(float,float,float,float) r0.zw, r4.xyzx, t1.zwxy, s2, l(0.000000)
sample_l_indexable(texturecube)(float,float,float,float) r2.xyz, r3.xyzx, t4.xyzw, s1, l(0.000000)
sample_l_indexable(texturecube)(float,float,float,float) r3.xyz, r3.xyzx, t5.xyzw, s1, l(0.000000)
add r3.xyz, -r2.xyzx, r3.xyzx
mad r2.xyz, cb0[0].wwww, r3.xyzx, r2.xyzx
mul r2.xyz, r2.xyzx, cb0[0].xyzx
mul r2.xyz, r2.xyzx, r2.xyzx
mad r2.xyz, r2.xyzx, r0.zzzz, cb1[15].xyzx
mad r1.w, r1.y, l(2.000000), l(-1.000000)
sample_l_indexable(texturecube)(float,float,float,float) r3.xyz, r1.xwzx, t4.xyzw, s1, l(0.000000)
sample_l_indexable(texturecube)(float,float,float,float) r1.xyz, r1.xwzx, t5.xyzw, s1, l(0.000000)
add r1.xyz, -r3.xyzx, r1.xyzx
mad r1.xyz, cb0[0].wwww, r1.xyzx, r3.xyzx
mul r1.xyz, r1.xyzx, cb0[0].xyzx
mul r1.xyz, r1.xyzx, r1.xyzx
mul r1.xyz, r0.wwww, r1.xyzx
mul r1.xyz, r5.wwww, r1.xyzx
mad r2.xyz, r2.xyzx, r0.yyyy, r6.xyzx
mul r0.z, r5.w, r6.w
mad r0.yzw, r1.xxyz, r0.yyyy, r0.zzzz
mad r0.yzw, r5.xxyz, r2.xxyz, r0.yyzw
sqrt r0.x, r0.x
mad_sat r0.x, r0.x, cb1[13].w, cb1[13].x
add r1.xyz, -r0.yzwy, cb1[14].xyzx
mad r0.yzw, r0.xxxx, r1.xxyz, r0.yyzw
mul r0.x, r0.x, r0.x
mul r1.xyz, r0.yzwy, v0.wwww
mad r2.xyz, r1.xyzx, l(0.346021, 0.346021, 0.346021, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000)
mul r2.xyz, r1.xyzx, r2.xyzx
mad r0.yzw, r0.yyzw, v0.wwww, l(0.000000, 1.000000, 1.000000, 1.000000)
div o0.xyz, r2.xyzx, r0.yzwy
mul o1.xyz, r1.xyzx, l(0.111111, 0.111111, 0.111111, 0.000000)
mov o0.w, r0.x
mov o1.w, r0.x
ret 
// Approximately 421 instruction slots used

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


/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HLSL errors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
X:\SteamLibrary\steamapps\common\Stalker Call of Pripyat\wrapper1349(87,11-48): warning X3206: 'Load': implicit truncation of vector type
X:\SteamLibrary\steamapps\common\Stalker Call of Pripyat\wrapper1349(114,13-50): warning X3206: 'Load': implicit truncation of vector type
X:\SteamLibrary\steamapps\common\Stalker Call of Pripyat\wrapper1349(122,13-51): warning X3206: 'Load': implicit truncation of vector type
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/


/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Recompiled ASM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.20789
//
//   using 3Dmigoto v1.2.29 on Thu Mar 24 07:36:28 2016
//
//
// Buffer Definitions: 
//
// cbuffer _Globals
// {
//
//   float4 env_color;                  // Offset:    0 Size:    16
//   row_major float3x4 m_v2w;          // Offset:   16 Size:    48
//   float ssao_noise_tile_factor;      // Offset:   64 Size:     4 [unused]
//   float ssao_kernel_size;            // Offset:   68 Size:     4 [unused]
//
// }
//
// 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
//   float4 fog_color;                  // Offset:  224 Size:    16
//   float4 L_ambient;                  // Offset:  240 Size:    16
//   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
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// smp_nofilter_s                    sampler      NA          NA    0        1
// smp_rtlinear_s                    sampler      NA          NA    1        1
// smp_material_s                    sampler      NA          NA    2        1
// s_position                        texture  float4          2d    0        1
// s_material                        texture  float4          3d    1        1
// s_diffuse                         texture  float4          2d    2        1
// s_accumulator                     texture  float4          2d    3        1
// env_s0                            texture  float4        cube    4        1
// env_s1                            texture  float4        cube    5        1
// _Globals                          cbuffer      NA          NA    0        1
// static_globals                    cbuffer      NA          NA    1        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD                 0   xyzw        0     NONE   float   xy w
// TEXCOORD                 1   xy          1     NONE   float       
// SV_Position              0   xyzw        2      POS   float   xy  
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
// SV_Target                1   xyzw        1   TARGET   float   xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_immediateConstantBuffer { { 0, -9.000000, 0, 0},
                              { 6.000000, -6.000000, 0, 0},
                              { 10.000000, 0, 0, 0},
                              { 8.000000, 9.000000, 0, 0} }
dcl_constantbuffer cb0[4], immediateIndexed
dcl_constantbuffer cb1[22], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture3d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texturecube (float,float,float,float) t4
dcl_resource_texturecube (float,float,float,float) t5
dcl_input_ps linear v0.xyw
dcl_input_ps_siv linear noperspective v2.xy, position
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_temps 14
sample_indexable(texture2d)(float,float,float,float) r0.xyzw, v0.xyxx, t0.xyzw, s0
mad r1.xy, v2.xyxx, cb1[20].zwzz, -cb1[20].xyxx
mul r1.xy, r0.zzzz, r1.xyxx
mad r2.x, |r0.y|, l(2.000000), l(-1.000000)
lt r3.xy, r0.yzyy, l(0.000000, 0.500000, 0.000000, 0.000000)
movc r0.y, r3.x, l(-1.000000), l(1.000000)
mad r1.w, -r2.x, r2.x, l(1.000000)
mad r1.w, -r0.x, r0.x, r1.w
sqrt r1.w, |r1.w|
mul r2.y, r0.y, r1.w
ftoi r0.y, r0.w
ishl r3.xz, r0.yyyy, l(7, 0, 11, 0)
itof r3.xz, r3.xxzx
ftou r3.xz, r3.xxzx
ushr r3.xz, r3.xxzx, l(28, 0, 24, 0)
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, r3.x
utof r0.y, r0.y
mul r4.z, r0.y, l(0.0430107526)
utof r0.y, r3.z
mul r4.x, r0.y, l(0.00392464688)
sample_indexable(texture2d)(float,float,float,float) r5.xyzw, v0.xyxx, t2.xyzw, s0
sample_indexable(texture2d)(float,float,float,float) r6.xyzw, v0.xyxx, t3.xyzw, s0
div r7.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000), cb1[21].xyxy
mul r0.yw, v0.xxxy, cb1[21].xxxy
round_z r0.yw, r0.yyyw
ftoi r8.xy, r0.ywyy
mov r8.zw, l(0,0,0,0)
ld_aoffimmi_indexable(0,0,0)(texture2d)(float,float,float,float) r0.yw, r8.xyzw, t0.zxwy
mad r9.x, |r0.w|, l(2.000000), l(-1.000000)
lt r0.w, r0.w, l(0.000000)
movc r0.w, r0.w, l(-1.000000), l(1.000000)
mad r1.w, -r9.x, r9.x, l(1.000000)
mad r1.w, -r0.y, r0.y, r1.w
sqrt r1.w, |r1.w|
mul r9.y, r0.w, r1.w
add r3.xz, l(-1.000000, 0.000000, -1.000000, 0.000000), cb1[21].xxyx
mov r10.zw, l(0,0,0,0)
mov r11.zw, l(0,0,0,0)
mov r9.z, r0.y
mov r0.yw, l(0,0,0,0)
loop 
  ftoi r1.w, r0.w
  ige r2.w, r1.w, l(4)
  if_nz r2.w
    break 
  endif 
  ftou r2.w, r0.w
  ftoi r8.zw, icb[r2.w + 0].xxxy
  iadd r8.zw, r8.zzzw, r8.xxxy
  ftoi r12.xy, -icb[r2.w + 0].xyxx
  iadd r12.xy, r8.xyxx, r12.xyxx
  itof r8.zw, r8.zzzw
  min r8.zw, r3.xxxz, r8.zzzw
  round_z r8.zw, r8.zzzw
  itof r12.xy, r12.xyxx
  min r12.xy, r3.xzxx, r12.xyxx
  round_z r12.xy, r12.xyxx
  ftoi r8.zw, r8.zzzw
  imax r10.xy, r8.zwzz, l(0, 0, 0, 0)
  ftoi r8.zw, r12.xxxy
  imax r11.xy, r8.zwzz, l(0, 0, 0, 0)
  ld_aoffimmi_indexable(0,0,0)(texture2d)(float,float,float,float) r8.zw, r10.xyzw, t0.zwxy
  mad r12.x, |r8.w|, l(2.000000), l(-1.000000)
  lt r2.w, r8.w, l(0.000000)
  movc r2.w, r2.w, l(-1.000000), l(1.000000)
  mad r3.w, -r12.x, r12.x, l(1.000000)
  mad r3.w, -r8.z, r8.z, r3.w
  sqrt r3.w, |r3.w|
  mul r12.y, r2.w, r3.w
  ld_aoffimmi_indexable(0,0,0)(texture2d)(float,float,float,float) r10.xy, r11.xyzw, t0.xyzw
  mad r13.x, |r10.y|, l(2.000000), l(-1.000000)
  lt r2.w, r10.y, l(0.000000)
  movc r2.w, r2.w, l(-1.000000), l(1.000000)
  mad r3.w, -r13.x, r13.x, l(1.000000)
  mad r3.w, -r10.x, r10.x, r3.w
  sqrt r3.w, |r3.w|
  mul r13.y, r2.w, r3.w
  mov r12.z, r8.z
  dp3 r2.w, r12.xyzx, r9.xyzx
  lt r3.w, l(0.980000), r2.w
  mad r2.w, |r2.w|, l(-0.250000), l(1.000000)
  movc r2.w, r3.w, l(0), r2.w
  add r2.w, r0.y, r2.w
  mov r13.z, r10.x
  dp3 r3.w, r13.xyzx, r9.xyzx
  lt r4.w, l(0.980000), r3.w
  mad r3.w, |r3.w|, l(-0.250000), l(1.000000)
  movc r3.w, r4.w, l(0), r3.w
  add r0.y, r2.w, r3.w
  iadd r1.w, r1.w, l(1)
  itof r0.w, r1.w
endloop 
mad r0.y, r0.y, l(0.125000), l(0.500000)
ge r0.w, l(0.500000), r0.y
mul r1.w, r0.y, l(0.100000)
movc r0.y, r0.w, r1.w, r0.y
mad r0.w, r0.x, l(0.100000), r0.z
mad r8.xyzw, cb1[21].xyxy, v0.xyxy, l(1.000000, -1.000000, -2.000000, 0.000000)
mul r8.xyzw, r7.xyzw, r8.xyzw
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r8.xyxx, t0.xyzw, s0.x
mad r9.xyzw, -r9.xyzw, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r10.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r10.xyzw
gather4_indexable(texture2d)(float,float,float,float) r8.xyzw, r8.zwzz, t0.xyzw, s0.x
mad r8.xyzw, -r8.zwxy, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r10.xyzw, r8.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r8.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r8.xyzw
and r8.xyzw, r8.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r8.xyzw, r8.xyzw, r10.xyzw
mul r8.xyzw, r8.xyzw, r9.xyzw
mad r9.xyzw, cb1[21].xyxy, v0.xyxy, l(0.000000, 1.000000, -1.000000, -2.000000)
mul r9.xyzw, r7.xyzw, r9.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r9.xyxx, t0.xyzw, s0.x
mad r10.xyzw, -r10.xyzw, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r10.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r10.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r10.xyzw
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r10.xyzw, r10.xyzw, r11.xyzw
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r9.zwzz, t0.xyzw, s0.x
mad r9.xyzw, -r9.zwxy, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r11.xyzw
mul r9.xyzw, r9.xyzw, r10.xyzw
mul r9.xyzw, r9.xyzw, l(0.500000, 0.447210, 0.707110, 1.000000)
mad r8.xyzw, r8.xyzw, l(1.000000, 0.500000, 0.447210, 0.707110), r9.xyzw
mad r9.xyzw, cb1[21].xyxy, v0.xyxy, l(0.000000, 3.000000, -1.000000, -4.000000)
mul r9.xyzw, r7.xyzw, r9.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r9.xyxx, t0.xyzw, s0.x
mad r10.xyzw, -r10.xyzw, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r10.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r10.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r10.xyzw
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r10.xyzw, r10.xyzw, r11.xyzw
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r9.zwzz, t0.xyzw, s0.x
mad r9.xyzw, -r9.zwxy, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r11.xyzw
mul r9.xyzw, r9.xyzw, r10.xyzw
mad r8.xyzw, r9.xyzw, l(0.300000, 0.291040, 0.379470, 0.400000), r8.xyzw
mad r9.xyzw, cb1[21].xyxy, v0.xyxy, l(2.000000, 1.000000, -3.000000, -2.000000)
mul r9.xyzw, r7.xyzw, r9.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r9.xyxx, t0.xyzw, s0.x
mad r10.xyzw, -r10.xyzw, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r10.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r10.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r10.xyzw
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r10.xyzw, r10.xyzw, r11.xyzw
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r9.zwzz, t0.xyzw, s0.x
mad r9.xyzw, -r9.zwxy, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r11.xyzw
mul r9.xyzw, r9.xyzw, r10.xyzw
mad r8.xyzw, r9.xyzw, l(0.424260, 0.332820, 0.379470, 0.536660), r8.xyzw
mad r9.xyzw, cb1[21].xyxy, v0.xyxy, l(3.000000, -1.000000, -4.000000, 0.000000)
mul r9.xyzw, r7.xyzw, r9.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r9.xyxx, t0.xyzw, s0.x
mad r10.xyzw, -r10.xyzw, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r10.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r10.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r10.xyzw
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r10.xyzw, r10.xyzw, r11.xyzw
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r9.zwzz, t0.xyzw, s0.x
mad r9.xyzw, -r9.zwxy, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r11.xyzw
mul r9.xyzw, r9.xyzw, r10.xyzw
mad r8.xyzw, r9.xyzw, l(0.400000, 0.300000, 0.291040, 0.379470), r8.xyzw
mad r9.xyzw, cb1[21].xyxy, v0.xyxy, l(1.000000, -3.000000, -2.000000, 2.000000)
mul r9.xyzw, r7.xyzw, r9.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r9.xyxx, t0.xyzw, s0.x
mad r10.xyzw, -r10.xyzw, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r10.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r10.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r10.xyzw
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r10.xyzw, r10.xyzw, r11.xyzw
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r9.zwzz, t0.xyzw, s0.x
mad r9.xyzw, -r9.zwxy, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r11.xyzw
mul r9.xyzw, r9.xyzw, r10.xyzw
mad r8.xyzw, r9.xyzw, l(0.536660, 0.424260, 0.332820, 0.379470), r8.xyzw
mad r9.xyzw, cb1[21].xyxy, v0.xyxy, l(1.000000, -5.000000, -2.000000, 4.000000)
mul r9.xyzw, r7.xyzw, r9.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r9.xyxx, t0.xyzw, s0.x
mad r10.xyzw, -r10.xyzw, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r10.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r10.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r10.xyzw
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r10.xyzw, r10.xyzw, r11.xyzw
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r9.zwzz, t0.xyzw, s0.x
mad r9.xyzw, -r9.zwxy, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r11.xyzw
mul r9.xyzw, r9.xyzw, r10.xyzw
mad r8.xyzw, r9.xyzw, l(0.315300, 0.290690, 0.241400, 0.254950), r8.xyzw
mad r9.xyzw, cb1[21].xyxy, v0.xyxy, l(3.000000, -3.000000, -4.000000, 2.000000)
mul r9.xyzw, r7.xyzw, r9.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r9.xyxx, t0.xyzw, s0.x
mad r10.xyzw, -r10.xyzw, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r10.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r10.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r10.xyzw
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r10.xyzw, r10.xyzw, r11.xyzw
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r9.zwzz, t0.xyzw, s0.x
mad r9.xyzw, -r9.zwxy, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r11.xyzw
mul r9.xyzw, r9.xyzw, r10.xyzw
mad r8.xyzw, r9.xyzw, l(0.360560, 0.290690, 0.260000, 0.306410), r8.xyzw
mad r9.xyzw, cb1[21].xyxy, v0.xyxy, l(5.000000, -1.000000, -6.000000, 0.000000)
mul r9.xyzw, r7.xyzw, r9.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r9.xyxx, t0.xyzw, s0.x
mad r10.xyzw, -r10.xyzw, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r10.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r10.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r10.xyzw
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r10.xyzw, r10.xyzw, r11.xyzw
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r9.zwzz, t0.xyzw, s0.x
mad r9.xyzw, -r9.zwxy, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r11.xyzw
mul r9.xyzw, r9.xyzw, r10.xyzw
mad r8.xyzw, r9.xyzw, l(0.260000, 0.216670, 0.213720, 0.254950), r8.xyzw
mad r9.xyzw, cb1[21].xyxy, v0.xyxy, l(4.000000, 1.000000, -5.000000, -2.000000)
mul r9.xyzw, r7.xyzw, r9.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r9.xyxx, t0.xyzw, s0.x
mad r10.xyzw, -r10.xyzw, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r10.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r10.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r10.xyzw
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r10.xyzw, r10.xyzw, r11.xyzw
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r9.zwzz, t0.xyzw, s0.x
mad r9.xyzw, -r9.zwxy, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r11.xyzw
mul r9.xyzw, r9.xyzw, r10.xyzw
mad r8.xyzw, r9.xyzw, l(0.290690, 0.241400, 0.254950, 0.315300), r8.xyzw
mad r9.xyzw, cb1[21].xyxy, v0.xyxy, l(2.000000, 3.000000, -3.000000, -4.000000)
mul r9.xyzw, r7.xyzw, r9.xyzw
gather4_indexable(texture2d)(float,float,float,float) r10.xyzw, r9.xyxx, t0.xyzw, s0.x
mad r10.xyzw, -r10.xyzw, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r10.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r10.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r10.xyzw
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r10.xyzw, r10.xyzw, r11.xyzw
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r9.zwzz, t0.xyzw, s0.x
mad r9.xyzw, -r9.zwxy, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r11.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r11.xyzw
mul r9.xyzw, r9.xyzw, r10.xyzw
mad r8.xyzw, r9.xyzw, l(0.290690, 0.260000, 0.306410, 0.360560), r8.xyzw
mad r9.xyzw, cb1[21].xyxy, v0.xyxy, l(0.000000, 5.000000, -1.000000, -6.000000)
mul r7.xyzw, r7.xyzw, r9.xyzw
gather4_indexable(texture2d)(float,float,float,float) r9.xyzw, r7.xyxx, t0.xyzw, s0.x
mad r9.xyzw, -r9.xyzw, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r10.xyzw, r9.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r9.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r9.xyzw
and r9.xyzw, r9.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r9.xyzw, r9.xyzw, r10.xyzw
gather4_indexable(texture2d)(float,float,float,float) r7.xyzw, r7.zwzz, t0.xyzw, s0.x
mad r7.xyzw, -r7.zwxy, l(1.100000, 1.100000, 1.100000, 1.100000), r0.wwww
lt r10.xyzw, r7.xyzw, l(0.430000, 0.430000, 0.430000, 0.430000)
and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
lt r7.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), r7.xyzw
and r7.xyzw, r7.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
mul r7.xyzw, r7.xyzw, r10.xyzw
mul r7.xyzw, r9.xyzw, r7.xyzw
mad r7.xyzw, r7.xyzw, l(0.216670, 0.213720, 0.254950, 0.260000), r8.xyzw
dp4 r0.w, r7.xyzw, l(0.850000, 0.850000, 0.850000, 0.850000)
mul r0.y, r0.y, r0.w
mul r0.y, r0.y, l(0.0278912485)
add_sat r0.w, r0.z, l(-0.500000)
movc r0.w, r3.y, l(0), r0.w
mul r0.y, r0.w, r0.y
max r0.y, r0.y, l(0.000000)
add r0.y, -r0.y, l(1.000000)
mov r2.z, r0.x
dp3 r3.x, cb0[1].xyzx, r2.xyzx
dp3 r3.y, cb0[2].xyzx, r2.xyzx
dp3 r3.z, cb0[3].xyzx, r2.xyzx
mov r1.z, r0.z
dp3 r0.x, r1.xyzx, r1.xyzx
rsq r0.z, r0.x
mul r1.xyz, r0.zzzz, r1.xyzx
dp3 r2.x, cb0[1].xyzx, r1.xyzx
dp3 r2.y, cb0[2].xyzx, r1.xyzx
dp3 r2.z, cb0[3].xyzx, r1.xyzx
dp3 r0.z, r2.xyzx, r3.xyzx
add r0.z, r0.z, r0.z
mad r1.xyz, r3.xyzx, -r0.zzzz, r2.xyzx
dp3 r0.z, r1.xyzx, r2.xyzx
mad r4.y, r0.z, l(0.500000), l(0.500000)
sample_l_indexable(texture3d)(float,float,float,float) r0.zw, r4.xyzx, t1.zwxy, s2, l(0.000000)
sample_l_indexable(texturecube)(float,float,float,float) r2.xyz, r3.xyzx, t4.xyzw, s1, l(0.000000)
sample_l_indexable(texturecube)(float,float,float,float) r3.xyz, r3.xyzx, t5.xyzw, s1, l(0.000000)
add r3.xyz, -r2.xyzx, r3.xyzx
mad r2.xyz, cb0[0].wwww, r3.xyzx, r2.xyzx
mul r2.xyz, r2.xyzx, cb0[0].xyzx
mul r2.xyz, r2.xyzx, r2.xyzx
mad r2.xyz, r2.xyzx, r0.zzzz, cb1[15].xyzx
mad r1.w, r1.y, l(2.000000), l(-1.000000)
sample_l_indexable(texturecube)(float,float,float,float) r3.xyz, r1.xwzx, t4.xyzw, s1, l(0.000000)
sample_l_indexable(texturecube)(float,float,float,float) r1.xyz, r1.xwzx, t5.xyzw, s1, l(0.000000)
add r1.xyz, -r3.xyzx, r1.xyzx
mad r1.xyz, cb0[0].wwww, r1.xyzx, r3.xyzx
mul r1.xyz, r1.xyzx, cb0[0].xyzx
mul r1.xyz, r1.xyzx, r1.xyzx
mul r1.xyz, r0.wwww, r1.xyzx
mul r1.xyz, r5.wwww, r1.xyzx
mad r2.xyz, r2.xyzx, r0.yyyy, r6.xyzx
mul r0.z, r5.w, r6.w
mad r0.yzw, r1.xxyz, r0.yyyy, r0.zzzz
mad r0.yzw, r5.xxyz, r2.xxyz, r0.yyzw
sqrt r0.x, r0.x
mad_sat r0.x, r0.x, cb1[13].w, cb1[13].x
add r1.xyz, -r0.yzwy, cb1[14].xyzx
mad r0.yzw, r0.xxxx, r1.xxyz, r0.yyzw
mul r0.x, r0.x, r0.x
mul r1.xyz, r0.yzwy, v0.wwww
mad r2.xyz, r1.xyzx, l(0.346020758, 0.346020758, 0.346020758, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000)
mul r2.xyz, r1.xyzx, r2.xyzx
mad r0.yzw, v0.wwww, r0.yyzw, l(0.000000, 1.000000, 1.000000, 1.000000)
div o0.xyz, r2.xyzx, r0.yzwy
mul o1.xyz, r1.xyzx, l(0.111111112, 0.111111112, 0.111111112, 0.000000)
mov o0.w, r0.x
mov o1.w, r0.x
ret 
// Approximately 376 instruction slots used

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