//volumetric lights (or bloom?)-- 
//I can't find the right formula to fix this-- placed at a fixed depth for now
// ---- Created with 3Dmigoto v1.3.16.41 on Thu Apr 29 13:32:39 2021
Texture3D<float4> t7 : register(t7);

Texture3D<float4> t6 : register(t6);

Texture3D<float4> t5 : register(t5);

TextureCubeArray<float4> t4 : register(t4);

Texture3D<float4> t3 : register(t3);

struct t2_t {
  float val[57];
};
StructuredBuffer<t2_t> t2 : register(t2);

Texture2D<float4> t1 : register(t1);

Texture2DArray<float4> t0 : register(t0);

SamplerState s1_s : register(s1);

SamplerState s0_s : register(s0);

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

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

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




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


void main(
  float4 v0 : SV_POSITION0,
  out float4 o0 : SV_Target0)
{
  float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16;
  uint4 bitmask, uiDest;
  float4 fDest;


float4 stereo = StereoParams.Load(0);

  r0.xy = cb1[62].xy + v0.xy;
  r0.zw = float2(1,1);
  r1.x = dot(r0.xyww, cb0[0].xyzw);
  r1.y = dot(r0.xyww, cb0[1].xyzw);
  r1.z = dot(r0.xyzw, cb0[2].xyzw);
  r0.x = dot(r1.xyz, r1.xyz);
  r0.x = rsqrt(r0.x);
  r0.xyz = r1.xyz * r0.xxx;
  r1.xy = (uint2)v0.xy;
  r1.zw = float2(0,0);
  r0.w = t0.Load(r1.xyzw).x;

v0.x -= stereo.x * 850;

  r1.xy = cb1[42].zw * v0.xy;
  r1.zw = r1.xy * float2(2,2) + float2(-1,-1);
  r2.xyzw = cb1[25].xyzw * -r1.wwww;
  r2.xyzw = cb1[24].xyzw * r1.zzzz + r2.xyzw;
  r2.xyzw = cb1[26].xyzw * r0.wwww + r2.xyzw;
  r2.xyzw = cb1[27].xyzw + r2.xyzw;
  r2.xyz = r2.xyz / r2.www;
  if (cb1[361].y != 0) {
    r1.z = cmp(r0.w == 0.000000);
    r3.xyz = -r0.xyz * cb1[361].www + cb1[7].xyz;
    r3.xyz = r1.zzz ? r3.xyz : r2.xyz;
    r3.xyz = -cb1[7].xyz + r3.xyz;
    r1.z = dot(r3.xyz, r3.xyz);
    r1.z = sqrt(r1.z);
    if (cb1[365].y != 0) {
      r1.w = -cb1[81].z + r1.z;
      r1.w = max(0, r1.w);
      r1.w = log2(r1.w);
      r3.z = cb1[81].y * r1.w + cb1[81].x;
      r1.xy = cb1[78].xy * r1.xy;
      r4.xy = floor(r1.xy);
      r1.xy = frac(r1.xy);
      r1.xy = float2(1,1) + -r1.xy;
      r4.zw = r1.yx * r1.yx;
      r5.xy = float2(1,1) + -r1.xy;
      r1.xy = r5.xy * r1.xy + float2(0.5,0.5);
      r5.xy = -r4.wz * float2(0.5,0.5) + float2(1,1);
      r5.xy = r5.xy + -r1.xy;
      r5.zw = float2(0.5,0.5) * r1.xy;
      r4.zw = r4.zw * float2(0.5,0.5) + r5.wz;
      r1.xy = r1.xy * float2(0.5,0.5) + r5.xy;
      r6.xy = rcp(r4.wz);
      r6.zw = r5.zw * r6.xy + float2(-0.5,-0.5);
      r5.zw = rcp(r1.xy);
      r6.xy = r5.xy * r5.zw + float2(0.5,0.5);
      r5.xy = cb1[80].xy * cb1[78].zw;
      r1.w = r4.w * r4.z;
      r7.xyzw = r6.zwxw + r4.xyxy;
      r7.xyzw = r7.xyzw * r5.xyxy;
      r3.xy = min(cb1[80].zw, r7.xy);
      r8.xyzw = t3.SampleLevel(s0_s, r3.xyz, 0).xyzw;
      r4.zw = r1.xy * r4.zw;
      r3.xy = min(cb1[80].zw, r7.zw);
      r7.xyzw = t3.SampleLevel(s0_s, r3.xyz, 0).xyzw;
      r7.xyzw = r7.xyzw * r4.zzzz;
      r7.xyzw = r1.wwww * r8.xyzw + r7.xyzw;
      r6.xyzw = r6.zyxy + r4.xyxy;
      r5.xyzw = r6.xyzw * r5.xyxy;
      r3.xy = min(cb1[80].zw, r5.xy);
      r6.xyzw = t3.SampleLevel(s0_s, r3.xyz, 0).xyzw;
      r4.xyzw = r4.wwww * r6.xyzw + r7.xyzw;
      r1.x = r1.x * r1.y;
      r3.xy = min(cb1[80].zw, r5.zw);
      r3.xyzw = t3.SampleLevel(s0_s, r3.xyz, 0).xyzw;
      r3.xyzw = r1.xxxx * r3.xyzw + r4.xyzw;
      r1.x = -1.44269502 * r3.w;
      r1.x = exp2(r1.x);
      r4.x = 1 + -r1.x;
      r1.x = cmp(r4.x >= 5.96046448e-008);
      r1.y = rcp(r3.w);
      r1.y = r4.x * r1.y;
      r1.x = r1.x ? r1.y : 1;
      r1.xyw = r1.xxx * r3.xyz;
      r2.w = cb1[365].x;
    } else {
      r1.xyw = float3(0,0,0);
      r4.x = 0;
      r2.w = 0;
    }
    r3.x = -r2.w + r1.z;
    r3.y = cmp(0 < r3.x);
    if (r3.y != 0) {
      r2.w = -r0.y * r2.w + cb1[7].y;
      r3.yzw = cb1[76].xyz / cb1[76].www;
      r4.w = max(5.96046448e-008, abs(r0.y));
      r5.x = rcp(r4.w);
      r5.y = r3.x * -r0.y + r2.w;
      r2.w = min(r5.y, r2.w);
      r5.y = -cb1[77].z + r2.w;
      r5.y = max(0, r5.y);
      r2.w = cb1[77].z + -r2.w;
      r2.w = r2.w * r5.x;
      r2.w = max(0, r2.w);
      r2.w = min(r2.w, r3.x);
      r3.x = r3.x + -r2.w;
      r5.y = cb1[77].x * -r5.y;
      r5.y = 1.44269502 * r5.y;
      r5.y = exp2(r5.y);
      r3.x = -r3.x * r4.w;
      r3.x = cb1[77].x * r3.x;
      r3.x = 1.44269502 * r3.x;
      r3.x = exp2(r3.x);
      r3.x = 1 + -r3.x;
      r3.x = r5.y * r3.x;
      r4.w = cb1[77].y * r5.x;
      r2.w = r3.x * r4.w + r2.w;
      r2.w = cb1[76].w * r2.w;
      r2.w = -1.44269502 * r2.w;
      r2.w = exp2(r2.w);
      r3.x = 1 + -r4.x;
      r4.w = cmp(cb1[362].x == 1.000000);
      if (r4.w != 0) {
        r1.z = -cb1[364].x + r1.z;
        r4.w = cb1[364].y + -cb1[364].x;
        r1.z = saturate(r1.z / r4.w);
        r1.z = -cb1[364].z * r1.z + 1;
        r1.z = 6 * r1.z;
        r5.xyz = -r0.xyz;
        r5.w = 0;
        r5.xyz = t4.SampleLevel(s1_s, r5.xyzw, r1.z).xyz;
        r5.xyz = cb1[363].xyz * r5.xyz;
      } else {
        r5.xyz = cb1[363].xyz;
      }
      r5.xyz = r5.xyz * r3.xxx;
      r1.z = t1.Load(float4(0,0,0,0)).x;
      r1.z = cb1[449].y * r1.z;
      r5.xyz = r5.xyz * r1.zzz;
      r3.yzw = r5.xyz * r3.yzw;
      r1.z = 1 + -r2.w;
      r1.xyw = r3.yzw * r1.zzz + r1.xyw;
      r4.x = -r3.x * r2.w + 1;
    }
    r4.yz = r4.xx;
  } else {
    r1.xyw = float3(0,0,0);
    r4.xyz = float3(0,0,0);
  }
  r1.z = cmp(asint(cb1[361].z) != 0);
  r0.w = cmp(r0.w != 0.000000);
  r0.w = r0.w ? r1.z : 0;
  if (r0.w != 0) {
    r3.xyz = -cb2[7].xyz + cb1[40].xyz;
    r0.w = dot(r3.xyz, r3.xyz);
    r1.z = rsqrt(r0.w);
    r5.xyz = r3.xyz * r1.zzz;
    r5.w = sqrt(r0.w);
    r0.w = dot(r5.xyz, -r0.xyz);
    r1.z = rcp(r5.w);
    r1.z = cb2[1].x * r1.z;
    r2.w = -r0.w * r0.w + 1;
    r2.w = max(0, r2.w);
    r1.z = r1.z * r1.z + -r2.w;
    r2.w = cmp(r1.z < 0);
    r3.w = sqrt(r1.z);
    r6.x = -r3.w + -r0.w;
    r6.y = r3.w + -r0.w;
    r6.xy = r6.xy * r5.ww;
    r6.xy = r2.ww ? r1.zz : r6.xy;
    r0.w = cmp(r6.y >= 0);
    r1.z = max(0, r6.x);
    r2.w = r0.w ? r1.z : r6.x;
    r2.w = cmp(r2.w >= 0);
    if (r2.w != 0) {
      r2.y = cb1[1].z * r2.y;
      r2.x = cb1[0].z * r2.x + r2.y;
      r2.x = cb1[2].z * r2.z + r2.x;
      r2.x = cb1[3].z + r2.x;
      r7.x = cb1[0].z;
      r7.y = cb1[1].z;
      r7.z = cb1[2].z;
      r2.y = dot(-r0.xyz, -r7.xyz);
      r2.y = rcp(r2.y);
      r2.x = abs(r2.x) * r2.y;
      r2.y = cmp(0 < r1.z);
      r6.xzw = r1.zzz * -r0.xyz + r3.xyz;
      r1.z = dot(r6.xzw, r6.xzw);
      r1.z = rsqrt(r1.z);
      r7.xyz = r6.xzw * r1.zzz;
      r7.w = cb2[1].x;
      r7.xyzw = r2.yyyy ? r7.xyzw : r5.xyzw;
      r5.xyzw = r0.wwww ? r7.xyzw : r5.xyzw;
      r0.w = dot(r5.xyz, r0.xyz);
      r7.x = -r0.w;
      r1.z = rcp(r5.w);
      r1.z = cb2[0].x * r1.z;
      r1.z = -r1.z * r1.z + 1;
      r1.z = max(0, r1.z);
      r1.z = sqrt(r1.z);
      r2.y = cmp(abs(r2.x) < r6.y);
      r2.z = cmp(r2.x >= 0);
      r2.z = r2.z ? r2.y : 0;
      r3.xyz = abs(r2.xxx) * -r0.xyz + r3.xyz;
      r2.x = dot(r3.xyz, r3.xyz);
      r6.y = sqrt(r2.x);
      r2.x = rcp(r6.y);
      r8.xyz = r3.xyz * r2.xxx;
      r2.w = dot(r3.xyz, -r0.xyz);
      r6.z = r2.w * r2.x;
      r2.x = cmp(r6.z >= 0);
      r6.x = r2.x ? r7.x : r0.w;
      r3.xyz = r2.yyy ? r8.xyz : 0;
      r7.yz = float2(0,0);
      r6.xyz = r2.yyy ? r6.xyz : r7.xyz;
      r2.xw = cb2[2].xz * r5.ww;
      r3.w = -r6.x * r6.x + 1;
      r3.w = max(0, r3.w);
      r3.w = sqrt(r3.w);
      r7.yz = r2.xw * float2(2,2) + float2(1,1);
      r8.xy = abs(r6.xz) * abs(r6.xz);
      r8.zw = r8.xx * r2.xw;
      r7.yz = -r8.xx * r2.xw + r7.yz;
      r7.yz = float2(0.761642992,0.761642992) * r7.yz;
      r8.xz = r8.zw * float2(0.273828,0.273828) + float2(1.47721004,1.47721004);
      r8.xz = r8.xz * r2.xw;
      r8.xz = sqrt(r8.xz);
      r8.xz = abs(r6.xx) * r2.xw + r8.xz;
      r9.xy = float2(0.5,0.5) * abs(r6.xz);
      r8.xz = rcp(r8.xz);
      r7.yz = r7.yz * r8.xz + r9.xx;
      r8.xz = cb2[0].xx * cb2[2].xz + -r2.xw;
      r8.xz = float2(1.44269502,1.44269502) * r8.xz;
      r8.xz = exp2(r8.xz);
      r7.yz = r8.xz * r7.yz;
      r4.w = cmp(r6.x < 0);
      r2.xw = r3.ww * r2.xw;
      r6.xw = rsqrt(r2.xw);
      r3.w = dot(r2.xx, r6.xx);
      r3.w = r6.x + r3.w;
      r3.w = 1.25331402 * r3.w;
      r8.xz = cb2[0].xx * cb2[2].xz + -r2.xw;
      r8.xz = float2(1.44269502,1.44269502) * r8.xz;
      r8.xz = exp2(r8.xz);
      r2.x = r3.w * r8.x + -r7.y;
      r10.xyz = r4.www ? r2.xxx : r7.yyy;
      r2.x = dot(r2.ww, r6.ww);
      r2.x = r6.w + r2.x;
      r2.x = 1.25331402 * r2.x;
      r2.x = r2.x * r8.z + -r7.z;
      r10.w = r4.w ? r2.x : r7.z;
      r11.xyzw = cb2[2].xxxz * r6.yyyy;
      r12.xyzw = r11.zzzw * float4(2,2,2,2) + float4(1,1,1,1);
      r13.xyzw = r11.zzzw * r8.yyyy;
      r8.xyzw = -r8.yyyy * r11.zzzw + r12.xyzw;
      r8.xyzw = float4(0.761642992,0.761642992,0.761642992,0.761642992) * r8.xyzw;
      r12.xyzw = r13.xyzw * float4(0.273828,0.273828,0.273828,0.273828) + float4(1.47721004,1.47721004,1.47721004,1.47721004);
      r12.xyzw = r12.xyzw * r11.zzzw;
      r12.xyzw = sqrt(r12.xyzw);
      r12.xyzw = abs(r6.zzzz) * r11.zzzw + r12.xyzw;
      r12.xyzw = rcp(r12.xyzw);
      r8.xyzw = r8.xyzw * r12.xyzw + r9.yyyy;
      r9.xyzw = cb2[0].xxxx * cb2[2].xxxz + -r11.xyzw;
      r9.xyzw = float4(1.44269502,1.44269502,1.44269502,1.44269502) * r9.xyzw;
      r9.xyzw = exp2(r9.xyzw);
      r8.xyzw = r9.xyzw * r8.xyzw;
      r8.xyzw = r2.yyyy ? r8.xyzw : 0;
      r8.xyzw = r10.xyzw + -r8.xyzw;
      r8.xyzw = cb2[2].yyyw * abs(r8.xyzw);
      r8.xyzw = cb2[3].xyzw * r8.xyzw;
      r2.xyw = r8.xyz + r8.www;
      r2.xyw = float3(-1.44269502,-1.44269502,-1.44269502) * r2.xyw;
      r2.xyw = exp2(r2.xyw);
      r2.xyw = float3(1,1,1) + -r2.xyw;
      r3.w = -cb2[0].x + r5.w;
      r7.yzw = -r5.xyz * r0.www + r0.xyz;
      r4.w = dot(r7.yzw, r7.yzw);
      r5.w = r7.x + r1.z;
      r6.x = cmp(r5.w >= 0);
      r6.x = r6.x ? 1 : -1;
      r5.w = sqrt(abs(r5.w));
      r6.w = -r6.x * -r1.z + 1;
      r6.w = rsqrt(r6.w);
      r5.w = r6.w * r5.w;
      r5.w = max(0.0078125, r5.w);
      r5.w = r6.x * r5.w;
      r8.x = saturate(r5.w * 0.5 + 0.5);
      r3.w = cb2[0].w * r3.w;
      r8.y = sqrt(r3.w);
      r3.w = cb2[1].y * cb2[1].y + 1;
      r5.w = cb2[1].y + cb2[1].y;
      r6.x = -cb2[0].x + r6.y;
      r9.xyz = -r3.xyz * -r6.zzz + r0.xyz;
      r6.w = dot(r9.xyz, r9.xyz);
      r6.y = rcp(r6.y);
      r6.y = cb2[0].x * r6.y;
      r6.y = -r6.y * r6.y + 1;
      r6.y = max(0, r6.y);
      r6.y = sqrt(r6.y);
      r6.z = r6.z + r6.y;
      r9.w = cmp(r6.z >= 0);
      r9.w = r9.w ? 1 : -1;
      r6.z = sqrt(abs(r6.z));
      r6.y = -r9.w * -r6.y + 1;
      r6.y = rsqrt(r6.y);
      r6.y = r6.z * r6.y;
      r6.y = max(0.0078125, r6.y);
      r6.y = r9.w * r6.y;
      r10.x = saturate(r6.y * 0.5 + 0.5);
      r6.x = cb2[0].w * r6.x;
      r10.y = sqrt(r6.x);
      r6.xyz = float3(1,1,1) + -r2.xyw;
      r11.xyz = float3(0,0,0);
      r9.w = 0;
      while (true) {
        r11.w = cmp((uint)r9.w >= asuint(cb1[346].x));
        if (r11.w != 0) break;
        r11.w = t2[r9.w].val[168/4];
        r11.w = cmp((int)r11.w < 0);
        if (r11.w != 0) {
          r11.w = (int)r9.w + 1;
          r9.w = r11.w;
          continue;
        }
        r12.x = t2[r9.w].val[24/4];
        r12.y = t2[r9.w].val[24/4+1];
        r12.z = t2[r9.w].val[24/4+2];
        r13.x = t2[r9.w].val[88/4];
        r13.y = t2[r9.w].val[88/4+1];
        r13.z = t2[r9.w].val[88/4+2];
        r11.w = dot(r5.xyz, -r12.xyz);
        r14.xyz = -r5.xyz * r11.www + -r12.xyz;
        r12.w = dot(r14.xyz, r7.yzw);
        r13.w = dot(r14.xyz, r14.xyz);
        r13.w = r13.w * r4.w;
        r13.w = max(5.96046448e-008, r13.w);
        r13.w = rsqrt(r13.w);
        r12.w = r13.w * r12.w;
        r12.w = max(-1, r12.w);
        r12.w = min(1, r12.w);
        r13.w = 1 + -abs(r12.w);
        r13.w = sqrt(r13.w);
        r14.x = abs(r12.w) * -0.0187292993 + 0.0742610022;
        r14.x = r14.x * abs(r12.w) + -0.212114394;
        r14.x = r14.x * abs(r12.w) + 1.57072878;
        r14.y = r14.x * r13.w;
        r14.y = r14.y * -2 + 3.14159274;
        r12.w = cmp(r12.w < -r12.w);
        r12.w = r12.w ? r14.y : 0;
        r12.w = r14.x * r13.w + r12.w;
        r12.w = r12.w * 4.77464819 + 0.5;
        r11.w = max(-0.5, r11.w);
        r13.w = sqrt(abs(r11.w));
        r11.w = cmp(r11.w >= 0);
        r11.w = r11.w ? r13.w : -r13.w;
        r11.w = saturate(r11.w * 0.585785985 + 0.414213985);
        r11.w = 63 * r11.w;
        r13.w = floor(r11.w);
        r13.w = r12.w * 0.0625 + r13.w;
        r8.z = 0.015625 * r13.w;
        r13.w = ceil(r11.w);
        r12.w = r12.w * 0.0625 + r13.w;
        r8.w = 0.015625 * r12.w;
        r11.w = frac(r11.w);
        r12.w = dot(-r12.xyz, r0.xyz);
        r14.xyz = t5.SampleLevel(s0_s, r8.xyz, 0).xyz;
        r15.xyz = t5.SampleLevel(s0_s, r8.xyw, 0).xyz;
        r15.xyz = r15.xyz + -r14.xyz;
        r14.xyz = r11.www * r15.xyz + r14.xyz;
        r13.w = r12.w * r12.w + 1;
        r14.w = 0.0596831031 * r13.w;
        r15.xyz = t6.SampleLevel(s0_s, r8.xyz, 0).xyz;
        r16.xyz = t6.SampleLevel(s0_s, r8.xyw, 0).xyz;
        r16.xyz = r16.xyz + -r15.xyz;
        r15.xyz = r11.www * r16.xyz + r15.xyz;
        r12.w = -r5.w * -r12.w + r3.w;
        r12.w = max(5.96046448e-008, r12.w);
        r12.w = rsqrt(r12.w);
        r15.w = r12.w * r12.w;
        r12.w = r15.w * r12.w;
        r12.w = r13.w * r12.w;
        r12.w = cb2[1].z * r12.w;
        r15.xyz = r15.xyz * r12.www;
        r14.xyz = r14.xyz * r14.www + r15.xyz;
        r15.xyz = t7.SampleLevel(s0_s, r8.xyz, 0).xyz;
        r16.xyz = t7.SampleLevel(s0_s, r8.xyw, 0).xyz;
        r16.xyz = r16.xyz + -r15.xyz;
        r15.xyz = r11.www * r16.xyz + r15.xyz;
        r14.xyz = r15.xyz + r14.xyz;
        if (r2.z != 0) {
          r8.z = dot(r3.xyz, -r12.xyz);
          r12.xyz = -r3.xyz * r8.zzz + -r12.xyz;
          r8.w = dot(r12.xyz, r9.xyz);
          r11.w = dot(r12.xyz, r12.xyz);
          r11.w = r11.w * r6.w;
          r11.w = max(5.96046448e-008, r11.w);
          r11.w = rsqrt(r11.w);
          r8.w = r11.w * r8.w;
          r8.zw = max(float2(-0.5,-1), r8.zw);
          r8.w = min(1, r8.w);
          r11.w = 1 + -abs(r8.w);
          r11.w = sqrt(r11.w);
          r12.x = abs(r8.w) * -0.0187292993 + 0.0742610022;
          r12.x = r12.x * abs(r8.w) + -0.212114394;
          r12.x = r12.x * abs(r8.w) + 1.57072878;
          r12.y = r12.x * r11.w;
          r12.y = r12.y * -2 + 3.14159274;
          r8.w = cmp(r8.w < -r8.w);
          r8.w = r8.w ? r12.y : 0;
          r8.w = r12.x * r11.w + r8.w;
          r8.w = r8.w * 4.77464819 + 0.5;
          r11.w = sqrt(abs(r8.z));
          r8.z = cmp(r8.z >= 0);
          r8.z = r8.z ? r11.w : -r11.w;
          r8.z = saturate(r8.z * 0.585785985 + 0.414213985);
          r8.z = 63 * r8.z;
          r11.w = floor(r8.z);
          r11.w = r8.w * 0.0625 + r11.w;
          r10.z = 0.015625 * r11.w;
          r11.w = ceil(r8.z);
          r8.w = r8.w * 0.0625 + r11.w;
          r10.w = 0.015625 * r8.w;
          r8.z = frac(r8.z);
          r12.xyz = t5.SampleLevel(s0_s, r10.xyz, 0).xyz;
          r15.xyz = t5.SampleLevel(s0_s, r10.xyw, 0).xyz;
          r15.xyz = r15.xyz + -r12.xyz;
          r12.xyz = r8.zzz * r15.xyz + r12.xyz;
          r15.xyz = t6.SampleLevel(s0_s, r10.xyz, 0).xyz;
          r16.xyz = t6.SampleLevel(s0_s, r10.xyw, 0).xyz;
          r16.xyz = r16.xyz + -r15.xyz;
          r15.xyz = r8.zzz * r16.xyz + r15.xyz;
          r15.xyz = r15.xyz * r12.www;
          r12.xyz = r12.xyz * r14.www + r15.xyz;
          r15.xyz = t7.SampleLevel(s0_s, r10.xyz, 0).xyz;
          r16.xyz = t7.SampleLevel(s0_s, r10.xyw, 0).xyz;
          r16.xyz = r16.xyz + -r15.xyz;
          r15.xyz = r8.zzz * r16.xyz + r15.xyz;
          r12.xyz = r15.xyz + r12.xyz;
          r12.xyz = -r6.xyz * r12.xyz + r14.xyz;
          r14.xyz = max(float3(0,0,0), r12.xyz);
        }
        r11.xyz = r14.xyz * r13.xyz + r11.xyz;
        r9.w = (int)r9.w + 1;
      }
      r0.x = r11.x + r11.y;
      r0.x = r0.x + r11.z;
      r0.y = 0.333333343 * r0.x;
      r3.xyz = -r0.xxx * float3(0.333333343,0.333333343,0.333333343) + r11.xyz;
      r0.xyz = r3.xyz * cb2[5].www + r0.yyy;
      r2.y = r2.x + r2.y;
      r2.y = r2.y + r2.w;
      r2.z = 0.333333343 * r2.y;
      r2.x = -r2.y * 0.333333343 + r2.x;
      r2.x = r2.x * cb2[6].w + r2.z;
      r2.x = cb2[7].w * r2.x;
      r2.y = 1 + -r1.z;
      r2.y = sqrt(r2.y);
      r2.z = r1.z * -0.0187292993 + 0.0742610022;
      r2.z = r2.z * r1.z + -0.212114394;
      r2.z = r2.z * r1.z + 1.57072878;
      r2.w = r2.z * r2.y;
      r2.w = r2.w * -2 + 3.14159274;
      r1.z = cmp(-r1.z < r1.z);
      r1.z = r1.z ? r2.w : 0;
      r1.z = r2.z * r2.y + r1.z;
      r2.y = 1 + -abs(r0.w);
      r2.y = sqrt(r2.y);
      r2.z = abs(r0.w) * -0.0187292993 + 0.0742610022;
      r2.z = r2.z * abs(r0.w) + -0.212114394;
      r2.z = r2.z * abs(r0.w) + 1.57072878;
      r2.w = r2.z * r2.y;
      r2.w = r2.w * -2 + 3.14159274;
      r0.w = cmp(r7.x < r0.w);
      r0.w = r0.w ? r2.w : 0;
      r0.w = r2.z * r2.y + r0.w;
      r2.y = rcp(-r1.z);
      r1.z = r2.y * r1.z;
      r0.w = saturate(r0.w * r2.y + -r1.z);
      r0.w = cb2[8].w * r0.w;
      r0.w = 1.44269502 * r0.w;
      r0.w = exp2(r0.w);
      r0.w = r0.w * cb2[9].w + -cb2[9].w;
      r2.yzw = cb2[9].xyz + -cb2[8].xyz;
      r2.yzw = r0.www * r2.yzw + cb2[8].xyz;
      r0.xyz = r2.yzw * r0.xyz;
    } else {
      r0.xyz = float3(0,0,0);
      r2.x = 0;
    }
    r0.w = t1.Load(float4(0,0,0,0)).x;
    r0.w = cb1[449].y * r0.w;
    r0.w = cb2[4].w * r0.w;
    r0.xyz = r0.xyz * r0.www;
    r2.yzw = float3(1,1,1) + -r4.xyz;
    o0.xyz = r2.yzw * r0.xyz + r1.xyw;
    o0.w = r2.y * r2.x + r4.x;
  } else {
    o0.xyz = r1.xyw;
    o0.w = r4.x;
  }
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.3.16.41 on Thu Apr 29 13:32:39 2021
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION              0   xyzw        0      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[3], immediateIndexed
dcl_constantbuffer cb1[450], immediateIndexed
dcl_constantbuffer cb2[10], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_resource_texture2darray (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_structured t2, 228
dcl_resource_texture3d (float,float,float,float) t3
dcl_resource_texturecubearray (float,float,float,float) t4
dcl_resource_texture3d (float,float,float,float) t5
dcl_resource_texture3d (float,float,float,float) t6
dcl_resource_texture3d (float,float,float,float) t7
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_output o0.xyzw
dcl_temps 17
add r0.xy, v0.xyxx, cb1[62].xyxx
mov r0.zw, l(0,0,1.000000,1.000000)
dp4 r1.x, r0.xyww, cb0[0].xyzw
dp4 r1.y, r0.xyww, cb0[1].xyzw
dp4 r1.z, r0.xyzw, cb0[2].xyzw
dp3 r0.x, r1.xyzx, r1.xyzx
rsq r0.x, r0.x
mul r0.xyz, r0.xxxx, r1.xyzx
ftou r1.xy, v0.xyxx
mov r1.zw, l(0,0,0,0)
ld_indexable(texture2darray)(float,float,float,float) r0.w, r1.xyzw, t0.yzwx
mul r1.xy, v0.xyxx, cb1[42].zwzz
mad r1.zw, r1.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000)
mul r2.xyzw, -r1.wwww, cb1[25].xyzw
mad r2.xyzw, cb1[24].xyzw, r1.zzzz, r2.xyzw
mad r2.xyzw, cb1[26].xyzw, r0.wwww, r2.xyzw
add r2.xyzw, r2.xyzw, cb1[27].xyzw
div r2.xyz, r2.xyzx, r2.wwww
if_nz cb1[361].y
  eq r1.z, r0.w, l(0.000000)
  mad r3.xyz, -r0.xyzx, cb1[361].wwww, cb1[7].xyzx
  movc r3.xyz, r1.zzzz, r3.xyzx, r2.xyzx
  add r3.xyz, r3.xyzx, -cb1[7].xyzx
  dp3 r1.z, r3.xyzx, r3.xyzx
  sqrt r1.z, r1.z
  if_nz cb1[365].y
    add r1.w, r1.z, -cb1[81].z
    max r1.w, r1.w, l(0.000000)
    log r1.w, r1.w
    mad r3.z, cb1[81].y, r1.w, cb1[81].x
    mul r1.xy, r1.xyxx, cb1[78].xyxx
    round_ni r4.xy, r1.xyxx
    frc r1.xy, r1.xyxx
    add r1.xy, -r1.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
    mul r4.zw, r1.yyyx, r1.yyyx
    add r5.xy, -r1.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
    mad r1.xy, r5.xyxx, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
    mad r5.xy, -r4.wzww, l(0.500000, 0.500000, 0.000000, 0.000000), l(1.000000, 1.000000, 0.000000, 0.000000)
    add r5.xy, -r1.xyxx, r5.xyxx
    mul r5.zw, r1.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000)
    mad r4.zw, r4.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), r5.wwwz
    mad r1.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), r5.xyxx
    rcp r6.xy, r4.wzww
    mad r6.zw, r5.zzzw, r6.xxxy, l(0.000000, 0.000000, -0.500000, -0.500000)
    rcp r5.zw, r1.xxxy
    mad r6.xy, r5.xyxx, r5.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000)
    mul r5.xy, cb1[78].zwzz, cb1[80].xyxx
    mul r1.w, r4.z, r4.w
    add r7.xyzw, r4.xyxy, r6.zwxw
    mul r7.xyzw, r5.xyxy, r7.xyzw
    min r3.xy, r7.xyxx, cb1[80].zwzz
    sample_l_indexable(texture3d)(float,float,float,float) r8.xyzw, r3.xyzx, t3.xyzw, s0, l(0.000000)
    mul r4.zw, r4.zzzw, r1.xxxy
    min r3.xy, r7.zwzz, cb1[80].zwzz
    sample_l_indexable(texture3d)(float,float,float,float) r7.xyzw, r3.xyzx, t3.xyzw, s0, l(0.000000)
    mul r7.xyzw, r4.zzzz, r7.xyzw
    mad r7.xyzw, r1.wwww, r8.xyzw, r7.xyzw
    add r6.xyzw, r4.xyxy, r6.zyxy
    mul r5.xyzw, r5.xyxy, r6.xyzw
    min r3.xy, r5.xyxx, cb1[80].zwzz
    sample_l_indexable(texture3d)(float,float,float,float) r6.xyzw, r3.xyzx, t3.xyzw, s0, l(0.000000)
    mad r4.xyzw, r4.wwww, r6.xyzw, r7.xyzw
    mul r1.x, r1.y, r1.x
    min r3.xy, r5.zwzz, cb1[80].zwzz
    sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t3.xyzw, s0, l(0.000000)
    mad r3.xyzw, r1.xxxx, r3.xyzw, r4.xyzw
    mul r1.x, r3.w, l(-1.442695)
    exp r1.x, r1.x
    add r4.x, -r1.x, l(1.000000)
    ge r1.x, r4.x, l(5.960464478E-008)
    rcp r1.y, r3.w
    mul r1.y, r1.y, r4.x
    movc r1.x, r1.x, r1.y, l(1.000000)
    mul r1.xyw, r3.xyxz, r1.xxxx
    mov r2.w, cb1[365].x
  else
    mov r1.xyw, l(0,0,0,0)
    mov r4.x, l(0)
    mov r2.w, l(0)
  endif
  add r3.x, r1.z, -r2.w
  lt r3.y, l(0.000000), r3.x
  if_nz r3.y
    mad r2.w, -r0.y, r2.w, cb1[7].y
    div r3.yzw, cb1[76].xxyz, cb1[76].wwww
    max r4.w, |r0.y|, l(5.960464478E-008)
    rcp r5.x, r4.w
    mad r5.y, r3.x, -r0.y, r2.w
    min r2.w, r2.w, r5.y
    add r5.y, r2.w, -cb1[77].z
    max r5.y, r5.y, l(0.000000)
    add r2.w, -r2.w, cb1[77].z
    mul r2.w, r5.x, r2.w
    max r2.w, r2.w, l(0.000000)
    min r2.w, r3.x, r2.w
    add r3.x, -r2.w, r3.x
    mul r5.y, -r5.y, cb1[77].x
    mul r5.y, r5.y, l(1.442695)
    exp r5.y, r5.y
    mul r3.x, r4.w, -r3.x
    mul r3.x, r3.x, cb1[77].x
    mul r3.x, r3.x, l(1.442695)
    exp r3.x, r3.x
    add r3.x, -r3.x, l(1.000000)
    mul r3.x, r3.x, r5.y
    mul r4.w, r5.x, cb1[77].y
    mad r2.w, r3.x, r4.w, r2.w
    mul r2.w, r2.w, cb1[76].w
    mul r2.w, r2.w, l(-1.442695)
    exp r2.w, r2.w
    add r3.x, -r4.x, l(1.000000)
    eq r4.w, cb1[362].x, l(1.000000)
    if_nz r4.w
      add r1.z, r1.z, -cb1[364].x
      add r4.w, -cb1[364].x, cb1[364].y
      div_sat r1.z, r1.z, r4.w
      mad r1.z, -cb1[364].z, r1.z, l(1.000000)
      mul r1.z, r1.z, l(6.000000)
      mov r5.xyz, -r0.xyzx
      mov r5.w, l(0)
      sample_l_indexable(texturecubearray)(float,float,float,float) r5.xyz, r5.xyzw, t4.xyzw, s1, r1.z
      mul r5.xyz, r5.xyzx, cb1[363].xyzx
    else
      mov r5.xyz, cb1[363].xyzx
    endif
    mul r5.xyz, r3.xxxx, r5.xyzx
    ld_indexable(texture2d)(float,float,float,float) r1.z, l(0, 0, 0, 0), t1.yzxw
    mul r1.z, r1.z, cb1[449].y
    mul r5.xyz, r1.zzzz, r5.xyzx
    mul r3.yzw, r3.yyzw, r5.xxyz
    add r1.z, -r2.w, l(1.000000)
    mad r1.xyw, r3.yzyw, r1.zzzz, r1.xyxw
    mad r4.x, -r3.x, r2.w, l(1.000000)
  endif
  mov r4.yz, r4.xxxx
else
  mov r1.xyw, l(0,0,0,0)
  mov r4.xyz, l(0,0,0,0)
endif
ine r1.z, cb1[361].z, l(0)
ne r0.w, r0.w, l(0.000000)
and r0.w, r0.w, r1.z
if_nz r0.w
  add r3.xyz, cb1[40].xyzx, -cb2[7].xyzx
  dp3 r0.w, r3.xyzx, r3.xyzx
  rsq r1.z, r0.w
  mul r5.xyz, r1.zzzz, r3.xyzx
  sqrt r5.w, r0.w
  dp3 r0.w, r5.xyzx, -r0.xyzx
  rcp r1.z, r5.w
  mul r1.z, r1.z, cb2[1].x
  mad r2.w, -r0.w, r0.w, l(1.000000)
  max r2.w, r2.w, l(0.000000)
  mad r1.z, r1.z, r1.z, -r2.w
  lt r2.w, r1.z, l(0.000000)
  sqrt r3.w, r1.z
  add r6.x, -r0.w, -r3.w
  add r6.y, -r0.w, r3.w
  mul r6.xy, r5.wwww, r6.xyxx
  movc r6.xy, r2.wwww, r1.zzzz, r6.xyxx
  ge r0.w, r6.y, l(0.000000)
  max r1.z, r6.x, l(0.000000)
  movc r2.w, r0.w, r1.z, r6.x
  ge r2.w, r2.w, l(0.000000)
  if_nz r2.w
    mul r2.y, r2.y, cb1[1].z
    mad r2.x, cb1[0].z, r2.x, r2.y
    mad r2.x, cb1[2].z, r2.z, r2.x
    add r2.x, r2.x, cb1[3].z
    mov r7.x, cb1[0].z
    mov r7.y, cb1[1].z
    mov r7.z, cb1[2].z
    dp3 r2.y, -r0.xyzx, -r7.xyzx
    rcp r2.y, r2.y
    mul r2.x, r2.y, |r2.x|
    lt r2.y, l(0.000000), r1.z
    mad r6.xzw, r1.zzzz, -r0.xxyz, r3.xxyz
    dp3 r1.z, r6.xzwx, r6.xzwx
    rsq r1.z, r1.z
    mul r7.xyz, r1.zzzz, r6.xzwx
    mov r7.w, cb2[1].x
    movc r7.xyzw, r2.yyyy, r7.xyzw, r5.xyzw
    movc r5.xyzw, r0.wwww, r7.xyzw, r5.xyzw
    dp3 r0.w, r5.xyzx, r0.xyzx
    mov r7.x, -r0.w
    rcp r1.z, r5.w
    mul r1.z, r1.z, cb2[0].x
    mad r1.z, -r1.z, r1.z, l(1.000000)
    max r1.z, r1.z, l(0.000000)
    sqrt r1.z, r1.z
    lt r2.y, |r2.x|, r6.y
    ge r2.z, r2.x, l(0.000000)
    and r2.z, r2.z, r2.y
    mad r3.xyz, |r2.xxxx|, -r0.xyzx, r3.xyzx
    dp3 r2.x, r3.xyzx, r3.xyzx
    sqrt r6.y, r2.x
    rcp r2.x, r6.y
    mul r8.xyz, r2.xxxx, r3.xyzx
    dp3 r2.w, r3.xyzx, -r0.xyzx
    mul r6.z, r2.x, r2.w
    ge r2.x, r6.z, l(0.000000)
    movc r6.x, r2.x, r7.x, r0.w
    and r3.xyz, r2.yyyy, r8.xyzx
    mov r7.yz, l(0,0,0,0)
    movc r6.xyz, r2.yyyy, r6.xyzx, r7.xyzx
    mul r2.xw, r5.wwww, cb2[2].xxxz
    mad r3.w, -r6.x, r6.x, l(1.000000)
    max r3.w, r3.w, l(0.000000)
    sqrt r3.w, r3.w
    mad r7.yz, r2.xxwx, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, 1.000000, 1.000000, 0.000000)
    mul r8.xy, |r6.xzxx|, |r6.xzxx|
    mul r8.zw, r2.xxxw, r8.xxxx
    mad r7.yz, -r8.xxxx, r2.xxwx, r7.yyzy
    mul r7.yz, r7.yyzy, l(0.000000, 0.761643, 0.761643, 0.000000)
    mad r8.xz, r8.zzwz, l(0.273828, 0.000000, 0.273828, 0.000000), l(1.477210, 0.000000, 1.477210, 0.000000)
    mul r8.xz, r2.xxwx, r8.xxzx
    sqrt r8.xz, r8.xxzx
    mad r8.xz, |r6.xxxx|, r2.xxwx, r8.xxzx
    mul r9.xy, |r6.xzxx|, l(0.500000, 0.500000, 0.000000, 0.000000)
    rcp r8.xz, r8.xxzx
    mad r7.yz, r7.yyzy, r8.xxzx, r9.xxxx
    mad r8.xz, cb2[0].xxxx, cb2[2].xxzx, -r2.xxwx
    mul r8.xz, r8.xxzx, l(1.442695, 0.000000, 1.442695, 0.000000)
    exp r8.xz, r8.xxzx
    mul r7.yz, r7.yyzy, r8.xxzx
    lt r4.w, r6.x, l(0.000000)
    mul r2.xw, r2.xxxw, r3.wwww
    rsq r6.xw, r2.xxxw
    dp2 r3.w, r2.xxxx, r6.xxxx
    add r3.w, r3.w, r6.x
    mul r3.w, r3.w, l(1.253314)
    mad r8.xz, cb2[0].xxxx, cb2[2].xxzx, -r2.xxwx
    mul r8.xz, r8.xxzx, l(1.442695, 0.000000, 1.442695, 0.000000)
    exp r8.xz, r8.xxzx
    mad r2.x, r3.w, r8.x, -r7.y
    movc r10.xyz, r4.wwww, r2.xxxx, r7.yyyy
    dp2 r2.x, r2.wwww, r6.wwww
    add r2.x, r2.x, r6.w
    mul r2.x, r2.x, l(1.253314)
    mad r2.x, r2.x, r8.z, -r7.z
    movc r10.w, r4.w, r2.x, r7.z
    mul r11.xyzw, r6.yyyy, cb2[2].xxxz
    mad r12.xyzw, r11.zzzw, l(2.000000, 2.000000, 2.000000, 2.000000), l(1.000000, 1.000000, 1.000000, 1.000000)
    mul r13.xyzw, r8.yyyy, r11.zzzw
    mad r8.xyzw, -r8.yyyy, r11.zzzw, r12.xyzw
    mul r8.xyzw, r8.xyzw, l(0.761643, 0.761643, 0.761643, 0.761643)
    mad r12.xyzw, r13.xyzw, l(0.273828, 0.273828, 0.273828, 0.273828), l(1.477210, 1.477210, 1.477210, 1.477210)
    mul r12.xyzw, r11.zzzw, r12.xyzw
    sqrt r12.xyzw, r12.xyzw
    mad r12.xyzw, |r6.zzzz|, r11.zzzw, r12.xyzw
    rcp r12.xyzw, r12.xyzw
    mad r8.xyzw, r8.xyzw, r12.xyzw, r9.yyyy
    mad r9.xyzw, cb2[0].xxxx, cb2[2].xxxz, -r11.xyzw
    mul r9.xyzw, r9.xyzw, l(1.442695, 1.442695, 1.442695, 1.442695)
    exp r9.xyzw, r9.xyzw
    mul r8.xyzw, r8.xyzw, r9.xyzw
    and r8.xyzw, r2.yyyy, r8.xyzw
    add r8.xyzw, -r8.xyzw, r10.xyzw
    mul r8.xyzw, |r8.xyzw|, cb2[2].yyyw
    mul r8.xyzw, r8.xyzw, cb2[3].xyzw
    add r2.xyw, r8.wwww, r8.xyxz
    mul r2.xyw, r2.xyxw, l(-1.442695, -1.442695, 0.000000, -1.442695)
    exp r2.xyw, r2.xyxw
    add r2.xyw, -r2.xyxw, l(1.000000, 1.000000, 0.000000, 1.000000)
    add r3.w, r5.w, -cb2[0].x
    mad r7.yzw, -r5.xxyz, r0.wwww, r0.xxyz
    dp3 r4.w, r7.yzwy, r7.yzwy
    add r5.w, r1.z, r7.x
    ge r6.x, r5.w, l(0.000000)
    movc r6.x, r6.x, l(1.000000), l(-1.000000)
    sqrt r5.w, |r5.w|
    mad r6.w, -r6.x, -r1.z, l(1.000000)
    rsq r6.w, r6.w
    mul r5.w, r5.w, r6.w
    max r5.w, r5.w, l(0.00781250000)
    mul r5.w, r5.w, r6.x
    mad_sat r8.x, r5.w, l(0.500000), l(0.500000)
    mul r3.w, r3.w, cb2[0].w
    sqrt r8.y, r3.w
    mad r3.w, cb2[1].y, cb2[1].y, l(1.000000)
    add r5.w, cb2[1].y, cb2[1].y
    add r6.x, r6.y, -cb2[0].x
    mad r9.xyz, -r3.xyzx, -r6.zzzz, r0.xyzx
    dp3 r6.w, r9.xyzx, r9.xyzx
    rcp r6.y, r6.y
    mul r6.y, r6.y, cb2[0].x
    mad r6.y, -r6.y, r6.y, l(1.000000)
    max r6.y, r6.y, l(0.000000)
    sqrt r6.y, r6.y
    add r6.z, r6.y, r6.z
    ge r9.w, r6.z, l(0.000000)
    movc r9.w, r9.w, l(1.000000), l(-1.000000)
    sqrt r6.z, |r6.z|
    mad r6.y, -r9.w, -r6.y, l(1.000000)
    rsq r6.y, r6.y
    mul r6.y, r6.y, r6.z
    max r6.y, r6.y, l(0.00781250000)
    mul r6.y, r6.y, r9.w
    mad_sat r10.x, r6.y, l(0.500000), l(0.500000)
    mul r6.x, r6.x, cb2[0].w
    sqrt r10.y, r6.x
    add r6.xyz, -r2.xywx, l(1.000000, 1.000000, 1.000000, 0.000000)
    mov r11.xyz, l(0,0,0,0)
    mov r9.w, l(0)
    loop
      uge r11.w, r9.w, cb1[346].x
      breakc_nz r11.w
      ld_structured_indexable(structured_buffer, stride=228)(mixed,mixed,mixed,mixed) r11.w, r9.w, l(168), t2.xxxx
      ilt r11.w, r11.w, l(0)
      if_nz r11.w
        iadd r11.w, r9.w, l(1)
        mov r9.w, r11.w
        continue
      endif
      ld_structured_indexable(structured_buffer, stride=228)(mixed,mixed,mixed,mixed) r12.xyz, r9.w, l(24), t2.xyzx
      ld_structured_indexable(structured_buffer, stride=228)(mixed,mixed,mixed,mixed) r13.xyz, r9.w, l(88), t2.xyzx
      dp3 r11.w, r5.xyzx, -r12.xyzx
      mad r14.xyz, -r5.xyzx, r11.wwww, -r12.xyzx
      dp3 r12.w, r14.xyzx, r7.yzwy
      dp3 r13.w, r14.xyzx, r14.xyzx
      mul r13.w, r4.w, r13.w
      max r13.w, r13.w, l(5.960464478E-008)
      rsq r13.w, r13.w
      mul r12.w, r12.w, r13.w
      max r12.w, r12.w, l(-1.000000)
      min r12.w, r12.w, l(1.000000)
      add r13.w, -|r12.w|, l(1.000000)
      sqrt r13.w, r13.w
      mad r14.x, |r12.w|, l(-0.0187292993), l(0.074261)
      mad r14.x, r14.x, |r12.w|, l(-0.212114394)
      mad r14.x, r14.x, |r12.w|, l(1.57072878)
      mul r14.y, r13.w, r14.x
      mad r14.y, r14.y, l(-2.000000), l(3.14159274)
      lt r12.w, r12.w, -r12.w
      and r12.w, r12.w, r14.y
      mad r12.w, r14.x, r13.w, r12.w
      mad r12.w, r12.w, l(4.774648), l(0.500000)
      max r11.w, r11.w, l(-0.500000)
      sqrt r13.w, |r11.w|
      ge r11.w, r11.w, l(0.000000)
      movc r11.w, r11.w, r13.w, -r13.w
      mad_sat r11.w, r11.w, l(0.585786), l(0.414214)
      mul r11.w, r11.w, l(63.000000)
      round_ni r13.w, r11.w
      mad r13.w, r12.w, l(0.062500), r13.w
      mul r8.z, r13.w, l(0.015625)
      round_pi r13.w, r11.w
      mad r12.w, r12.w, l(0.062500), r13.w
      mul r8.w, r12.w, l(0.015625)
      frc r11.w, r11.w
      dp3 r12.w, -r12.xyzx, r0.xyzx
      sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r8.xyzx, t5.xyzw, s0, l(0.000000)
      sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r8.xywx, t5.xyzw, s0, l(0.000000)
      add r15.xyz, -r14.xyzx, r15.xyzx
      mad r14.xyz, r11.wwww, r15.xyzx, r14.xyzx
      mad r13.w, r12.w, r12.w, l(1.000000)
      mul r14.w, r13.w, l(0.0596831031)
      sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r8.xyzx, t6.xyzw, s0, l(0.000000)
      sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r8.xywx, t6.xyzw, s0, l(0.000000)
      add r16.xyz, -r15.xyzx, r16.xyzx
      mad r15.xyz, r11.wwww, r16.xyzx, r15.xyzx
      mad r12.w, -r5.w, -r12.w, r3.w
      max r12.w, r12.w, l(5.960464478E-008)
      rsq r12.w, r12.w
      mul r15.w, r12.w, r12.w
      mul r12.w, r12.w, r15.w
      mul r12.w, r12.w, r13.w
      mul r12.w, r12.w, cb2[1].z
      mul r15.xyz, r12.wwww, r15.xyzx
      mad r14.xyz, r14.xyzx, r14.wwww, r15.xyzx
      sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r8.xyzx, t7.xyzw, s0, l(0.000000)
      sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r8.xywx, t7.xyzw, s0, l(0.000000)
      add r16.xyz, -r15.xyzx, r16.xyzx
      mad r15.xyz, r11.wwww, r16.xyzx, r15.xyzx
      add r14.xyz, r14.xyzx, r15.xyzx
      if_nz r2.z
        dp3 r8.z, r3.xyzx, -r12.xyzx
        mad r12.xyz, -r3.xyzx, r8.zzzz, -r12.xyzx
        dp3 r8.w, r12.xyzx, r9.xyzx
        dp3 r11.w, r12.xyzx, r12.xyzx
        mul r11.w, r6.w, r11.w
        max r11.w, r11.w, l(5.960464478E-008)
        rsq r11.w, r11.w
        mul r8.w, r8.w, r11.w
        max r8.zw, r8.zzzw, l(0.000000, 0.000000, -0.500000, -1.000000)
        min r8.w, r8.w, l(1.000000)
        add r11.w, -|r8.w|, l(1.000000)
        sqrt r11.w, r11.w
        mad r12.x, |r8.w|, l(-0.0187292993), l(0.074261)
        mad r12.x, r12.x, |r8.w|, l(-0.212114394)
        mad r12.x, r12.x, |r8.w|, l(1.57072878)
        mul r12.y, r11.w, r12.x
        mad r12.y, r12.y, l(-2.000000), l(3.14159274)
        lt r8.w, r8.w, -r8.w
        and r8.w, r8.w, r12.y
        mad r8.w, r12.x, r11.w, r8.w
        mad r8.w, r8.w, l(4.774648), l(0.500000)
        sqrt r11.w, |r8.z|
        ge r8.z, r8.z, l(0.000000)
        movc r8.z, r8.z, r11.w, -r11.w
        mad_sat r8.z, r8.z, l(0.585786), l(0.414214)
        mul r8.z, r8.z, l(63.000000)
        round_ni r11.w, r8.z
        mad r11.w, r8.w, l(0.062500), r11.w
        mul r10.z, r11.w, l(0.015625)
        round_pi r11.w, r8.z
        mad r8.w, r8.w, l(0.062500), r11.w
        mul r10.w, r8.w, l(0.015625)
        frc r8.z, r8.z
        sample_l_indexable(texture3d)(float,float,float,float) r12.xyz, r10.xyzx, t5.xyzw, s0, l(0.000000)
        sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r10.xywx, t5.xyzw, s0, l(0.000000)
        add r15.xyz, -r12.xyzx, r15.xyzx
        mad r12.xyz, r8.zzzz, r15.xyzx, r12.xyzx
        sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r10.xyzx, t6.xyzw, s0, l(0.000000)
        sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r10.xywx, t6.xyzw, s0, l(0.000000)
        add r16.xyz, -r15.xyzx, r16.xyzx
        mad r15.xyz, r8.zzzz, r16.xyzx, r15.xyzx
        mul r15.xyz, r12.wwww, r15.xyzx
        mad r12.xyz, r12.xyzx, r14.wwww, r15.xyzx
        sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r10.xyzx, t7.xyzw, s0, l(0.000000)
        sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r10.xywx, t7.xyzw, s0, l(0.000000)
        add r16.xyz, -r15.xyzx, r16.xyzx
        mad r15.xyz, r8.zzzz, r16.xyzx, r15.xyzx
        add r12.xyz, r12.xyzx, r15.xyzx
        mad r12.xyz, -r6.xyzx, r12.xyzx, r14.xyzx
        max r14.xyz, r12.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
      endif
      mad r11.xyz, r14.xyzx, r13.xyzx, r11.xyzx
      iadd r9.w, r9.w, l(1)
    endloop
    add r0.x, r11.y, r11.x
    add r0.x, r11.z, r0.x
    mul r0.y, r0.x, l(0.333333343)
    mad r3.xyz, -r0.xxxx, l(0.333333343, 0.333333343, 0.333333343, 0.000000), r11.xyzx
    mad r0.xyz, r3.xyzx, cb2[5].wwww, r0.yyyy
    add r2.y, r2.y, r2.x
    add r2.y, r2.w, r2.y
    mul r2.z, r2.y, l(0.333333343)
    mad r2.x, -r2.y, l(0.333333343), r2.x
    mad r2.x, r2.x, cb2[6].w, r2.z
    mul r2.x, r2.x, cb2[7].w
    add r2.y, -r1.z, l(1.000000)
    sqrt r2.y, r2.y
    mad r2.z, r1.z, l(-0.0187292993), l(0.074261)
    mad r2.z, r2.z, r1.z, l(-0.212114394)
    mad r2.z, r2.z, r1.z, l(1.57072878)
    mul r2.w, r2.y, r2.z
    mad r2.w, r2.w, l(-2.000000), l(3.14159274)
    lt r1.z, -r1.z, r1.z
    and r1.z, r1.z, r2.w
    mad r1.z, r2.z, r2.y, r1.z
    add r2.y, -|r0.w|, l(1.000000)
    sqrt r2.y, r2.y
    mad r2.z, |r0.w|, l(-0.0187292993), l(0.074261)
    mad r2.z, r2.z, |r0.w|, l(-0.212114394)
    mad r2.z, r2.z, |r0.w|, l(1.57072878)
    mul r2.w, r2.y, r2.z
    mad r2.w, r2.w, l(-2.000000), l(3.14159274)
    lt r0.w, r7.x, r0.w
    and r0.w, r0.w, r2.w
    mad r0.w, r2.z, r2.y, r0.w
    rcp r2.y, -r1.z
    mul r1.z, r1.z, r2.y
    mad_sat r0.w, r0.w, r2.y, -r1.z
    mul r0.w, r0.w, cb2[8].w
    mul r0.w, r0.w, l(1.442695)
    exp r0.w, r0.w
    mad r0.w, r0.w, cb2[9].w, -cb2[9].w
    add r2.yzw, -cb2[8].xxyz, cb2[9].xxyz
    mad r2.yzw, r0.wwww, r2.yyzw, cb2[8].xxyz
    mul r0.xyz, r0.xyzx, r2.yzwy
  else
    mov r0.xyz, l(0,0,0,0)
    mov r2.x, l(0)
  endif
  ld_indexable(texture2d)(float,float,float,float) r0.w, l(0, 0, 0, 0), t1.yzwx
  mul r0.w, r0.w, cb1[449].y
  mul r0.w, r0.w, cb2[4].w
  mul r0.xyz, r0.wwww, r0.xyzx
  add r2.yzw, -r4.xxyz, l(0.000000, 1.000000, 1.000000, 1.000000)
  mad o0.xyz, r2.yzwy, r0.xyzx, r1.xywx
  mad o0.w, r2.y, r2.x, r4.x
else
  mov o0.xyz, r1.xywx
  mov o0.w, r4.x
endif
ret
// Approximately 0 instruction slots used

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