//Candle light haloing VS.
// ---- Created with 3Dmigoto v1.3.16 on Sun Jun 06 00:13:25 2021
//Buffer<float4> t5 : register(t5);
//
//Texture3D<float4> t4 : register(t4);
//
//Texture3D<float4> t3 : register(t3);
//
//Texture2D<float4> t2 : register(t2);
//
//Texture2D<float4> t1 : register(t1);
//
//Texture2D<float4> t0 : register(t0);
//
//SamplerState s0_s : register(s0);
//
//cbuffer cb5 : register(b5)
//{
//  float4 cb5[9];
//}
//
//cbuffer cb4 : register(b4)
//{
//  float4 cb4[4];
//}
//
//cbuffer cb3 : register(b3)
//{
//  float4 cb3[60];
//}
//
//cbuffer cb2 : register(b2)
//{
//  float4 cb2[45];
//}
//
//cbuffer cb1 : register(b1)
//{
//  float4 cb1[57];
//}
//
//cbuffer cb0 : register(b0)
//{
//  float4 cb0[1];
//}
//
//
//
//
//// 3Dmigoto declarations
//#define cmp -
//Texture1D<float4> IniParams : register(t120);
//Texture2D<float4> StereoParams : register(t125);
//
//
//void main(
//  float4 v0 : ATTRIBUTE0,
//  float4 v1 : ATTRIBUTE1,
//  float4 v2 : ATTRIBUTE2,
//  float4 v3 : ATTRIBUTE3,
//  float4 v4 : ATTRIBUTE5,
//  float2 v5 : ATTRIBUTE4,
//  uint v6 : SV_VertexID0,
//  out float4 o0 : TEXCOORD10,
//  out float4 o1 : TEXCOORD11,
//  out float4 o2 : TEXCOORD1,
//  out float4 o3 : TEXCOORD2,
//  out float4 o4 : TEXCOORD3,
//  out float4 o5 : TEXCOORD7,
//  out float o6 : TEXCOORD8,
//  out float4 o7 : SV_POSITION0)
//{
//// Needs manual fix for instruction:
//// unknown dcl_: dcl_input_sgv v6.x, vertex_id
//  float4 r0,r1,r2,r3,r4,r5,r6,r7,r8;
//  uint4 bitmask, uiDest;
//  float4 fDest;
//
//  r0.xyz = cb4[1].xyz * v0.yyy;
//  r0.xyz = v0.xxx * cb4[0].xyz + r0.xyz;
//  r0.xyz = v0.zzz * cb4[2].xyz + r0.xyz;
//  r0.xyz = cb4[3].xyz + r0.xyz;
//  r1.xyz = cb4[1].zxy * v1.yyy;
//  r1.xyz = v1.xxx * cb4[0].zxy + r1.xyz;
//  r1.xyz = v1.zzz * cb4[2].zxy + r1.xyz;
//  r1.xyz = cb4[3].zxy + r1.xyz;
//  r2.xyz = cb5[0].zxy + -cb1[50].zxy;
//  r2.xyz = cb5[0].www * r2.xyz + cb1[50].zxy;
//  r3.xyz = cb5[1].zxy + cb1[49].zxy;
//  r3.xyz = cb5[1].www * r3.xyz + -cb1[49].zxy;
//  r4.xyz = cb1[53].yzx + -r0.yzx;
//  r0.w = dot(r4.xyz, r4.xyz);
//  r0.w = max(0.00999999978, r0.w);
//  r0.w = rsqrt(r0.w);
//  r4.xyz = r4.xyz * r0.www;
//  r1.xyz = -r1.xyz + r0.zxy;
//  r0.w = dot(r1.xyz, r1.xyz);
//  r0.w = max(0.00999999978, r0.w);
//  r0.w = rsqrt(r0.w);
//  r1.xyz = r1.xyz * r0.www;
//  r5.xyz = r4.xyz * r1.yzx;
//  r5.xyz = r4.zxy * r1.zxy + -r5.xyz;
//  r0.w = dot(r5.xyz, r5.xyz);
//  r0.w = max(0.00999999978, r0.w);
//  r0.w = rsqrt(r0.w);
//  r5.xyz = r5.xyz * r0.www;
//  r6.xyz = cb5[0].yzx * r4.zxy;
//  r6.xyz = cb5[0].xyz * r4.xyz + -r6.xyz;
//  r0.w = dot(r6.xyz, r6.xyz);
//  r0.w = max(0.00999999978, r0.w);
//  r0.w = rsqrt(r0.w);
//  r6.xyz = r6.xyz * r0.www;
//  r7.xyz = float3(0,0,1) * r4.xyz;
//  r7.xyz = r4.zxy * float3(0,1,0) + -r7.xyz;
//  r0.w = dot(r7.yz, r7.yz);
//  r0.w = max(0.00999999978, r0.w);
//  r0.w = rsqrt(r0.w);
//  r7.xyz = r7.xyz * r0.www;
//  r8.xyz = r7.yzx * r4.xyz;
//  r4.xyz = r4.zxy * r7.zxy + -r8.xyz;
//  r5.xyz = cb5[2].yyy * r5.xyz;
//  r2.xyz = r2.xyz * cb5[2].xxx + r5.xyz;
//  r2.xyz = cb5[0].zxy * cb5[2].zzz + r2.xyz;
//  r2.xyz = r7.xyz * cb5[2].www + r2.xyz;
//  r1.xyz = cb5[2].yyy * -r1.xyz;
//  r1.xyz = r3.xyz * cb5[2].xxx + r1.xyz;
//  r1.xyz = -r6.xyz * cb5[2].zzz + r1.xyz;
//  r1.xyz = r4.xyz * cb5[2].www + r1.xyz;
//  r0.w = v2.z * cb5[7].x + cb5[7].y;
//  sincos(r0.w, r3.x, r4.x);
//  r3.yzw = r4.xxx * r2.yzx;
//  r5.xyz = r3.xxx * r1.yzx + r3.yzw;
//  r2.xyz = r3.xxx * r2.xyz;
//  r1.xyz = r4.xxx * r1.xyz + -r2.xyz;
//  r2.xy = cmp(float2(0,0) < v2.xy);
//  r2.zw = cmp(v2.xy < float2(0,0));
//  r2.xy = (int2)r2.zw + (int2)-r2.xy;
//  r2.xy = (int2)r2.xy;
//  if (cb0[0].x != 0) {
//    r0.w = (uint)v6.x;
//    r1.w = asuint(cb0[0].x);
//    r0.w = r0.w / r1.w;
//    r2.z = cmp(r0.w >= -r0.w);
//    r0.w = frac(r0.w);
//    r0.w = r2.z ? r0.w : -r0.w;
//    r0.w = r0.w * r1.w;
//    r0.w = (uint)r0.w;
//    r1.w = cb5[5].x * cb5[5].y;
//    r2.z = v2.w / r1.w;
//    r2.w = cmp(r2.z >= -r2.z);
//    r2.z = frac(abs(r2.z));
//    r2.z = r2.w ? r2.z : -r2.z;
//    r1.w = r2.z * r1.w;
//    r1.w = (uint)r1.w;
//    r2.z = r2.x * r2.y;
//    r2.z = cmp(r2.z < 0);
//    r2.w = asint(cb0[0].x) + -1;
//    r2.w = (int)r2.w + (int)-r0.w;
//    r0.w = r2.z ? r2.w : r0.w;
//    r0.w = mad((int)r1.w, asint(cb0[0].x), (int)r0.w);
//    r2.zw = t5.Load(r0.w).xy;
//    r3.xy = cmp(r2.xy < float2(0,0));
//    r3.zw = float2(1,1) + -r2.zw;
//    r3.xy = r3.xy ? r3.zw : r2.zw;
//  } else {
//    r2.xy = cmp(r2.xy < float2(0,0));
//    r3.zw = float2(1,1) + -v5.xy;
//    r2.zw = r2.xy ? r3.zw : v5.xy;
//    r3.xy = v5.xy;
//  }
//  r4.xyz = cb1[56].xyz + r0.xyz;
//  r2.xy = cb5[8].xy + r3.xy;
//  r2.xy = abs(v2.xy) * r2.xy;
//  r3.xyz = r2.xxx * r5.xyz + r4.xyz;
//  r3.xyz = r2.yyy * r1.yzx + r3.xyz;
//  r5.w = frac(v2.w);
//  r0.w = v2.w + -r5.w;
//  r1.w = r0.w / cb5[5].x;
//  r2.x = cmp(r1.w >= -r1.w);
//  r1.w = frac(abs(r1.w));
//  r1.w = r2.x ? r1.w : -r1.w;
//  r2.x = cb5[5].x * r1.w;
//  r0.w = cb5[5].z * r0.w;
//  r2.y = floor(r0.w);
//  r2.xy = r2.xy + r2.zw;
//  o4.xy = cb5[5].zw * r2.xy;
//  r2.xyz = r5.zxy * r1.zxy;
//  r2.xyz = r5.yzx * r1.xyz + -r2.xyz;
//  r0.w = dot(r2.xyz, r2.xyz);
//  r0.w = rsqrt(r0.w);
//  r2.xyz = r2.xyz * r0.www;
//  r4.xy = cmp(cb5[7].zz < float2(0.5,1.5));
//  r6.xyz = -cb5[3].xyz + r0.xyz;
//  r0.w = dot(r6.xyz, r6.xyz);
//  r0.w = rsqrt(r0.w);
//  r7.xyz = r6.xyz * r0.www;
//  r0.w = dot(cb5[4].xyz, r6.xyz);
//  r6.xyz = r0.www * cb5[4].xyz + cb5[3].xyz;
//  r0.xyz = -r6.xyz + r0.xyz;
//  r0.w = dot(r0.xyz, r0.xyz);
//  r0.w = rsqrt(r0.w);
//  r0.xyz = r0.xyz * r0.www;
//  r0.xyz = r4.yyy ? r7.xyz : r0.xyz;
//  r0.xyz = r4.xxx ? r2.xyz : r0.xyz;
//  r2.xyzw = cb1[1].xyzw * r3.yyyy;
//  r2.xyzw = r3.xxxx * cb1[0].xyzw + r2.xyzw;
//  r2.xyzw = r3.zzzz * cb1[2].xyzw + r2.xyzw;
//  r2.xyzw = cb1[3].xyzw + r2.xyzw;
//  r4.xyz = r1.xyz * r0.yzx;
//  r1.xyz = r1.zxy * r0.zxy + -r4.xyz;
//  r0.w = dot(r1.xyz, r5.xyz);
//  r1.x = cmp(0 < r0.w);
//  r0.w = cmp(r0.w < 0);
//  r0.w = (int)r0.w + (int)-r1.x;
//  o1.w = (int)r0.w;
//  r0.w = dot(r3.xyz, r3.xyz);
//  r0.w = sqrt(r0.w);
//  r1.x = r0.w * cb3[59].w + 1;
//  r1.x = cb3[59].z / r1.x;
//  r1.x = -cb3[59].z + r1.x;
//  r1.x = saturate(1 + r1.x);
//  r1.y = 9.99999975e-006 * r0.w;
//  r1.z = r0.w * 9.99999975e-006 + -cb2[44].y;
//  r1.w = cb3[47].x * r1.z;
//  r3.w = cmp(0 >= r1.w);
//  if (r3.w != 0) {
//    r4.xyz = float3(0,0,0);
//    r4.w = r1.x;
//  }
//  if (r3.w == 0) {
//    r0.w = r3.z / r0.w;
//    r3.z = r3.z * 9.99999975e-006 + cb3[52].z;
//    r3.z = -cb3[46].z + r3.z;
//    r3.w = cb3[47].y * r3.z;
//    r3.z = r3.z * cb3[47].y + -cb3[52].x;
//    r3.z = cmp(9.99999975e-006 < abs(r3.z));
//    r6.x = 9.99999975e-006 + cb3[52].x;
//    r3.z = r3.z ? r3.w : r6.x;
//    r3.w = exp2(-r3.z);
//    r3.z = -cb3[52].x + r3.z;
//    r3.w = cb3[52].y + -r3.w;
//    r3.z = abs(r3.w) / abs(r3.z);
//    r1.w = r1.w * r1.w;
//    r1.z = r1.z * cb3[47].x + -r1.w;
//    r1.z = cb3[51].w * r1.z + r1.w;
//    r1.w = -r1.z * r3.z;
//    r1.w = exp2(r1.w);
//    r1.z = cb3[48].x * -r1.z;
//    r1.z = exp2(r1.z);
//    r3.z = r1.w * r1.x;
//    r1.x = -r1.w * r1.x + r1.x;
//    r1.w = min(abs(r3.x), abs(r3.y));
//    r3.w = max(abs(r3.x), abs(r3.y));
//    r3.w = 1 / r3.w;
//    r1.w = r3.w * r1.w;
//    r3.w = r1.w * r1.w;
//    r6.x = r3.w * 0.0208350997 + -0.0851330012;
//    r6.x = r3.w * r6.x + 0.180141002;
//    r6.x = r3.w * r6.x + -0.330299497;
//    r3.w = r3.w * r6.x + 0.999866009;
//    r6.x = r3.w * r1.w;
//    r6.y = cmp(abs(r3.y) < abs(r3.x));
//    r6.x = r6.x * -2 + 1.57079637;
//    r6.x = r6.y ? r6.x : 0;
//    r1.w = r1.w * r3.w + r6.x;
//    r3.w = cmp(-r3.y < r3.y);
//    r3.w = r3.w ? -3.141593 : 0;
//    r1.w = r3.w + r1.w;
//    r3.w = min(r3.x, -r3.y);
//    r3.x = max(r3.x, -r3.y);
//    r3.y = cmp(r3.w < -r3.w);
//    r3.x = cmp(r3.x >= -r3.x);
//    r3.x = r3.x ? r3.y : 0;
//    r1.w = r3.x ? -r1.w : r1.w;
//    r3.x = r1.w * -0.159154937 + 0.5;
//    r1.w = 1 + -abs(r0.w);
//    r1.w = sqrt(r1.w);
//    r3.w = abs(r0.w) * -0.0187292993 + 0.0742610022;
//    r3.w = r3.w * abs(r0.w) + -0.212114394;
//    r3.w = r3.w * abs(r0.w) + 1.57072878;
//    r6.x = r3.w * r1.w;
//    r6.x = r6.x * -2 + 3.14159274;
//    r0.w = cmp(-r0.w < r0.w);
//    r0.w = r0.w ? r6.x : 0;
//    r0.w = r3.w * r1.w + r0.w;
//    r0.w = 1.57079637 + -r0.w;
//    r3.y = r0.w * 0.318309873 + 0.5;
//    r0.w = -cb3[52].w * r1.y;
//    r0.w = exp2(r0.w);
//    r0.w = r0.w * cb3[59].y + cb3[59].x;
//    r3.xyw = t0.SampleLevel(s0_s, r3.xy, r0.w).xyz;
//    r3.xyw = cb2[43].www * r3.xyw;
//    r0.w = log2(r3.z);
//    r1.y = 1 + -r1.z;
//    r1.y = r1.y * r3.z;
//    r6.x = cb3[31].w * r1.y;
//    r6.y = cb3[32].w * r1.y;
//    r6.z = cb3[33].w * r1.y;
//    r1.xyw = r3.xyw * r1.xxx + r6.xyz;
//    r4.w = r3.z * r1.z;
//    r3.xyz = cb3[51].xyz * r0.www;
//    r3.xyz = exp2(r3.xyz);
//    r4.xyz = r3.xyz * r1.xyw;
//  }
//  r1.xyz = cb2[43].yyy * r4.xyz;
//  r3.xyz = r2.zxy / r2.www;
//  r0.w = cmp(cb2[13].w != 0.000000);
//  if (r0.w != 0) {
//    r3.yz = r3.yz * float2(0.5,-0.5) + float2(0.5,0.5);
//    r0.w = cmp(cb2[13].z < r3.x);
//    r6.xyzw = r0.wwww ? cb2[11].xyzw : cb2[12].xyzw;
//    r4.xy = -r6.zw * float2(0.5,0.5) + float2(1,1);
//    r3.yz = max(float2(0,0), r3.yz);
//    r3.yz = min(r3.yz, r4.xy);
//    r3.yz = r3.yz * r6.xy;
//    r3.yz = floor(r3.yz);
//    r6.xy = (int2)r3.yz;
//    r6.w = 0;
//    r1.w = t1.Load(r6.xyw).x;
//    r3.y = t2.Load(r6.xyw).x;
//    r3.y = r0.w ? r1.w : r3.y;
//    r3.z = cmp(r3.x < r3.y);
//    r3.y = r3.z ? 0 : r3.y;
//    r1.w = r0.w ? r1.w : r3.y;
//    r1.w = max(cb2[13].w, r1.w);
//    r3.y = max(cb2[13].z, r1.w);
//    r1.w = r0.w ? r3.y : r1.w;
//    r1.w = r1.w * cb1[51].z + -cb1[51].w;
//    r3.y = r2.w * r1.w;
//    r4.y = 32 * r3.y;
//    r3.y = r3.y * 32 + -1;
//    r3.y = max(0, r3.y);
//    r4.x = min(30.9990005, r3.y);
//    r4.y = saturate(r4.y);
//    r3.y = cb2[13].x * r1.w;
//    r3.y = r2.w * r1.w + -r3.y;
//    r1.w = -cb2[13].x * r1.w + 1;
//    r1.w = r3.y / r1.w;
//    r1.w = 15 * r1.w;
//    r1.w = max(0, r1.w);
//    r7.x = min(14.9989996, r1.w);
//    r7.y = 1;
//    r3.yz = r0.ww ? r4.xy : r7.xy;
//    r1.w = floor(r3.y);
//    r6.z = (int)r1.w;
//    r1.w = frac(r3.y);
//    if (r0.w != 0) {
//      r7.xyzw = t3.Load(r6.xyzw, int3(0, 0, 0)).xyzw;
//      r8.xyzw = t3.Load(r6.xyzw, int3(0, 0, 0)).xyzw;
//      r8.xyzw = r8.xyzw + -r7.xyzw;
//      r7.xyzw = r1.wwww * r8.xyzw + r7.xyzw;
//      r7.xyzw = r7.xyzw * r3.zzzz;
//    } else {
//      r8.xyzw = t4.Load(r6.xyzw, int3(0, 0, 0)).xyzw;
//      r6.xyzw = t4.Load(r6.xyzw, int3(0, 0, 0)).xyzw;
//      r6.xyzw = r6.xyzw + -r8.xyzw;
//      r7.xyzw = r1.wwww * r6.xyzw + r8.xyzw;
//    }
//  } else {
//    r7.xyzw = float4(0,0,0,0);
//  }
//  r0.w = 1 + -r7.w;
//  r1.w = r4.w * r0.w;
//  o5.xyz = r1.xyz * r0.www + r7.xyz;
//  r3.x = saturate(r3.x);
//  r0.w = sqrt(r3.x);
//  r0.w = r0.w * cb2[15].x + -cb2[15].y;
//  r1.x = min(1, abs(r0.w));
//  r1.y = max(1, abs(r0.w));
//  r1.y = 1 / r1.y;
//  r1.x = r1.x * r1.y;
//  r1.y = r1.x * r1.x;
//  r1.z = r1.y * 0.0208350997 + -0.0851330012;
//  r1.z = r1.y * r1.z + 0.180141002;
//  r1.z = r1.y * r1.z + -0.330299497;
//  r1.y = r1.y * r1.z + 0.999866009;
//  r1.z = r1.x * r1.y;
//  r3.x = cmp(1 < abs(r0.w));
//  r1.z = r1.z * -2 + 1.57079637;
//  r1.z = r3.x ? r1.z : 0;
//  r1.x = r1.x * r1.y + r1.z;
//  r0.w = min(1, r0.w);
//  r0.w = cmp(r0.w < -r0.w);
//  r0.w = r0.w ? -r1.x : r1.x;
//  o6.x = r0.w * -0.318309873 + 0.5;
//  o0.xyzw = r5.xyzw;
//  o1.xyz = r0.xyz;
//  o2.xyzw = v4.xyzw;
//  o3.xyzw = v3.xyzw;
//  o4.zw = float2(0,0);
//  o5.w = r1.w;
//  o7.xyzw = r2.xyzw;
//  return;
//}
//
///*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.3.16 on Sun Jun 06 00:13:25 2021
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// ATTRIBUTE                0   xyzw        0     NONE   float   xyz
// ATTRIBUTE                1   xyzw        1     NONE   float   xyz
// ATTRIBUTE                2   xyzw        2     NONE   float   xyzw
// ATTRIBUTE                3   xyzw        3     NONE   float   xyzw
// ATTRIBUTE                5   xyzw        4     NONE   float   xyzw
// ATTRIBUTE                4   xy          5     NONE   float   xy
// SV_VertexID              0   x           6   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                 1   xyzw        2     NONE   float   xyzw
// TEXCOORD                 2   xyzw        3     NONE   float   xyzw
// TEXCOORD                 3   xyzw        4     NONE   float   xyzw
// TEXCOORD                 7   xyzw        5     NONE   float   xyzw
// TEXCOORD                 8   x           6     NONE   float   x
// SV_POSITION              0   xyzw        7      POS   float   xyzw
//
vs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[1], immediateIndexed
dcl_constantbuffer cb1[57], immediateIndexed
dcl_constantbuffer cb2[45], immediateIndexed
dcl_constantbuffer cb3[60], immediateIndexed
dcl_constantbuffer cb4[4], immediateIndexed
dcl_constantbuffer cb5[9], immediateIndexed
dcl_sampler s0, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture3d (float,float,float,float) t3
dcl_resource_texture3d (float,float,float,float) t4
dcl_resource_buffer (float,float,float,float) t5
dcl_input v0.xyz
dcl_input v1.xyz
dcl_input v2.xyzw
dcl_input v3.xyzw
dcl_input v4.xyzw
dcl_input v5.xy
dcl_input_sgv v6.x, vertex_id
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xyzw
dcl_output o4.xyzw
dcl_output o5.xyzw
dcl_output o6.x
dcl_output_siv o7.xyzw, position
dcl_temps 35
dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture2d)(float,float,float,float) r25.xyzw, l(0, 0, 0, 0), t125.xyzw
mul r0.xyz, v0.yyyy, cb4[1].xyzx
mad r0.xyz, v0.xxxx, cb4[0].xyzx, r0.xyzx
mad r0.xyz, v0.zzzz, cb4[2].xyzx, r0.xyzx
add r0.xyz, r0.xyzx, cb4[3].xyzx
mul r1.xyz, v1.yyyy, cb4[1].zxyz
mad r1.xyz, v1.xxxx, cb4[0].zxyz, r1.xyzx
mad r1.xyz, v1.zzzz, cb4[2].zxyz, r1.xyzx
add r1.xyz, r1.xyzx, cb4[3].zxyz
add r2.xyz, -cb1[50].zxyz, cb5[0].zxyz
mad r2.xyz, cb5[0].wwww, r2.xyzx, cb1[50].zxyz
add r3.xyz, cb1[49].zxyz, cb5[1].zxyz
mad r3.xyz, cb5[1].wwww, r3.xyzx, -cb1[49].zxyz
add r4.xyz, -r0.yzxy, cb1[53].yzxy
dp3 r0.w, r4.xyzx, r4.xyzx
max r0.w, r0.w, l(0.010000)
rsq r0.w, r0.w
mul r4.xyz, r0.wwww, r4.xyzx
add r1.xyz, r0.zxyz, -r1.xyzx
dp3 r0.w, r1.xyzx, r1.xyzx
max r0.w, r0.w, l(0.010000)
rsq r0.w, r0.w
mul r1.xyz, r0.wwww, r1.xyzx
mul r5.xyz, r1.yzxy, r4.xyzx
mad r5.xyz, r4.zxyz, r1.zxyz, -r5.xyzx
dp3 r0.w, r5.xyzx, r5.xyzx
max r0.w, r0.w, l(0.010000)
rsq r0.w, r0.w
mul r5.xyz, r0.wwww, r5.xyzx
mul r6.xyz, r4.zxyz, cb5[0].yzxy
mad r6.xyz, cb5[0].xyzx, r4.xyzx, -r6.xyzx
dp3 r0.w, r6.xyzx, r6.xyzx
max r0.w, r0.w, l(0.010000)
rsq r0.w, r0.w
mul r6.xyz, r0.wwww, r6.xyzx
mul r7.xyz, r4.xyzx, l(0.000000, 0.000000, 1.000000, 0.000000)
mad r7.xyz, r4.zxyz, l(0.000000, 1.000000, 0.000000, 0.000000), -r7.xyzx
dp2 r0.w, r7.yzyy, r7.yzyy
max r0.w, r0.w, l(0.010000)
rsq r0.w, r0.w
mul r7.xyz, r0.wwww, r7.xyzx
mul r8.xyz, r4.xyzx, r7.yzxy
mad r4.xyz, r4.zxyz, r7.zxyz, -r8.xyzx
mul r5.xyz, r5.xyzx, cb5[2].yyyy
mad r2.xyz, r2.xyzx, cb5[2].xxxx, r5.xyzx
mad r2.xyz, cb5[0].zxyz, cb5[2].zzzz, r2.xyzx
mad r2.xyz, r7.xyzx, cb5[2].wwww, r2.xyzx
mul r1.xyz, -r1.xyzx, cb5[2].yyyy
mad r1.xyz, r3.xyzx, cb5[2].xxxx, r1.xyzx
mad r1.xyz, -r6.xyzx, cb5[2].zzzz, r1.xyzx
mad r1.xyz, r4.xyzx, cb5[2].wwww, r1.xyzx
mad r0.w, v2.z, cb5[7].x, cb5[7].y
sincos r3.x, r4.x, r0.w
mul r3.yzw, r2.yyzx, r4.xxxx
mad r5.xyz, r3.xxxx, r1.yzxy, r3.yzwy
mul r2.xyz, r2.xyzx, r3.xxxx
mad r1.xyz, r4.xxxx, r1.xyzx, -r2.xyzx
lt r2.xy, l(0.000000, 0.000000, 0.000000, 0.000000), v2.xyxx
lt r2.zw, v2.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000)
iadd r2.xy, r2.zwzz, -r2.xyxx
itof r2.xy, r2.xyxx
if_nz cb0[0].x
  utof r0.w, v6.x
  utof r1.w, cb0[0].x
  div r0.w, r0.w, r1.w
  ge r2.z, r0.w, -r0.w
  frc r0.w, r0.w
  movc r0.w, r2.z, r0.w, -r0.w
  mul r0.w, r1.w, r0.w
  ftou r0.w, r0.w
  mul r1.w, cb5[5].y, cb5[5].x
  div r2.z, v2.w, r1.w
  ge r2.w, r2.z, -r2.z
  frc r2.z, |r2.z|
  movc r2.z, r2.w, r2.z, -r2.z
  mul r1.w, r1.w, r2.z
  ftou r1.w, r1.w
  mul r2.z, r2.y, r2.x
  lt r2.z, r2.z, l(0.000000)
  iadd r2.w, cb0[0].x, l(-1)
  iadd r2.w, r2.w, -r0.w
  movc r0.w, r2.z, r2.w, r0.w
  imad r0.w, r1.w, cb0[0].x, r0.w
  ld_indexable(buffer)(float,float,float,float) r2.zw, r0.wwww, t5.zwxy
  lt r3.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
  add r3.zw, -r2.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000)
  movc r3.xy, r3.xyxx, r3.zwzz, r2.zwzz
else
  lt r2.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
  add r3.zw, -v5.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000)
  movc r2.zw, r2.xxxy, r3.zzzw, v5.xxxy
  mov r3.xy, v5.xyxx
endif
add r4.xyz, r0.xyzx, cb1[56].xyzx
add r2.xy, r3.xyxx, cb5[8].xyxx
mul r2.xy, r2.xyxx, |v2.xyxx|
mad r3.xyz, r2.xxxx, r5.xyzx, r4.xyzx
mad r3.xyz, r2.yyyy, r1.yzxy, r3.xyzx
frc r5.w, v2.w
add r0.w, -r5.w, v2.w
div r1.w, r0.w, cb5[5].x
ge r2.x, r1.w, -r1.w
frc r1.w, |r1.w|
movc r1.w, r2.x, r1.w, -r1.w
mul r2.x, r1.w, cb5[5].x
mul r0.w, r0.w, cb5[5].z
round_ni r2.y, r0.w
add r2.xy, r2.zwzz, r2.xyxx
mul o4.xy, r2.xyxx, cb5[5].zwzz
mul r2.xyz, r1.zxyz, r5.zxyz
mad r2.xyz, r5.yzxy, r1.xyzx, -r2.xyzx
dp3 r0.w, r2.xyzx, r2.xyzx
rsq r0.w, r0.w
mul r2.xyz, r0.wwww, r2.xyzx
lt r4.xy, cb5[7].zzzz, l(0.500000, 1.500000, 0.000000, 0.000000)
add r6.xyz, r0.xyzx, -cb5[3].xyzx
dp3 r0.w, r6.xyzx, r6.xyzx
rsq r0.w, r0.w
mul r7.xyz, r0.wwww, r6.xyzx
dp3 r0.w, cb5[4].xyzx, r6.xyzx
mad r6.xyz, r0.wwww, cb5[4].xyzx, cb5[3].xyzx
add r0.xyz, r0.xyzx, -r6.xyzx
dp3 r0.w, r0.xyzx, r0.xyzx
rsq r0.w, r0.w
mul r0.xyz, r0.wwww, r0.xyzx
movc r0.xyz, r4.yyyy, r7.xyzx, r0.xyzx
movc r0.xyz, r4.xxxx, r2.xyzx, r0.xyzx
mul r2.xyzw, r3.yyyy, cb1[1].xyzw
mad r2.xyzw, r3.xxxx, cb1[0].xyzw, r2.xyzw
mad r2.xyzw, r3.zzzz, cb1[2].xyzw, r2.xyzw
add r2.xyzw, r2.xyzw, cb1[3].xyzw
mul r4.xyz, r0.yzxy, r1.xyzx
mad r1.xyz, r1.zxyz, r0.zxyz, -r4.xyzx
dp3 r0.w, r1.xyzx, r5.xyzx
lt r1.x, l(0.000000), r0.w
lt r0.w, r0.w, l(0.000000)
iadd r0.w, r0.w, -r1.x
itof o1.w, r0.w
dp3 r0.w, r3.xyzx, r3.xyzx
sqrt r0.w, r0.w
mad r1.x, r0.w, cb3[59].w, l(1.000000)
div r1.x, cb3[59].z, r1.x
add r1.x, r1.x, -cb3[59].z
add_sat r1.x, r1.x, l(1.000000)
mul r1.y, r0.w, l(0.000010)
mad r1.z, r0.w, l(0.000010), -cb2[44].y
mul r1.w, r1.z, cb3[47].x
ge r3.w, l(0.000000), r1.w
if_nz r3.w
  mov r4.xyz, l(0,0,0,0)
  mov r4.w, r1.x
endif
if_z r3.w
  div r0.w, r3.z, r0.w
  mad r3.z, r3.z, l(0.000010), cb3[52].z
  add r3.z, r3.z, -cb3[46].z
  mul r3.w, r3.z, cb3[47].y
  mad r3.z, r3.z, cb3[47].y, -cb3[52].x
  lt r3.z, l(0.000010), |r3.z|
  add r6.x, cb3[52].x, l(0.000010)
  movc r3.z, r3.z, r3.w, r6.x
  exp r3.w, -r3.z
  add r3.z, r3.z, -cb3[52].x
  add r3.w, -r3.w, cb3[52].y
  div r3.z, |r3.w|, |r3.z|
  mul r1.w, r1.w, r1.w
  mad r1.z, r1.z, cb3[47].x, -r1.w
  mad r1.z, cb3[51].w, r1.z, r1.w
  mul r1.w, r3.z, -r1.z
  exp r1.w, r1.w
  mul r1.z, -r1.z, cb3[48].x
  exp r1.z, r1.z
  mul r3.z, r1.x, r1.w
  mad r1.x, -r1.w, r1.x, r1.x
  min r1.w, |r3.y|, |r3.x|
  max r3.w, |r3.y|, |r3.x|
  div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r3.w
  mul r1.w, r1.w, r3.w
  mul r3.w, r1.w, r1.w
  mad r6.x, r3.w, l(0.0208350997), l(-0.085133)
  mad r6.x, r3.w, r6.x, l(0.180141)
  mad r6.x, r3.w, r6.x, l(-0.330299497)
  mad r3.w, r3.w, r6.x, l(0.999866)
  mul r6.x, r1.w, r3.w
  lt r6.y, |r3.y|, |r3.x|
  mad r6.x, r6.x, l(-2.000000), l(1.57079637)
  and r6.x, r6.y, r6.x
  mad r1.w, r1.w, r3.w, r6.x
  lt r3.w, -r3.y, r3.y
  and r3.w, r3.w, l(0xc0490fdb)
  add r1.w, r1.w, r3.w
  min r3.w, -r3.y, r3.x
  max r3.x, -r3.y, r3.x
  lt r3.y, r3.w, -r3.w
  ge r3.x, r3.x, -r3.x
  and r3.x, r3.x, r3.y
  movc r1.w, r3.x, -r1.w, r1.w
  mad r3.x, r1.w, l(-0.159154937), l(0.500000)
  add r1.w, -|r0.w|, l(1.000000)
  sqrt r1.w, r1.w
  mad r3.w, |r0.w|, l(-0.0187292993), l(0.074261)
  mad r3.w, r3.w, |r0.w|, l(-0.212114394)
  mad r3.w, r3.w, |r0.w|, l(1.57072878)
  mul r6.x, r1.w, r3.w
  mad r6.x, r6.x, l(-2.000000), l(3.14159274)
  lt r0.w, -r0.w, r0.w
  and r0.w, r0.w, r6.x
  mad r0.w, r3.w, r1.w, r0.w
  add r0.w, -r0.w, l(1.57079637)
  mad r3.y, r0.w, l(0.318309873), l(0.500000)
  mul r0.w, r1.y, -cb3[52].w
  exp r0.w, r0.w
  mad r0.w, r0.w, cb3[59].y, cb3[59].x
  sample_l_indexable(texture2d)(float,float,float,float) r3.xyw, r3.xyxx, t0.xywz, s0, r0.w
  mul r3.xyw, r3.xyxw, cb2[43].wwww
  log r0.w, r3.z
  add r1.y, -r1.z, l(1.000000)
  mul r1.y, r3.z, r1.y
  mul r6.x, r1.y, cb3[31].w
  mul r6.y, r1.y, cb3[32].w
  mul r6.z, r1.y, cb3[33].w
  mad r1.xyw, r3.xyxw, r1.xxxx, r6.xyxz
  mul r4.w, r1.z, r3.z
  mul r3.xyz, r0.wwww, cb3[51].xyzx
  exp r3.xyz, r3.xyzx
  mul r4.xyz, r1.xywx, r3.xyzx
endif
mul r1.xyz, r4.xyzx, cb2[43].yyyy

mov r24.xyzw, r2.xyzw
add r25.w, r24.w, -r25.y
mad r24.x, r25.x, r25.w, r24.x

div r3.xyz, r24.zxyz, r2.wwww
ne r0.w, cb2[13].w, l(0.000000)
if_nz r0.w
  mad r3.yz, r3.yyzy, l(0.000000, 0.500000, -0.500000, 0.000000), l(0.000000, 0.500000, 0.500000, 0.000000)
  lt r0.w, cb2[13].z, r3.x
  movc r6.xyzw, r0.wwww, cb2[11].xyzw, cb2[12].xyzw
  mad r4.xy, -r6.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000), l(1.000000, 1.000000, 0.000000, 0.000000)
  max r3.yz, r3.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000)
  min r3.yz, r4.xxyx, r3.yyzy
  mul r3.yz, r6.xxyx, r3.yyzy
  round_ni r3.yz, r3.yyzy
  ftoi r6.xy, r3.yzyy
  mov r6.w, l(0)
  ld_indexable(texture2d)(float,float,float,float) r1.w, r6.xyww, t1.yzwx
  ld_indexable(texture2d)(float,float,float,float) r3.y, r6.xyww, t2.yxzw
  movc r3.y, r0.w, r1.w, r3.y
  lt r3.z, r3.x, r3.y
  movc r3.y, r3.z, l(0), r3.y
  movc r1.w, r0.w, r1.w, r3.y
  max r1.w, r1.w, cb2[13].w
  max r3.y, r1.w, cb2[13].z
  movc r1.w, r0.w, r3.y, r1.w
  mad r1.w, r1.w, cb1[51].z, -cb1[51].w
  mul r3.y, r1.w, r2.w
  mul r4.y, r3.y, l(32.000000)
  mad r3.y, r3.y, l(32.000000), l(-1.000000)
  max r3.y, r3.y, l(0.000000)
  min r4.x, r3.y, l(30.999001)
  mov_sat r4.y, r4.y
  mul r3.y, r1.w, cb2[13].x
  mad r3.y, r2.w, r1.w, -r3.y
  mad r1.w, -cb2[13].x, r1.w, l(1.000000)
  div r1.w, r3.y, r1.w
  mul r1.w, r1.w, l(15.000000)
  max r1.w, r1.w, l(0.000000)
  min r7.x, r1.w, l(14.999000)
  mov r7.y, l(1.000000)
  movc r3.yz, r0.wwww, r4.xxyx, r7.xxyx
  round_ni r1.w, r3.y
  ftoi r6.z, r1.w
  frc r1.w, r3.y
  if_nz r0.w
    ld_aoffimmi_indexable(0,0,0)(texture3d)(float,float,float,float) r7.xyzw, r6.xyzw, t3.xyzw
    ld_aoffimmi_indexable(0,0,1)(texture3d)(float,float,float,float) r8.xyzw, r6.xyzw, t3.xyzw
    add r8.xyzw, -r7.xyzw, r8.xyzw
    mad r7.xyzw, r1.wwww, r8.xyzw, r7.xyzw
    mul r7.xyzw, r3.zzzz, r7.xyzw
  else
    ld_aoffimmi_indexable(0,0,0)(texture3d)(float,float,float,float) r8.xyzw, r6.xyzw, t4.xyzw
    ld_aoffimmi_indexable(0,0,1)(texture3d)(float,float,float,float) r6.xyzw, r6.xyzw, t4.xyzw
    add r6.xyzw, -r8.xyzw, r6.xyzw
    mad r7.xyzw, r1.wwww, r6.xyzw, r8.xyzw
  endif
else
  mov r7.xyzw, l(0,0,0,0)
endif
add r0.w, -r7.w, l(1.000000)
mul r1.w, r0.w, r4.w
mad o5.xyz, r1.xyzx, r0.wwww, r7.xyzx
mov_sat r3.x, r3.x
sqrt r0.w, r3.x
mad r0.w, r0.w, cb2[15].x, -cb2[15].y
min r1.x, |r0.w|, l(1.000000)
max r1.y, |r0.w|, l(1.000000)
div r1.y, l(1.000000, 1.000000, 1.000000, 1.000000), r1.y
mul r1.x, r1.y, r1.x
mul r1.y, r1.x, r1.x
mad r1.z, r1.y, l(0.0208350997), l(-0.085133)
mad r1.z, r1.y, r1.z, l(0.180141)
mad r1.z, r1.y, r1.z, l(-0.330299497)
mad r1.y, r1.y, r1.z, l(0.999866)
mul r1.z, r1.y, r1.x
lt r3.x, l(1.000000), |r0.w|
mad r1.z, r1.z, l(-2.000000), l(1.57079637)
and r1.z, r3.x, r1.z
mad r1.x, r1.x, r1.y, r1.z
min r0.w, r0.w, l(1.000000)
lt r0.w, r0.w, -r0.w
movc r0.w, r0.w, -r1.x, r1.x
mad o6.x, r0.w, l(-0.318309873), l(0.500000)
mov o0.xyzw, r5.xyzw
mov o1.xyz, r0.xyzx
mov o2.xyzw, v4.xyzw
mov o3.xyzw, v3.xyzw
mov o4.zw, l(0,0,0,0)
mov o5.w, r1.w
mov o7.xyzw, r2.xyzw
ret
// Approximately 0 instruction slots used
