// ---- Created with 3Dmigoto v1.3.10 on Fri May 04 20:15:44 2018

cbuffer PER_BATCH : register(b0)
{
  float4 vDofParamsFocus1 : packoffset(c0);
  float4 PS_ScreenSize : packoffset(c1);
  float4 g_Taps[49] : packoffset(c2);
}

SamplerState _tex1_s : register(s1);
SamplerState _tex2_s : register(s2);
SamplerState _tex4_s : register(s4);
Texture2D<float4> _tex1 : register(t1);
Texture2D<float4> _tex2 : register(t2);
Texture2D<float4> _tex4 : register(t4);


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


void main(
  float4 v0 : SV_Position0,
  float4 v1 : TEXCOORD0,
  float4 v2 : TEXCOORD1,
  out float4 o0 : SV_Target0,
  out float4 o1 : SV_Target1,
  out float2 o2 : SV_Target2)
{
  float4 r0,r1,r2,r3,r4,r5,r6,r7;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.x = (int)vDofParamsFocus1.z;
  r0.yz = PS_ScreenSize.zw + PS_ScreenSize.zw;
  r1.xy = float2(0.00052083336,0.00092592591) * PS_ScreenSize.xy;
  r0.w = max(r1.x, r1.y);
  r0.w = 4 * r0.w;
  r0.yz = r0.yz * r0.ww;
  r1.xy = v1.xy * float2(2,2) + float2(-1,-1);
  r1.xy = float2(0.200000003,0.200000003) * r1.xy;
  r2.xyzw = _tex1.SampleLevel(_tex1_s, v1.xy, 0).xyzw;
  r3.xyzw = _tex2.SampleLevel(_tex2_s, v1.xy, 0).xyzw;
  r0.w = _tex4.SampleLevel(_tex4_s, v1.xy, 0).x;
  r1.z = cmp(0 < r0.w);
  if (r1.z != 0) {
    r1.z = 1.07500005 * r0.w;
    r4.xyzw = float4(0,0,0,0);
    r1.w = 0;
    r5.x = 0;
    while (true) {
      r5.y = cmp((int)r5.x >= (int)r0.x);
      if (r5.y != 0) break;
      r5.y = dot(r1.xy, g_Taps[r5.x].xy);
      r5.y = 1 + -abs(r5.y);
      r5.y = r5.y * r0.w;
      r5.yz = r5.yy * r0.yz;
      r5.yz = r5.yz * g_Taps[r5.x].xy + v1.xy;
      r6.xyzw = _tex1.SampleLevel(_tex1_s, r5.yz, 0).xyzw;
      r5.y = cmp(r6.w >= r1.z);
      r5.z = saturate(r0.w * 1.07500005 + -r6.w);
      r5.y = r5.y ? 1 : r5.z;
      r4.xyzw = r6.xyzw * r5.yyyy + r4.xyzw;
      r1.w = r5.y + r1.w;
      r5.x = (int)r5.x + 1;
    }
  } else {
    r4.xyzw = float4(0,0,0,0);
    r1.w = 0;
  }
  r5.xyzw = float4(0,0,0,0);
  r0.w = 0;
  r1.z = 0;
  while (true) {
    r6.x = cmp((int)r1.z >= (int)r0.x);
    if (r6.x != 0) break;
    r6.x = dot(r1.xy, g_Taps[r1.z].xy);
    r6.x = 1 + -abs(r6.x);
    r6.x = r6.x * r3.w;
    r6.xy = r6.xx * r0.yz;
    r6.xy = r6.xy * g_Taps[r1.z].xy + v1.xy;
    r6.xyzw = _tex2.SampleLevel(_tex2_s, r6.xy, 0).xyzw;
    r7.x = cmp(r6.w >= r3.w);
    r7.y = saturate(r6.w);
    r7.x = r7.x ? 1 : r7.y;
    r5.xyzw = r6.xyzw * r7.xxxx + r5.xyzw;
    r0.w = r7.x + r0.w;
    r1.z = (int)r1.z + 1;
  }
  r0.x = cmp(0 != r1.w);
  r0.y = rcp(r1.w);
  r1.xyzw = r4.xyzw * r0.yyyy;
  r1.xyzw = r0.xxxx ? r1.xyzw : r2.xyzw;
  r0.x = cmp(0 != r0.w);
  r0.y = rcp(r0.w);
  r2.xyzw = r5.xyzw * r0.yyyy;
  r0.xyzw = r0.xxxx ? r2.xyzw : r3.xyzw;
  o0.xyzw = r1.xyzw;
  o1.xyzw = r0.xyzw;
  o2.x = r1.w;
  o2.y = r0.w;


  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.30.960.8229
//
//   using 3Dmigoto v1.3.10 on Fri May 04 20:15:44 2018
//
//
// Buffer Definitions:
//
// cbuffer PER_BATCH
// {
//
//   float4 vDofParamsFocus1;           // Offset:    0 Size:    16
//   float4 PS_ScreenSize;              // Offset:   16 Size:    16
//   float4 g_Taps[49];                 // Offset:   32 Size:   784
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// _tex1                             sampler      NA          NA    1        1
// _tex2                             sampler      NA          NA    2        1
// _tex4                             sampler      NA          NA    4        1
// _tex1                             texture  float4          2d    1        1
// _tex2                             texture  float4          2d    2        1
// _tex4                             texture  float4          2d    4        1
// PER_BATCH                         cbuffer      NA          NA    0        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float
// TEXCOORD                 0   xyzw        1     NONE   float   xy
// TEXCOORD                 1   xyzw        2     NONE   float
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
// SV_Target                1   xyzw        1   TARGET   float   xyzw
// SV_Target                2   xy          2   TARGET   float   xy
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[51], dynamicIndexed
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_sampler s4, mode_default
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t4
dcl_input_ps linear v1.xy
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.xy
dcl_temps 8
ftoi r0.x, cb0[0].z
add r0.yz, cb0[1].zzwz, cb0[1].zzwz
mul r1.xy, cb0[1].xyxx, l(0.000520833360, 0.000925925910, 0.000000, 0.000000)
max r0.w, r1.y, r1.x
mul r0.w, r0.w, l(4.000000)
mul r0.yz, r0.wwww, r0.yyzy
mad r1.xy, v1.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
mul r1.xy, r1.xyxx, l(0.200000, 0.200000, 0.000000, 0.000000)
sample_l_indexable(texture2d)(float,float,float,float) r2.xyzw, v1.xyxx, t1.xyzw, s1, l(0.000000)
sample_l_indexable(texture2d)(float,float,float,float) r3.xyzw, v1.xyxx, t2.xyzw, s2, l(0.000000)
sample_l_indexable(texture2d)(float,float,float,float) r0.w, v1.xyxx, t4.yzwx, s4, l(0.000000)
lt r1.z, l(0.000000), r0.w
if_nz r1.z
  mul r1.z, r0.w, l(1.075000)
  mov r4.xyzw, l(0,0,0,0)
  mov r1.w, l(0)
  mov r5.x, l(0)
  loop
    ige r5.y, r5.x, r0.x
    breakc_nz r5.y
    dp2 r5.y, r1.xyxx, cb0[r5.x + 2].xyxx
    add r5.y, -|r5.y|, l(1.000000)
    mul r5.y, r0.w, r5.y
    mul r5.yz, r0.yyzy, r5.yyyy
    mad r5.yz, r5.yyzy, cb0[r5.x + 2].xxyx, v1.xxyx
    sample_l_indexable(texture2d)(float,float,float,float) r6.xyzw, r5.yzyy, t1.xyzw, s1, l(0.000000)
    ge r5.y, r6.w, r1.z
    mad_sat r5.z, r0.w, l(1.075000), -r6.w
    movc r5.y, r5.y, l(1.000000), r5.z
    mad r4.xyzw, r6.xyzw, r5.yyyy, r4.xyzw
    add r1.w, r1.w, r5.y
    iadd r5.x, r5.x, l(1)
  endloop
else
  mov r4.xyzw, l(0,0,0,0)
  mov r1.w, l(0)
endif
mov r5.xyzw, l(0,0,0,0)
mov r0.w, l(0)
mov r1.z, l(0)
loop
  ige r6.x, r1.z, r0.x
  breakc_nz r6.x
  dp2 r6.x, r1.xyxx, cb0[r1.z + 2].xyxx
  add r6.x, -|r6.x|, l(1.000000)
  mul r6.x, r3.w, r6.x
  mul r6.xy, r0.yzyy, r6.xxxx
  mad r6.xy, r6.xyxx, cb0[r1.z + 2].xyxx, v1.xyxx
  sample_l_indexable(texture2d)(float,float,float,float) r6.xyzw, r6.xyxx, t2.xyzw, s2, l(0.000000)
  ge r7.x, r6.w, r3.w
  mov_sat r7.y, r6.w
  movc r7.x, r7.x, l(1.000000), r7.y
  mad r5.xyzw, r6.xyzw, r7.xxxx, r5.xyzw
  add r0.w, r0.w, r7.x
  iadd r1.z, r1.z, l(1)
endloop
ne r0.x, l(0.000000, 0.000000, 0.000000, 0.000000), r1.w
rcp r0.y, r1.w
mul r1.xyzw, r0.yyyy, r4.xyzw
movc r1.xyzw, r0.xxxx, r1.xyzw, r2.xyzw
ne r0.x, l(0.000000, 0.000000, 0.000000, 0.000000), r0.w
rcp r0.y, r0.w
mul r2.xyzw, r0.yyyy, r5.xyzw
movc r0.xyzw, r0.xxxx, r2.xyzw, r3.xyzw
mov o0.xyzw, r1.xyzw
mov o1.xyzw, r0.xyzw
mov o2.x, r1.w
mov o2.y, r0.w
ret
// Approximately 69 instruction slots used

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