//distance fog 
// ---- Created with 3Dmigoto v1.3.16 on Sun Apr 18 20:42:29 2021
Texture2D<float4> t5 : register(t5);

Texture2D<float4> t4 : register(t4);

Texture2D<float4> t3 : register(t3);

Texture2D<float4> t2 : register(t2);

Texture2D<float4> t1 : register(t1);

Texture2D<float4> t0 : register(t0);

SamplerState s5_s : register(s5);

SamplerState s4_s : register(s4);

SamplerState s3_s : register(s3);

SamplerState s2_s : register(s2);

SamplerState s1_s : register(s1);

SamplerState s0_s : register(s0);

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

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

cbuffer cb13 : register(b13)
{
  float4 cb13[27];
}


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


void main(
  float4 v0 : SV_POSITION0,
  float4 v1 : TEXCOORD0,
  float3 v2 : TEXCOORD1,
  out float4 o0 : SV_Target0)
{
  float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11;
  uint4 bitmask, uiDest;
  float4 fDest;

float4 s = StereoParams.Load(0);
float4 texFilter = IniParams.Load(int2(14,0));
float4 testeo = IniParams.Load(int2(90,0));
float cursor_showing  = IniParams[1].z; 



  r0.xyzw = t0.Sample(s3_s, v1.xy).xyzw;
  r1.xyzw = t2.Sample(s5_s, v1.xy).xyzw;
  r1.x = 1.5 * r1.w;
  r1.y = cmp(r1.x >= -r1.x);
  r1.x = frac(abs(r1.x));
  r1.x = r1.y ? r1.x : -r1.x;
  r1.x = cmp(r1.x < 0.25);
  r1.y = cmp(cb0[2].x != 0.000000);
  if (r1.y != 0) {
    r2.xyzw = t1.Sample(s4_s, v1.xy).xyzw;
    r1.y = cb1[7].x * r2.x + cb1[7].y;
    r1.y = 1 / r1.y;
    r1.z = cmp(r2.x == 1.000000);
	
float4 stereo = StereoParams.Load(0); 
//v2.x -= stereo.x * (v2.z - stereo.y)*-1.64999723; 
//v2.x -= stereo.x * (v2.z - stereo.y)*-cb0[27].y; 
v2.x -= stereo.x * (v2.z - stereo.y)*-cb13[10].x; 


	
    r2.xyz = v2.xyz * r1.yyy;
    r1.y = dot(r2.xyz, r2.xyz);
    r0.w = sqrt(r1.y);
    r2.xyz = r2.xyz / r0.www;
    r3.xyz = cb0[20].www * r2.xyz;
    r4.xyz = cb0[10].xyz * r3.yyy;
    r3.xyw = cb0[9].xyz * r3.xxx + r4.xyz;
    r3.xyz = cb0[11].xyz * r3.zzz + r3.xyw;
    r3.xyz = saturate(cb0[12].xyz + r3.xyz);
    r4.y = 1 / cb0[17].x;
    r1.y = r3.y * cb0[17].x + -0.5;
    r1.w = frac(r1.y);
    r1.y = r1.y + -r1.w;
    r1.y = r3.z + r1.y;
    r3.w = r1.y * r4.y;
    r4.x = 0;
    r3.yz = r4.xy + r3.xw;
    r4.xyzw = t3.SampleLevel(s0_s, r3.xw, 0).xyzw;
    r5.xyzw = t3.SampleLevel(s0_s, r3.yz, 0).xyzw;
    r5.xyzw = r5.xyzw + -r4.xyzw;
    r4.xyzw = r1.wwww * r5.wxyz + r4.wxyz;
    r1.y = dot(r2.xyz, cb0[8].xyz);
    r2.w = cmp(0 < cb0[8].w);
    if (r2.w != 0) {
      r2.w = cmp(r1.y < -0.00999999978);
      r5.x = ~(int)r2.w;
      r5.y = -cb0[8].w / r1.y;
      r5.y = cb0[2].y + r5.y;
      r5.z = cb0[19].z * -r0.w;
      r5.z = 1.44269502 * r5.z;
      r5.z = exp2(r5.z);
      r6.xyz = -cb0[20].xyz + r0.xyz;
      r6.xyz = r5.zzz * r6.xyz + cb0[20].xyz;
      r6.xyz = r1.zzz ? r0.xyz : r6.xyz;
      r4.x = r2.w ? r5.y : cb0[2].y;
      r5.y = cmp(r0.w < r4.x);
      r2.w = r2.w ? r5.y : -1;
      r2.w = (int)r5.x | (int)r2.w;
      r5.xyz = r0.xyz;
      r5.w = r0.w;
    } else {
      r6.w = -cb0[8].w / r1.y;
      r7.x = cmp(0 < r6.w);
      r7.y = -r6.w + r0.w;
      r7.y = max(0, r7.y);
      r7.y = cb0[19].z * -r7.y;
      r7.y = 1.44269502 * r7.y;
      r7.y = exp2(r7.y);
      r8.xyz = -cb0[20].xyz + r0.xyz;
      r7.yzw = r7.yyy * r8.xyz + cb0[20].xyz;
      r8.xyz = r1.zzz ? r0.xyz : r7.yzw;
      r8.w = min(r6.w, r0.w);
      r5.xyzw = r7.xxxx ? r8.xyzw : r0.xyzw;
      r2.w = 0;
    }
    if (r2.w == 0) {
      r0.w = cmp(r4.x < r5.w);
      if (r0.w != 0) {
        r7.xyzw = t4.SampleLevel(s1_s, r3.xw, 0).xyzw;
        r8.xyzw = t4.SampleLevel(s1_s, r3.yz, 0).xyzw;
        r8.xyzw = r8.xyzw + -r7.xyzw;
        r7.xyzw = r1.wwww * r8.xyzw + r7.xyzw;
        r8.xyzw = t5.SampleLevel(s2_s, r3.xw, 0).xyzw;
        r3.xyzw = t5.SampleLevel(s2_s, r3.yz, 0).xyzw;
        r3.xyz = r3.xyz + -r8.xyz;
        r3.xyz = r1.www * r3.xyz + r8.xyz;
        r7.xyz = cb0[17].yyy * r7.xyz;
        r8.xyz = cb0[17].yyy * r4.yzw;
        r0.w = r5.w + -r4.x;
        r9.xyz = r4.xxx * r2.xyz;
        r1.z = dot(r2.xyz, -cb0[3].xyz);
        r1.z = -cb0[18].z * r1.z + cb0[18].y;
        r1.z = log2(r1.z);
        r1.z = -1.5 * r1.z;
        r1.z = exp2(r1.z);
        r1.z = cb0[18].x * r1.z;
        r2.xyz = r7.xyz * r1.zzz;
        r1.z = dot(cb0[3].xyz, cb0[8].xyz);
        r1.z = max(9.99999975e-005, r1.z);
        r7.xyz = cb0[5].xyz * cb0[5].www + cb0[6].xyz;
        r7.xyz = r7.xyz * r7.www;
        r10.xyz = cb0[17].zzz * r8.xyz;
        r11.xyz = r10.xyz * r1.yyy;
        r11.xyz = r11.xyz / r1.zzz;
        r4.xyz = -r4.yzw * cb0[17].yyy + r11.xyz;
        r1.y = dot(r9.xyz, cb0[8].xyz);
        r1.y = cb0[8].w + r1.y;
        r9.xyz = r10.xyz * r1.yyy;
        r1.yzw = r9.xyz / r1.zzz;
        r9.xyz = r0.www * r4.xyz + r1.yzw;
        r9.xyz = float3(1.44269502,1.44269502,1.44269502) * r9.xyz;
        r9.xyz = exp2(r9.xyz);
        r10.xyz = cmp(r4.xyz == float3(0,0,0));
        r11.xyz = r9.xyz * r0.www;
        r1.yzw = float3(1.44269502,1.44269502,1.44269502) * r1.yzw;
        r1.yzw = exp2(r1.yzw);
        r1.yzw = r9.xyz + -r1.yzw;
        r1.yzw = r1.yzw / r4.xyz;
        r1.yzw = r10.xyz ? r11.xyz : r1.yzw;
        r2.xyz = r7.xyz * r2.xyz;
        r1.yzw = r2.xyz * r1.yzw;
        r1.yzw = max(float3(0,0,0), r1.yzw);
        r2.xyz = -r0.www * r8.xyz;
        r2.xyz = float3(1.44269502,1.44269502,1.44269502) * r2.xyz;
        r2.xyz = exp2(r2.xyz);
        r4.xyz = -r8.xyz * r0.www;
        r4.xyz = float3(1.44269502,1.44269502,1.44269502) * r4.xyz;
        r4.xyz = exp2(r4.xyz);
        r4.xyz = float3(1,1,1) + -r4.xyz;
        r4.xyz = r4.xyz / r8.xyz;
        r3.xyz = r4.xyz * r3.xyz;
        r3.xyz = max(float3(0,0,0), r3.xyz);
        r1.yzw = r3.xyz + r1.yzw;
        r6.xyz = r5.xyz * r2.xyz + r1.yzw;
      } else {
        r6.xyz = r5.xyz;
      }
    }
  } else {
    r6.xyz = r0.xyz;
  }
  r0.w = r1.x ? 0 : cb0[21].x;
  r0.w = saturate(cb0[21].y + r0.w);
  r0.xyz = -r6.xyz + r0.xyz;
  o0.xyz = r0.www * r0.xyz + r6.xyz;
  o0.w = 1;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.3.16 on Sun Apr 18 20:42:29 2021
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION              0   xyzw        0      POS   float
// TEXCOORD                 0   xy          1     NONE   float   xy
// TEXCOORD                 1   xyz         2     NONE   float   xyz
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_4_0
dcl_constantbuffer cb0[22], immediateIndexed
dcl_constantbuffer cb1[8], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_sampler s4, mode_default
dcl_sampler s5, 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_texture2d (float,float,float,float) t3
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t5
dcl_input_ps linear v1.xy
dcl_input_ps linear v2.xyz
dcl_output o0.xyzw
dcl_temps 12
sample r0.xyzw, v1.xyxx, t0.xyzw, s3
sample r1.xyzw, v1.xyxx, t2.xyzw, s5
mul r1.x, r1.w, l(1.500000)
ge r1.y, r1.x, -r1.x
frc r1.x, |r1.x|
movc r1.x, r1.y, r1.x, -r1.x
lt r1.x, r1.x, l(0.250000)
ne r1.y, cb0[2].x, l(0.000000)
if_nz r1.y
  sample r2.xyzw, v1.xyxx, t1.xyzw, s4
  mad r1.y, cb1[7].x, r2.x, cb1[7].y
  div r1.y, l(1.000000, 1.000000, 1.000000, 1.000000), r1.y
  eq r1.z, r2.x, l(1.000000)
  mul r2.xyz, r1.yyyy, v2.xyzx
  dp3 r1.y, r2.xyzx, r2.xyzx
  sqrt r0.w, r1.y
  div r2.xyz, r2.xyzx, r0.wwww
  mul r3.xyz, r2.xyzx, cb0[20].wwww
  mul r4.xyz, r3.yyyy, cb0[10].xyzx
  mad r3.xyw, cb0[9].xyxz, r3.xxxx, r4.xyxz
  mad r3.xyz, cb0[11].xyzx, r3.zzzz, r3.xywx
  add_sat r3.xyz, r3.xyzx, cb0[12].xyzx
  div r4.y, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[17].x
  mad r1.y, r3.y, cb0[17].x, l(-0.500000)
  frc r1.w, r1.y
  add r1.y, -r1.w, r1.y
  add r1.y, r1.y, r3.z
  mul r3.w, r4.y, r1.y
  mov r4.x, l(0)
  add r3.yz, r3.xxwx, r4.xxyx
  sample_l r4.xyzw, r3.xwxx, t3.xyzw, s0, l(0.000000)
  sample_l r5.xyzw, r3.yzyy, t3.xyzw, s0, l(0.000000)
  add r5.xyzw, -r4.xyzw, r5.xyzw
  mad r4.xyzw, r1.wwww, r5.wxyz, r4.wxyz
  dp3 r1.y, r2.xyzx, cb0[8].xyzx
  lt r2.w, l(0.000000), cb0[8].w
  if_nz r2.w
    lt r2.w, r1.y, l(-0.010000)
    not r5.x, r2.w
    div r5.y, -cb0[8].w, r1.y
    add r5.y, r5.y, cb0[2].y
    mul r5.z, -r0.w, cb0[19].z
    mul r5.z, r5.z, l(1.442695)
    exp r5.z, r5.z
    add r6.xyz, r0.xyzx, -cb0[20].xyzx
    mad r6.xyz, r5.zzzz, r6.xyzx, cb0[20].xyzx
    movc r6.xyz, r1.zzzz, r0.xyzx, r6.xyzx
    movc r4.x, r2.w, r5.y, cb0[2].y
    lt r5.y, r0.w, r4.x
    movc r2.w, r2.w, r5.y, l(-1)
    or r2.w, r5.x, r2.w
    mov r5.xyz, r0.xyzx
    mov r5.w, r0.w
  else
    div r6.w, -cb0[8].w, r1.y
    lt r7.x, l(0.000000), r6.w
    add r7.y, r0.w, -r6.w
    max r7.y, r7.y, l(0.000000)
    mul r7.y, -r7.y, cb0[19].z
    mul r7.y, r7.y, l(1.442695)
    exp r7.y, r7.y
    add r8.xyz, r0.xyzx, -cb0[20].xyzx
    mad r7.yzw, r7.yyyy, r8.xxyz, cb0[20].xxyz
    movc r8.xyz, r1.zzzz, r0.xyzx, r7.yzwy
    min r8.w, r0.w, r6.w
    movc r5.xyzw, r7.xxxx, r8.xyzw, r0.xyzw
    mov r2.w, l(0)
  endif
  if_z r2.w
    lt r0.w, r4.x, r5.w
    if_nz r0.w
      sample_l r7.xyzw, r3.xwxx, t4.xyzw, s1, l(0.000000)
      sample_l r8.xyzw, r3.yzyy, t4.xyzw, s1, l(0.000000)
      add r8.xyzw, -r7.xyzw, r8.xyzw
      mad r7.xyzw, r1.wwww, r8.xyzw, r7.xyzw
      sample_l r8.xyzw, r3.xwxx, t5.xyzw, s2, l(0.000000)
      sample_l r3.xyzw, r3.yzyy, t5.xyzw, s2, l(0.000000)
      add r3.xyz, -r8.xyzx, r3.xyzx
      mad r3.xyz, r1.wwww, r3.xyzx, r8.xyzx
      mul r7.xyz, r7.xyzx, cb0[17].yyyy
      mul r8.xyz, r4.yzwy, cb0[17].yyyy
      add r0.w, -r4.x, r5.w
      mul r9.xyz, r2.xyzx, r4.xxxx
      dp3 r1.z, r2.xyzx, -cb0[3].xyzx
      mad r1.z, -cb0[18].z, r1.z, cb0[18].y
      log r1.z, r1.z
      mul r1.z, r1.z, l(-1.500000)
      exp r1.z, r1.z
      mul r1.z, r1.z, cb0[18].x
      mul r2.xyz, r1.zzzz, r7.xyzx
      dp3 r1.z, cb0[3].xyzx, cb0[8].xyzx
      max r1.z, r1.z, l(0.000100)
      mad r7.xyz, cb0[5].xyzx, cb0[5].wwww, cb0[6].xyzx
      mul r7.xyz, r7.wwww, r7.xyzx
      mul r10.xyz, r8.xyzx, cb0[17].zzzz
      mul r11.xyz, r1.yyyy, r10.xyzx
      div r11.xyz, r11.xyzx, r1.zzzz
      mad r4.xyz, -r4.yzwy, cb0[17].yyyy, r11.xyzx
      dp3 r1.y, r9.xyzx, cb0[8].xyzx
      add r1.y, r1.y, cb0[8].w
      mul r9.xyz, r1.yyyy, r10.xyzx
      div r1.yzw, r9.xxyz, r1.zzzz
      mad r9.xyz, r0.wwww, r4.xyzx, r1.yzwy
      mul r9.xyz, r9.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000)
      exp r9.xyz, r9.xyzx
      eq r10.xyz, r4.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
      mul r11.xyz, r0.wwww, r9.xyzx
      mul r1.yzw, r1.yyzw, l(0.000000, 1.442695, 1.442695, 1.442695)
      exp r1.yzw, r1.yyzw
      add r1.yzw, -r1.yyzw, r9.xxyz
      div r1.yzw, r1.yyzw, r4.xxyz
      movc r1.yzw, r10.xxyz, r11.xxyz, r1.yyzw
      mul r2.xyz, r2.xyzx, r7.xyzx
      mul r1.yzw, r1.yyzw, r2.xxyz
      max r1.yzw, r1.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
      mul r2.xyz, r8.xyzx, -r0.wwww
      mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000)
      exp r2.xyz, r2.xyzx
      mul r4.xyz, r0.wwww, -r8.xyzx
      mul r4.xyz, r4.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000)
      exp r4.xyz, r4.xyzx
      add r4.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
      div r4.xyz, r4.xyzx, r8.xyzx
      mul r3.xyz, r3.xyzx, r4.xyzx
      max r3.xyz, r3.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
      add r1.yzw, r1.yyzw, r3.xxyz
      mad r6.xyz, r5.xyzx, r2.xyzx, r1.yzwy
    else
      mov r6.xyz, r5.xyzx
    endif
  endif
else
  mov r6.xyz, r0.xyzx
endif
movc r0.w, r1.x, l(0), cb0[21].x
add_sat r0.w, r0.w, cb0[21].y
add r0.xyz, r0.xyzx, -r6.xyzx
mad o0.xyz, r0.wwww, r0.xyzx, r6.xyzx
mov o0.w, l(1.000000)
ret
// Approximately 0 instruction slots used

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