//Screen space reflections PS 1.
// ---- Created with 3Dmigoto v0.6.163 on Thu Aug 21 18:40:01 2025

cbuffer cb_scene : register(b0)
{
  float4x4 view_g : packoffset(c0);
  float4x4 viewInv_g : packoffset(c4);
  float4x4 proj_g : packoffset(c8);
  float4x4 projInv_g : packoffset(c12);
  float4x4 viewProj_g : packoffset(c16);
  float4x4 viewProjInv_g : packoffset(c20);
  float2 vpSize_g : packoffset(c24);
  float2 invVPSize_g : packoffset(c24.z);
  float3 lightColor_g : packoffset(c25);
  float disableMapObjNearFade_g : packoffset(c25.w);
  float3 lightDirection_g : packoffset(c26);
  float gameTime_g : packoffset(c26.w);
  float3 sceneShadowColor_g : packoffset(c27);
  int shadowmapCascadeCount_g : packoffset(c27.w);
  float3 windDirection_g : packoffset(c28);
  float sceneTime_g : packoffset(c28.w);
  float2 lightTileSizeInv_g : packoffset(c29);
  float fogNearDistance_g : packoffset(c29.z);
  float fogFadeRangeInv_g : packoffset(c29.w);
  float3 fogColor_g : packoffset(c30);
  float fogIntensity_g : packoffset(c30.w);
  float fogHeight_g : packoffset(c31);
  float fogHeightRangeInv_g : packoffset(c31.y);
  float windWaveTime_g : packoffset(c31.z);
  float windWaveFrequency_g : packoffset(c31.w);
  uint localLightProbeCount_g : packoffset(c32);
  float lightSpecularGlossiness_g : packoffset(c32.y);
  float lightSpecularIntensity_g : packoffset(c32.z);
  float localShadowResolutionInv_g : packoffset(c32.w);
  float4x4 ditherMtx_g : packoffset(c33);
  float4 lightProbe_g[9] : packoffset(c37);
  float3 chrLightDir_g : packoffset(c46);
  float windForce_g : packoffset(c46.w);
  float4 mapColor_g : packoffset(c47);
  float4 clipPlane_g : packoffset(c48);
  float2 resolutionScaling_g : packoffset(c49);
  float2 invShadowSize_g : packoffset(c49.z);
  float3 chrShadowColor_g : packoffset(c50);
  float shadowFadeNear_g : packoffset(c50.w);
  float4 frustumPlanes_g[6] : packoffset(c51);
  float3 shadowSplitDistance_g : packoffset(c57);
  float shadowFadeRangeInv_g : packoffset(c57.w);
  float4x4 shadowMtx_g[4] : packoffset(c58);
}

cbuffer cb_local : register(b2)
{
  uint maxRayCount_g : packoffset(c0);
  float rayLength_g : packoffset(c0.y);
  float2 prevResolutionScaling_g : packoffset(c0.z);
  float4x4 prevViewProj_g : packoffset(c1);
}

SamplerState samLinear_s : register(s0);
SamplerState samPoint_s : register(s1);
Texture2D<float4> colorTexture : register(t0);
Texture2D<float4> depthTexture : register(t1);
Texture2D<uint4> mrtTexture0 : register(t2);
Texture2D<uint2> mrtTexture2 : register(t3);
Texture2D<float4> prevSSRTexture : register(t4);


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


void main(
  float4 v0 : SV_Position0,
  float4 v1 : TEXCOORD0,
  out float4 o0 : SV_Target0)
{
  float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r20,r30,r33,r40;
  uint4 bitmask, uiDest;
  float4 fDest;
  
  float4 stereo = StereoParams.Load(0);
  float4 prev = StereoParams.Load(int3(2,0,0));
  
  mrtTexture0.GetDimensions(0, fDest.x, fDest.y, fDest.z);
  r0.xy = fDest.xy;
  r0.zw = v1.xy * r0.xy;
  r1.xy = (int2)r0.zw;
  r1.zw = float2(0,0);
  r1.xyz = mrtTexture0.Load(r1.xyz).xyw;
  r0.z = (int)r1.z & 2;
  if (r0.z == 0) {
    r2.xyz = colorTexture.SampleLevel(samPoint_s, v1.xy, 0).xyz;
    o0.xyz = r2.xyz;
    o0.w = 0;
    return;
  }
  mrtTexture2.GetDimensions(0, fDest.x, fDest.y, fDest.z);
  r0.zw = fDest.xy;
  r0.zw = v1.xy * r0.zw;
  r2.xy = (int2)r0.zw;
  r2.zw = float2(0,0);
  r0.z = mrtTexture2.Load(r2.xyz).y;
  r2.z = depthTexture.SampleLevel(samPoint_s, v1.xy, 0).x;
  r2.xy = v1.zw * float2(2,-2) + float2(-1,1);
  r2.w = 1;
  
  r40.w = dot(r2.xyzw, projInv_g._m03_m13_m23_m33);
  r20.xyzw = r2.xyzw;
  r20.x-=stereo.x;
  
  r33.x = dot(r20.xyzw, projInv_g._m00_m10_m20_m30);
  r33.y = dot(r20.xyzw, projInv_g._m01_m11_m21_m31);
  r33.z = dot(r20.xyzw, projInv_g._m02_m12_m22_m32);
  r30.w = dot(r20.xyzw, projInv_g._m03_m13_m23_m33);
  r33.xyz = r33.xyz / r30.www;
  
  r20.x+=stereo.x*stereo.y*r40.w;
  
  r3.x = dot(r20.xyzw, projInv_g._m00_m10_m20_m30);
  r3.y = dot(r20.xyzw, projInv_g._m01_m11_m21_m31);
  r3.z = dot(r20.xyzw, projInv_g._m02_m12_m22_m32);
  r0.w = dot(r20.xyzw, projInv_g._m03_m13_m23_m33);
  r3.xyz = r3.xyz / r0.www;
  r1.xy = (uint2)r1.xy;
  r1.zw = r1.xy * float2(3.05180438e-05,3.05180438e-05) + float2(-1,-1);
  r0.w = 3.14159274 * r1.z;
  sincos(r0.w, r4.x, r5.x);
  r0.w = -r1.w * r1.w + 1;
  r0.w = sqrt(r0.w);
  r1.x = r5.x * r0.w;
  r1.y = r4.x * r0.w;
  r0.w = dot(r1.xyw, r1.xyw);
  r0.w = rsqrt(r0.w);
  r1.xyz = r1.xyw * r0.www;
  r4.x = dot(r1.xyz, view_g._m00_m10_m20);
  r4.y = dot(r1.xyz, view_g._m01_m11_m21);
  r4.z = dot(r1.xyz, view_g._m02_m12_m22);
  r0.w = dot(r33.xyz, r33.xyz);
  r0.w = rsqrt(r0.w);
  r1.xyz = r33.xyz * r0.www;
  r0.w = dot(r1.xyz, r4.xyz);
  r0.w = r0.w + r0.w;
  r1.xyz = r4.xyz * -r0.www + r1.xyz;
  r0.w = dot(-r3.xyz, -r3.xyz);
  r0.w = rsqrt(r0.w);
  r5.xyz = -r3.xyz * r0.www;
  r0.w = dot(r5.xyz, r4.xyz);
  r0.z = (uint)r0.z;
  r0.z = 0.0152590219 * r0.z;
  r1.w = maxRayCount_g;
  r0.z = r0.z / r1.w;
  r4.xyz = sceneTime_g * r3.xyz;
  r1.w = dot(r4.xyz, float3(12.9898005,78.2330017,56.7869987));
  r1.w = sin(r1.w);
  r1.w = 43758.5469 * r1.w;
  r1.w = frac(r1.w);
  r4.xy = float2(0.899999976,0.200000048) * r0.zz;
  r0.z = r1.w * r4.y + r4.x;
  r5.xyz = r1.xyz * r0.zzz;
  r3.xyw = r1.xyz * r0.zzz + r3.xyz;
  r0.z = 1 + -abs(r0.w);
  r0.z = r0.z * r0.z;
  r0.z = r0.z * r0.z;
  r0.z = r0.z * r0.z;
  r0.z = -r3.z * r0.z;
  r0.z = 0.0199999996 * r0.z;
  r3.xyz = r1.xyz * r0.zzz + r3.xyw;
  r6.w = 1;
  r7.y = 1;
  r8.xyz = r5.xyz;
  r0.zw = float2(0,0);
  r1.w = 0;
  r9.xyz = r3.xyz;
  r3.w = 0;
  while (true) {
    r4.z = cmp((uint)r3.w >= maxRayCount_g);
    if (r4.z != 0) break;
    r6.xyz = r9.xyz;
    r10.x = dot(r6.xyzw, proj_g._m00_m10_m20_m30);
    r10.y = dot(r6.xyzw, proj_g._m01_m11_m21_m31);
    r4.z = dot(r6.xyzw, proj_g._m03_m13_m23_m33);
	
	r10.x+=stereo.x*(r4.z-stereo.y);
	
    r4.zw = r10.xy / r4.zz;
    r7.zw = float2(0.5,0.5) * r4.zw;
    r10.xy = r4.zw * float2(0.5,0.5) + float2(0.5,0.5);
    r4.z = max(abs(r7.z), abs(r7.w));
    r4.z = cmp(0.5 < r4.z);
    if (r4.z != 0) {
      r0.zw = r10.xy;
      break;
    }
    r10.w = 1 + -r10.y;
    r10.z = 1 + -r10.y;
    r4.zw = resolutionScaling_g.xy * r10.xz;
    r7.x = depthTexture.SampleLevel(samPoint_s, r4.zw, 0).x;
    r4.z = dot(projInv_g._m22_m32, r7.xy);
    r4.w = dot(projInv_g._m23_m33, r7.xy);
    r4.z = r4.z / r4.w;
    r4.z = -r9.z + r4.z;
    r4.w = cmp(0 < r4.z);
    r4.z = cmp(r4.z < 10);
    r4.z = r4.z ? r4.w : 0;
    if (r4.z != 0) {
      r0.zw = r10.xz;
      r1.w = -1;
      break;
    }
    r7.xzw = sceneTime_g * r6.xyz;
    r4.z = dot(r7.xzw, float3(12.9898005,78.2330017,56.7869987));
    r4.z = sin(r4.z);
    r4.z = 43758.5469 * r4.z;
    r4.z = frac(r4.z);
    r4.z = r4.z * r4.y + r4.x;
    r8.xyz = r4.zzz * r1.xyz;
    r9.xyz = r1.xyz * r4.zzz + r6.xyz;
    r3.w = (int)r3.w + 1;
    r0.zw = r10.xw;
    r1.w = 0;
  }
  if (r1.w != 0) {
    r1.xyz = r9.xyz + -r8.xyz;
    r3.xyz = float3(0.25,0.25,0.25) * r8.xyz;
    r4.w = 1;
    r5.y = 1;
    r4.xyz = r1.xyz;
    r6.xy = r0.zw;
    r1.w = 2;
    r3.w = 2;
    r5.z = 0;
    while (true) {
      r5.w = cmp((int)r5.z >= 4);
      if (r5.w != 0) break;
      r7.xyz = r3.xyz * r3.www;
      r8.xyz = sceneTime_g * r4.xyz;
      r5.w = dot(r8.xyz, float3(12.9898005,78.2330017,56.7869987));
      r5.w = sin(r5.w);
      r5.w = 43758.5469 * r5.w;
      r5.w = frac(r5.w);
      r5.w = r5.w * 0.200000048 + 0.899999976;
      r4.xyz = r7.xyz * r5.www + r4.xyz;
      r7.x = dot(r4.xyzw, proj_g._m00_m10_m20_m30);
      r7.y = dot(r4.xyzw, proj_g._m01_m11_m21_m31);
      r5.w = dot(r4.xyzw, proj_g._m03_m13_m23_m33);
	  
	  r7.x+=stereo.x*(r5.w-stereo.y);
	  
      r7.xy = r7.xy / r5.ww;
      r6.xz = r7.xy * float2(0.5,0.5) + float2(0.5,0.5);
      r1.w = 0.5 * r1.w;
      r6.y = 1 + -r6.z;
      r6.zw = resolutionScaling_g.xy * r6.xy;
      r5.x = depthTexture.SampleLevel(samPoint_s, r6.zw, 0).x;
      r5.w = dot(projInv_g._m22_m32, r5.xy);
      r5.x = dot(projInv_g._m23_m33, r5.xy);
      r5.x = r5.w / r5.x;
      r5.x = r5.x + -r4.z;
      r5.w = cmp(0 < r5.x);
      r5.x = cmp(r5.x < 0);
      r5.x = r5.x ? r5.w : 0;
      r3.w = r5.x ? -r1.w : r1.w;
      r5.z = (int)r5.z + 1;
    }
    r0.zw = r6.xy;
    r1.xy = float2(-0.5,-0.5) + r0.zw;
	
	//SSR border.
	r1.x+=stereo.x*(1-stereo.y*r40.w)*-0.5;
	
    r1.x = dot(r1.xy, r1.xy);
    r1.x = sqrt(r1.x);
    r1.x = r1.x + r1.x;
    r1.y = r1.x * r1.x;
    r1.x = -r1.x * r1.y + 1;
    r1.yz = resolutionScaling_g.xy * r0.zw;
    r0.xy = r1.yz * r0.xy;
    r3.xy = (int2)r0.xy;
    r3.zw = float2(0,0);
    r0.x = mrtTexture0.Load(r3.xyz).w;
    r0.x = (int)r0.x & 2;
    r0.x = r0.x ? 0 : r1.x;
  } else {
    r1.xy = float2(-0.5,-0.5) + r0.zw;
	
	//SSR border.
	r1.x+=stereo.x*(1-stereo.y*r40.w)*-0.5;
	
    r0.y = dot(r1.xy, r1.xy);
    r0.y = sqrt(r0.y);
    r0.y = r0.y + r0.y;
    r1.x = r0.y * r0.y;
    r0.x = -r0.y * r1.x + 1;
  }
  r0.yz = resolutionScaling_g.xy * r0.zw;
  r1.xyz = colorTexture.SampleLevel(samPoint_s, r0.yz, 0).xyz;
  r1.w = max(0, r0.x);
  
  r0.w = dot(r2.xyzw, viewProjInv_g._m03_m13_m23_m33);
  r2.x+=stereo.x*(stereo.y*r0.w-1);
  
  r0.x = dot(r2.xyzw, viewProjInv_g._m00_m10_m20_m30);
  r0.y = dot(r2.xyzw, viewProjInv_g._m01_m11_m21_m31);
  r0.z = dot(r2.xyzw, viewProjInv_g._m02_m12_m22_m32);
  r0.w = dot(r2.xyzw, viewProjInv_g._m03_m13_m23_m33);
  r0.xyzw = r0.xyzw / r0.wwww;
  r2.x = dot(r0.xyzw, prevViewProj_g._m00_m10_m20_m30);
  r2.y = dot(r0.xyzw, prevViewProj_g._m01_m11_m21_m31);
  r0.x = dot(r0.xyzw, prevViewProj_g._m03_m13_m23_m33);
  
  r2.x+=prev.x*(r0.x-prev.y);
  
  r0.xy = r2.xy / r0.xx;
  r0.xy = r0.xy * float2(0.5,0.5) + float2(0.5,0.5);
  r0.z = 1 + -r0.y;
  r0.yw = -v1.zw + r0.xz;
  r0.y = dot(r0.yw, r0.yw);
  r0.y = sqrt(r0.y);
  r0.y = -1442.69507 * r0.y;
  r0.y = exp2(r0.y);
  r0.y = r0.y * -0.300000012 + 0.400000006;
  r0.xz = resolutionScaling_g.xy * r0.xz;
  r0.xz = prevResolutionScaling_g.xy * r0.xz;
  r2.xyzw = prevSSRTexture.SampleLevel(samLinear_s, r0.xz, 0).xyzw;
  r1.xyzw = -r2.xyzw + r1.xyzw;
  o0.xyzw = r0.yyyy * r1.xyzw + r2.xyzw;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
//   using 3Dmigoto v0.6.163 on Thu Aug 21 18:40:01 2025
//
//
// Buffer Definitions:
//
// cbuffer cb_scene
// {
//
//   float4x4 view_g;                   // Offset:    0 Size:    64
//   float4x4 viewInv_g;                // Offset:   64 Size:    64 [unused]
//   float4x4 proj_g;                   // Offset:  128 Size:    64
//   float4x4 projInv_g;                // Offset:  192 Size:    64
//   float4x4 viewProj_g;               // Offset:  256 Size:    64 [unused]
//   float4x4 viewProjInv_g;            // Offset:  320 Size:    64
//   float2 vpSize_g;                   // Offset:  384 Size:     8 [unused]
//   float2 invVPSize_g;                // Offset:  392 Size:     8 [unused]
//   float3 lightColor_g;               // Offset:  400 Size:    12 [unused]
//   float disableMapObjNearFade_g;     // Offset:  412 Size:     4 [unused]
//   float3 lightDirection_g;           // Offset:  416 Size:    12 [unused]
//   float gameTime_g;                  // Offset:  428 Size:     4 [unused]
//   float3 sceneShadowColor_g;         // Offset:  432 Size:    12 [unused]
//   int shadowmapCascadeCount_g;       // Offset:  444 Size:     4 [unused]
//   float3 windDirection_g;            // Offset:  448 Size:    12 [unused]
//   float sceneTime_g;                 // Offset:  460 Size:     4
//   float2 lightTileSizeInv_g;         // Offset:  464 Size:     8 [unused]
//   float fogNearDistance_g;           // Offset:  472 Size:     4 [unused]
//   float fogFadeRangeInv_g;           // Offset:  476 Size:     4 [unused]
//   float3 fogColor_g;                 // Offset:  480 Size:    12 [unused]
//   float fogIntensity_g;              // Offset:  492 Size:     4 [unused]
//   float fogHeight_g;                 // Offset:  496 Size:     4 [unused]
//   float fogHeightRangeInv_g;         // Offset:  500 Size:     4 [unused]
//   float windWaveTime_g;              // Offset:  504 Size:     4 [unused]
//   float windWaveFrequency_g;         // Offset:  508 Size:     4 [unused]
//   uint localLightProbeCount_g;       // Offset:  512 Size:     4 [unused]
//   float lightSpecularGlossiness_g;   // Offset:  516 Size:     4 [unused]
//   float lightSpecularIntensity_g;    // Offset:  520 Size:     4 [unused]
//   float localShadowResolutionInv_g;  // Offset:  524 Size:     4 [unused]
//   float4x4 ditherMtx_g;              // Offset:  528 Size:    64 [unused]
//   float4 lightProbe_g[9];            // Offset:  592 Size:   144 [unused]
//   float3 chrLightDir_g;              // Offset:  736 Size:    12 [unused]
//   float windForce_g;                 // Offset:  748 Size:     4 [unused]
//   float4 mapColor_g;                 // Offset:  752 Size:    16 [unused]
//   float4 clipPlane_g;                // Offset:  768 Size:    16 [unused]
//   float2 resolutionScaling_g;        // Offset:  784 Size:     8
//   float2 invShadowSize_g;            // Offset:  792 Size:     8 [unused]
//   float3 chrShadowColor_g;           // Offset:  800 Size:    12 [unused]
//   float shadowFadeNear_g;            // Offset:  812 Size:     4 [unused]
//   float4 frustumPlanes_g[6];         // Offset:  816 Size:    96 [unused]
//   float3 shadowSplitDistance_g;      // Offset:  912 Size:    12 [unused]
//   float shadowFadeRangeInv_g;        // Offset:  924 Size:     4 [unused]
//   float4x4 shadowMtx_g[4];           // Offset:  928 Size:   256 [unused]
//
// }
//
// cbuffer cb_local
// {
//
//   uint maxRayCount_g;                // Offset:    0 Size:     4
//   float rayLength_g;                 // Offset:    4 Size:     4 [unused]
//   float2 prevResolutionScaling_g;    // Offset:    8 Size:     8
//   float4x4 prevViewProj_g;           // Offset:   16 Size:    64
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// samLinear                         sampler      NA          NA    0        1
// samPoint                          sampler      NA          NA    1        1
// colorTexture                      texture  float4          2d    0        1
// depthTexture                      texture  float4          2d    1        1
// mrtTexture0                       texture   uint4          2d    2        1
// mrtTexture2                       texture   uint2          2d    3        1
// prevSSRTexture                    texture  float4          2d    4        1
// cb_scene                          cbuffer      NA          NA    0        1
// cb_local                          cbuffer      NA          NA    2        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float
// TEXCOORD                 0   xyzw        1     NONE   float   xyzw
//
//
// 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[50], immediateIndexed
dcl_constantbuffer CB2[5], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (uint,uint,uint,uint) t2
dcl_resource_texture2d (uint,uint,uint,uint) t3
dcl_resource_texture2d (float,float,float,float) t4
dcl_input_ps linear v1.xyzw
dcl_output o0.xyzw
dcl_temps 11
resinfo_indexable(texture2d)(uint,uint,uint,uint) r0.xy, l(0), t2.xyzw
mul r0.zw, r0.xxxy, v1.xxxy
ftoi r1.xy, r0.zwzz
mov r1.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r1.xyz, r1.xyzw, t2.xywz
and r0.z, r1.z, l(2)
if_z r0.z
  sample_l_indexable(texture2d)(float,float,float,float) r2.xyz, v1.xyxx, t0.xyzw, s1, l(0.000000)
  mov o0.xyz, r2.xyzx
  mov o0.w, l(0)
  ret
endif
resinfo_indexable(texture2d)(uint,uint,uint,uint) r0.zw, l(0), t3.zwxy
mul r0.zw, r0.zzzw, v1.xxxy
ftoi r2.xy, r0.zwzz
mov r2.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r0.z, r2.xyzw, t3.xzyw
sample_l_indexable(texture2d)(float,float,float,float) r2.z, v1.xyxx, t1.yzxw, s1, l(0.000000)
mad r2.xy, v1.zwzz, l(2.000000, -2.000000, 0.000000, 0.000000), l(-1.000000, 1.000000, 0.000000, 0.000000)
mov r2.w, l(1.000000)
dp4 r3.x, r2.xyzw, cb0[12].xyzw
dp4 r3.y, r2.xyzw, cb0[13].xyzw
dp4 r3.z, r2.xyzw, cb0[14].xyzw
dp4 r0.w, r2.xyzw, cb0[15].xyzw
div r3.xyz, r3.xyzx, r0.wwww
utof r1.xy, r1.xyxx
mad r1.zw, r1.xxxy, l(0.000000, 0.000000, 0.0000305180438, 0.0000305180438), l(0.000000, 0.000000, -1.000000, -1.000000)
mul r0.w, r1.z, l(3.14159274)
sincos r4.x, r5.x, r0.w
mad r0.w, -r1.w, r1.w, l(1.000000)
sqrt r0.w, r0.w
mul r1.x, r0.w, r5.x
mul r1.y, r0.w, r4.x
dp3 r0.w, r1.xywx, r1.xywx
rsq r0.w, r0.w
mul r1.xyz, r0.wwww, r1.xywx
dp3 r4.x, r1.xyzx, cb0[0].xyzx
dp3 r4.y, r1.xyzx, cb0[1].xyzx
dp3 r4.z, r1.xyzx, cb0[2].xyzx
dp3 r0.w, r3.xyzx, r3.xyzx
rsq r0.w, r0.w
mul r1.xyz, r0.wwww, r3.xyzx
dp3 r0.w, r1.xyzx, r4.xyzx
add r0.w, r0.w, r0.w
mad r1.xyz, r4.xyzx, -r0.wwww, r1.xyzx
dp3 r0.w, -r3.xyzx, -r3.xyzx
rsq r0.w, r0.w
mul r5.xyz, r0.wwww, -r3.xyzx
dp3 r0.w, r5.xyzx, r4.xyzx
utof r0.z, r0.z
mul r0.z, r0.z, l(0.0152590219)
utof r1.w, cb2[0].x
div r0.z, r0.z, r1.w
mul r4.xyz, r3.xyzx, cb0[28].wwww
dp3 r1.w, r4.xyzx, l(12.989800, 78.233002, 56.786999, 0.000000)
sincos r1.w, null, r1.w
mul r1.w, r1.w, l(43758.546875)
frc r1.w, r1.w
mul r4.xy, r0.zzzz, l(0.900000, 0.200000048, 0.000000, 0.000000)
mad r0.z, r1.w, r4.y, r4.x
mul r5.xyz, r0.zzzz, r1.xyzx
mad r3.xyw, r1.xyxz, r0.zzzz, r3.xyxz
add r0.z, -|r0.w|, l(1.000000)
mul r0.z, r0.z, r0.z
mul r0.z, r0.z, r0.z
mul r0.z, r0.z, r0.z
mul r0.z, r0.z, -r3.z
mul r0.z, r0.z, l(0.020000)
mad r3.xyz, r1.xyzx, r0.zzzz, r3.xywx
mov r6.w, l(1.000000)
mov r7.y, l(1.000000)
mov r8.xyz, r5.xyzx
mov r0.zw, l(0,0,0,0)
mov r1.w, l(0)
mov r9.xyz, r3.xyzx
mov r3.w, l(0)
loop
  uge r4.z, r3.w, cb2[0].x
  breakc_nz r4.z
  mov r6.xyz, r9.xyzx
  dp4 r10.x, r6.xyzw, cb0[8].xyzw
  dp4 r10.y, r6.xyzw, cb0[9].xyzw
  dp4 r4.z, r6.xyzw, cb0[11].xyzw
  div r4.zw, r10.xxxy, r4.zzzz
  mul r7.zw, r4.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000)
  mad r10.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
  max r4.z, |r7.w|, |r7.z|
  lt r4.z, l(0.500000), r4.z
  if_nz r4.z
    mov r0.zw, r10.xxxy
    break
  endif
  add r10.w, -r10.y, l(1.000000)
  add r10.z, -r10.y, l(1.000000)
  mul r4.zw, r10.xxxz, cb0[49].xxxy
  sample_l_indexable(texture2d)(float,float,float,float) r7.x, r4.zwzz, t1.xyzw, s1, l(0.000000)
  dp2 r4.z, cb0[14].zwzz, r7.xyxx
  dp2 r4.w, cb0[15].zwzz, r7.xyxx
  div r4.z, r4.z, r4.w
  add r4.z, r4.z, -r9.z
  lt r4.w, l(0.000000), r4.z
  lt r4.z, r4.z, l(10.000000)
  and r4.z, r4.z, r4.w
  if_nz r4.z
    mov r0.zw, r10.xxxz
    mov r1.w, l(-1)
    break
  endif
  mul r7.xzw, r6.xxyz, cb0[28].wwww
  dp3 r4.z, r7.xzwx, l(12.989800, 78.233002, 56.786999, 0.000000)
  sincos r4.z, null, r4.z
  mul r4.z, r4.z, l(43758.546875)
  frc r4.z, r4.z
  mad r4.z, r4.z, r4.y, r4.x
  mul r8.xyz, r1.xyzx, r4.zzzz
  mad r9.xyz, r1.xyzx, r4.zzzz, r6.xyzx
  iadd r3.w, r3.w, l(1)
  mov r0.zw, r10.xxxw
  mov r1.w, l(0)
endloop
if_nz r1.w
  add r1.xyz, -r8.xyzx, r9.xyzx
  mul r3.xyz, r8.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000)
  mov r4.w, l(1.000000)
  mov r5.y, l(1.000000)
  mov r4.xyz, r1.xyzx
  mov r6.xy, r0.zwzz
  mov r1.w, l(2.000000)
  mov r3.w, l(2.000000)
  mov r5.z, l(0)
  loop
    ige r5.w, r5.z, l(4)
    breakc_nz r5.w
    mul r7.xyz, r3.wwww, r3.xyzx
    mul r8.xyz, r4.xyzx, cb0[28].wwww
    dp3 r5.w, r8.xyzx, l(12.989800, 78.233002, 56.786999, 0.000000)
    sincos r5.w, null, r5.w
    mul r5.w, r5.w, l(43758.546875)
    frc r5.w, r5.w
    mad r5.w, r5.w, l(0.200000048), l(0.900000)
    mad r4.xyz, r7.xyzx, r5.wwww, r4.xyzx
    dp4 r7.x, r4.xyzw, cb0[8].xyzw
    dp4 r7.y, r4.xyzw, cb0[9].xyzw
    dp4 r5.w, r4.xyzw, cb0[11].xyzw
    div r7.xy, r7.xyxx, r5.wwww
    mad r6.xz, r7.xxyx, l(0.500000, 0.000000, 0.500000, 0.000000), l(0.500000, 0.000000, 0.500000, 0.000000)
    mul r1.w, r1.w, l(0.500000)
    add r6.y, -r6.z, l(1.000000)
    mul r6.zw, r6.xxxy, cb0[49].xxxy
    sample_l_indexable(texture2d)(float,float,float,float) r5.x, r6.zwzz, t1.xyzw, s1, l(0.000000)
    dp2 r5.w, cb0[14].zwzz, r5.xyxx
    dp2 r5.x, cb0[15].zwzz, r5.xyxx
    div r5.x, r5.w, r5.x
    add r5.x, -r4.z, r5.x
    lt r5.w, l(0.000000), r5.x
    lt r5.x, r5.x, l(0.000000)
    and r5.x, r5.x, r5.w
    movc r3.w, r5.x, -r1.w, r1.w
    iadd r5.z, r5.z, l(1)
  endloop
  mov r0.zw, r6.xxxy
  add r1.xy, r0.zwzz, l(-0.500000, -0.500000, 0.000000, 0.000000)
  dp2 r1.x, r1.xyxx, r1.xyxx
  sqrt r1.x, r1.x
  add r1.x, r1.x, r1.x
  mul r1.y, r1.x, r1.x
  mad r1.x, -r1.x, r1.y, l(1.000000)
  mul r1.yz, r0.zzwz, cb0[49].xxyx
  mul r0.xy, r0.xyxx, r1.yzyy
  ftoi r3.xy, r0.xyxx
  mov r3.zw, l(0,0,0,0)
  ld_indexable(texture2d)(uint,uint,uint,uint) r0.x, r3.xyzw, t2.wxyz
  and r0.x, r0.x, l(2)
  movc r0.x, r0.x, l(0), r1.x
else
  add r1.xy, r0.zwzz, l(-0.500000, -0.500000, 0.000000, 0.000000)
  dp2 r0.y, r1.xyxx, r1.xyxx
  sqrt r0.y, r0.y
  add r0.y, r0.y, r0.y
  mul r1.x, r0.y, r0.y
  mad r0.x, -r0.y, r1.x, l(1.000000)
endif
mul r0.yz, r0.zzwz, cb0[49].xxyx
sample_l_indexable(texture2d)(float,float,float,float) r1.xyz, r0.yzyy, t0.xyzw, s1, l(0.000000)
max r1.w, r0.x, l(0.000000)
dp4 r0.x, r2.xyzw, cb0[20].xyzw
dp4 r0.y, r2.xyzw, cb0[21].xyzw
dp4 r0.z, r2.xyzw, cb0[22].xyzw
dp4 r0.w, r2.xyzw, cb0[23].xyzw
div r0.xyzw, r0.xyzw, r0.wwww
dp4 r2.x, r0.xyzw, cb2[1].xyzw
dp4 r2.y, r0.xyzw, cb2[2].xyzw
dp4 r0.x, r0.xyzw, cb2[4].xyzw
div r0.xy, r2.xyxx, r0.xxxx
mad r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
add r0.z, -r0.y, l(1.000000)
add r0.yw, r0.xxxz, -v1.zzzw
dp2 r0.y, r0.ywyy, r0.ywyy
sqrt r0.y, r0.y
mul r0.y, r0.y, l(-1442.695068)
exp r0.y, r0.y
mad r0.y, r0.y, l(-0.300000), l(0.400000)
mul r0.xz, r0.xxzx, cb0[49].xxyx
mul r0.xz, r0.xxzx, cb2[0].zzwz
sample_l_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xzxx, t4.xyzw, s0, l(0.000000)
add r1.xyzw, r1.xyzw, -r2.xyzw
mad o0.xyzw, r0.yyyy, r1.xyzw, r2.xyzw
ret
// Approximately 208 instruction slots used

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