//water caustics
// ---- Created with 3Dmigoto v0.6.164 on Sun Feb  8 01:40:38 2026
Texture2DArray<float4> t12 : register(t12);

Texture2D<float4> t11 : register(t11);

Texture2D<float4> t10 : register(t10);

Texture2D<float4> t9 : register(t9);

Texture2DArray<float4> t8 : register(t8);

Texture2DArray<float4> t7 : register(t7);

Texture2DArray<float4> t6 : register(t6);

Texture2DArray<float4> t5 : register(t5);

Texture2DArray<float4> t4 : register(t4);

struct t3_t {
  float val[8];
};
StructuredBuffer<t3_t> t3 : register(t3);

Texture2D<float4> t2 : register(t2);

Texture2DArray<float4> t1 : register(t1);

Texture2DArray<float4> t0 : register(t0);

SamplerState s2_s : register(s2);

SamplerState s1_s : register(s1);

SamplerState s0_s : register(s0);

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

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

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

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

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

cbuffer cb10 : register(b10)
{
  float4 cb10[26];
}


// 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;
  uint4 bitmask, uiDest;
  float4 fDest;
  
  
float4 s = StereoParams.Load(0);
float4 testeo = IniParams.Load(int2(90,0));



  r0.xy = (uint2)v0.xy;
  r1.x = (int)cb0[25].y;
  switch (r1.x) {
    case 0 :    r1.yzw = float3(0,0,0);
    break;
    case 1 :    case 4 :    r0.z = 0;
    r1.yzw = t1.Load(r0.xyzz).xyz;
    break;
    case 3 :    r0.w = 0;
    r1.yzw = t12.Load(r0.xyww).xyz;
    break;
    default :
    r0.zw = float2(0,0);
    r1.yzw = t1.Load(r0.xyzw).xyz;
    break;
  }
  r0.zw = float2(0,0);
  r2.x = t7.Load(r0.xyww).x;
  r2.y = cmp(r2.x == 2.000000);
  r2.z = cmp(r2.x != 0.000000);
  r2.y = (int)r2.z | (int)r2.y;
  if (r2.y != 0) {
    r2.y = t0.Load(r0.xyww).x;
	
		
	
    r2.zw = cb1[42].zw * v0.xy;
	

	
    r3.xy = r2.zw * float2(2,2) + float2(-1,-1);
    r4.xyzw = cb1[25].xyzw * -r3.yyyy;
    r3.xyzw = cb1[24].xyzw * r3.xxxx + r4.xyzw;
    r3.xyzw = cb1[26].xyzw * r2.yyyy + r3.xyzw;
    r3.xyzw = cb1[27].xyzw + r3.xyzw;
	

	
    r3.xyz = r3.xyz / r3.www;
    r3.w = cmp(cb1[11].w == 0.000000);
    r3.xyz = cb1[7].xyz + -r3.xyz;
    r4.x = r3.w ? r3.x : cb1[0].z;
    r4.y = r3.w ? r3.y : cb1[1].z;
    r4.z = r3.w ? r3.z : cb1[2].z;
    r3.x = dot(r4.xyz, r4.xyz);
    r3.x = rsqrt(r3.x);
    r3.xyz = r4.xyz * r3.xxx;
    r0.z = t8.Load(r0.xyzw).x;
    r0.w = cmp(r2.x != 1.000000);
    r2.x = cmp(r2.y < r0.z);
    r0.w = r0.w ? r2.x : 0;
    r0.z = r0.w ? r0.z : r2.y;
    r2.x = cb1[45].z * r0.z + cb1[45].w;
    r2.x = 1 / r2.x;
    r2.y = cb1[46].y + -cb1[46].z;
    r2.y = r0.z * r2.y + cb1[46].z;
    r2.y = r2.y + -r2.x;
    r2.x = cb1[47].w * r2.y + r2.x;
    r4.xy = float2(-2,-1.5) + cb4[1].wy;
    r2.y = max(0, cb0[25].x);
    r2.y = min(r2.y, r4.x);
    r3.w = (int)r2.y;
    r4.x = t3[r3.w].val[0/4];
    r4.z = t3[r3.w].val[0/4+1];
    r4.w = t3[r3.w].val[12/4];
    r3.w = t3[r3.w].val[20/4];
    r5.z = trunc(r2.y);
    r4.xz = cb1[40].xz + -r4.xz;
    r2.y = r3.w * r4.w;
    r4.xz = r4.xz / r2.yy;
    r5.xy = float2(0.5,0.5) + r4.xz;
    r2.y = t5.SampleLevel(s0_s, r5.xyz, 0).x;
    r2.y = -1000 + r2.y;
    r2.y = 1000 + r2.y;
    r3.w = t6.SampleLevel(s0_s, r5.xyz, 0).x;
    r4.x = cb1[280].w ? cb2[10].x : 255;
    r4.x = (int)r4.x & asint(cb1[284].y);
    r4.x = r4.x ? cb1[284].x : 1;
    r3.w = 1 + -r3.w;
    r6.xyz = -cb0[1].xyz + cb0[0].xyz;
    r6.xyz = r3.www * r6.xyz + cb0[1].xyz;
    r2.y = saturate(r2.y / cb0[3].x);
    r2.y = 1 + -r2.y;
    r2.y = log2(r2.y);
    r2.y = cb0[3].y * r2.y;
    r2.y = exp2(r2.y);
    r7.xyz = cb0[2].xyz + -cb0[1].xyz;
    r7.xyz = r3.www * r7.xyz + cb0[1].xyz;
    r7.xyz = r7.xyz + -r6.xyz;
    r6.xyz = r2.yyy * r7.xyz + r6.xyz;
    r7.xyz = cb4[4].xyz * r3.www;
    r7.xyz = float3(0.318310142,0.318310142,0.318310142) * r7.xyz;
    r4.xzw = cb0[14].yzw * r4.xxx + r7.xyz;
    r2.y = dot(cb4[3].xyz, -r3.xyz);
    r2.y = max(0, r2.y);
    r2.y = log2(r2.y);
    r2.y = cb0[5].x * r2.y;
    r2.y = exp2(r2.y);
    r2.y = cb0[3].w * r2.y + cb0[3].z;
    r7.xyz = cb0[4].xyz * r2.yyy;
    r7.xyz = cb4[4].xyz * r7.xyz;
    r3.xzw = r7.xyz * r3.www;
    r2.y = -abs(r3.y) * abs(r3.y) + 1;
    r3.xyz = r3.xzw * r2.yyy;
    r3.xyz = r6.xyz * r4.xzw + r3.xyz;
    r0.z = cmp(0.000500000024 < r0.z);
    r0.w = ~(int)r0.w;
    r0.z = r0.w ? r0.z : 0;
    if (r0.z != 0) {
      r0.z = 1 / r2.x;
      r0.z = -cb1[45].w + r0.z;
      r0.z = r0.z / cb1[45].z;
      r4.xz = cb1[42].xy * r2.zw;
      r4.xz = cb1[42].zw * r4.xz;
      r4.xz = r4.xz * float2(2,2) + float2(-1,-1);
	  
r4.x -= s.x;	  
	  
      r6.xyzw = cb1[25].xyzw * -r4.zzzz;
      r6.xyzw = cb1[24].xyzw * r4.xxxx + r6.xyzw;
      r6.xyzw = cb1[26].xyzw * r0.zzzz + r6.xyzw;
      r6.xyzw = cb1[27].xyzw + r6.xyzw;
	  r4.xzw = r6.xyz / r6.www;
	  
r4.x -= s.x * (r0.z - s.y) * cb10[12].x;
	  	
	  
      r4.xzw = cb1[40].xyz + r4.xzw;
      r0.z = t4.SampleLevel(s0_s, r5.xyz, 0).y;
      r0.z = cb4[1].y + r0.z;
      r0.z = r0.z + -r4.z;
      r0.w = log2(r2.x);
      r0.w = r0.w / cb0[7].x;
      r5.xy = cb4[3].xz * r0.zz;
      r0.z = 4 * cb4[3].y;
      r5.zw = r5.xy / r0.zz;
      r5.zw = r5.zw + r4.xw;
      r6.xy = r5.zw / cb0[6].xx;
      r7.x = cb4[0].x * 0.0439999998 + r6.x;
      r6.z = 17.1599998;
      r7.y = -0.169 * cb4[0].x;
      r6.xy = r7.xy + r6.zy;
      r6.zw = float2(1.37,1.37) * r5.zw;
      r6.zw = r6.zw / cb0[6].xx;
      r6.zw = cb4[0].xx * float2(0.247999996,0.116999999) + r6.zw;
      r5.zw = r5.zw / cb0[7].zz;
      r7.xyz = t10.Sample(s1_s, r5.zw).xyw;
      r8.xz = r7.zz * r7.xx;
      r8.yw = r7.yy;
      r7.xyzw = r8.xyzw * float4(2,2,2,2) + float4(-1,-1,-1,-1);
      r7.xyzw = cb0[7].yyyy * r7.xyzw;
      r5.zw = r7.xy * float2(1.29999995,1.29999995) + r6.xy;
      r6.xy = r7.zw * float2(1.76999998,1.76999998) + r6.zw;
      r5.xy = r5.xy / cb4[3].yy;
      r4.xz = r5.xy + r4.xw;
      r5.x = t3[cb3[0].x].val[0/4];
      r5.y = t3[cb3[0].x].val[0/4+1];
      r0.z = t3[cb3[0].x].val[12/4];
      r2.y = t3[cb3[0].x].val[20/4];
      r7.z = asuint(cb3[0].x);
      r4.xz = -r5.xy + r4.xz;
      r0.z = r2.y * r0.z;
      r4.xz = r4.xz / r0.zz;
      r7.xy = float2(0.5,0.5) + r4.xz;
      r0.z = t6.SampleLevel(s0_s, r7.xyz, 0).y;
      r0.z = 1 + -r0.z;
      r0.z = cb0[6].z * r0.z;
      r4.xzw = t9.SampleLevel(s1_s, r5.zw, r0.w).xyz;
      r5.xyz = t9.SampleLevel(s1_s, r6.xy, r0.w).xyz;
      r5.xyz = float3(0.5,0.5,0.5) * r5.xyz;
      r4.xzw = r4.xzw * float3(0.5,0.5,0.5) + r5.xyz;
      r4.xzw = -cb0[6].yyy + r4.xzw;
      r4.xzw = r0.zzz * r4.xzw + float3(1,1,1);
      r1.yzw = r4.xzw * r1.yzw;
    }
    r0.z = t2.Load(float4(0,0,0,0)).x;
    r0.z = cb1[282].y * r0.z;
    r4.xzw = -cb0[5].yzw / cb0[11].yyy;
    r4.xzw = r4.xzw * r2.xxx;
    r4.xzw = float3(1.44269502,1.44269502,1.44269502) * r4.xzw;
    r4.xzw = exp2(r4.xzw);
    r4.xzw = float3(1,1,1) + -r4.xzw;
    r4.xzw = max(float3(0,0,0), r4.xzw);
    r3.xyz = r3.xyz * r0.zzz + -r1.yzw;
    r3.xyz = r4.xzw * r3.xyz + r1.yzw;
    r4.xzw = cb0[10].xyz + -r3.xyz;
    r3.xyz = cb0[11].xxx * r4.xzw + r3.xyz;
    r0.zw = -v0.xy * cb1[42].zw + cb0[13].yz;
    r0.z = dot(r0.zw, r0.zw);
    r0.z = sqrt(r0.z);
    r0.z = saturate(r0.z / cb0[13].w);
    r0.z = log2(r0.z);
    r0.z = cb0[14].x * r0.z;
    r0.z = exp2(r0.z);
    r2.xy = v0.xy * cb1[42].zw + cb1[63].xx;
    r0.w = dot(r2.xy, float2(12.9898005,78.2330017));
    r0.w = sin(r0.w);
    r0.w = 43758.5469 * r0.w;
    r0.w = frac(r0.w);
    r0.w = r0.w * 2 + -1;
    r0.z = r0.w * r0.z;
    r0.zw = r0.zz * float2(0.300000012,0.300000012) + cb0[13].yz;
    r0.zw = -v0.xy * cb1[42].zw + r0.zw;
    r0.z = dot(r0.zw, r0.zw);
    r0.z = sqrt(r0.z);
    r0.z = saturate(r0.z / cb0[13].w);
    r0.z = log2(r0.z);
    r0.z = cb0[14].x * r0.z;
    r0.z = exp2(r0.z);
    r0.z = min(1, r0.z);
    r0.z = 1 + -r0.z;
    r4.xzw = r3.xyz * r0.zzz;
    r0.w = cmp(r4.y >= cb1[40].y);
    r0.w = r0.w ? 1.000000 : 0;
    r2.x = cb1[48].y * cb0[11].z;
    r2.xy = float2(0.00100000005,0.000200000009) * r2.xx;
    r5.x = cb1[63].x;
    r5.yz = float2(0,0);
    r2.zw = r2.zw * cb0[13].xx + r5.xy;
    r2.z = t11.Sample(s2_s, r2.zw).x;
    r2.x = r2.x * r2.z;
    r5.w = max(r2.y, r2.x);
    r0.xy = (uint2)r0.xy;
    r2.xy = r0.xy + r5.zw;
    r2.xy = (int2)r2.xy;
    r2.zw = float2(0,0);
    r2.x = t7.Load(r2.xyzw).x;
    r0.xy = r0.xy + -r5.zw;
    r5.xy = (int2)r0.xy;
    r5.zw = float2(0,0);
    r0.x = t7.Load(r5.xyzw).x;
    r0.y = cmp(r2.x == 2.000000);
    r2.x = cmp(r2.x != 0.000000);
    r0.y = (int)r0.y | (int)r2.x;
    r2.x = cmp(r0.x == 2.000000);
    r0.x = cmp(r0.x != 0.000000);
    r0.x = (int)r0.x | (int)r2.x;
    r0.x = r0.x ? 0.000000 : 0;
    r0.x = (int)r0.y + (int)r0.x;
    r0.x = (int)r0.x;
    r0.x = max(0, r0.x);
    r0.y = v0.y * cb1[42].w + -0.899999976;
    r0.y = saturate(-10.0000038 * r0.y);
    r2.x = r0.y * -2 + 3;
    r0.y = r0.y * r0.y;
    r0.y = r2.x * r0.y;
    r0.x = r0.x * r0.y;
    r2.xy = float2(0.5,0.5) * v0.xy;
    r2.xy = (uint2)r2.xy;
    switch (r1.x) {
      case 0 :      r5.xyz = float3(0,0,0);
      break;
      case 1 :      case 4 :      r2.z = 0;
      r5.xyz = t1.Load(r2.xyzz).xyz;
      break;
      case 3 :      r2.w = 0;
      r5.xyz = t12.Load(r2.xyww).xyz;
      break;
      default :
      r2.zw = float2(0,1.40129846e-45);
      r5.xyz = t1.Load(r2.xyzw).xyz;
      break;
    }
    r2.xyz = r5.xyz * cb0[12].xyz + -r4.xzw;
    r2.xyz = r0.xxx * r2.xyz + r4.xzw;
    r0.xyz = r3.xyz * r0.zzz + -r2.xyz;
    r1.yzw = r0.www * r0.xyz + r2.xyz;
  }
  o0.xyz = r1.yzw;
  o0.w = 1;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v0.6.164 on Sun Feb  8 01:40:38 2026
//
//
// 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[26], immediateIndexed
dcl_constantbuffer CB1[285], immediateIndexed
dcl_constantbuffer CB2[11], immediateIndexed
dcl_constantbuffer CB3[1], immediateIndexed
dcl_constantbuffer CB4[5], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_resource_texture2darray (float,float,float,float) t0
dcl_resource_texture2darray (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_structured t3, 32
dcl_resource_texture2darray (float,float,float,float) t4
dcl_resource_texture2darray (float,float,float,float) t5
dcl_resource_texture2darray (float,float,float,float) t6
dcl_resource_texture2darray (float,float,float,float) t7
dcl_resource_texture2darray (float,float,float,float) t8
dcl_resource_texture2d (float,float,float,float) t9
dcl_resource_texture2d (float,float,float,float) t10
dcl_resource_texture2d (float,float,float,float) t11
dcl_resource_texture2darray (float,float,float,float) t12
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_output o0.xyzw
dcl_temps 9
ftou r0.xy, v0.xyxx
ftoi r1.x, cb0[25].y
switch r1.x
  case l(0)
  mov r1.yzw, l(0,0,0,0)
  break
  case l(1)
  case l(4)
  mov r0.z, l(0)
  ld_indexable(texture2darray)(float,float,float,float) r1.yzw, r0.xyzz, t1.wxyz
  break
  case l(3)
  mov r0.w, l(0)
  ld_indexable(texture2darray)(float,float,float,float) r1.yzw, r0.xyww, t12.wxyz
  break
  default
  mov r0.zw, l(0,0,0,0)
  ld_indexable(texture2darray)(float,float,float,float) r1.yzw, r0.xyzw, t1.wxyz
  break
endswitch
mov r0.zw, l(0,0,0,0)
ld_indexable(texture2darray)(float,float,float,float) r2.x, r0.xyww, t7.xyzw
eq r2.y, r2.x, l(2.000000)
ne r2.z, r2.x, l(0.000000)
or r2.y, r2.z, r2.y
if_nz r2.y
  ld_indexable(texture2darray)(float,float,float,float) r2.y, r0.xyww, t0.yxzw
  mul r2.zw, v0.xxxy, cb1[42].zzzw
  mad r3.xy, r2.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
  mul r4.xyzw, -r3.yyyy, cb1[25].xyzw
  mad r3.xyzw, cb1[24].xyzw, r3.xxxx, r4.xyzw
  mad r3.xyzw, cb1[26].xyzw, r2.yyyy, r3.xyzw
  add r3.xyzw, r3.xyzw, cb1[27].xyzw
  div r3.xyz, r3.xyzx, r3.wwww
  eq r3.w, cb1[11].w, l(0.000000)
  add r3.xyz, -r3.xyzx, cb1[7].xyzx
  movc r4.x, r3.w, r3.x, cb1[0].z
  movc r4.y, r3.w, r3.y, cb1[1].z
  movc r4.z, r3.w, r3.z, cb1[2].z
  dp3 r3.x, r4.xyzx, r4.xyzx
  rsq r3.x, r3.x
  mul r3.xyz, r3.xxxx, r4.xyzx
  ld_indexable(texture2darray)(float,float,float,float) r0.z, r0.xyzw, t8.yzxw
  ne r0.w, r2.x, l(1.000000)
  lt r2.x, r2.y, r0.z
  and r0.w, r0.w, r2.x
  movc r0.z, r0.w, r0.z, r2.y
  mad r2.x, cb1[45].z, r0.z, cb1[45].w
  div r2.x, l(1.000000, 1.000000, 1.000000, 1.000000), r2.x
  add r2.y, -cb1[46].z, cb1[46].y
  mad r2.y, r0.z, r2.y, cb1[46].z
  add r2.y, -r2.x, r2.y
  mad r2.x, cb1[47].w, r2.y, r2.x
  add r4.xy, cb4[1].wyww, l(-2.000000, -1.500000, 0.000000, 0.000000)
  max r2.y, cb0[25].x, l(0.000000)
  min r2.y, r4.x, r2.y
  ftoi r3.w, r2.y
  ld_structured_indexable(structured_buffer, stride=32)(mixed,mixed,mixed,mixed) r4.xz, r3.w, l(0), t3.xxyx
  ld_structured_indexable(structured_buffer, stride=32)(mixed,mixed,mixed,mixed) r4.w, r3.w, l(12), t3.xxxx
  ld_structured_indexable(structured_buffer, stride=32)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(20), t3.xxxx
  round_z r5.z, r2.y
  add r4.xz, -r4.xxzx, cb1[40].xxzx
  mul r2.y, r4.w, r3.w
  div r4.xz, r4.xxzx, r2.yyyy
  add r5.xy, r4.xzxx, l(0.500000, 0.500000, 0.000000, 0.000000)
  sample_l_indexable(texture2darray)(float,float,float,float) r2.y, r5.xyzx, t5.yxzw, s0, l(0.000000)
  add r2.y, r2.y, l(-1000.000000)
  add r2.y, r2.y, l(1000.000000)
  sample_l_indexable(texture2darray)(float,float,float,float) r3.w, r5.xyzx, t6.yzwx, s0, l(0.000000)
  movc r4.x, cb1[280].w, cb2[10].x, l(255)
  and r4.x, r4.x, cb1[284].y
  movc r4.x, r4.x, cb1[284].x, l(1.000000)
  add r3.w, -r3.w, l(1.000000)
  add r6.xyz, cb0[0].xyzx, -cb0[1].xyzx
  mad r6.xyz, r3.wwww, r6.xyzx, cb0[1].xyzx
  div_sat r2.y, r2.y, cb0[3].x
  add r2.y, -r2.y, l(1.000000)
  log r2.y, r2.y
  mul r2.y, r2.y, cb0[3].y
  exp r2.y, r2.y
  add r7.xyz, -cb0[1].xyzx, cb0[2].xyzx
  mad r7.xyz, r3.wwww, r7.xyzx, cb0[1].xyzx
  add r7.xyz, -r6.xyzx, r7.xyzx
  mad r6.xyz, r2.yyyy, r7.xyzx, r6.xyzx
  mul r7.xyz, r3.wwww, cb4[4].xyzx
  mul r7.xyz, r7.xyzx, l(0.318310142, 0.318310142, 0.318310142, 0.000000)
  mad r4.xzw, cb0[14].yyzw, r4.xxxx, r7.xxyz
  dp3 r2.y, cb4[3].xyzx, -r3.xyzx
  max r2.y, r2.y, l(0.000000)
  log r2.y, r2.y
  mul r2.y, r2.y, cb0[5].x
  exp r2.y, r2.y
  mad r2.y, cb0[3].w, r2.y, cb0[3].z
  mul r7.xyz, r2.yyyy, cb0[4].xyzx
  mul r7.xyz, r7.xyzx, cb4[4].xyzx
  mul r3.xzw, r3.wwww, r7.xxyz
  mad r2.y, -|r3.y|, |r3.y|, l(1.000000)
  mul r3.xyz, r2.yyyy, r3.xzwx
  mad r3.xyz, r6.xyzx, r4.xzwx, r3.xyzx
  lt r0.z, l(0.000500), r0.z
  not r0.w, r0.w
  and r0.z, r0.w, r0.z
  if_nz r0.z
    div r0.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.x
    add r0.z, r0.z, -cb1[45].w
    div r0.z, r0.z, cb1[45].z
    mul r4.xz, r2.zzwz, cb1[42].xxyx
    mul r4.xz, r4.xxzx, cb1[42].zzwz
    mad r4.xz, r4.xxzx, l(2.000000, 0.000000, 2.000000, 0.000000), l(-1.000000, 0.000000, -1.000000, 0.000000)
    mul r6.xyzw, -r4.zzzz, cb1[25].xyzw
    mad r6.xyzw, cb1[24].xyzw, r4.xxxx, r6.xyzw
    mad r6.xyzw, cb1[26].xyzw, r0.zzzz, r6.xyzw
    add r6.xyzw, r6.xyzw, cb1[27].xyzw
    div r4.xzw, r6.xxyz, r6.wwww
    add r4.xzw, r4.xxzw, cb1[40].xxyz
    sample_l_indexable(texture2darray)(float,float,float,float) r0.z, r5.xyzx, t4.xzyw, s0, l(0.000000)
    add r0.z, r0.z, cb4[1].y
    add r0.z, -r4.z, r0.z
    log r0.w, r2.x
    div r0.w, r0.w, cb0[7].x
    mul r5.xy, r0.zzzz, cb4[3].xzxx
    mul r0.z, cb4[3].y, l(4.000000)
    div r5.zw, r5.xxxy, r0.zzzz
    add r5.zw, r4.xxxw, r5.zzzw
    div r6.xy, r5.zwzz, cb0[6].xxxx
    mad r7.x, cb4[0].x, l(0.044000), r6.x
    mov r6.z, l(17.160000)
    mul r7.y, cb4[0].x, l(-0.169000)
    add r6.xy, r6.zyzz, r7.xyxx
    mul r6.zw, r5.zzzw, l(0.000000, 0.000000, 1.370000, 1.370000)
    div r6.zw, r6.zzzw, cb0[6].xxxx
    mad r6.zw, cb4[0].xxxx, l(0.000000, 0.000000, 0.248000, 0.117000), r6.zzzw
    div r5.zw, r5.zzzw, cb0[7].zzzz
    sample_indexable(texture2d)(float,float,float,float) r7.xyz, r5.zwzz, t10.xywz, s1
    mul r8.xz, r7.xxxx, r7.zzzz
    mov r8.yw, r7.yyyy
    mad r7.xyzw, r8.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), l(-1.000000, -1.000000, -1.000000, -1.000000)
    mul r7.xyzw, r7.xyzw, cb0[7].yyyy
    mad r5.zw, r7.xxxy, l(0.000000, 0.000000, 1.300000, 1.300000), r6.xxxy
    mad r6.xy, r7.zwzz, l(1.770000, 1.770000, 0.000000, 0.000000), r6.zwzz
    div r5.xy, r5.xyxx, cb4[3].yyyy
    add r4.xz, r4.xxwx, r5.xxyx
    ld_structured_indexable(structured_buffer, stride=32)(mixed,mixed,mixed,mixed) r5.xy, cb3[0].x, l(0), t3.xyxx
    ld_structured_indexable(structured_buffer, stride=32)(mixed,mixed,mixed,mixed) r0.z, cb3[0].x, l(12), t3.xxxx
    ld_structured_indexable(structured_buffer, stride=32)(mixed,mixed,mixed,mixed) r2.y, cb3[0].x, l(20), t3.xxxx
    utof r7.z, cb3[0].x
    add r4.xz, r4.xxzx, -r5.xxyx
    mul r0.z, r0.z, r2.y
    div r4.xz, r4.xxzx, r0.zzzz
    add r7.xy, r4.xzxx, l(0.500000, 0.500000, 0.000000, 0.000000)
    sample_l_indexable(texture2darray)(float,float,float,float) r0.z, r7.xyzx, t6.xzyw, s0, l(0.000000)
    add r0.z, -r0.z, l(1.000000)
    mul r0.z, r0.z, cb0[6].z
    sample_l_indexable(texture2d)(float,float,float,float) r4.xzw, r5.zwzz, t9.xwyz, s1, r0.w
    sample_l_indexable(texture2d)(float,float,float,float) r5.xyz, r6.xyxx, t9.xyzw, s1, r0.w
    mul r5.xyz, r5.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
    mad r4.xzw, r4.xxzw, l(0.500000, 0.000000, 0.500000, 0.500000), r5.xxyz
    add r4.xzw, r4.xxzw, -cb0[6].yyyy
    mad r4.xzw, r0.zzzz, r4.xxzw, l(1.000000, 0.000000, 1.000000, 1.000000)
    mul r1.yzw, r1.yyzw, r4.xxzw
  endif
  ld_indexable(texture2d)(float,float,float,float) r0.z, l(0, 0, 0, 0), t2.yzxw
  mul r0.z, r0.z, cb1[282].y
  div r4.xzw, -cb0[5].yyzw, cb0[11].yyyy
  mul r4.xzw, r2.xxxx, r4.xxzw
  mul r4.xzw, r4.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695)
  exp r4.xzw, r4.xxzw
  add r4.xzw, -r4.xxzw, l(1.000000, 0.000000, 1.000000, 1.000000)
  max r4.xzw, r4.xxzw, l(0.000000, 0.000000, 0.000000, 0.000000)
  mad r3.xyz, r3.xyzx, r0.zzzz, -r1.yzwy
  mad r3.xyz, r4.xzwx, r3.xyzx, r1.yzwy
  add r4.xzw, -r3.xxyz, cb0[10].xxyz
  mad r3.xyz, cb0[11].xxxx, r4.xzwx, r3.xyzx
  mad r0.zw, -v0.xxxy, cb1[42].zzzw, cb0[13].yyyz
  dp2 r0.z, r0.zwzz, r0.zwzz
  sqrt r0.z, r0.z
  div_sat r0.z, r0.z, cb0[13].w
  log r0.z, r0.z
  mul r0.z, r0.z, cb0[14].x
  exp r0.z, r0.z
  mad r2.xy, v0.xyxx, cb1[42].zwzz, cb1[63].xxxx
  dp2 r0.w, r2.xyxx, l(12.989800, 78.233002, 0.000000, 0.000000)
  sincos r0.w, null, r0.w
  mul r0.w, r0.w, l(43758.546875)
  frc r0.w, r0.w
  mad r0.w, r0.w, l(2.000000), l(-1.000000)
  mul r0.z, r0.z, r0.w
  mad r0.zw, r0.zzzz, l(0.000000, 0.000000, 0.300000, 0.300000), cb0[13].yyyz
  mad r0.zw, -v0.xxxy, cb1[42].zzzw, r0.zzzw
  dp2 r0.z, r0.zwzz, r0.zwzz
  sqrt r0.z, r0.z
  div_sat r0.z, r0.z, cb0[13].w
  log r0.z, r0.z
  mul r0.z, r0.z, cb0[14].x
  exp r0.z, r0.z
  min r0.z, r0.z, l(1.000000)
  add r0.z, -r0.z, l(1.000000)
  mul r4.xzw, r0.zzzz, r3.xxyz
  ge r0.w, r4.y, cb1[40].y
  and r0.w, r0.w, l(0x3f800000)
  mul r2.x, cb0[11].z, cb1[48].y
  mul r2.xy, r2.xxxx, l(0.001000, 0.000200000009, 0.000000, 0.000000)
  mov r5.x, cb1[63].x
  mov r5.yz, l(0,0,0,0)
  mad r2.zw, r2.zzzw, cb0[13].xxxx, r5.xxxy
  sample_indexable(texture2d)(float,float,float,float) r2.z, r2.zwzz, t11.yzxw, s2
  mul r2.x, r2.z, r2.x
  max r5.w, r2.x, r2.y
  utof r0.xy, r0.xyxx
  add r2.xy, r5.zwzz, r0.xyxx
  ftoi r2.xy, r2.xyxx
  mov r2.zw, l(0,0,0,0)
  ld_indexable(texture2darray)(float,float,float,float) r2.x, r2.xyzw, t7.xyzw
  add r0.xy, -r5.zwzz, r0.xyxx
  ftoi r5.xy, r0.xyxx
  mov r5.zw, l(0,0,0,0)
  ld_indexable(texture2darray)(float,float,float,float) r0.x, r5.xyzw, t7.xyzw
  eq r0.y, r2.x, l(2.000000)
  ne r2.x, r2.x, l(0.000000)
  or r0.y, r0.y, r2.x
  eq r2.x, r0.x, l(2.000000)
  ne r0.x, r0.x, l(0.000000)
  or r0.x, r0.x, r2.x
  and r0.x, r0.x, l(1)
  iadd r0.x, r0.y, r0.x
  itof r0.x, r0.x
  max r0.x, r0.x, l(0.000000)
  mad r0.y, v0.y, cb1[42].w, l(-0.900000)
  mul_sat r0.y, r0.y, l(-10.000004)
  mad r2.x, r0.y, l(-2.000000), l(3.000000)
  mul r0.y, r0.y, r0.y
  mul r0.y, r0.y, r2.x
  mul r0.x, r0.y, r0.x
  mul r2.xy, v0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
  ftou r2.xy, r2.xyxx
  switch r1.x
    case l(0)
    mov r5.xyz, l(0,0,0,0)
    break
    case l(1)
    case l(4)
    mov r2.z, l(0)
    ld_indexable(texture2darray)(float,float,float,float) r5.xyz, r2.xyzz, t1.xyzw
    break
    case l(3)
    mov r2.w, l(0)
    ld_indexable(texture2darray)(float,float,float,float) r5.xyz, r2.xyww, t12.xyzw
    break
    default
    mov r2.zw, l(0,0,0,1)
    ld_indexable(texture2darray)(float,float,float,float) r5.xyz, r2.xyzw, t1.xyzw
    break
  endswitch
  mad r2.xyz, r5.xyzx, cb0[12].xyzx, -r4.xzwx
  mad r2.xyz, r0.xxxx, r2.xyzx, r4.xzwx
  mad r0.xyz, r3.xyzx, r0.zzzz, -r2.xyzx
  mad r1.yzw, r0.wwww, r0.xxyz, r2.xxyz
endif
mov o0.xyz, r1.yzwy
mov o0.w, l(1.000000)
ret
// Approximately 0 instruction slots used

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