// ---- Created with 3Dmigoto v1.3.16 on Tue May 09 14:31:15 2023
Buffer<float4> t5 : register(t5);

Buffer<float4> t4 : register(t4);

Texture3D<float4> t3 : register(t3);

Texture2D<float4> t2 : register(t2);

Texture2D<float4> t1 : register(t1);

TextureCube<float4> t0 : register(t0);

SamplerState s3_s : register(s3);

SamplerState s2_s : register(s2);

SamplerState s1_s : register(s1);

SamplerState s0_s : register(s0);

cbuffer cb4 : register(b4)
{
  float4 cb4[1];
}

cbuffer cb3 : register(b3)
{
  float4 cb3[20];
}

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

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

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




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


void main(
  float4 v0 : ATTRIBUTE0,
  uint v1 : SV_VertexID0,
  out float4 o0 : TEXCOORD10,
  out float4 o1 : TEXCOORD11,
  out float4 o2 : TEXCOORD0,
  out float4 o3 : GBX_VERTEX_FOG0,
  out float4 o4 : SV_POSITION0)
{
// Needs manual fix for instruction:
// unknown dcl_: dcl_input_sgv v1.x, vertex_id
  float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.x = (int)v1.x + asint(cb0[6].y);
  r0.y = (uint)r0.x << 1;
  r0.yzw = t5.Load(r0.y).xyz;
  bitmask.x = ((~(-1 << 31)) << 1) & 0xffffffff;  r1.x = (((uint)r0.x << 1) & bitmask.x) | ((uint)1 & ~bitmask.x);
  r1.xyzw = t5.Load(r1.x).xyzw;
  r2.xyz = r1.yzx * r0.yzw;
  r0.yzw = r1.xyz * r0.zwy + -r2.xyz;
  r0.yzw = r0.yzw * r1.www;
  r2.xyz = r0.yzw * r1.yzx;
  r0.yzw = r0.wyz * r1.zxy + -r2.xyz;
  r0.yzw = r0.yzw * r1.www;
  r2.xyz = cb3[16].xxx * cb3[0].xyz;
  r3.xyz = cb3[16].yyy * cb3[1].xyz;
  r4.xyz = cb3[16].zzz * cb3[2].xyz;
  r5.xyz = r3.xyz * r0.zzz;
  r5.xyz = r0.yyy * r2.xyz + r5.xyz;
  o0.xyz = r0.www * r4.xyz + r5.xyz;
  r0.yzw = r3.xyz * r1.yyy;
  r0.yzw = r1.xxx * r2.xyz + r0.yzw;
  o1.xyz = r1.zzz * r4.xyz + r0.yzw;
  o1.w = cb3[9].w * r1.w;
  r0.yzw = cb3[0].xyz * v0.xxx;
  r1.xyz = cb3[1].xyz * v0.yyy;
  r0.yzw = r1.xyz + r0.yzw;
  r1.xyz = cb3[2].xyz * v0.zzz;
  r0.yzw = r1.xyz + r0.yzw;
  r1.xyz = cb3[3].xyz + cb2[71].xyz;
  r0.yzw = r1.xyz + r0.yzw;
  r0.x = (int)r0.x * asint(cb4[0].y);
  r1.xy = t4.Load(r0.x).xy;
  r1.zw = cb3[8].yx + -cb2[68].yx;
  r0.x = min(abs(r1.z), abs(r1.w));
  r2.x = max(abs(r1.z), abs(r1.w));
  r2.x = 1 / r2.x;
  r0.x = r2.x * r0.x;
  r2.x = r0.x * r0.x;
  r2.y = 0.0208350997 * r2.x;
  r2.y = -0.0851330012 + r2.y;
  r2.y = r2.x * r2.y;
  r2.y = 0.180141002 + r2.y;
  r2.y = r2.x * r2.y;
  r2.y = -0.330299497 + r2.y;
  r2.x = r2.x * r2.y;
  r2.x = 0.999866009 + r2.x;
  r0.x = r2.x * r0.x;
  r2.x = cmp(abs(r1.w) < abs(r1.z));
  r2.y = -2 * r0.x;
  r2.y = 1.57079637 + r2.y;
  r2.x = r2.x ? r2.y : 0;
  r0.x = r2.x + r0.x;
  r2.x = cmp(r1.w < -r1.w);
  r2.x = r2.x ? -3.141593 : 0;
  r0.x = r2.x + r0.x;
  r2.x = min(r1.z, r1.w);
  r1.z = max(r1.z, r1.w);
  r1.w = cmp(r2.x < -r2.x);
  r1.z = cmp(r1.z >= -r1.z);
  r1.z = r1.z ? r1.w : 0;
  r0.x = r1.z ? -r0.x : r0.x;
  r0.x = 0.159199998 * r0.x;
  r0.x = -cb3[14].z + r0.x;
  r0.x = 0.5 + r0.x;
  r0.x = 6.28318548 * r0.x;
  r2.xyz = -cb2[71].xyz + r0.yzw;
  r3.xyz = -cb3[8].xyz + r2.xyz;
  r1.z = dot(float3(0,0,1), r3.xyz);
  r3.xyz = float3(0,0,1) * r1.zzz;
  r3.xyz = cb3[8].xyz + r3.xyz;
  r4.xyz = -r3.xyz + r2.xyz;
  r5.xyz = float3(0,1,0) * r4.zxy;
  r6.xyz = float3(1,0,0) * r4.yzx;
  r5.xyz = -r6.xyz + r5.xyz;
  sincos(r0.x, r0.x, r6.x);
  r4.xyz = r6.xxx * r4.xyz;
  r5.xyz = r5.xyz * r0.xxx;
  r4.xyz = r5.xyz + r4.xyz;
  r3.xyz = r4.xyz + r3.xyz;
  r2.xyz = r3.xyz + -r2.xyz;
  r0.xyz = r2.xyz + r0.yzw;
  r0.w = asuint(cb3[19].y) << 2;
  r2.xyzw = cb2[r0.w+0].xyzw * r0.xxxx;
  r3.xyzw = cb2[r0.w+1].xyzw * r0.yyyy;
  r2.xyzw = r3.xyzw + r2.xyzw;
  r3.xyzw = cb2[r0.w+2].xyzw * r0.zzzz;
  r2.xyzw = r3.xyzw + r2.xyzw;
  o4.xyzw = cb2[r0.w+3].xyzw + r2.xyzw;
  r0.xyz = -cb2[69].xyz + r0.xyz;
  r0.w = dot(r0.xyz, r0.xyz);
  r1.z = sqrt(r0.w);
  r2.xy = float2(9.99999975e-006,100) * cb2[169].xx;
  r1.w = -cb2[168].w + cb2[69].z;
  r3.z = cb2[169].y * r1.w;
  r3.xy = cb2[69].xy;
  r3.xyz = r3.xyz * r2.xxx;
  r3.w = 6360.00977 + r3.z;
  r1.w = dot(r3.xyw, r3.xyw);
  r4.z = sqrt(r1.w);
  r2.z = rsqrt(r0.w);
  r5.xyz = r2.zzz * r0.xyz;
  r2.w = dot(r3.xyw, r5.xyz);
  r4.w = r2.w / r4.z;
  r3.z = r4.w * r4.w;
  r3.z = -1 + r3.z;
  r1.w = r3.z * r1.w;
  r6.xy = float2(40449600,41344900) + r1.ww;
  r6.xy = sqrt(r6.xy);
  r6.xy = -r6.xy + -r2.ww;
  r1.w = r2.x * r1.z;
  r2.x = -cb2[169].w + r1.w;
  r2.x = max(0, r2.x);
  r3.z = 0.100000001 * r2.x;
  r3.z = r3.z / cb2[169].w;
  r3.z = min(1, r3.z);
  r2.y = cmp(r1.w < r2.y);
  r7.y = cb2[168].x * r3.z;
  r1.w = cb2[170].x + r1.w;
  r7.x = max(1, r1.w);
  r6.z = 1;
  r4.xy = r2.yy ? r7.xy : r6.xz;
  r1.w = cmp(0 < r6.y);
  r6.xzw = r6.yyy * r5.xyz;
  r6.xzw = r6.xzw + r3.xyw;
  r7.x = r4.x + -r6.y;
  r2.w = r6.y + r2.w;
  r7.z = 0.000155520989 * r2.w;
  r6.xyz = r1.www ? r6.xzw : r3.xyw;
  r7.y = 6430;
  r7.xyz = r1.www ? r7.xyz : r4.xzw;
  r1.w = cmp(r7.y < 6360.01465);
  r2.w = 6360.01465 + -r7.y;
  r8.xyz = r2.www * r5.xyz;
  r8.xyz = -r8.xyz + r6.xyz;
  r9.x = r7.x + -r2.w;
  r2.w = dot(r8.xyz, r5.xyz);
  r9.z = 0.000157232338 * r2.w;
  r9.y = 6360.01465;
  r7.xyz = r1.www ? r9.xyz : r7.xyz;
  r2.w = cmp(6430 >= r7.y);
  r2.x = cmp(0 < r2.x);
  r2.x = r2.x ? r2.w : 0;
  if (r2.x != 0) {
    r6.xyz = r1.www ? r8.xyz : r6.xyz;
    r1.w = dot(r5.xyz, cb2[167].xyz);
    r2.x = dot(r6.xyz, cb2[167].xyz);
    r2.x = r2.x / r7.y;
    r2.w = 6360 / r7.y;
    r2.w = r2.w * r2.w;
    r2.w = 1 + -r2.w;
    r2.w = sqrt(r2.w);
    r3.z = 0.00499999989 + -r2.w;
    r6.w = 0.150000006 + r3.z;
    r6.w = max(r7.z, r6.w);
    r7.z = max(r7.z, r3.z);
    r8.x = r2.y ? r6.w : r7.z;
    r6.w = 1.44269502 * -r5.z;
    r6.w = exp2(r6.w);
    r9.y = saturate(-0.5 + r6.w);
    r6.w = cmp(r9.y < 1);
    r5.w = max(0.150000006, r5.z);
    r7.z = dot(r5.xyw, r5.xyw);
    r7.z = rsqrt(r7.z);
    r10.xyz = r7.zzz * r5.xyw;
    r11.xyz = r10.xyz * r7.xxx;
    r11.xyz = r11.xyz + r6.xyz;
    r5.w = dot(r11.xyz, r11.xyz);
    r5.w = sqrt(r5.w);
    r7.z = dot(r11.xyz, r10.xyz);
    r10.w = r7.z / r5.w;
    r8.yzw = r5.xyz;
    r10.xyzw = r6.wwww ? r10.xyzw : r8.yzwx;
    r9.x = r10.w;
    r8.y = 0;
    r9.xy = r2.yy ? r9.xy : r8.xy;
    r5.w = r1.w * r1.w + 1;
    r6.w = 0.0596831031 * r5.w;
    r7.z = -r1.w * 1.60000002 + 1.63999999;
    r7.z = log2(abs(r7.z));
    r7.z = -1.5 * r7.z;
    r7.z = exp2(r7.z);
    r5.w = r7.z * r5.w;
    r11.x = 0.0162772108 * r5.w;
    r5.w = r7.y * r7.y;
    r7.z = r7.y * r7.y + -40449600;
    r7.z = sqrt(r7.z);
    r7.w = r9.x * r7.y;
    r8.y = r7.w * r7.w;
    r8.y = r8.y + -r5.w;
    r8.y = 40449600 + r8.y;
    r8.z = cmp(r7.w < 0);
    r8.w = cmp(0 < r8.y);
    r8.z = r8.w ? r8.z : 0;
    r12.xyzw = r8.zzzz ? float4(1,0,0,0.49609375) : float4(-1,895300,946.202942,0.50390625);
    r8.z = asuint(cb2[170].w);
    r8.w = 0.5 / r8.z;
    r9.w = 0.00105685578 * r7.z;
    r8.z = 1 / r8.z;
    r8.z = 1 + -r8.z;
    r13.z = r9.w * r8.z + r8.w;
    r8.y = r12.y + r8.y;
    r8.y = sqrt(r8.y);
    r7.w = r7.w * r12.x + r8.y;
    r8.y = r12.z + r7.z;
    r7.w = r7.w / r8.y;
    r13.w = r7.w * 0.4921875 + r12.w;
    r7.w = max(-0.197500005, r2.x);
    r7.w = 5.34962368 * r7.w;
    r8.y = min(1, abs(r7.w));
    r9.w = max(1, abs(r7.w));
    r9.w = 1 / r9.w;
    r8.y = r9.w * r8.y;
    r9.w = r8.y * r8.y;
    r10.w = r9.w * 0.0208350997 + -0.0851330012;
    r10.w = r9.w * r10.w + 0.180141002;
    r10.w = r9.w * r10.w + -0.330299497;
    r9.w = r9.w * r10.w + 0.999866009;
    r10.w = r9.w * r8.y;
    r12.x = cmp(1 < abs(r7.w));
    r10.w = r10.w * -2 + 1.57079637;
    r10.w = r12.x ? r10.w : 0;
    r8.y = r8.y * r9.w + r10.w;
    r7.w = min(1, r7.w);
    r7.w = cmp(r7.w < -r7.w);
    r7.w = r7.w ? -r8.y : r8.y;
    r7.w = r7.w * 0.909090877 + 0.74000001;
    r7.w = r7.w * 0.484375 + 0.015625;
    r1.w = 1 + r1.w;
    r8.y = 3.5 * r1.w;
    r8.y = floor(r8.y);
    r1.w = r1.w * 3.5 + -r8.y;
    r7.w = r8.y + r7.w;
    r13.y = 0.125 * r7.w;
    r12.xyzw = t3.SampleLevel(s3_s, r13.ywz, 0).xyzw;
    r9.w = 1 + -r1.w;
    r7.w = 1 + r7.w;
    r13.x = 0.125 * r7.w;
    r14.xyzw = t3.SampleLevel(s3_s, r13.xwz, 0).xyzw;
    r14.xyzw = r14.xyzw * r1.wwww;
    r12.xyzw = r12.xyzw * r9.wwww + r14.xyzw;
    r12.xyzw = max(float4(0,0,0,0), r12.xyzw);
    r7.w = cmp(0 < r7.x);
    if (r7.w != 0) {
      r14.xyz = r7.xxx * r5.xyz;
      r6.xyz = r14.xyz + r6.xyz;
      r7.w = dot(r6.xyz, r6.xyz);
      r7.w = sqrt(r7.w);
      r10.w = 0.5 / cb2[169].z;
      r10.w = r10.w * r7.y;
      r10.w = sqrt(r10.w);
      r14.x = r7.x / r7.y;
      r9.z = r14.x + r9.x;
      r14.xy = r10.ww * r9.xz;
      r14.zw = cmp(float2(0,0) < r14.xy);
      r15.xy = cmp(r14.xy < float2(0,0));
      r14.zw = (int2)-r14.zw + (int2)r15.xy;
      r14.zw = (int2)r14.zw;
      r15.xyz = r14.xxy * r14.xxy;
      r10.w = cmp(r14.z < r14.w);
      r15.x = 1.44269502 * r15.x;
      r15.x = exp2(r15.x);
      r10.w = r10.w ? r15.x : 0;
      r15.xy = r15.yz * float2(1.51999998,1.51999998) + float2(4,4);
      r15.xy = sqrt(r15.xy);
      r14.xy = abs(r14.xy) * float2(2.31929994,2.31929994) + r15.xy;
      r14.xy = r14.zw / r14.xy;
      r14.z = -r7.x / cb2[169].z;
      r15.xyz = float3(2,0.416666657,7.53972054) * r7.yyy;
      r14.w = r7.x / r15.x;
      r14.w = r14.w + r9.x;
      r14.z = r14.z * r14.w;
      r14.z = 1.44269502 * r14.z;
      r16.y = exp2(r14.z);
      r16.xz = float2(1,1);
      r14.xy = r16.xy * r14.xy;
      r14.z = 6.28310013 * cb2[169].z;
      r14.z = r14.z * r7.y;
      r14.z = sqrt(r14.z);
      r15.w = 6360 + -r7.y;
      r16.x = r15.w / cb2[169].z;
      r16.x = 1.44269502 * r16.x;
      r16.x = exp2(r16.x);
      r14.z = r16.x * r14.z;
      r14.x = dot(r14.xy, float2(1,-1));
      r10.w = r14.x + r10.w;
      r10.w = r14.z * r10.w;
      r14.xy = sqrt(r15.yz);
      r14.xz = r14.xx * r9.xz;
      r15.yz = cmp(float2(0,0) < r14.xz);
      r16.xy = cmp(r14.xz < float2(0,0));
      r15.yz = (int2)-r15.yz + (int2)r16.xy;
      r15.yz = (int2)r15.yz;
      r17.xyz = r14.xxz * r14.xxz;
      r9.z = cmp(r15.y < r15.z);
      r16.x = 1.44269502 * r17.x;
      r16.x = exp2(r16.x);
      r9.z = r9.z ? r16.x : 0;
      r16.xy = r17.yz * float2(1.51999998,1.51999998) + float2(4,4);
      r16.xy = sqrt(r16.xy);
      r14.xz = abs(r14.xz) * float2(2.31929994,2.31929994) + r16.xy;
      r14.xz = r15.yz / r14.xz;
      r14.w = r14.w * -r7.x;
      r14.w = 1.20224583 * r14.w;
      r16.w = exp2(r14.w);
      r14.xz = r16.zw * r14.xz;
      r14.w = 1.20224583 * r15.w;
      r14.w = exp2(r14.w);
      r14.y = r14.y * r14.w;
      r14.x = dot(r14.xz, float2(1,-1));
      r9.z = r14.x + r9.z;
      r9.z = r14.y * r9.z;
      r9.z = 0.00444444455 * r9.z;
      r14.xyz = r10.www * float3(-0.00579999993,-0.0135000004,-0.0331000015) + -r9.zzz;
      r14.xyz = float3(1.44269502,1.44269502,1.44269502) * r14.xyz;
      r14.xyz = exp2(r14.xyz);
      r9.z = max(r7.w, r7.y);
      r9.z = r2.y ? r9.z : r7.w;
      r10.w = cmp(6360.00977 < r9.z);
      if (r10.w != 0) {
        r10.w = cmp(r9.y < 1);
        if (r10.w != 0) {
          r10.xyz = r2.yyy ? r10.xyz : r5.xyz;
          r10.x = dot(r6.xyz, r10.xyz);
          r10.x = r10.x / r7.w;
          r6.x = dot(r6.xyz, cb2[167].xyz);
          r6.x = r6.x / r7.w;
          r6.y = r9.z * r9.z;
          r6.z = r9.z * r9.z + -40449600;
          r6.z = sqrt(r6.z);
          r7.w = r10.x * r9.z;
          r9.z = r7.w * r7.w;
          r6.y = r9.z + -r6.y;
          r6.y = 40449600 + r6.y;
          r9.z = cmp(r7.w < 0);
          r10.x = cmp(0 < r6.y);
          r9.z = r9.z ? r10.x : 0;
          r10.xyzw = r9.zzzz ? float4(1,0,0,0.49609375) : float4(-1,895300,946.202942,0.50390625);
          r9.z = r6.z * r8.z;
          r16.y = r9.z * 0.00105685578 + r8.w;
          r6.yz = r10.yz + r6.yz;
          r6.y = sqrt(r6.y);
          r6.y = r7.w * r10.x + r6.y;
          r6.y = r6.y / r6.z;
          r16.x = r6.y * 0.4921875 + r10.w;
          r6.x = max(-0.197500005, r6.x);
          r6.x = 5.34962368 * r6.x;
          r6.y = min(1, abs(r6.x));
          r6.z = max(1, abs(r6.x));
          r6.z = 1 / r6.z;
          r6.y = r6.y * r6.z;
          r6.z = r6.y * r6.y;
          r7.w = r6.z * 0.0208350997 + -0.0851330012;
          r7.w = r6.z * r7.w + 0.180141002;
          r7.w = r6.z * r7.w + -0.330299497;
          r6.z = r6.z * r7.w + 0.999866009;
          r7.w = r6.y * r6.z;
          r9.z = cmp(1 < abs(r6.x));
          r7.w = r7.w * -2 + 1.57079637;
          r7.w = r9.z ? r7.w : 0;
          r6.y = r6.y * r6.z + r7.w;
          r6.x = min(1, r6.x);
          r6.x = cmp(r6.x < -r6.x);
          r6.x = r6.x ? -r6.y : r6.y;
          r6.x = r6.x * 0.909090877 + 0.74000001;
          r6.x = r6.x * 0.484375 + r8.y;
          r6.xy = float2(0.015625,1.015625) + r6.xx;
          r16.zw = float2(0.125,0.125) * r6.xy;
          r10.xyzw = t3.SampleLevel(s3_s, r16.zxy, 0).xyzw;
          r17.xyzw = t3.SampleLevel(s3_s, r16.wxy, 0).xyzw;
          r17.xyzw = r17.xyzw * r1.wwww;
          r10.xyzw = r10.xyzw * r9.wwww + r17.xyzw;
          r10.xyzw = -r14.xyzx * r10.xyzw + r12.xyzw;
          r12.xyzw = max(float4(0,0,0,0), r10.xyzw);
          if (r2.y == 0) {
            r6.x = r9.x + r2.w;
            r6.y = cmp(abs(r6.x) < 0.00499999989);
            if (r6.y != 0) {
              r6.x = 0.00499999989 + r6.x;
              r6.x = 100 * r6.x;
              r2.w = -0.00499999989 + -r2.w;
              r6.y = r7.x * r7.x;
              r6.y = r6.y + r5.w;
              r6.z = r15.x * r7.x;
              r7.w = r6.z * r2.w;
              r7.w = r7.w + r6.y;
              r7.w = sqrt(r7.w);
              r2.w = r7.y * r2.w;
              r8.y = r2.w + r7.x;
              r8.y = r8.y / r7.w;
              r8.y = max(r8.y, r3.z);
              r9.x = r2.w * r2.w;
              r9.x = r9.x + -r5.w;
              r9.x = 40449600 + r9.x;
              r9.z = cmp(r2.w < 0);
              r10.x = cmp(0 < r9.x);
              r9.z = r9.z ? r10.x : 0;
              r10.xyzw = r9.zzzz ? float4(1,0,0,0.49609375) : float4(-1,895300,946.202942,0.50390625);
              r9.x = r10.y + r9.x;
              r9.x = sqrt(r9.x);
              r2.w = r2.w * r10.x + r9.x;
              r9.x = r10.z + r7.z;
              r2.w = r2.w / r9.x;
              r10.x = r2.w * 0.4921875 + r10.w;
              r10.yz = r13.yz;
              r15.xyzw = t3.SampleLevel(s3_s, r10.yxz, 0).xyzw;
              r13.y = r10.x;
              r17.xyzw = t3.SampleLevel(s3_s, r13.xyz, 0).xyzw;
              r17.xyzw = r17.xyzw * r1.wwww;
              r15.xyzw = r15.xyzw * r9.wwww + r17.xyzw;
              r2.w = r7.w * r7.w;
              r9.x = r7.w * r7.w + -40449600;
              r9.x = sqrt(r9.x);
              r7.w = r8.y * r7.w;
              r8.y = r7.w * r7.w;
              r2.w = r8.y + -r2.w;
              r2.w = 40449600 + r2.w;
              r8.y = cmp(r7.w < 0);
              r9.z = cmp(0 < r2.w);
              r8.y = r8.y ? r9.z : 0;
              r17.xyzw = r8.yyyy ? float4(1,0,0,0.49609375) : float4(-1,895300,946.202942,0.50390625);
              r8.y = r9.x * r8.z;
              r16.y = r8.y * 0.00105685578 + r8.w;
              r2.w = r17.y + r2.w;
              r2.w = sqrt(r2.w);
              r2.w = r7.w * r17.x + r2.w;
              r7.w = r17.z + r9.x;
              r2.w = r2.w / r7.w;
              r16.x = r2.w * 0.4921875 + r17.w;
              r17.xyzw = t3.SampleLevel(s3_s, r16.zxy, 0).xyzw;
              r18.xyzw = t3.SampleLevel(s3_s, r16.wxy, 0).xyzw;
              r18.xyzw = r18.xyzw * r1.wwww;
              r17.xyzw = r17.xyzw * r9.wwww + r18.xyzw;
              r15.xyzw = -r14.xyzx * r17.xyzw + r15.xyzw;
              r15.xyzw = max(float4(0,0,0,0), r15.xyzw);
              r2.w = r6.z * r3.z;
              r2.w = r6.y + r2.w;
              r2.w = sqrt(r2.w);
              r6.y = r7.y * r3.z;
              r6.z = r6.y + r7.x;
              r6.z = r6.z / r2.w;
              r3.z = max(r6.z, r3.z);
              r6.z = r6.y * r6.y;
              r6.z = r6.z + -r5.w;
              r6.z = 40449600 + r6.z;
              r7.x = cmp(r6.y < 0);
              r7.w = cmp(0 < r6.z);
              r7.x = r7.w ? r7.x : 0;
              r17.xyzw = r7.xxxx ? float4(1,0,0,0.49609375) : float4(-1,895300,946.202942,0.50390625);
              r6.z = r17.y + r6.z;
              r6.z = sqrt(r6.z);
              r6.y = r6.y * r17.x + r6.z;
              r6.z = r17.z + r7.z;
              r6.y = r6.y / r6.z;
              r10.w = r6.y * 0.4921875 + r17.w;
              r17.xyzw = t3.SampleLevel(s3_s, r10.ywz, 0).xyzw;
              r13.w = r10.w;
              r10.xyzw = t3.SampleLevel(s3_s, r13.xwz, 0).xyzw;
              r10.xyzw = r10.xyzw * r1.wwww;
              r10.xyzw = r17.xyzw * r9.wwww + r10.xyzw;
              r6.y = r2.w * r2.w;
              r6.z = r2.w * r2.w + -40449600;
              r6.z = sqrt(r6.z);
              r2.w = r3.z * r2.w;
              r3.z = r2.w * r2.w;
              r3.z = r3.z + -r6.y;
              r3.z = 40449600 + r3.z;
              r6.y = cmp(r2.w < 0);
              r7.x = cmp(0 < r3.z);
              r6.y = r6.y ? r7.x : 0;
              r17.xyzw = r6.yyyy ? float4(1,0,0,0.49609375) : float4(-1,895300,946.202942,0.50390625);
              r6.y = r6.z * r8.z;
              r16.y = r6.y * 0.00105685578 + r8.w;
              r3.z = r17.y + r3.z;
              r3.z = sqrt(r3.z);
              r2.w = r2.w * r17.x + r3.z;
              r3.z = r17.z + r6.z;
              r2.w = r2.w / r3.z;
              r16.x = r2.w * 0.4921875 + r17.w;
              r17.xyzw = t3.SampleLevel(s3_s, r16.zxy, 0).xyzw;
              r16.xyzw = t3.SampleLevel(s3_s, r16.wxy, 0).xyzw;
              r16.xyzw = r16.xyzw * r1.wwww;
              r16.xyzw = r17.xyzw * r9.wwww + r16.xyzw;
              r10.xyzw = -r14.xyzx * r16.xyzw + r10.xyzw;
              r10.xyzw = max(float4(0,0,0,0), r10.xyzw);
              r10.xyzw = r10.xyzw + -r15.xyzw;
              r12.xyzw = r6.xxxx * r10.xyzw + r15.xyzw;
            }
          } else {
            r2.w = cmp(0 < r9.y);
            if (r2.w != 0) {
              r10.xyzw = float4(1,1,1,1) + -r14.xyzx;
              r2.w = r8.x * r7.y;
              r3.z = r2.w * r2.w;
              r3.z = r3.z + -r5.w;
              r3.z = 40449600 + r3.z;
              r5.w = cmp(r2.w < 0);
              r6.x = cmp(0 < r3.z);
              r5.w = r5.w ? r6.x : 0;
              r8.xyzw = r5.wwww ? float4(1,0,0,0.49609375) : float4(-1,895300,946.202942,0.50390625);
              r3.z = r8.y + r3.z;
              r3.z = sqrt(r3.z);
              r2.w = r2.w * r8.x + r3.z;
              r3.z = r8.z + r7.z;
              r2.w = r2.w / r3.z;
              r6.y = r2.w * 0.4921875 + r8.w;
              r6.xz = r13.yz;
              r7.xyzw = t3.SampleLevel(s3_s, r6.xyz, 0).xyzw;
              r6.xz = r13.xz;
              r8.xyzw = t3.SampleLevel(s3_s, r6.xyz, 0).xyzw;
              r8.xyzw = r8.xyzw * r1.wwww;
              r7.xyzw = r7.xyzw * r9.wwww + r8.xyzw;
              r7.xyzw = max(float4(0,0,0,0), r7.xyzw);
              r7.xyzw = r10.xyzw * r7.xyzw + -r12.xyzw;
              r12.xyzw = r9.yyyy * r7.xyzw + r12.xyzw;
            }
          }
        } else {
          r7.xyzw = float4(1,1,1,1) + -r14.xyzx;
          r12.xyzw = r7.xyzw * r12.xyzw;
        }
      }
    } else {
      r14.xyz = float3(1,1,1);
    }
    r1.w = saturate(50 * r2.x);
    r2.x = r1.w * -2 + 3;
    r1.w = r1.w * r1.w;
    r1.w = r2.x * r1.w;
    r1.w = r12.w * r1.w;
    r6.xyz = r12.xyz * r1.www;
    r1.w = max(9.99999975e-005, r12.x);
    r6.xyz = r6.xyz / r1.www;
    r11.yzw = float3(1,0.429629624,0.175226584);
    r6.xyz = r6.xyz * r11.yxx;
    r6.xyz = r6.xyz * r11.xzw;
    r6.xyz = r12.xyz * r6.www + r6.xyz;
    r6.xyz = max(float3(0,0,0), r6.xyz);
  } else {
    r14.xyz = float3(1,1,1);
    r6.xyz = float3(0,0,0);
  }
  r2.xw = asint(cb2[170].zz) & int2(2,1);
  if (r2.x == 0) {
    r1.w = cmp(0 < r4.x);
    if (r1.w != 0) {
      r7.xyz = r4.xxx * r5.xyz;
      r3.xyz = r7.xyz + r3.xyw;
      r1.w = dot(r3.xyz, r3.xyz);
      r1.w = sqrt(r1.w);
      r3.xyz = r3.xyz / r1.www;
      r2.x = dot(r3.xyz, cb2[167].xyz);
      r1.w = -6360 + r1.w;
      r7.z = 0.0142857144 * r1.w;
      r8.y = sqrt(r7.z);
      r8.zw = float2(0.150000006,0.200000003) + r2.xx;
      r7.xy = float2(0.869565248,0.833333313) * r8.zw;
      r1.w = 14.1014204 * r7.x;
      r3.w = min(1, abs(r1.w));
      r5.w = max(1, abs(r1.w));
      r5.w = 1 / r5.w;
      r3.w = r5.w * r3.w;
      r5.w = r3.w * r3.w;
      r6.w = 0.0208350997 * r5.w;
      r6.w = -0.0851330012 + r6.w;
      r6.w = r6.w * r5.w;
      r6.w = 0.180141002 + r6.w;
      r6.w = r6.w * r5.w;
      r6.w = -0.330299497 + r6.w;
      r5.w = r6.w * r5.w;
      r5.w = 0.999866009 + r5.w;
      r3.w = r5.w * r3.w;
      r5.w = cmp(1 < abs(r1.w));
      r6.w = -2 * r3.w;
      r6.w = 1.57079637 + r6.w;
      r5.w = r5.w ? r6.w : 0;
      r3.w = r5.w + r3.w;
      r1.w = min(1, r1.w);
      r1.w = cmp(r1.w < -r1.w);
      r1.w = r1.w ? -r3.w : r3.w;
      r8.x = 0.666666687 * r1.w;
      r8.xyz = t1.SampleLevel(s1_s, r8.xy, 0).xyz;
      r8.xyz = r2.yyy ? float3(0,0,0) : r8.xyz;
      r7.xyz = t2.SampleLevel(s2_s, r7.yz, 0).xyz;
      r1.w = max(0, r2.x);
      r7.xyz = r1.www * r8.xyz + r7.xyz;
      r7.xyz = float3(0.00318309898,0.00318309898,0.00318309898) * r7.xyz;
      r9.xyz = -r0.xyz * r2.zzz + cb2[167].xyz;
      r1.w = dot(r9.xyz, r9.xyz);
      r1.w = rsqrt(r1.w);
      r9.xyz = r9.xyz * r1.www;
      r1.w = dot(-r5.xyz, r9.xyz);
      r1.w = 1 + -r1.w;
      r2.x = r1.w * r1.w;
      r2.x = r2.x * r2.x;
      r1.w = r2.x * r1.w;
      r1.w = r1.w * 0.980000019 + 0.0199999996;
      r2.x = dot(r9.xyz, r3.xyz);
      r2.x = max(0, r2.x);
      r2.x = log2(r2.x);
      r2.x = 150 * r2.x;
      r2.x = exp2(r2.x);
      r1.w = r2.x * r1.w;
      r1.w = max(0, r1.w);
      r3.xyz = r1.www * r8.xyz + r7.xyz;
      r3.xyz = r2.yyy ? r7.xyz : r3.xyz;
      r3.xyz = r14.xyz * r3.xyz;
    } else {
      r3.xyz = float3(0,0,0);
    }
  } else {
    r3.xyz = float3(0,0,0);
  }
  if (r2.w == 0) {
    r1.w = cmp(6430 >= r4.z);
    r2.xy = float2(-6360,0.150000006) + r4.zw;
    r2.xy = float2(0.0142857144,0.869565248) * r2.xy;
    r7.y = sqrt(r2.x);
    r2.x = 14.1014204 * r2.y;
    r2.y = min(1, abs(r2.x));
    r2.w = max(1, abs(r2.x));
    r2.w = 1 / r2.w;
    r2.y = r2.y * r2.w;
    r2.w = r2.y * r2.y;
    r3.w = 0.0208350997 * r2.w;
    r3.w = -0.0851330012 + r3.w;
    r3.w = r3.w * r2.w;
    r3.w = 0.180141002 + r3.w;
    r3.w = r3.w * r2.w;
    r3.w = -0.330299497 + r3.w;
    r2.w = r3.w * r2.w;
    r2.w = 0.999866009 + r2.w;
    r2.y = r2.y * r2.w;
    r2.w = cmp(1 < abs(r2.x));
    r3.w = -2 * r2.y;
    r3.w = 1.57079637 + r3.w;
    r2.w = r2.w ? r3.w : 0;
    r2.y = r2.w + r2.y;
    r2.x = min(1, r2.x);
    r2.x = cmp(r2.x < -r2.x);
    r2.x = r2.x ? -r2.y : r2.y;
    r7.x = 0.666666687 * r2.x;
    r2.xyw = t1.SampleLevel(s1_s, r7.xy, 0).xyz;
    r2.xyw = r1.www ? r2.xyw : float3(1,1,1);
    r1.w = cmp(0 < r4.x);
    r3.w = 3.14159274 * cb2[170].y;
    r3.w = 0.00555555569 * r3.w;
    r3.w = cos(r3.w);
    r4.x = dot(r5.xyz, cb2[167].xyz);
    r3.w = cmp(r4.x >= r3.w);
    r3.w = r3.w ? 1.000000 : 0;
    r2.xyw = r3.www * r2.xyw;
    r2.xyw = r1.www ? float3(0,0,0) : r2.xyw;
  } else {
    r2.xyw = float3(0,0,0);
  }
  r2.xyw = r2.xyw + r3.xyz;
  r2.xyw = r2.xyw + r6.xyz;
  r1.w = cb2[167].w * r4.y;
  r3.xyz = cb2[171].xyz * r1.www;
  r2.xyw = r3.xyz * r2.xyw;
  r1.w = dot(r0.xyz, cb2[60].xyz);
  r1.z = r1.z / r1.w;
  r1.z = cb2[199].z * r1.z;
  r1.z = max(0, r1.z);
  r0.w = r2.z * r0.w;
  r1.z = max(cb1[87].w, r1.z);
  r1.w = cmp(0 < r1.z);
  r3.x = cmp(asint(cb1[94].z) == 1);
  r3.y = cb2[68].z + cb1[94].w;
  r3.x = r3.x ? r3.y : cb1[89].y;
  r1.z = r1.z * r2.z;
  r2.z = r1.z * r0.z;
  r3.y = cb2[68].z + r2.z;
  r2.z = -r2.z + r0.z;
  r1.z = 1 + -r1.z;
  r1.z = r1.z * r0.w;
  r3.x = r3.y + -r3.x;
  r3.x = cb1[87].y * r3.x;
  r3.x = max(-127, r3.x);
  r3.x = exp2(-r3.x);
  r3.x = cb1[89].x * r3.x;
  r3.x = r1.w ? r3.x : cb1[87].x;
  r1.z = r1.w ? r1.z : r0.w;
  r1.w = r1.w ? r2.z : r0.z;
  r1.w = cb1[87].y * r1.w;
  r1.w = max(-127, r1.w);
  r2.z = exp2(-r1.w);
  r2.z = 1 + -r2.z;
  r2.z = r2.z / r1.w;
  r3.y = 0.240226507 * r1.w;
  r3.y = 0.693147182 + -r3.y;
  r1.w = cmp(0.00999999978 < abs(r1.w));
  r1.w = r1.w ? r2.z : r3.y;
  r1.w = r3.x * r1.w;
  r2.z = r1.w * r1.z;
  r3.xy = cmp(float2(0,0) < cb1[89].zw);
  if (r3.x != 0) {
    r3.x = saturate(r0.w * cb1[91].x + cb1[91].y);
    r3.zw = float2(1,-1) * cb1[90].yx;
    r4.x = dot(r0.xy, r3.zw);
    r4.y = dot(r0.xy, cb1[90].xy);
    r4.z = r0.z;
    r0.xyz = t0.SampleLevel(s0_s, r4.xyz, 0).xyz;
    r4.xyz = t0.SampleLevel(s0_s, r4.xyz, cb1[91].z).xyz;
    r0.xyz = -r4.xyz + r0.xyz;
    r0.xyz = r3.xxx * r0.xyz + r4.xyz;
    r0.xyz = cb1[88].xyz * r0.xyz;
  } else {
    r0.xyz = cb1[88].xyz;
  }
  r3.x = cmp(0 < cb1[92].w);
  r3.z = cmp(cb1[89].z == 0.000000);
  r3.x = r3.z ? r3.x : 0;
  r3.z = saturate(dot(r5.xyz, cb1[92].xyz));
  r3.z = log2(r3.z);
  r3.z = cb1[93].w * r3.z;
  r3.z = exp2(r3.z);
  r4.xyz = cb1[93].xyz * r3.zzz;
  r1.z = -cb1[94].x + r1.z;
  r1.z = max(0, r1.z);
  r1.z = r1.w * r1.z;
  r1.z = exp2(-r1.z);
  r1.z = min(1, r1.z);
  r1.z = 1 + -r1.z;
  r4.xyz = r4.xyz * r1.zzz;
  r4.xyz = r3.xxx ? r4.xyz : 0;
  r1.z = exp2(-r2.z);
  r1.z = min(1, r1.z);
  r4.w = max(cb1[88].w, r1.z);
  r0.w = cmp(cb1[89].w < r0.w);
  r0.w = r0.w ? r3.y : 0;
  r3.xyzw = r0.wwww ? float4(0,0,0,1) : r4.xyzw;
  r0.w = 1 + -r3.w;
  r0.xyz = r0.xyz * r0.www + r3.xyz;
  o3.xyz = r2.xyw * r3.www + r0.xyz;
  o0.w = 0;
  o2.xy = r1.xy;
  o2.zw = float2(0,0);
  o3.w = r3.w;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.3.16 on Tue May 09 14:31:15 2023
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// ATTRIBUTE                0   xyzw        0     NONE   float   xyz
// SV_VertexID              0   x           1   VERTID    uint   x
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD                10   xyzw        0     NONE   float   xyzw
// TEXCOORD                11   xyzw        1     NONE   float   xyzw
// TEXCOORD                 0   xyzw        2     NONE   float   xyzw
// GBX_VERTEX_FOG           0   xyzw        3     NONE   float   xyzw
// SV_POSITION              0   xyzw        4      POS   float   xyzw
//
vs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[7], immediateIndexed
dcl_constantbuffer cb1[95], immediateIndexed
dcl_constantbuffer cb2[200], dynamicIndexed
dcl_constantbuffer cb3[20], immediateIndexed
dcl_constantbuffer cb4[1], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_resource_texturecube (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture3d (float,float,float,float) t3
dcl_resource_buffer (float,float,float,float) t4
dcl_resource_buffer (float,float,float,float) t5
dcl_input v0.xyz
dcl_input_sgv v1.x, vertex_id
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xyzw
dcl_output_siv o4.xyzw, position
dcl_temps 19
iadd r0.x, v1.x, cb0[6].y
ishl r0.y, r0.x, l(1)
ld_indexable(buffer)(float,float,float,float) r0.yzw, r0.yyyy, t5.wxyz
bfi r1.x, l(31), l(1), r0.x, l(1)
ld_indexable(buffer)(float,float,float,float) r1.xyzw, r1.xxxx, t5.xyzw
mul r2.xyz, r0.yzwy, r1.yzxy
mad r0.yzw, r1.xxyz, r0.zzwy, -r2.xxyz
mul r0.yzw, r1.wwww, r0.yyzw
mul r2.xyz, r1.yzxy, r0.yzwy
mad r0.yzw, r0.wwyz, r1.zzxy, -r2.xxyz
mul r0.yzw, r1.wwww, r0.yyzw
mul r2.xyz, cb3[0].xyzx, cb3[16].xxxx
mul r3.xyz, cb3[1].xyzx, cb3[16].yyyy
mul r4.xyz, cb3[2].xyzx, cb3[16].zzzz
mul r5.xyz, r0.zzzz, r3.xyzx
mad r5.xyz, r0.yyyy, r2.xyzx, r5.xyzx
mad o0.xyz, r0.wwww, r4.xyzx, r5.xyzx
mul r0.yzw, r1.yyyy, r3.xxyz
mad r0.yzw, r1.xxxx, r2.xxyz, r0.yyzw
mad o1.xyz, r1.zzzz, r4.xyzx, r0.yzwy
mul o1.w, r1.w, cb3[9].w
mul [precise(yzw)] r0.yzw, v0.xxxx, cb3[0].xxyz
mul [precise(xyz)] r1.xyz, v0.yyyy, cb3[1].xyzx
add [precise(yzw)] r0.yzw, r0.yyzw, r1.xxyz
mul [precise(xyz)] r1.xyz, v0.zzzz, cb3[2].xyzx
add [precise(yzw)] r0.yzw, r0.yyzw, r1.xxyz
add [precise(xyz)] r1.xyz, cb2[71].xyzx, cb3[3].xyzx
add [precise(yzw)] r0.yzw, r0.yyzw, r1.xxyz
imul null, r0.x, r0.x, cb4[0].y
ld_indexable(buffer)(float,float,float,float) r1.xy, r0.xxxx, t4.xyzw
add [precise(zw)] r1.zw, -cb2[68].yyyx, cb3[8].yyyx
min [precise(x)] r0.x, |r1.w|, |r1.z|
max [precise(x)] r2.x, |r1.w|, |r1.z|
div [precise(x)] r2.x, l(1.000000, 1.000000, 1.000000, 1.000000), r2.x
mul [precise(x)] r0.x, r0.x, r2.x
mul [precise(x)] r2.x, r0.x, r0.x
mul [precise(y)] r2.y, r2.x, l(0.0208350997)
add [precise(y)] r2.y, r2.y, l(-0.085133)
mul [precise(y)] r2.y, r2.y, r2.x
add [precise(y)] r2.y, r2.y, l(0.180141)
mul [precise(y)] r2.y, r2.y, r2.x
add [precise(y)] r2.y, r2.y, l(-0.330299497)
mul [precise(x)] r2.x, r2.y, r2.x
add [precise(x)] r2.x, r2.x, l(0.999866)
mul [precise(x)] r0.x, r0.x, r2.x
lt [precise(x)] r2.x, |r1.w|, |r1.z|
mul [precise(y)] r2.y, r0.x, l(-2.000000)
add [precise(y)] r2.y, r2.y, l(1.57079637)
and [precise(x)] r2.x, r2.x, r2.y
add [precise(x)] r0.x, r0.x, r2.x
lt [precise(x)] r2.x, r1.w, -r1.w
and [precise(x)] r2.x, r2.x, l(0xc0490fdb)
add [precise(x)] r0.x, r0.x, r2.x
min [precise(x)] r2.x, r1.w, r1.z
max [precise(z)] r1.z, r1.w, r1.z
lt [precise(w)] r1.w, r2.x, -r2.x
ge [precise(z)] r1.z, r1.z, -r1.z
and [precise(z)] r1.z, r1.z, r1.w
movc [precise(x)] r0.x, r1.z, -r0.x, r0.x
mul [precise(x)] r0.x, r0.x, l(0.159200)
add [precise(x)] r0.x, r0.x, -cb3[14].z
add [precise(x)] r0.x, r0.x, l(0.500000)
mul [precise(x)] r0.x, r0.x, l(6.28318548)
add [precise(xyz)] r2.xyz, r0.yzwy, -cb2[71].xyzx
add [precise(xyz)] r3.xyz, r2.xyzx, -cb3[8].xyzx
dp3 [precise(z)] r1.z, l(0.000000, 0.000000, 1.000000, 0.000000), r3.xyzx
mul [precise(xyz)] r3.xyz, r1.zzzz, l(0.000000, 0.000000, 1.000000, 0.000000)
add [precise(xyz)] r3.xyz, r3.xyzx, cb3[8].xyzx
add [precise(xyz)] r4.xyz, r2.xyzx, -r3.xyzx
mul [precise(xyz)] r5.xyz, r4.zxyz, l(0.000000, 1.000000, 0.000000, 0.000000)
mul [precise(xyz)] r6.xyz, r4.yzxy, l(1.000000, 0.000000, 0.000000, 0.000000)
add [precise(xyz)] r5.xyz, r5.xyzx, -r6.xyzx
sincos [precise(x)] r0.x, r6.x, r0.x
mul [precise(xyz)] r4.xyz, r4.xyzx, r6.xxxx
mul [precise(xyz)] r5.xyz, r0.xxxx, r5.xyzx
add [precise(xyz)] r4.xyz, r4.xyzx, r5.xyzx
add [precise(xyz)] r3.xyz, r3.xyzx, r4.xyzx
add [precise(xyz)] r2.xyz, -r2.xyzx, r3.xyzx
add [precise(xyz)] r0.xyz, r0.yzwy, r2.xyzx
ishl [precise(w)] r0.w, cb3[19].y, l(2)
mul [precise] r2.xyzw, r0.xxxx, cb2[r0.w + 0].xyzw
mul [precise] r3.xyzw, r0.yyyy, cb2[r0.w + 1].xyzw
add [precise] r2.xyzw, r2.xyzw, r3.xyzw
mul [precise] r3.xyzw, r0.zzzz, cb2[r0.w + 2].xyzw
add [precise] r2.xyzw, r2.xyzw, r3.xyzw
add [precise] o4.xyzw, r2.xyzw, cb2[r0.w + 3].xyzw
add [precise(xyz)] r0.xyz, r0.xyzx, -cb2[69].xyzx
dp3 [precise(w)] r0.w, r0.xyzx, r0.xyzx
sqrt [precise(z)] r1.z, r0.w
mul [precise(xy)] r2.xy, cb2[169].xxxx, l(0.000010, 100.000000, 0.000000, 0.000000)
add [precise(w)] r1.w, cb2[69].z, -cb2[168].w
mul [precise(z)] r3.z, r1.w, cb2[169].y
mov [precise(xy)] r3.xy, cb2[69].xyxx
mul [precise(xyz)] r3.xyz, r2.xxxx, r3.xyzx
add [precise(w)] r3.w, r3.z, l(6360.009766)
dp3 [precise(w)] r1.w, r3.xywx, r3.xywx
sqrt [precise(z)] r4.z, r1.w
rsq [precise(z)] r2.z, r0.w
mul [precise(xyz)] r5.xyz, r0.xyzx, r2.zzzz
dp3 [precise(w)] r2.w, r3.xywx, r5.xyzx
div [precise(w)] r4.w, r2.w, r4.z
mul [precise(z)] r3.z, r4.w, r4.w
add [precise(z)] r3.z, r3.z, l(-1.000000)
mul [precise(w)] r1.w, r1.w, r3.z
add [precise(xy)] r6.xy, r1.wwww, l(40449600.000000, 41344900.000000, 0.000000, 0.000000)
sqrt [precise(xy)] r6.xy, r6.xyxx
add [precise(xy)] r6.xy, -r2.wwww, -r6.xyxx
mul [precise(w)] r1.w, r1.z, r2.x
add [precise(x)] r2.x, r1.w, -cb2[169].w
max [precise(x)] r2.x, r2.x, l(0.000000)
mul r3.z, r2.x, l(0.100000)
div r3.z, r3.z, cb2[169].w
min r3.z, r3.z, l(1.000000)
lt [precise(y)] r2.y, r1.w, r2.y
mul r7.y, r3.z, cb2[168].x
add [precise(w)] r1.w, r1.w, cb2[170].x
max [precise(x)] r7.x, r1.w, l(1.000000)
mov r6.z, l(1.000000)
movc [precise(x)] r4.xy, r2.yyyy, r7.xyxx, r6.xzxx
lt [precise(w)] r1.w, l(0.000000), r6.y
mul [precise(xzw)] r6.xzw, r5.xxyz, r6.yyyy
add [precise(xzw)] r6.xzw, r3.xxyw, r6.xxzw
add [precise(x)] r7.x, -r6.y, r4.x
add [precise(w)] r2.w, r2.w, r6.y
mul [precise(z)] r7.z, r2.w, l(0.000155520989)
movc [precise(xyz)] r6.xyz, r1.wwww, r6.xzwx, r3.xywx
mov [precise(y)] r7.y, l(6430.000000)
movc [precise(xyz)] r7.xyz, r1.wwww, r7.xyzx, r4.xzwx
lt [precise(w)] r1.w, r7.y, l(6360.014648)
add [precise(w)] r2.w, -r7.y, l(6360.014648)
mul [precise(xyz)] r8.xyz, r5.xyzx, r2.wwww
add [precise(xyz)] r8.xyz, r6.xyzx, -r8.xyzx
add [precise(x)] r9.x, -r2.w, r7.x
dp3 [precise(w)] r2.w, r8.xyzx, r5.xyzx
mul [precise(z)] r9.z, r2.w, l(0.000157232338)
mov [precise(y)] r9.y, l(6360.014648)
movc [precise(xyz)] r7.xyz, r1.wwww, r9.xyzx, r7.xyzx
ge [precise(w)] r2.w, l(6430.000000), r7.y
lt [precise(x)] r2.x, l(0.000000), r2.x
and [precise(x)] r2.x, r2.x, r2.w
if_nz r2.x
  movc [precise(xyz)] r6.xyz, r1.wwww, r8.xyzx, r6.xyzx
  dp3 r1.w, r5.xyzx, cb2[167].xyzx
  dp3 r2.x, r6.xyzx, cb2[167].xyzx
  div r2.x, r2.x, r7.y
  div [precise(w)] r2.w, l(6360.000000), r7.y
  mul [precise(w)] r2.w, r2.w, r2.w
  add [precise(w)] r2.w, -r2.w, l(1.000000)
  sqrt [precise(w)] r2.w, r2.w
  add [precise(z)] r3.z, -r2.w, l(0.005000)
  add [precise(w)] r6.w, r3.z, l(0.150000)
  max [precise(w)] r6.w, r6.w, r7.z
  max [precise(z)] r7.z, r3.z, r7.z
  movc [precise(x)] r8.x, r2.y, r6.w, r7.z
  mul [precise(w)] r6.w, -r5.z, l(1.442695)
  exp [precise(w)] r6.w, r6.w
  add_sat [precise(y)] r9.y, r6.w, l(-0.500000)
  lt [precise(w)] r6.w, r9.y, l(1.000000)
  max [precise(w)] r5.w, r5.z, l(0.150000)
  dp3 [precise(z)] r7.z, r5.xywx, r5.xywx
  rsq [precise(z)] r7.z, r7.z
  mul [precise(xyz)] r10.xyz, r5.xywx, r7.zzzz
  mul [precise(xyz)] r11.xyz, r7.xxxx, r10.xyzx
  add [precise(xyz)] r11.xyz, r6.xyzx, r11.xyzx
  dp3 [precise(w)] r5.w, r11.xyzx, r11.xyzx
  sqrt [precise(w)] r5.w, r5.w
  dp3 [precise(z)] r7.z, r11.xyzx, r10.xyzx
  div [precise(w)] r10.w, r7.z, r5.w
  mov [precise(yzw)] r8.yzw, r5.xxyz
  movc [precise] r10.xyzw, r6.wwww, r10.xyzw, r8.yzwx
  mov [precise(x)] r9.x, r10.w
  mov [precise(y)] r8.y, l(0)
  movc [precise(xy)] r9.xy, r2.yyyy, r9.xyxx, r8.xyxx
  mad r5.w, r1.w, r1.w, l(1.000000)
  mul r6.w, r5.w, l(0.0596831031)
  mad r7.z, -r1.w, l(1.600000), l(1.640000)
  log r7.z, |r7.z|
  mul r7.z, r7.z, l(-1.500000)
  exp r7.z, r7.z
  mul r5.w, r5.w, r7.z
  mul r11.x, r5.w, l(0.0162772108)
  mul [precise(w)] r5.w, r7.y, r7.y
  mad r7.z, r7.y, r7.y, l(-40449600.000000)
  sqrt r7.z, r7.z
  mul [precise(w)] r7.w, r7.y, r9.x
  mul [precise(y)] r8.y, r7.w, r7.w
  add [precise(y)] r8.y, -r5.w, r8.y
  add [precise(y)] r8.y, r8.y, l(40449600.000000)
  lt [precise(z)] r8.z, r7.w, l(0.000000)
  lt [precise(w)] r8.w, l(0.000000), r8.y
  and [precise(z)] r8.z, r8.w, r8.z
  movc [precise(xyz)] r12.xyzw, r8.zzzz, l(1.000000,0,0,0.496093750), l(-1.000000,895300.000000,946.202942,0.503906250)
  utof r8.z, cb2[170].w
  div r8.w, l(0.500000), r8.z
  mul r9.w, r7.z, l(0.00105685578)
  div r8.z, l(1.000000, 1.000000, 1.000000, 1.000000), r8.z
  add r8.z, -r8.z, l(1.000000)
  mad r13.z, r9.w, r8.z, r8.w
  add r8.y, r8.y, r12.y
  sqrt r8.y, r8.y
  mad r7.w, r7.w, r12.x, r8.y
  add r8.y, r7.z, r12.z
  div r7.w, r7.w, r8.y
  mad r13.w, r7.w, l(0.492187500), r12.w
  max r7.w, r2.x, l(-0.197500)
  mul r7.w, r7.w, l(5.34962368)
  min r8.y, |r7.w|, l(1.000000)
  max r9.w, |r7.w|, l(1.000000)
  div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w
  mul r8.y, r8.y, r9.w
  mul r9.w, r8.y, r8.y
  mad r10.w, r9.w, l(0.0208350997), l(-0.085133)
  mad r10.w, r9.w, r10.w, l(0.180141)
  mad r10.w, r9.w, r10.w, l(-0.330299497)
  mad r9.w, r9.w, r10.w, l(0.999866)
  mul r10.w, r8.y, r9.w
  lt r12.x, l(1.000000), |r7.w|
  mad r10.w, r10.w, l(-2.000000), l(1.57079637)
  and r10.w, r12.x, r10.w
  mad r8.y, r8.y, r9.w, r10.w
  min r7.w, r7.w, l(1.000000)
  lt r7.w, r7.w, -r7.w
  movc r7.w, r7.w, -r8.y, r8.y
  mad r7.w, r7.w, l(0.909090877), l(0.740000)
  mad r7.w, r7.w, l(0.484375), l(0.015625)
  add r1.w, r1.w, l(1.000000)
  mul r8.y, r1.w, l(3.500000)
  round_ni r8.y, r8.y
  mad r1.w, r1.w, l(3.500000), -r8.y
  add r7.w, r7.w, r8.y
  mul r13.y, r7.w, l(0.125000)
  sample_l_indexable(texture3d)(float,float,float,float) r12.xyzw, r13.ywzy, t3.xyzw, s3, l(0.000000)
  add r9.w, -r1.w, l(1.000000)
  add r7.w, r7.w, l(1.000000)
  mul r13.x, r7.w, l(0.125000)
  sample_l_indexable(texture3d)(float,float,float,float) r14.xyzw, r13.xwzx, t3.xyzw, s3, l(0.000000)
  mul r14.xyzw, r1.wwww, r14.xyzw
  mad r12.xyzw, r12.xyzw, r9.wwww, r14.xyzw
  max r12.xyzw, r12.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
  lt [precise(w)] r7.w, l(0.000000), r7.x
  if_nz r7.w
    mul [precise(xyz)] r14.xyz, r5.xyzx, r7.xxxx
    add [precise(xyz)] r6.xyz, r6.xyzx, r14.xyzx
    dp3 [precise(w)] r7.w, r6.xyzx, r6.xyzx
    sqrt [precise(w)] r7.w, r7.w
    div r10.w, l(0.500000), cb2[169].z
    mul r10.w, r7.y, r10.w
    sqrt r10.w, r10.w
    div r14.x, r7.x, r7.y
    add r9.z, r9.x, r14.x
    mul r14.xy, r9.xzxx, r10.wwww
    lt r14.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r14.xxxy
    lt r15.xy, r14.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
    iadd r14.zw, -r14.zzzw, r15.xxxy
    itof r14.zw, r14.zzzw
    mul r15.xyz, r14.xxyx, r14.xxyx
    lt r10.w, r14.z, r14.w
    mul r15.x, r15.x, l(1.442695)
    exp r15.x, r15.x
    and r10.w, r10.w, r15.x
    mad r15.xy, r15.yzyy, l(1.520000, 1.520000, 0.000000, 0.000000), l(4.000000, 4.000000, 0.000000, 0.000000)
    sqrt r15.xy, r15.xyxx
    mad r14.xy, |r14.xyxx|, l(2.319300, 2.319300, 0.000000, 0.000000), r15.xyxx
    div r14.xy, r14.zwzz, r14.xyxx
    div r14.z, -r7.x, cb2[169].z
    mul [precise(x)] r15.xyz, r7.yyyy, l(2.000000, 0.416666657, 7.53972054, 0.000000)
    div r14.w, r7.x, r15.x
    add r14.w, r9.x, r14.w
    mul r14.z, r14.w, r14.z
    mul r14.z, r14.z, l(1.442695)
    exp r16.y, r14.z
    mov r16.xz, l(1.000000,0,1.000000,0)
    mul r14.xy, r14.xyxx, r16.xyxx
    mul r14.z, cb2[169].z, l(6.283100)
    mul r14.z, r7.y, r14.z
    sqrt r14.z, r14.z
    add r15.w, -r7.y, l(6360.000000)
    div r16.x, r15.w, cb2[169].z
    mul r16.x, r16.x, l(1.442695)
    exp r16.x, r16.x
    mul r14.z, r14.z, r16.x
    dp2 r14.x, r14.xyxx, l(1.000000, -1.000000, 0.000000, 0.000000)
    add r10.w, r10.w, r14.x
    mul r10.w, r10.w, r14.z
    sqrt r14.xy, r15.yzyy
    mul r14.xz, r9.xxzx, r14.xxxx
    lt r15.yz, l(0.000000, 0.000000, 0.000000, 0.000000), r14.xxzx
    lt r16.xy, r14.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000)
    iadd r15.yz, -r15.yyzy, r16.xxyx
    itof r15.yz, r15.yyzy
    mul r17.xyz, r14.xxzx, r14.xxzx
    lt r9.z, r15.y, r15.z
    mul r16.x, r17.x, l(1.442695)
    exp r16.x, r16.x
    and r9.z, r9.z, r16.x
    mad r16.xy, r17.yzyy, l(1.520000, 1.520000, 0.000000, 0.000000), l(4.000000, 4.000000, 0.000000, 0.000000)
    sqrt r16.xy, r16.xyxx
    mad r14.xz, |r14.xxzx|, l(2.319300, 0.000000, 2.319300, 0.000000), r16.xxyx
    div r14.xz, r15.yyzy, r14.xxzx
    mul r14.w, -r7.x, r14.w
    mul r14.w, r14.w, l(1.20224583)
    exp r16.w, r14.w
    mul r14.xz, r14.xxzx, r16.zzwz
    mul r14.w, r15.w, l(1.20224583)
    exp r14.w, r14.w
    mul r14.y, r14.w, r14.y
    dp2 r14.x, r14.xzxx, l(1.000000, -1.000000, 0.000000, 0.000000)
    add r9.z, r9.z, r14.x
    mul r9.z, r9.z, r14.y
    mul r9.z, r9.z, l(0.00444444455)
    mad r14.xyz, r10.wwww, l(-0.005800, -0.013500, -0.033100, 0.000000), -r9.zzzz
    mul r14.xyz, r14.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000)
    exp r14.xyz, r14.xyzx
    max [precise(z)] r9.z, r7.y, r7.w
    movc [precise(z)] r9.z, r2.y, r9.z, r7.w
    lt [precise(w)] r10.w, l(6360.009766), r9.z
    if_nz r10.w
      lt [precise(w)] r10.w, r9.y, l(1.000000)
      if_nz r10.w
        movc [precise(xyz)] r10.xyz, r2.yyyy, r10.xyzx, r5.xyzx
        dp3 [precise(x)] r10.x, r6.xyzx, r10.xyzx
        div [precise(x)] r10.x, r10.x, r7.w
        dp3 r6.x, r6.xyzx, cb2[167].xyzx
        div r6.x, r6.x, r7.w
        mul [precise(y)] r6.y, r9.z, r9.z
        mad r6.z, r9.z, r9.z, l(-40449600.000000)
        sqrt r6.z, r6.z
        mul [precise(w)] r7.w, r9.z, r10.x
        mul [precise(z)] r9.z, r7.w, r7.w
        add [precise(y)] r6.y, -r6.y, r9.z
        add [precise(y)] r6.y, r6.y, l(40449600.000000)
        lt [precise(z)] r9.z, r7.w, l(0.000000)
        lt [precise(x)] r10.x, l(0.000000), r6.y
        and [precise(z)] r9.z, r9.z, r10.x
        movc [precise(xyz)] r10.xyzw, r9.zzzz, l(1.000000,0,0,0.496093750), l(-1.000000,895300.000000,946.202942,0.503906250)
        mul r9.z, r8.z, r6.z
        mad r16.y, r9.z, l(0.00105685578), r8.w
        add r6.yz, r6.yyzy, r10.yyzy
        sqrt r6.y, r6.y
        mad r6.y, r7.w, r10.x, r6.y
        div r6.y, r6.y, r6.z
        mad r16.x, r6.y, l(0.492187500), r10.w
        max r6.x, r6.x, l(-0.197500)
        mul r6.x, r6.x, l(5.34962368)
        min r6.y, |r6.x|, l(1.000000)
        max r6.z, |r6.x|, l(1.000000)
        div r6.z, l(1.000000, 1.000000, 1.000000, 1.000000), r6.z
        mul r6.y, r6.z, r6.y
        mul r6.z, r6.y, r6.y
        mad r7.w, r6.z, l(0.0208350997), l(-0.085133)
        mad r7.w, r6.z, r7.w, l(0.180141)
        mad r7.w, r6.z, r7.w, l(-0.330299497)
        mad r6.z, r6.z, r7.w, l(0.999866)
        mul r7.w, r6.z, r6.y
        lt r9.z, l(1.000000), |r6.x|
        mad r7.w, r7.w, l(-2.000000), l(1.57079637)
        and r7.w, r9.z, r7.w
        mad r6.y, r6.y, r6.z, r7.w
        min r6.x, r6.x, l(1.000000)
        lt r6.x, r6.x, -r6.x
        movc r6.x, r6.x, -r6.y, r6.y
        mad r6.x, r6.x, l(0.909090877), l(0.740000)
        mad r6.x, r6.x, l(0.484375), r8.y
        add r6.xy, r6.xxxx, l(0.015625, 1.015625, 0.000000, 0.000000)
        mul r16.zw, r6.xxxy, l(0.000000, 0.000000, 0.125000, 0.125000)
        sample_l_indexable(texture3d)(float,float,float,float) r10.xyzw, r16.zxyz, t3.xyzw, s3, l(0.000000)
        sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r16.wxyw, t3.xyzw, s3, l(0.000000)
        mul r17.xyzw, r1.wwww, r17.xyzw
        mad r10.xyzw, r10.xyzw, r9.wwww, r17.xyzw
        mad r10.xyzw, -r14.xyzx, r10.xyzw, r12.xyzw
        max r12.xyzw, r10.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
        if_z r2.y
          add [precise(x)] r6.x, r2.w, r9.x
          lt [precise(y)] r6.y, |r6.x|, l(0.005000)
          if_nz r6.y
            add r6.x, r6.x, l(0.005000)
            mul r6.x, r6.x, l(100.000000)
            add [precise(w)] r2.w, -r2.w, l(-0.005000)
            mul [precise(y)] r6.y, r7.x, r7.x
            add [precise(y)] r6.y, r5.w, r6.y
            mul [precise(z)] r6.z, r7.x, r15.x
            mul [precise(w)] r7.w, r2.w, r6.z
            add [precise(w)] r7.w, r6.y, r7.w
            sqrt [precise(w)] r7.w, r7.w
            mul [precise(w)] r2.w, r2.w, r7.y
            add [precise(y)] r8.y, r7.x, r2.w
            div [precise(y)] r8.y, r8.y, r7.w
            max [precise(y)] r8.y, r3.z, r8.y
            mul [precise(x)] r9.x, r2.w, r2.w
            add [precise(x)] r9.x, -r5.w, r9.x
            add [precise(x)] r9.x, r9.x, l(40449600.000000)
            lt [precise(z)] r9.z, r2.w, l(0.000000)
            lt [precise(x)] r10.x, l(0.000000), r9.x
            and [precise(z)] r9.z, r9.z, r10.x
            movc [precise(xyz)] r10.xyzw, r9.zzzz, l(1.000000,0,0,0.496093750), l(-1.000000,895300.000000,946.202942,0.503906250)
            add r9.x, r9.x, r10.y
            sqrt r9.x, r9.x
            mad r2.w, r2.w, r10.x, r9.x
            add r9.x, r7.z, r10.z
            div r2.w, r2.w, r9.x
            mad r10.x, r2.w, l(0.492187500), r10.w
            mov r10.yz, r13.yyzy
            sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r10.yxzy, t3.xyzw, s3, l(0.000000)
            mov r13.y, r10.x
            sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r13.xyzx, t3.xyzw, s3, l(0.000000)
            mul r17.xyzw, r1.wwww, r17.xyzw
            mad r15.xyzw, r15.xyzw, r9.wwww, r17.xyzw
            mul [precise(w)] r2.w, r7.w, r7.w
            mad r9.x, r7.w, r7.w, l(-40449600.000000)
            sqrt r9.x, r9.x
            mul [precise(w)] r7.w, r7.w, r8.y
            mul [precise(y)] r8.y, r7.w, r7.w
            add [precise(w)] r2.w, -r2.w, r8.y
            add [precise(w)] r2.w, r2.w, l(40449600.000000)
            lt [precise(y)] r8.y, r7.w, l(0.000000)
            lt [precise(z)] r9.z, l(0.000000), r2.w
            and [precise(y)] r8.y, r8.y, r9.z
            movc [precise(xyz)] r17.xyzw, r8.yyyy, l(1.000000,0,0,0.496093750), l(-1.000000,895300.000000,946.202942,0.503906250)
            mul r8.y, r8.z, r9.x
            mad r16.y, r8.y, l(0.00105685578), r8.w
            add r2.w, r2.w, r17.y
            sqrt r2.w, r2.w
            mad r2.w, r7.w, r17.x, r2.w
            add r7.w, r9.x, r17.z
            div r2.w, r2.w, r7.w
            mad r16.x, r2.w, l(0.492187500), r17.w
            sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r16.zxyz, t3.xyzw, s3, l(0.000000)
            sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.wxyw, t3.xyzw, s3, l(0.000000)
            mul r18.xyzw, r1.wwww, r18.xyzw
            mad r17.xyzw, r17.xyzw, r9.wwww, r18.xyzw
            mad r15.xyzw, -r14.xyzx, r17.xyzw, r15.xyzw
            max r15.xyzw, r15.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
            mul [precise(w)] r2.w, r3.z, r6.z
            add [precise(w)] r2.w, r2.w, r6.y
            sqrt [precise(w)] r2.w, r2.w
            mul [precise(y)] r6.y, r3.z, r7.y
            add [precise(z)] r6.z, r7.x, r6.y
            div [precise(z)] r6.z, r6.z, r2.w
            max [precise(z)] r3.z, r3.z, r6.z
            mul [precise(z)] r6.z, r6.y, r6.y
            add [precise(z)] r6.z, -r5.w, r6.z
            add [precise(z)] r6.z, r6.z, l(40449600.000000)
            lt [precise(x)] r7.x, r6.y, l(0.000000)
            lt [precise(w)] r7.w, l(0.000000), r6.z
            and [precise(x)] r7.x, r7.w, r7.x
            movc [precise(xyz)] r17.xyzw, r7.xxxx, l(1.000000,0,0,0.496093750), l(-1.000000,895300.000000,946.202942,0.503906250)
            add r6.z, r6.z, r17.y
            sqrt r6.z, r6.z
            mad r6.y, r6.y, r17.x, r6.z
            add r6.z, r7.z, r17.z
            div r6.y, r6.y, r6.z
            mad r10.w, r6.y, l(0.492187500), r17.w
            sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r10.ywzy, t3.xyzw, s3, l(0.000000)
            mov r13.w, r10.w
            sample_l_indexable(texture3d)(float,float,float,float) r10.xyzw, r13.xwzx, t3.xyzw, s3, l(0.000000)
            mul r10.xyzw, r1.wwww, r10.xyzw
            mad r10.xyzw, r17.xyzw, r9.wwww, r10.xyzw
            mul [precise(y)] r6.y, r2.w, r2.w
            mad r6.z, r2.w, r2.w, l(-40449600.000000)
            sqrt r6.z, r6.z
            mul [precise(w)] r2.w, r2.w, r3.z
            mul [precise(z)] r3.z, r2.w, r2.w
            add [precise(z)] r3.z, -r6.y, r3.z
            add [precise(z)] r3.z, r3.z, l(40449600.000000)
            lt [precise(y)] r6.y, r2.w, l(0.000000)
            lt [precise(x)] r7.x, l(0.000000), r3.z
            and [precise(y)] r6.y, r6.y, r7.x
            movc [precise(xyz)] r17.xyzw, r6.yyyy, l(1.000000,0,0,0.496093750), l(-1.000000,895300.000000,946.202942,0.503906250)
            mul r6.y, r8.z, r6.z
            mad r16.y, r6.y, l(0.00105685578), r8.w
            add r3.z, r3.z, r17.y
            sqrt r3.z, r3.z
            mad r2.w, r2.w, r17.x, r3.z
            add r3.z, r6.z, r17.z
            div r2.w, r2.w, r3.z
            mad r16.x, r2.w, l(0.492187500), r17.w
            sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r16.zxyz, t3.xyzw, s3, l(0.000000)
            sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r16.wxyw, t3.xyzw, s3, l(0.000000)
            mul r16.xyzw, r1.wwww, r16.xyzw
            mad r16.xyzw, r17.xyzw, r9.wwww, r16.xyzw
            mad r10.xyzw, -r14.xyzx, r16.xyzw, r10.xyzw
            max r10.xyzw, r10.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
            add r10.xyzw, -r15.xyzw, r10.xyzw
            mad r12.xyzw, r6.xxxx, r10.xyzw, r15.xyzw
          endif
        else
          lt [precise(w)] r2.w, l(0.000000), r9.y
          if_nz r2.w
            add r10.xyzw, -r14.xyzx, l(1.000000, 1.000000, 1.000000, 1.000000)
            mul [precise(w)] r2.w, r7.y, r8.x
            mul [precise(z)] r3.z, r2.w, r2.w
            add [precise(z)] r3.z, -r5.w, r3.z
            add [precise(z)] r3.z, r3.z, l(40449600.000000)
            lt [precise(w)] r5.w, r2.w, l(0.000000)
            lt [precise(x)] r6.x, l(0.000000), r3.z
            and [precise(w)] r5.w, r5.w, r6.x
            movc [precise(xyz)] r8.xyzw, r5.wwww, l(1.000000,0,0,0.496093750), l(-1.000000,895300.000000,946.202942,0.503906250)
            add r3.z, r3.z, r8.y
            sqrt r3.z, r3.z
            mad r2.w, r2.w, r8.x, r3.z
            add r3.z, r7.z, r8.z
            div r2.w, r2.w, r3.z
            mad r6.y, r2.w, l(0.492187500), r8.w
            mov r6.xz, r13.yyzy
            sample_l_indexable(texture3d)(float,float,float,float) r7.xyzw, r6.xyzx, t3.xyzw, s3, l(0.000000)
            mov r6.xz, r13.xxzx
            sample_l_indexable(texture3d)(float,float,float,float) r8.xyzw, r6.xyzx, t3.xyzw, s3, l(0.000000)
            mul r8.xyzw, r1.wwww, r8.xyzw
            mad r7.xyzw, r7.xyzw, r9.wwww, r8.xyzw
            max r7.xyzw, r7.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
            mad r7.xyzw, r10.xyzw, r7.xyzw, -r12.xyzw
            mad r12.xyzw, r9.yyyy, r7.xyzw, r12.xyzw
          endif
        endif
      else
        add r7.xyzw, -r14.xyzx, l(1.000000, 1.000000, 1.000000, 1.000000)
        mul r12.xyzw, r12.xyzw, r7.xyzw
      endif
    endif
  else
    mov r14.xyz, l(1.000000,1.000000,1.000000,0)
  endif
  mul_sat r1.w, r2.x, l(50.000000)
  mad r2.x, r1.w, l(-2.000000), l(3.000000)
  mul r1.w, r1.w, r1.w
  mul r1.w, r1.w, r2.x
  mul r1.w, r1.w, r12.w
  mul r6.xyz, r1.wwww, r12.xyzx
  max r1.w, r12.x, l(0.000100)
  div r6.xyz, r6.xyzx, r1.wwww
  mov r11.yzw, l(0,1.000000,0.429629624,0.175226584)
  mul r6.xyz, r11.yxxy, r6.xyzx
  mul r6.xyz, r11.xzwx, r6.xyzx
  mad r6.xyz, r12.xyzx, r6.wwww, r6.xyzx
  max r6.xyz, r6.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
else
  mov r14.xyz, l(1.000000,1.000000,1.000000,0)
  mov r6.xyz, l(0,0,0,0)
endif
and [precise(xw)] r2.xw, cb2[170].zzzz, l(2, 0, 0, 1)
if_z r2.x
  lt [precise(w)] r1.w, l(0.000000), r4.x
  if_nz r1.w
    mul [precise(xyz)] r7.xyz, r5.xyzx, r4.xxxx
    add [precise(xyz)] r3.xyz, r3.xywx, r7.xyzx
    dp3 [precise(w)] r1.w, r3.xyzx, r3.xyzx
    sqrt [precise(w)] r1.w, r1.w
    div [precise(xyz)] r3.xyz, r3.xyzx, r1.wwww
    dp3 [precise(x)] r2.x, r3.xyzx, cb2[167].xyzx
    add [precise(w)] r1.w, r1.w, l(-6360.000000)
    mul [precise(z)] r7.z, r1.w, l(0.0142857144)
    sqrt [precise(y)] r8.y, r7.z
    add [precise(z)] r8.zw, r2.xxxx, l(0.000000, 0.000000, 0.150000, 0.200000)
    mul [precise(x)] r7.xy, r8.zwzz, l(0.869565248, 0.833333313, 0.000000, 0.000000)
    mul [precise(w)] r1.w, r7.x, l(14.101420)
    min [precise(w)] r3.w, |r1.w|, l(1.000000)
    max [precise(w)] r5.w, |r1.w|, l(1.000000)
    div [precise(w)] r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w
    mul [precise(w)] r3.w, r3.w, r5.w
    mul [precise(w)] r5.w, r3.w, r3.w
    mul [precise(w)] r6.w, r5.w, l(0.0208350997)
    add [precise(w)] r6.w, r6.w, l(-0.085133)
    mul [precise(w)] r6.w, r5.w, r6.w
    add [precise(w)] r6.w, r6.w, l(0.180141)
    mul [precise(w)] r6.w, r5.w, r6.w
    add [precise(w)] r6.w, r6.w, l(-0.330299497)
    mul [precise(w)] r5.w, r5.w, r6.w
    add [precise(w)] r5.w, r5.w, l(0.999866)
    mul [precise(w)] r3.w, r3.w, r5.w
    lt [precise(w)] r5.w, l(1.000000), |r1.w|
    mul [precise(w)] r6.w, r3.w, l(-2.000000)
    add [precise(w)] r6.w, r6.w, l(1.57079637)
    and [precise(w)] r5.w, r5.w, r6.w
    add [precise(w)] r3.w, r3.w, r5.w
    min [precise(w)] r1.w, r1.w, l(1.000000)
    lt [precise(w)] r1.w, r1.w, -r1.w
    movc [precise(w)] r1.w, r1.w, -r3.w, r3.w
    mul [precise(x)] r8.x, r1.w, l(0.666666687)
    sample_l_indexable [precise(xyz)](texture2d)(float,float,float,float) r8.xyz, r8.xyxx, t1.xyzw, s1, l(0.000000)
    movc [precise(xyz)] r8.xyz, r2.yyyy, l(0,0,0,0), r8.xyzx
    sample_l_indexable(texture2d)(float,float,float,float) r7.xyz, r7.yzyy, t2.xyzw, s2, l(0.000000)
    max r1.w, r2.x, l(0.000000)
    mad r7.xyz, r1.wwww, r8.xyzx, r7.xyzx
    mul r7.xyz, r7.xyzx, l(0.00318309898, 0.00318309898, 0.00318309898, 0.000000)
    mad r9.xyz, -r0.xyzx, r2.zzzz, cb2[167].xyzx
    dp3 r1.w, r9.xyzx, r9.xyzx
    rsq r1.w, r1.w
    mul r9.xyz, r1.wwww, r9.xyzx
    dp3 r1.w, -r5.xyzx, r9.xyzx
    add r1.w, -r1.w, l(1.000000)
    mul r2.x, r1.w, r1.w
    mul r2.x, r2.x, r2.x
    mul r1.w, r1.w, r2.x
    mad r1.w, r1.w, l(0.980000), l(0.020000)
    dp3 r2.x, r9.xyzx, r3.xyzx
    max r2.x, r2.x, l(0.000000)
    log r2.x, r2.x
    mul r2.x, r2.x, l(150.000000)
    exp r2.x, r2.x
    mul r1.w, r1.w, r2.x
    max r1.w, r1.w, l(0.000000)
    mad r3.xyz, r1.wwww, r8.xyzx, r7.xyzx
    movc r3.xyz, r2.yyyy, r7.xyzx, r3.xyzx
    mul r3.xyz, r3.xyzx, r14.xyzx
  else
    mov r3.xyz, l(0,0,0,0)
  endif
else
  mov r3.xyz, l(0,0,0,0)
endif
if_z r2.w
  ge [precise(w)] r1.w, l(6430.000000), r4.z
  add [precise(xy)] r2.xy, r4.zwzz, l(-6360.000000, 0.150000, 0.000000, 0.000000)
  mul [precise(xy)] r2.xy, r2.xyxx, l(0.0142857144, 0.869565248, 0.000000, 0.000000)
  sqrt [precise(y)] r7.y, r2.x
  mul [precise(x)] r2.x, r2.y, l(14.101420)
  min [precise(y)] r2.y, |r2.x|, l(1.000000)
  max [precise(w)] r2.w, |r2.x|, l(1.000000)
  div [precise(w)] r2.w, l(1.000000, 1.000000, 1.000000, 1.000000), r2.w
  mul [precise(y)] r2.y, r2.w, r2.y
  mul [precise(w)] r2.w, r2.y, r2.y
  mul [precise(w)] r3.w, r2.w, l(0.0208350997)
  add [precise(w)] r3.w, r3.w, l(-0.085133)
  mul [precise(w)] r3.w, r2.w, r3.w
  add [precise(w)] r3.w, r3.w, l(0.180141)
  mul [precise(w)] r3.w, r2.w, r3.w
  add [precise(w)] r3.w, r3.w, l(-0.330299497)
  mul [precise(w)] r2.w, r2.w, r3.w
  add [precise(w)] r2.w, r2.w, l(0.999866)
  mul [precise(y)] r2.y, r2.w, r2.y
  lt [precise(w)] r2.w, l(1.000000), |r2.x|
  mul [precise(w)] r3.w, r2.y, l(-2.000000)
  add [precise(w)] r3.w, r3.w, l(1.57079637)
  and [precise(w)] r2.w, r2.w, r3.w
  add [precise(y)] r2.y, r2.y, r2.w
  min [precise(x)] r2.x, r2.x, l(1.000000)
  lt [precise(x)] r2.x, r2.x, -r2.x
  movc [precise(x)] r2.x, r2.x, -r2.y, r2.y
  mul [precise(x)] r7.x, r2.x, l(0.666666687)
  sample_l_indexable [precise(xyw)](texture2d)(float,float,float,float) r2.xyw, r7.xyxx, t1.xywz, s1, l(0.000000)
  movc [precise(xyw)] r2.xyw, r1.wwww, r2.xyxw, l(1.000000,1.000000,0,1.000000)
  lt [precise(w)] r1.w, l(0.000000), r4.x
  mul [precise(w)] r3.w, cb2[170].y, l(3.14159274)
  mul [precise(w)] r3.w, r3.w, l(0.00555555569)
  sincos [precise(w)] null, r3.w, r3.w
  dp3 [precise(x)] r4.x, r5.xyzx, cb2[167].xyzx
  ge [precise(w)] r3.w, r4.x, r3.w
  and [precise(w)] r3.w, r3.w, l(0x3f800000)
  mul [precise(xyw)] r2.xyw, r2.xyxw, r3.wwww
  movc [precise(xyw)] r2.xyw, r1.wwww, l(0,0,0,0), r2.xyxw
else
  mov r2.xyw, l(0,0,0,0)
endif
add r2.xyw, r3.xyxz, r2.xyxw
add r2.xyw, r6.xyxz, r2.xyxw
mul r1.w, r4.y, cb2[167].w
mul r3.xyz, r1.wwww, cb2[171].xyzx
mul r2.xyw, r2.xyxw, r3.xyxz
dp3 [precise(w)] r1.w, r0.xyzx, cb2[60].xyzx
div [precise(z)] r1.z, r1.z, r1.w
mul [precise(z)] r1.z, r1.z, cb2[199].z
max [precise(z)] r1.z, r1.z, l(0.000000)
mul [precise(w)] r0.w, r0.w, r2.z
max [precise(z)] r1.z, r1.z, cb1[87].w
lt [precise(w)] r1.w, l(0.000000), r1.z
ieq [precise(x)] r3.x, cb1[94].z, l(1)
add [precise(y)] r3.y, cb1[94].w, cb2[68].z
movc [precise(x)] r3.x, r3.x, r3.y, cb1[89].y
mul [precise(z)] r1.z, r2.z, r1.z
mul [precise(z)] r2.z, r0.z, r1.z
add [precise(y)] r3.y, r2.z, cb2[68].z
add [precise(z)] r2.z, r0.z, -r2.z
add [precise(z)] r1.z, -r1.z, l(1.000000)
mul [precise(z)] r1.z, r0.w, r1.z
add [precise(x)] r3.x, -r3.x, r3.y
mul [precise(x)] r3.x, r3.x, cb1[87].y
max [precise(x)] r3.x, r3.x, l(-127.000000)
exp [precise(x)] r3.x, -r3.x
mul [precise(x)] r3.x, r3.x, cb1[89].x
movc [precise(x)] r3.x, r1.w, r3.x, cb1[87].x
movc [precise(z)] r1.z, r1.w, r1.z, r0.w
movc [precise(w)] r1.w, r1.w, r2.z, r0.z
mul [precise(w)] r1.w, r1.w, cb1[87].y
max [precise(w)] r1.w, r1.w, l(-127.000000)
exp [precise(z)] r2.z, -r1.w
add [precise(z)] r2.z, -r2.z, l(1.000000)
div [precise(z)] r2.z, r2.z, r1.w
mul [precise(y)] r3.y, r1.w, l(0.240226507)
add [precise(y)] r3.y, -r3.y, l(0.693147182)
lt [precise(w)] r1.w, l(0.010000), |r1.w|
movc [precise(w)] r1.w, r1.w, r2.z, r3.y
mul [precise(w)] r1.w, r1.w, r3.x
mul [precise(z)] r2.z, r1.z, r1.w
lt [precise(y)] r3.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb1[89].zwzz
if_nz r3.x
  mad_sat r3.x, r0.w, cb1[91].x, cb1[91].y
  mul r3.zw, cb1[90].yyyx, l(0.000000, 0.000000, 1.000000, -1.000000)
  dp2 r4.x, r0.xyxx, r3.zwzz
  dp2 r4.y, r0.xyxx, cb1[90].xyxx
  mov r4.z, r0.z
  sample_l_indexable(texturecube)(float,float,float,float) r0.xyz, r4.xyzx, t0.xyzw, s0, l(0.000000)
  sample_l_indexable(texturecube)(float,float,float,float) r4.xyz, r4.xyzx, t0.xyzw, s0, cb1[91].z
  add r0.xyz, r0.xyzx, -r4.xyzx
  mad r0.xyz, r3.xxxx, r0.xyzx, r4.xyzx
  mul r0.xyz, r0.xyzx, cb1[88].xyzx
else
  mov r0.xyz, cb1[88].xyzx
endif
lt [precise(x)] r3.x, l(0.000000), cb1[92].w
eq [precise(z)] r3.z, cb1[89].z, l(0.000000)
and [precise(x)] r3.x, r3.z, r3.x
dp3_sat [precise(z)] r3.z, r5.xyzx, cb1[92].xyzx
log [precise(z)] r3.z, r3.z
mul [precise(z)] r3.z, r3.z, cb1[93].w
exp [precise(z)] r3.z, r3.z
mul [precise(xyz)] r4.xyz, r3.zzzz, cb1[93].xyzx
add [precise(z)] r1.z, r1.z, -cb1[94].x
max [precise(z)] r1.z, r1.z, l(0.000000)
mul [precise(z)] r1.z, r1.z, r1.w
exp [precise(z)] r1.z, -r1.z
min [precise(z)] r1.z, r1.z, l(1.000000)
add [precise(z)] r1.z, -r1.z, l(1.000000)
mul [precise(xyz)] r4.xyz, r1.zzzz, r4.xyzx
and [precise(xyz)] r4.xyz, r3.xxxx, r4.xyzx
exp [precise(z)] r1.z, -r2.z
min [precise(z)] r1.z, r1.z, l(1.000000)
max [precise(w)] r4.w, r1.z, cb1[88].w
lt [precise(w)] r0.w, cb1[89].w, r0.w
and [precise(w)] r0.w, r0.w, r3.y
movc [precise] r3.xyzw, r0.wwww, l(0,0,0,1.000000), r4.xyzw
add r0.w, -r3.w, l(1.000000)
mad r0.xyz, r0.xyzx, r0.wwww, r3.xyzx
mad o3.xyz, r2.xywx, r3.wwww, r0.xyzx
mov o0.w, l(0)
mov o2.xy, r1.xyxx
mov o2.zw, l(0,0,0,0)
mov [precise(w)] o3.w, r3.w
ret
// Approximately 0 instruction slots used

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