//Distant fog PS.
// ---- Created with 3Dmigoto v1.3.16 on Thu Dec 15 19:43:17 2022
//Texture2D<float4> t2 : register(t2);
//
//Texture2D<float4> t1 : register(t1);
//
//Texture2D<float4> t0 : register(t0);
//
//cbuffer cb12 : register(b12)
//{
//  float4 cb12[272];
//}
//
//cbuffer cb3 : register(b3)
//{
//  float4 cb3[2];
//}
//
//cbuffer cb0 : register(b0)
//{
//  float4 cb0[215];
//}
//
//
//// 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,r11,r12;
//  uint4 bitmask, uiDest;
//  float4 fDest;
//  
//  float4 stereo = StereoParams.Load(0);
//  
//  r0.xy = (uint2)v0.xy;
//  r0.zw = float2(0,0);
//  r1.x = t0.Load(r0.xyw).x;
//  r1.y = r1.x * cb12[22].x + cb12[22].y;
//  r1.y = cmp(r1.y < 1);
//  if (r1.y != 0) {
//    r1.yz = (uint2)r0.xy;
//	
//	r12.xyzw = cb12[212].xyzw * r1.zzzz;
//    r12.xyzw = cb12[211].xyzw * r1.yyyy + r12.xyzw;
//    r11.xyzw = cb12[213].xyzw * r1.xxxx + r12.xyzw;
//    r11.xyzw = cb12[214].xyzw + r11.xyzw;
//	
//	r1.y+=stereo.x*(stereo.y*r11.w-1)*cb12[220].x;
//	
//    r2.xyzw = cb12[212].xyzw * r1.zzzz;
//    r2.xyzw = cb12[211].xyzw * r1.yyyy + r2.xyzw;
//    r1.xyzw = cb12[213].xyzw * r1.xxxx + r2.xyzw;
//    r1.xyzw = cb12[214].xyzw + r1.xyzw;
//    r1.xyz = r1.xyz / r1.www;
//    r2.xyz = t1.Load(r0.xyw).xyz;
//    r0.x = t2.Load(r0.xyz).x;
//    r0.x = max(cb3[1].x, r0.x);
//    r0.yzw = -cb12[0].xyz + r1.xyz;
//    r1.x = dot(r0.yzw, r0.yzw);
//    r1.x = sqrt(r1.x);
//    r1.y = -cb3[0].x + r1.x;
//    r1.zw = cb3[0].yw + -cb3[0].xz;
//    r1.y = saturate(r1.y / r1.z);
//    r1.y = r1.y * r1.w + cb3[0].z;
//    r0.x = -1 + r0.x;
//    r0.x = r1.y * r0.x + 1;
//    r0.yzw = r0.yzw / r1.xxx;
//    r1.y = r0.w * cb12[22].z + cb12[0].z;
//    r1.x = -cb12[22].z + r1.x;
//    r1.x = max(0, r1.x);
//    r1.x = min(cb12[42].z, r1.x);
//    r1.z = r1.x * r0.w;
//    r1.w = cb12[43].x * r1.x;
//    r1.zw = float2(0.0625,0.0625) * r1.zw;
//    r0.y = dot(cb12[38].xyz, r0.yzw);
//    r0.z = cb12[42].x + r0.y;
//    r0.w = 1 + cb12[42].x;
//    r0.z = saturate(r0.z / r0.w);
//    r0.w = cb12[43].y + -cb12[43].z;
//    r0.z = r0.z * r0.w + cb12[43].z;
//    r0.w = cmp(asint(cb12[271].z) == 2);
//    r2.w = cmp(0 < r0.y);
//    r3.x = r2.w ? 0.000000 : 0;
//    r0.w = r0.w ? 0 : r3.x;
//    r0.w = cb12[271].z ? r0.w : 1;
//    r0.y = abs(r0.y) * abs(r0.y);
//    r3.x = saturate(r1.x * 0.00200000009 + -0.300000012);
//    r0.w = r0.w ? r3.x : 1;
//    r0.y = r0.y * r0.w;
//    r3.xyz = r2.www ? cb12[39].xyz : cb12[41].xyz;
//    r3.xyz = -cb12[40].xyz + r3.xyz;
//    r3.xyz = r0.yyy * r3.xyz + cb12[40].xyz;
//    r4.xyz = r2.www ? cb12[45].xyz : cb12[47].xyz;
//    r4.xyz = -cb12[46].xyz + r4.xyz;
//    r4.xyz = r0.yyy * r4.xyz + cb12[46].xyz;
//    r0.y = cmp(r1.x >= cb12[48].y);
//    if (r0.y != 0) {
//      r0.y = cb12[42].y + r1.y;
//      r0.w = r0.y * r0.z;
//      r1.y = r1.z * r0.z;
//      r5.xyzw = r1.yyyy * float4(16,15,14,13) + r0.wwww;
//      r5.xyzw = max(float4(0,0,0,0), r5.xyzw);
//      r5.xyzw = float4(1,1,1,1) + r5.xyzw;
//      r5.xyzw = saturate(r1.wwww / r5.xyzw);
//      r5.xyzw = float4(1,1,1,1) + -r5.xyzw;
//      r1.z = r5.x * r5.y;
//      r1.z = r1.z * r5.z;
//      r1.z = r1.z * r5.w;
//      r5.xyzw = r1.yyyy * float4(12,11,10,9) + r0.wwww;
//      r5.xyzw = max(float4(0,0,0,0), r5.xyzw);
//      r5.xyzw = float4(1,1,1,1) + r5.xyzw;
//      r5.xyzw = saturate(r1.wwww / r5.xyzw);
//      r5.xyzw = float4(1,1,1,1) + -r5.xyzw;
//      r1.z = r5.x * r1.z;
//      r1.z = r1.z * r5.y;
//      r1.z = r1.z * r5.z;
//      r1.z = r1.z * r5.w;
//      r5.xyzw = r1.yyyy * float4(8,7,6,5) + r0.wwww;
//      r5.xyzw = max(float4(0,0,0,0), r5.xyzw);
//      r5.xyzw = float4(1,1,1,1) + r5.xyzw;
//      r5.xyzw = saturate(r1.wwww / r5.xyzw);
//      r5.xyzw = float4(1,1,1,1) + -r5.xyzw;
//      r1.z = r5.x * r1.z;
//      r1.z = r1.z * r5.y;
//      r1.z = r1.z * r5.z;
//      r1.z = r1.z * r5.w;
//      r5.xy = r1.yy * float2(4,3) + r0.ww;
//      r5.xy = max(float2(0,0), r5.xy);
//      r5.xy = float2(1,1) + r5.xy;
//      r5.xy = saturate(r1.ww / r5.xy);
//      r5.xy = float2(1,1) + -r5.xy;
//      r1.z = r5.x * r1.z;
//      r1.z = r1.z * r5.y;
//      r0.w = r1.y * 2 + r0.w;
//      r0.w = max(0, r0.w);
//      r0.w = 1 + r0.w;
//      r0.w = saturate(r1.w / r0.w);
//      r0.w = 1 + -r0.w;
//      r0.w = r1.z * r0.w;
//      r0.y = r0.y * r0.z + r1.y;
//      r0.y = max(0, r0.y);
//      r0.y = 1 + r0.y;
//      r0.y = saturate(r1.w / r0.y);
//      r0.y = 1 + -r0.y;
//      r0.y = -r0.w * r0.y + 1;
//      r0.z = -cb12[48].y + r1.x;
//      r0.z = saturate(cb12[48].z * r0.z);
//    } else {
//      r0.yz = float2(1,0);
//    }
//    r0.y = log2(r0.y);
//    r0.w = cb12[42].w * r0.y;
//    r0.w = exp2(r0.w);
//    r0.y = cb12[48].x * r0.y;
//    r0.y = exp2(r0.y);
//    r0.yw = r0.zz * r0.yw;
//    r1.xy = saturate(r0.ww * cb12[190].xz + cb12[190].yw);
//    r5.xyz = cb12[189].xyz + -r3.xyz;
//    r5.xyz = r1.xxx * r5.xyz + r3.xyz;
//    r0.z = -1 + cb12[189].w;
//    r0.z = r1.y * r0.z + 1;
//    r5.w = saturate(r0.w * r0.z);
//    r0.z = cmp(0 < cb12[193].x);
//    if (r0.z != 0) {
//      r1.xy = saturate(r0.ww * cb12[192].xz + cb12[192].yw);
//      r6.xyz = cb12[191].xyz + -r3.xyz;
//      r3.xyz = r1.xxx * r6.xyz + r3.xyz;
//      r0.z = -1 + cb12[191].w;
//      r0.z = r1.y * r0.z + 1;
//      r3.w = saturate(r0.w * r0.z);
//      r1.xyzw = r3.xyzw + -r5.xyzw;
//      r5.xyzw = cb12[193].xxxx * r1.xyzw + r5.xyzw;
//    }
//    r0.z = r5.w * r0.x;
//    r0.x = r0.y * r0.x;
//    r0.y = dot(float3(0.333000004,0.555000007,0.222000003), r2.xyz);
//    r1.xyz = r0.yyy * r4.xyz + -r2.xyz;
//    r0.xyw = r0.xxx * r1.xyz + r2.xyz;
//    r1.xyz = r5.xyz + -r0.xyw;
//    r0.xyz = r0.zzz * r1.xyz + r0.xyw;
//  } else {
//    r0.xyz = float3(0,0,0);
//  }
//  o0.xyz = r0.xyz;
//  o0.w = 1;
//  return;
//}
//
///*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.3.16 on Thu Dec 15 19:43:17 2022
//
//
// 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 CB3[2], immediateIndexed
dcl_constantbuffer CB12[272], immediateIndexed
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_input_ps_siv linear noperspective v0.xy, position
dcl_output o0.xyzw
dcl_temps 47
dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture2d)(float,float,float,float) r40.xyzw, l(0, 0, 0, 0), t125.xyzw
ftou r0.xy, v0.xyxx
mov r0.zw, l(0,0,0,0)
ld_indexable(texture2d)(float,float,float,float) r1.x, r0.xyww, t0.xyzw
mad r1.y, r1.x, cb12[22].x, cb12[22].y
lt r1.y, r1.y, l(1.000000)
if_nz r1.y
  utof r1.yz, r0.xxyx
  
  mul r32.xyzw, r1.zzzz, cb12[212].xyzw
  mad r32.xyzw, cb12[211].xyzw, r1.yyyy, r32.xyzw
  mad r31.xyzw, cb12[213].xyzw, r1.xxxx, r32.xyzw
  add r31.xyzw, r31.xyzw, cb12[214].xyzw
  
  mad r35.x, r40.y, r31.w, l(-1.0)
  mul r35.x, r35.x, cb12[220].x
  mad r1.y, r40.x, r35.x, r1.y
  
  mul r2.xyzw, r1.zzzz, cb12[212].xyzw
  mad r2.xyzw, cb12[211].xyzw, r1.yyyy, r2.xyzw
  mad r1.xyzw, cb12[213].xyzw, r1.xxxx, r2.xyzw
  add r1.xyzw, r1.xyzw, cb12[214].xyzw
  div r1.xyz, r1.xyzx, r1.wwww
  ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyww, t1.xyzw
  ld_indexable(texture2d)(float,float,float,float) r0.x, r0.xyzw, t2.xyzw
  max r0.x, r0.x, cb3[1].x
  add r0.yzw, r1.xxyz, -cb12[0].xxyz
  dp3 r1.x, r0.yzwy, r0.yzwy
  sqrt r1.x, r1.x
  add r1.y, r1.x, -cb3[0].x
  add r1.zw, -cb3[0].xxxz, cb3[0].yyyw
  div_sat r1.y, r1.y, r1.z
  mad r1.y, r1.y, r1.w, cb3[0].z
  add r0.x, r0.x, l(-1.000000)
  mad r0.x, r1.y, r0.x, l(1.000000)
  div r0.yzw, r0.yyzw, r1.xxxx
  mad r1.y, r0.w, cb12[22].z, cb12[0].z
  add r1.x, r1.x, -cb12[22].z
  max r1.x, r1.x, l(0.000000)
  min r1.x, r1.x, cb12[42].z
  mul r1.z, r0.w, r1.x
  mul r1.w, r1.x, cb12[43].x
  mul r1.zw, r1.zzzw, l(0.000000, 0.000000, 0.062500, 0.062500)
  dp3 r0.y, cb12[38].xyzx, r0.yzwy
  add r0.z, r0.y, cb12[42].x
  add r0.w, cb12[42].x, l(1.000000)
  div_sat r0.z, r0.z, r0.w
  add r0.w, -cb12[43].z, cb12[43].y
  mad r0.z, r0.z, r0.w, cb12[43].z
  ieq r0.w, cb12[271].z, l(2)
  lt r2.w, l(0.000000), r0.y
  and r3.x, r2.w, l(1)
  movc r0.w, r0.w, l(0), r3.x
  movc r0.w, cb12[271].z, r0.w, l(1)
  mul r0.y, |r0.y|, |r0.y|
  mad_sat r3.x, r1.x, l(0.002000), l(-0.300000)
  movc r0.w, r0.w, r3.x, l(1.000000)
  mul r0.y, r0.w, r0.y
  movc r3.xyz, r2.wwww, cb12[39].xyzx, cb12[41].xyzx
  add r3.xyz, r3.xyzx, -cb12[40].xyzx
  mad r3.xyz, r0.yyyy, r3.xyzx, cb12[40].xyzx
  movc r4.xyz, r2.wwww, cb12[45].xyzx, cb12[47].xyzx
  add r4.xyz, r4.xyzx, -cb12[46].xyzx
  mad r4.xyz, r0.yyyy, r4.xyzx, cb12[46].xyzx
  ge r0.y, r1.x, cb12[48].y
  if_nz r0.y
    add r0.y, r1.y, cb12[42].y
    mul r0.w, r0.z, r0.y
    mul r1.y, r0.z, r1.z
    mad r5.xyzw, r1.yyyy, l(16.000000, 15.000000, 14.000000, 13.000000), r0.wwww
    max r5.xyzw, r5.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
    add r5.xyzw, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
    div_sat r5.xyzw, r1.wwww, r5.xyzw
    add r5.xyzw, -r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
    mul r1.z, r5.y, r5.x
    mul r1.z, r5.z, r1.z
    mul r1.z, r5.w, r1.z
    mad r5.xyzw, r1.yyyy, l(12.000000, 11.000000, 10.000000, 9.000000), r0.wwww
    max r5.xyzw, r5.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
    add r5.xyzw, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
    div_sat r5.xyzw, r1.wwww, r5.xyzw
    add r5.xyzw, -r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
    mul r1.z, r1.z, r5.x
    mul r1.z, r5.y, r1.z
    mul r1.z, r5.z, r1.z
    mul r1.z, r5.w, r1.z
    mad r5.xyzw, r1.yyyy, l(8.000000, 7.000000, 6.000000, 5.000000), r0.wwww
    max r5.xyzw, r5.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
    add r5.xyzw, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
    div_sat r5.xyzw, r1.wwww, r5.xyzw
    add r5.xyzw, -r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
    mul r1.z, r1.z, r5.x
    mul r1.z, r5.y, r1.z
    mul r1.z, r5.z, r1.z
    mul r1.z, r5.w, r1.z
    mad r5.xy, r1.yyyy, l(4.000000, 3.000000, 0.000000, 0.000000), r0.wwww
    max r5.xy, r5.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
    add r5.xy, r5.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
    div_sat r5.xy, r1.wwww, r5.xyxx
    add r5.xy, -r5.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
    mul r1.z, r1.z, r5.x
    mul r1.z, r5.y, r1.z
    mad r0.w, r1.y, l(2.000000), r0.w
    max r0.w, r0.w, l(0.000000)
    add r0.w, r0.w, l(1.000000)
    div_sat r0.w, r1.w, r0.w
    add r0.w, -r0.w, l(1.000000)
    mul r0.w, r0.w, r1.z
    mad r0.y, r0.y, r0.z, r1.y
    max r0.y, r0.y, l(0.000000)
    add r0.y, r0.y, l(1.000000)
    div_sat r0.y, r1.w, r0.y
    add r0.y, -r0.y, l(1.000000)
    mad r0.y, -r0.w, r0.y, l(1.000000)
    add r0.z, r1.x, -cb12[48].y
    mul_sat r0.z, r0.z, cb12[48].z
  else
    mov r0.yz, l(0,1.000000,0,0)
  endif
  log r0.y, r0.y
  mul r0.w, r0.y, cb12[42].w
  exp r0.w, r0.w
  mul r0.y, r0.y, cb12[48].x
  exp r0.y, r0.y
  mul r0.yw, r0.yyyw, r0.zzzz
  mad_sat r1.xy, r0.wwww, cb12[190].xzxx, cb12[190].ywyy
  add r5.xyz, -r3.xyzx, cb12[189].xyzx
  mad r5.xyz, r1.xxxx, r5.xyzx, r3.xyzx
  add r0.z, cb12[189].w, l(-1.000000)
  mad r0.z, r1.y, r0.z, l(1.000000)
  mul_sat r5.w, r0.z, r0.w
  lt r0.z, l(0.000000), cb12[193].x
  if_nz r0.z
    mad_sat r1.xy, r0.wwww, cb12[192].xzxx, cb12[192].ywyy
    add r6.xyz, -r3.xyzx, cb12[191].xyzx
    mad r3.xyz, r1.xxxx, r6.xyzx, r3.xyzx
    add r0.z, cb12[191].w, l(-1.000000)
    mad r0.z, r1.y, r0.z, l(1.000000)
    mul_sat r3.w, r0.z, r0.w
    add r1.xyzw, -r5.xyzw, r3.xyzw
    mad r5.xyzw, cb12[193].xxxx, r1.xyzw, r5.xyzw
  endif
  mul r0.z, r0.x, r5.w
  mul r0.x, r0.x, r0.y
  dp3 r0.y, l(0.333000, 0.555000, 0.222000, 0.000000), r2.xyzx
  mad r1.xyz, r0.yyyy, r4.xyzx, -r2.xyzx
  mad r0.xyw, r0.xxxx, r1.xyxz, r2.xyxz
  add r1.xyz, -r0.xywx, r5.xyzx
  mad r0.xyz, r0.zzzz, r1.xyzx, r0.xywx
else
  mov r0.xyz, l(0,0,0,0)
endif
mov o0.xyz, r0.xyzx
mov o0.w, l(1.000000)
ret
// Approximately 0 instruction slots used
