// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
//
//   using 3Dmigoto v1.3.11 on Tue Nov 27 17:11:42 2018
//
//
// Buffer Definitions:
//
// cbuffer $Globals
// {
//
//   float4 gFullScreenRenderTargetDimensionsCS;// Offset:    0 Size:    16
//   float4 gCSTestParam;               // Offset:   16 Size:    16 [unused]
//   float4 gLPVGridInfo[2];            // Offset:   32 Size:    32 [unused]
//   float4 gDeferredFogParams;         // Offset:   64 Size:    16 [unused]
//   float4 gLocalizedFogParams[5];     // Offset:   80 Size:    80 [unused]
//   row_major float4x4 gWaterRippleParams;// Offset:  160 Size:    64 [unused]
//   float4 gWaterRippleFilterParams[3];// Offset:  224 Size:    48 [unused]
//   float4 gHBAOCSParams[6];           // Offset:  272 Size:    96 [unused]
//   float4 gEdgeDetectParams[3];       // Offset:  368 Size:    48 [unused]
//   row_major float4x4 gMainSceneViewProj;// Offset:  416 Size:    64 [unused]
//   row_major float4x4 gMainSceneProj; // Offset:  480 Size:    64 [unused]
//   row_major float4x4 gMainSceneInvProj;// Offset:  544 Size:    64 [unused]
//   row_major float4x4 gMainSceneInvTransInvView;// Offset:  608 Size:    64 [unused]
//   float4 gSceenResClipDistances;     // Offset:  672 Size:    16 [unused]
//   row_major float4x4 gMainSceneInvViewProj;// Offset:  688 Size:    64 [unused]
//   float4 gTiledDeferredShadowMapTexelSize;// Offset:  752 Size:    16 [unused]
//   float4 gTiledDeferredMergeParams;  // Offset:  768 Size:    16 [unused]
//   float4 gPointInSpaceLightParams;   // Offset:  784 Size:    16 [unused]
//   row_major float4x4 gLumHistComputeParams;// Offset:  800 Size:    64 [unused]
//   float4 gLuminanceToExposureCS;     // Offset:  864 Size:    16 [unused]
//   float4 gHistogramToExposure;       // Offset:  880 Size:    16 [unused]
//   row_major float4x4 gToneMapOptionsCS;// Offset:  896 Size:    64 [unused]
//   float4 gCameraPositionCS;          // Offset:  960 Size:    16 [unused]
//   float4 gWriteColour;               // Offset:  976 Size:    16 [unused]
//   float4 gLightShadowStrengthCS;     // Offset:  992 Size:    16 [unused]
//   float4 gLightShadowParamsCS;       // Offset: 1008 Size:    16 [unused]
//   row_major float4x4 gInverseViewProjShadowCS;// Offset: 1024 Size:    64 [unused]
//   row_major float4x4 gShadowMapPackedParamsCS;// Offset: 1088 Size:    64 [unused]
//   row_major float4x4 gCascadeMinMaxDepthCS;// Offset: 1152 Size:    64 [unused]
//   float4 gCameraParametersCS[2];     // Offset: 1216 Size:    32 [unused]
//   float4 gPCFKernelScaleCS;          // Offset: 1248 Size:    16 [unused]
//   float4 gCascadedShadowLightMatricesCS[16];// Offset: 1264 Size:   256 [unused]
//   float4 gLightingExperimentCS[3];   // Offset: 1520 Size:    48 [unused]
//   float4 gFinalGatherCS[5];          // Offset: 1568 Size:    80 [unused]
//   row_major float4x4 gMainSceneView; // Offset: 1648 Size:    64 [unused]
//   float4 gViewportInfoCS;            // Offset: 1712 Size:    16 [unused]
//   float4 gAOParamsCS;                // Offset: 1728 Size:    16 [unused]
//   float4 gLightComponentTogglerCS[3];// Offset: 1744 Size:    48 [unused]
//   float4 gDirectLightingExtraParamsCS;// Offset: 1792 Size:    16 [unused]
//   row_major float4x4 gViewMatrixCS;  // Offset: 1808 Size:    64 [unused]
//   row_major float4x4 gClusteredLightingParamsCS;// Offset: 1872 Size:    64 [unused]
//   float4 gTiledDecalParams[2];       // Offset: 1936 Size:    32 [unused]
//   float4 gAOStrengthParams;          // Offset: 1968 Size:    16 [unused]
//   float4 gSkinSsaoColourParams;      // Offset: 1984 Size:    16 [unused]
//   float4 gHairSsaoColourParams;      // Offset: 2000 Size:    16 [unused]
//   float4 gFoliageSsaoColourParams;   // Offset: 2016 Size:    16 [unused]
//   row_major float4x4 gKeyLightParametersCS;// Offset: 2032 Size:    64 [unused]
//   row_major float4x4 gVolumetricKeyLightParams;// Offset: 2096 Size:    64 [unused]
//   float4 gAnisoParamsCS;             // Offset: 2160 Size:    16 [unused]
//   float4 gTranslucencyLightingDebugParamsCS;// Offset: 2176 Size:    16 [unused]
//
// }
//
// Resource bind info for output_depthbuffer_bucketed_near
// {
//
//   struct tMinMaxPair
//   {
//
//       float mMin;                    // Offset:    0
//       float mMax;                    // Offset:    4
//
//   } $Element;                        // Offset:    0 Size:     8
//
// }
//
// Resource bind info for output_depthbuffer_bucketed_far
// {
//
//   struct tMinMaxPair
//   {
//
//       float mMin;                    // Offset:    0
//       float mMax;                    // Offset:    4
//
//   } $Element;                        // Offset:    0 Size:     8
//
// }
//
// Resource bind info for output_depthbuffer_absolute_max
// {
//
//   float $Element;                    // Offset:    0 Size:     4
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// DepthBuffer                       texture  float4          2d    0        1
// output_depthbuffer_bucketed_near        UAV  struct         r/w    0        1
// output_depthbuffer_bucketed_far        UAV  struct         r/w    1        1
// output_depthbuffer_absolute_max        UAV  struct         r/w    2        1
// $Globals                          cbuffer      NA          NA    0        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// no Input
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// no Output
cs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[1], immediateIndexed
dcl_resource_texture2d (float,float,float,float) t0
dcl_uav_structured u0, 8
dcl_uav_structured u1, 8
dcl_uav_structured u2, 4
dcl_input vThreadGroupID.xy
dcl_input vThreadIDInGroup.xy
dcl_input vThreadID.xy
dcl_temps 11
dcl_tgsm_structured g0, 256, 8
dcl_tgsm_structured g1, 4, 4
dcl_tgsm_structured g2, 8, 4
dcl_tgsm_structured g3, 4, 4
dcl_thread_group 32, 8, 1
//use T80 for stereo parameters - t125 allready used by game
//use T75 for ini parameters - t120 allready used by game
dcl_resource_texture2d (float,float,float,float) t80
dcl_resource_texture1d (float,float,float,float) t75
ult r0.xyzw, vThreadIDInGroup.xyyy, l(4, 4, 2, 1)
ieq r1.x, vThreadIDInGroup.y, l(0)
and r0.x, r0.x, r1.x
if_nz r0.x
  store_structured g3.x, vThreadIDInGroup.x, l(0), l(0)
endif
sync_g_t
ftou r1.xy, cb0[0].yxyy
ishl r2.xy, vThreadID.xyxx, l(1, 1, 0, 0)
uge r1.z, r2.x, r1.y
if_nz r1.z
  mov r1.z, l(-1)
else
  uge r1.z, r2.y, r1.x
endif
//FIX by masterotaku and Losti - start//
ld_indexable(texture2d)(float,float,float,float) r6.xyzw, l(0, 0, 0, 0), t80.xyzw
ld_indexable(texture1d)(float,float,float,float) r5.xyzw, l(1, 0, 0, 0), t75.xyzw
ieq r7.x, r5.y, l(1.000000)

mov r2.zw, l(0,0,0,0)
ld_indexable(texture2d)(float,float,float,float) r1.w, r2.xyww, t0.yzwx

if_nz r7.x
mul r1.w, r1.w, l(2.00)
endif
//FIX by masterotaku and Losti - end//
ld_aoffimmi_indexable(1,0,0)(texture2d)(float,float,float,float) r3.x, r2.xyww, t0.xyzw
ld_aoffimmi_indexable(0,1,0)(texture2d)(float,float,float,float) r3.y, r2.xyww, t0.yxzw
ld_aoffimmi_indexable(1,1,0)(texture2d)(float,float,float,float) r2.z, r2.xyzw, t0.yzxw
if_z r1.z
  ishl r2.w, vThreadIDInGroup.x, l(3)
  min r3.z, r1.w, r3.x
  min r3.w, r2.z, r3.y
  min r4.x, r3.w, r3.z
  ushr r3.z, vThreadIDInGroup.x, l(3)
  ge r3.w, r1.w, l(1.000000)
  if_nz r3.w
    store_structured g3.x, r3.z, l(0), l(1.000000)
    mov r3.w, l(0)
  else
    mov r3.w, r1.w
  endif
  ge r4.z, r3.x, l(1.000000)
  if_nz r4.z
    store_structured g3.x, r3.z, l(0), l(1.000000)
    mov r4.z, l(0)
  else
    mov r4.z, r3.x
  endif
  max r3.w, r3.w, r4.z
  ge r4.z, r3.y, l(1.000000)
  if_nz r4.z
    store_structured g3.x, r3.z, l(0), l(1.000000)
    mov r4.z, l(0)
  else
    mov r4.z, r3.y
  endif
  ge r4.w, r2.z, l(1.000000)
  if_nz r4.w
    store_structured g3.x, r3.z, l(0), l(1.000000)
    mov r3.z, l(0)
  else
    mov r3.z, r2.z
  endif
  max r3.z, r3.z, r4.z
  max r4.y, r3.z, r3.w
  store_structured g0.xy, vThreadIDInGroup.y, r2.w, r4.xyxx
  iadd r2.xy, r2.yxyy, l(2, 2, 0, 0)
  uge r2.xy, r2.xyxx, r1.xyxx
  if_nz r2.x
    iadd r1.x, vThreadIDInGroup.y, l(1)
    mov r2.x, r1.x
    loop
      uge r3.z, r2.x, l(8)
      breakc_nz r3.z
      store_structured g0.xy, r2.x, r2.w, r4.xyxx
      iadd r2.x, r2.x, l(1)
    endloop
  endif
  if_nz r2.y
    ld_structured r2.xy, vThreadIDInGroup.y, r2.w, g0.xyxx
    iadd r1.x, vThreadIDInGroup.x, l(1)
    mov r2.w, r1.x
    loop
      uge r3.z, r2.w, l(8)
      breakc_nz r3.z
      ishl r3.z, r2.w, l(3)
      store_structured g0.xy, vThreadIDInGroup.y, r3.z, r2.xyxx
      iadd r2.w, r2.w, l(1)
    endloop
  endif
endif
sync_g_t
if_nz r1.z
  ishl r1.x, vThreadIDInGroup.x, l(3)
  ld_structured r2.xy, l(0), l(0), g0.xyxx
  store_structured g0.xy, vThreadIDInGroup.y, r1.x, r2.xyxx
endif
sync_g_t
and r1.x, vThreadIDInGroup.x, l(7)
ult r2.xyw, r1.xxxx, l(4, 2, 0, 1)
and r0.yzw, r0.yyzw, r2.xxyw
if_nz r0.y
  ishl r1.x, vThreadIDInGroup.x, l(3)
  ld_structured r2.x, vThreadIDInGroup.y, r1.x, g0.xxxx
  iadd r2.y, vThreadIDInGroup.y, l(4)
  ld_structured r2.w, r2.y, r1.x, g0.xxxx
  iadd r3.z, r1.x, l(32)
  ld_structured r3.w, vThreadIDInGroup.y, r3.z, g0.xxxx
  ld_structured r4.x, r2.y, r3.z, g0.xxxx
  min r2.x, r2.w, r2.x
  min r2.w, r3.w, r4.x
  min r4.x, r2.w, r2.x
  imad r2.x, vThreadIDInGroup.x, l(8), l(4)
  ld_structured r2.w, vThreadIDInGroup.y, r2.x, g0.xxxx
  ld_structured r2.x, r2.y, r2.x, g0.xxxx
  iadd r3.z, r3.z, l(4)
  ld_structured r3.w, vThreadIDInGroup.y, r3.z, g0.xxxx
  ld_structured r2.y, r2.y, r3.z, g0.xxxx
  max r2.x, r2.x, r2.w
  max r2.y, r2.y, r3.w
  max r4.y, r2.y, r2.x
  store_structured g0.xy, vThreadIDInGroup.y, r1.x, r4.xyxx
endif
sync_g_t
if_nz r0.z
  ishl r1.x, vThreadIDInGroup.x, l(3)
  ld_structured r2.x, vThreadIDInGroup.y, r1.x, g0.xxxx
  iadd r2.y, vThreadIDInGroup.y, l(2)
  ld_structured r2.w, r2.y, r1.x, g0.xxxx
  iadd r3.z, r1.x, l(16)
  ld_structured r3.w, vThreadIDInGroup.y, r3.z, g0.xxxx
  ld_structured r4.x, r2.y, r3.z, g0.xxxx
  min r2.x, r2.w, r2.x
  min r2.w, r3.w, r4.x
  min r4.x, r2.w, r2.x
  imad r2.x, vThreadIDInGroup.x, l(8), l(4)
  ld_structured r2.w, vThreadIDInGroup.y, r2.x, g0.xxxx
  ld_structured r2.x, r2.y, r2.x, g0.xxxx
  iadd r3.z, r3.z, l(4)
  ld_structured r3.w, vThreadIDInGroup.y, r3.z, g0.xxxx
  ld_structured r2.y, r2.y, r3.z, g0.xxxx
  max r2.x, r2.x, r2.w
  max r2.y, r2.y, r3.w
  max r4.y, r2.y, r2.x
  store_structured g0.xy, vThreadIDInGroup.y, r1.x, r4.xyxx
endif
sync_g_t
if_nz r0.w
  ishl r1.x, vThreadIDInGroup.x, l(3)
  ld_structured r2.x, l(0), r1.x, g0.xxxx
  ld_structured r2.y, l(1), r1.x, g0.xxxx
  iadd r2.w, r1.x, l(8)
  ld_structured r3.z, l(0), r2.w, g0.xxxx
  ld_structured r3.w, l(1), r2.w, g0.xxxx
  min r2.x, r2.y, r2.x
  min r2.y, r3.w, r3.z
  min r2.x, r2.y, r2.x
  imad r3.z, vThreadIDInGroup.x, l(8), l(4)
  ld_structured r3.w, l(0), r3.z, g0.xxxx
  ld_structured r3.z, l(1), r3.z, g0.xxxx
  iadd r2.w, r2.w, l(4)
  ld_structured r4.x, l(0), r2.w, g0.xxxx
  ld_structured r2.w, l(1), r2.w, g0.xxxx
  max r3.z, r3.z, r3.w
  max r2.w, r2.w, r4.x
  max r2.y, r2.w, r3.z
  store_structured g0.xy, vThreadIDInGroup.y, r1.x, r2.xyxx
endif
sync_g_t
if_nz r0.x
  utof r1.x, r1.y
  add r1.x, r1.x, l(15.000000)
  mul r1.x, r1.x, l(0.062500)
  round_z r1.x, r1.x
  ftou r1.x, r1.x
  ishl r2.x, vThreadGroupID.x, l(2)
  ishl r2.y, vThreadIDInGroup.x, l(3)
  ishl r2.w, r2.y, l(3)
  ld_structured r4.x, l(0), r2.w, g0.xxxx
  imad r2.y, r2.y, l(8), l(4)
  ld_structured r2.y, l(0), r2.y, g0.xxxx
  max r4.y, r2.y, r4.x
  iadd r2.y, r2.x, vThreadIDInGroup.x
  ult r2.y, r2.y, r1.x
  if_nz r2.y
    imad r1.x, vThreadGroupID.y, r1.x, r2.x
    iadd r1.x, r1.x, vThreadIDInGroup.x
    ld_structured r2.x, vThreadIDInGroup.x, l(0), g3.xxxx
    max r2.x, r2.x, r4.y
    store_structured u2.x, r1.x, l(0), r2.x
  endif
  store_structured g2.xy, vThreadIDInGroup.x, l(0), r4.xyxx
  add r1.x, r4.y, r4.x
  mul r1.x, r1.x, l(0.500000)
  store_structured g1.x, vThreadIDInGroup.x, l(0), r1.x
endif
sync_g_t
if_z r1.z
  ushr r1.x, vThreadIDInGroup.x, l(3)
  ld_structured r1.z, r1.x, l(0), g1.xxxx
  ld_structured r2.xy, r1.x, l(0), g2.xyxx
  lt r1.x, r1.w, r1.z
  if_nz r1.x
    max r2.x, r1.w, r2.x
  else
    min r2.y, r1.w, r2.y
  endif
  lt r1.x, r3.x, r1.z
  if_nz r1.x
    max r2.x, r2.x, r3.x
  else
    min r2.y, r2.y, r3.x
  endif
  lt r1.x, r3.y, r1.z
  if_nz r1.x
    max r2.x, r2.x, r3.y
  else
    min r2.y, r2.y, r3.y
  endif
  lt r1.x, r2.z, r1.z
  if_nz r1.x
    max r2.x, r2.x, r2.z
  else
    min r2.y, r2.y, r2.z
  endif
  ishl r1.x, vThreadIDInGroup.x, l(3)
  store_structured g0.xy, vThreadIDInGroup.y, r1.x, r2.xyxx
endif
sync_g_t
if_nz r0.y
  ishl r0.y, vThreadIDInGroup.x, l(3)
  ld_structured r1.x, vThreadIDInGroup.y, r0.y, g0.xxxx
  iadd r1.z, vThreadIDInGroup.y, l(4)
  ld_structured r1.w, r1.z, r0.y, g0.xxxx
  iadd r2.x, r0.y, l(32)
  ld_structured r2.y, vThreadIDInGroup.y, r2.x, g0.xxxx
  ld_structured r2.z, r1.z, r2.x, g0.xxxx
  max r1.x, r1.w, r1.x
  max r1.w, r2.z, r2.y
  max r3.x, r1.w, r1.x
  imad r1.x, vThreadIDInGroup.x, l(8), l(4)
  ld_structured r1.w, vThreadIDInGroup.y, r1.x, g0.xxxx
  ld_structured r1.x, r1.z, r1.x, g0.xxxx
  iadd r2.x, r2.x, l(4)
  ld_structured r2.y, vThreadIDInGroup.y, r2.x, g0.xxxx
  ld_structured r1.z, r1.z, r2.x, g0.xxxx
  min r1.x, r1.x, r1.w
  min r1.z, r1.z, r2.y
  min r3.y, r1.z, r1.x
  store_structured g0.xy, vThreadIDInGroup.y, r0.y, r3.xyxx
endif
sync_g_t
if_nz r0.z
  ishl r0.y, vThreadIDInGroup.x, l(3)
  ld_structured r0.z, vThreadIDInGroup.y, r0.y, g0.xxxx
  iadd r1.x, vThreadIDInGroup.y, l(2)
  ld_structured r1.z, r1.x, r0.y, g0.xxxx
  iadd r1.w, r0.y, l(16)
  ld_structured r2.x, vThreadIDInGroup.y, r1.w, g0.xxxx
  ld_structured r2.y, r1.x, r1.w, g0.xxxx
  max r0.z, r0.z, r1.z
  max r1.z, r2.y, r2.x
  max r2.x, r0.z, r1.z
  imad r0.z, vThreadIDInGroup.x, l(8), l(4)
  ld_structured r1.z, vThreadIDInGroup.y, r0.z, g0.xxxx
  ld_structured r0.z, r1.x, r0.z, g0.xxxx
  iadd r1.w, r1.w, l(4)
  ld_structured r2.z, vThreadIDInGroup.y, r1.w, g0.xxxx
  ld_structured r1.x, r1.x, r1.w, g0.xxxx
  min r0.z, r0.z, r1.z
  min r1.x, r1.x, r2.z
  min r2.y, r0.z, r1.x
  store_structured g0.xy, vThreadIDInGroup.y, r0.y, r2.xyxx
endif
sync_g_t
if_nz r0.w
  ishl r0.y, vThreadIDInGroup.x, l(3)
  ld_structured r0.z, l(0), r0.y, g0.xxxx
  ld_structured r0.w, l(1), r0.y, g0.xxxx
  iadd r1.x, r0.y, l(8)
  ld_structured r1.z, l(0), r1.x, g0.xxxx
  ld_structured r1.w, l(1), r1.x, g0.xxxx
  max r0.z, r0.w, r0.z
  max r0.w, r1.w, r1.z
  max r2.x, r0.w, r0.z
  imad r0.z, vThreadIDInGroup.x, l(8), l(4)
  ld_structured r0.w, l(0), r0.z, g0.xxxx
  ld_structured r0.z, l(1), r0.z, g0.xxxx
  iadd r1.x, r1.x, l(4)
  ld_structured r1.z, l(0), r1.x, g0.xxxx
  ld_structured r1.x, l(1), r1.x, g0.xxxx
  min r0.z, r0.z, r0.w
  min r0.w, r1.x, r1.z
  min r2.y, r0.w, r0.z
  store_structured g0.xy, vThreadIDInGroup.y, r0.y, r2.xyxx
endif
sync_g_t
if_nz r0.x
  utof r0.x, r1.y
  add r0.x, r0.x, l(15.000000)
  mul r0.x, r0.x, l(0.062500)
  round_z r0.x, r0.x
  ftou r0.x, r0.x
  ishl r0.y, vThreadGroupID.x, l(2)
  iadd r0.z, r0.y, vThreadIDInGroup.x
  ult r0.z, r0.z, r0.x
  if_nz r0.z
    imad r0.x, vThreadGroupID.y, r0.x, r0.y
    iadd r0.x, r0.x, vThreadIDInGroup.x
    ishl r0.y, vThreadIDInGroup.x, l(6)
    ld_structured r1.zw, l(0), r0.y, g0.xxxy
    ld_structured r1.xy, vThreadIDInGroup.x, l(0), g2.xyxx
    store_structured u0.xy, r0.x, l(0), r1.xzxx
    store_structured u1.xy, r0.x, l(0), r1.wyww
  endif
endif
ret
// Approximately 309 instruction slots used