// Occlusion shadows in intro/end cutscene of versus match (e.g. car level)
//
// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
//
//   using 3Dmigoto v1.3.15 on Mon Mar 11 09:54:16 2019
//
//
// Buffer Definitions:
//
// cbuffer $Globals
// {
//
//   row_major float4x4 mV2W;           // Offset:    0 Size:    64
//   row_major float4x4 mP2W;           // Offset:   64 Size:    64
//   float4 vObjOccTraceParam;          // Offset:  128 Size:    16
//   float4 vObjOccTraceScale;          // Offset:  144 Size:    16
//   float4 vObjOccNum;                 // Offset:  160 Size:    16
//   float4 vObjOccAABB[2];             // Offset:  176 Size:    32
//   float4 vObjOccClstZPrm;            // Offset:  208 Size:    16
//   int nObjOccClstPtch[2];            // Offset:  224 Size:    20
//   float fObjOccClstScale;            // Offset:  244 Size:     4
//   float4 vObjOccTraceAngleParam;     // Offset:  256 Size:    16
//   float4 vEye;                       // Offset:  272 Size:    16
//   float4 vTargetSize;                // Offset:  288 Size:    16
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// __smpsDepth                       sampler      NA          NA    8        1
// __smpsGBuf0                       sampler      NA          NA    9        1
// sDepth                            texture  float4          2d    8        1
// sGBuf0                            texture  float4          2d    9        1
// tOccluderList                     texture  float4         buf   16        1
// tOccluderInstIndices              texture    uint         buf   17        1
// uOutTex2                              UAV  float2          2d    0        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[19], immediateIndexed
dcl_constantbuffer cb13[4], immediateIndexed
dcl_sampler s8, mode_default
dcl_sampler s9, mode_default
dcl_resource_texture2d (float,float,float,float) t8
dcl_resource_texture2d (float,float,float,float) t9
dcl_resource_buffer (float,float,float,float) t16
dcl_resource_buffer (uint,uint,uint,uint) t17
dcl_uav_typed_texture2d (float,float,float,float) u0
dcl_input vThreadGroupID.xy
dcl_input vThreadIDInGroup.xy
dcl_temps 20
dcl_thread_group 8, 8, 1

dcl_resource_texture2d (float,float,float,float) t121
ld_indexable(texture2d)(float,float,float,float) r17.xyzw, l(0, 0, 0, 0), t121.xyzw

imad r0.xyzw, vThreadGroupID.xyyy, l(8, 8, 8, 8), vThreadIDInGroup.xyyy
utof r1.xy, r0.xwxx
ge r1.zw, r1.xxxy, cb0[18].xxxy
or r1.z, r1.w, r1.z
if_nz r1.z
  ret
endif
add r1.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
div r1.zw, r1.xxxy, cb0[18].xxxy
mad r1.zw, r1.zzzw, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000)
mad r2.xy, r1.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
sample_l_indexable(texture2d)(float,float,float,float) r2.z, r2.xyxx, t8.yzxw, s8, l(0.000000)

//mP2W
mul r3.xyzw, -r1.wwww, cb0[5].xyzw
mad r3.xyzw, r1.zzzz, cb0[4].xyzw, r3.xyzw
mad r3.xyzw, r2.zzzz, cb0[6].xyzw, r3.xyzw
add r3.xyzw, r3.xyzw, cb0[7].xyzw
div r3.xyz, r3.xyzx, r3.wwww

if_nz cb13[0].x
	// mW2P
	mul r18.xyzw, r3.xxxx, cb13[0].xyzw
	mad r18.xyzw, r3.yyyy, cb13[1].xyzw, r18.xyzw
	mad r18.xyzw, r3.zzzz, cb13[2].xyzw, r18.xyzw
	add r18.xyzw, r18.xyzw, cb13[3].xyzw

	// Stereo correct
	add r17.w, r18.w, -r17.y
	mad r18.x, -r17.w, r17.x, r18.x

	// mP2W
	mul r19.xyzw, r18.xxxx, cb0[4].xyzw
	mad r19.xyzw, r18.yyyy, cb0[5].xyzw, r19.xyzw
	mad r19.xyzw, r18.zzzz, cb0[6].xyzw, r19.xyzw
	mad r19.xyzw, r18.wwww, cb0[7].xyzw, r19.xyzw
	div r3.xyz, r19.xyzw, r19.wwww
endif

max r1.z, cb0[8].y, cb0[8].x
add r4.xyz, -r1.zzzz, cb0[11].xyzx
add r4.xyz, r3.xyzx, -r4.xyzx
add r5.xyz, r1.zzzz, cb0[12].xyzx
add r5.xyz, r3.xyzx, -r5.xyzx
ge r4.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r4.xyzx
or r1.z, r4.y, r4.x
or r1.z, r4.z, r1.z
ge r4.xyz, r5.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
or r1.w, r4.y, r4.x
or r1.w, r4.z, r1.w
or r1.z, r1.w, r1.z
if_z r1.z
  sample_l_indexable(texture2d)(float,float,float,float) r2.xyw, r2.xyxx, t9.xyzw, s9, l(0.000000)
  mad r1.zw, r2.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000)
  add r4.xyz, -|r1.zwzz|, l(1.000000, 1.000000, 1.000000, 0.000000)
  add r5.z, -|r1.w|, r4.x
  ge r2.x, r5.z, l(0.000000)
  ge r4.xw, r1.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000)
  movc r4.xw, r4.xxxw, l(1.000000,0,0,1.000000), l(-1.000000,0,0,-1.000000)
  mul r4.xy, r4.xwxx, r4.yzyy
  movc r5.xy, r2.xxxx, r1.zwzz, r4.xyxx
  dp3 r1.z, r5.xyzx, r5.xyzx
  rsq r1.z, r1.z
  mul r4.xyz, r1.zzzz, r5.xyzx

// mV2W
  mul r5.xyz, r4.yyyy, cb0[1].xyzx
  mad r4.xyw, r4.xxxx, cb0[0].xyxz, r5.xyxz
  mad r4.xyz, r4.zzzz, cb0[2].xyzx, r4.xywx

  mul r1.z, r2.w, l(65535.000000)
  ftou r1.z, r1.z
  ushr r1.z, r1.z, l(8)
  utof r1.z, r1.z
  mul r1.z, r1.z, l(0.00784313772)
  mul r1.z, r1.z, r1.z
  min r1.z, r1.z, l(1.000000)
  add r1.w, -cb0[16].x, l(45.000000)
  mad r1.z, r1.z, r1.w, cb0[16].x
  mul r1.z, r1.z, l(0.0174532924)
  add r2.xyw, r3.xyxz, -cb0[17].xyxz
  dp3 r1.w, r2.xywx, r4.xyzx
  add r1.w, r1.w, r1.w
  mad r2.xyw, r4.xyxz, -r1.wwww, r2.xyxw
  dp3 r1.w, r2.xywx, r2.xywx
  rsq r1.w, r1.w
  mul r2.xyw, r1.wwww, r2.xyxw
  mul r1.w, r4.y, -r4.z
  mul r1.w, -r4.x, r1.w
  eq r1.w, r1.w, l(0.000000)
  eq r5.xy, r4.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
  movc r6.xyzw, r5.yyyy, l(1.000000,0,0,1.000000), l(0,1.000000,0,0)
  movc r5.xyzw, r5.xxxx, l(0,0,1.000000,0), r6.xyzw
  mul r6.xyzw, r4.zyxz, l(-1.000000, 1.000000, -1.000000, -1.000000)
  mul r7.xyzw, r4.zxyz, r6.xyzw
  mad r6.xyzw, r6.zwyz, r4.xyzx, -r7.xyzw
  dp3 r3.w, r6.yzwy, r6.yzwy
  rsq r3.w, r3.w
  mul r6.xyzw, r3.wwww, r6.xyzw
  movc r5.xyzw, r1.wwww, r5.xyzw, r6.xyzw
  mad r5.xyzw, r5.xyzw, l(0.577350199, 0.577350199, 0.577350199, 0.577350199), r4.yzxy
  mul r6.xyz, r5.zwyz, l(0.866025507, 0.866025507, 0.866025507, 0.000000)
  dp3 r1.w, r4.xyzx, r6.xyzx
  mul r7.xyzw, r1.wwww, l(1.49999964, 1.49999964, 1.49999964, 1.50000072)
  mul r8.xyzw, r4.zxyz, r6.yzxy
  mad r8.xyzw, r4.yzxy, r6.zxyz, -r8.xyzw
  mul r9.xyzw, r4.xyzx, r7.xyzw
  mad r1.w, r5.z, l(-0.433012456), r9.x
  mad r10.x, r8.x, l(0.866025627), r1.w
  mad r7.xyz, r5.xyzx, l(-0.433012456, -0.433012456, -0.433013380, 0.000000), r9.yzwy
  mad r10.yzw, r8.yyzw, l(0.000000, 0.866025627, 0.866025627, -0.866025), r7.xxyz
  mul r5.xz, r4.yyzy, r7.wwww
  mad r1.w, r5.w, l(-0.433013380), r5.x
  mad r7.x, r8.y, l(-0.866025), r1.w
  mad r1.w, r5.y, l(-0.433013380), r5.z
  mad r7.y, r8.z, l(-0.866025), r1.w
  sincos r5.x, r8.x, r1.z
  div r1.z, r5.x, r8.x
  mad r1.w, r2.z, cb0[13].x, cb0[13].y
  log r1.w, r1.w
  mad r1.w, r1.w, cb0[13].z, cb0[13].w
  max r1.w, r1.w, l(0.000000)
  ftou r1.w, r1.w
  ult r2.z, r1.w, l(16)
  mul r3.w, cb0[15].y, l(0.015625)
  mul r1.xy, r1.xyxx, r3.wwww
  ftou r1.xy, r1.xyxx
  imul null, r1.y, r1.y, cb0[14].x
  imad r1.y, cb0[15].x, r1.w, r1.y
  iadd r1.x, r1.x, r1.y
  imul null, r1.x, r1.x, l(3)
  movc r1.x, r2.z, r1.x, l(-3)
  iadd r1.yw, r1.xxxx, l(0, 2, 0, 1)
  ld_indexable(buffer)(uint,uint,uint,uint) r1.y, r1.yyyy, t17.yxzw
  ld_indexable(buffer)(uint,uint,uint,uint) r1.x, r1.xxxx, t17.xyzw
  ld_indexable(buffer)(uint,uint,uint,uint) r1.w, r1.wwww, t17.yzwx
  ishl r1.w, r1.w, l(16)
  or r1.x, r1.w, r1.x
  ftou r1.w, cb0[10].x
  mul r5.yz, cb0[8].xxyx, cb0[8].xxyx
  lt r8.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[9].xxyx
  mul r9.xyz, r2.xywx, cb0[8].xxxx
  mul r2.z, r8.x, r8.x
  mul r3.w, r5.x, r5.x
  mov r11.yw, l(0,1.000000,0,0)
  mov r7.zw, r10.wwww
  mov r8.xw, l(0,0,0,0)
  mov r4.w, l(0)
  loop
    uge r5.w, r4.w, r1.y
    breakc_nz r5.w
    iadd r5.w, r1.x, r4.w
    ld_indexable(buffer)(uint,uint,uint,uint) r5.w, r5.wwww, t17.yzwx
    utof r6.w, r5.w
    lt r6.w, r6.w, cb0[10].x
    if_nz r6.w
      ld_indexable(buffer)(float,float,float,float) r12.xyzw, r5.wwww, t16.xyzw
      add r13.xyz, -r3.xyzx, r12.xyzx
      dp3 r6.w, r4.xyzx, r13.xyzx
      lt r6.w, l(0.000000), r6.w
      if_nz r6.w
        dp3 r6.w, r13.xyzx, r13.xyzx
        mul r9.w, r12.w, r12.w
        mad r10.w, -r12.w, r12.w, r6.w
        lt r14.xy, r10.wwww, r5.yzyy
        and r14.xy, r8.yzyy, r14.xyxx
        if_nz r14.x
          div r10.w, r12.w, r5.x
          mad r14.xzw, -r10.wwww, r2.xxyw, r3.xxyz
          add r14.xzw, r12.xxyz, -r14.xxzw
          dp3 r10.w, r14.xzwx, r14.xzwx
          dp3 r13.w, r2.xywx, r14.xzwx
          lt r14.x, l(0.000000), r13.w
          mul r13.w, r13.w, r13.w
          mul r10.w, r2.z, r10.w
          ge r10.w, r13.w, r10.w
          and r10.w, r10.w, r14.x
          dp3 r13.w, r2.xywx, r13.xyzx
          lt r14.x, l(0.000000), -r13.w
          mul r14.z, r13.w, r13.w
          mul r14.w, r3.w, r6.w
          ge r14.z, r14.z, r14.w
          and r14.x, r14.z, r14.x
          ge r9.w, r9.w, r6.w
          movc r9.w, r14.x, r9.w, l(-1)
          and r9.w, r9.w, r10.w
          sqrt r6.w, r6.w
          div r6.w, r13.w, r6.w
          mad r14.xzw, r2.xxyw, r13.wwww, r3.xxyz
          mul r10.w, r1.z, r13.w
          add r12.xyz, -r12.xyzx, r14.xzwx
          dp3 r12.x, r12.xyzx, r12.xyzx
          sqrt r12.x, r12.x
          mad r12.y, r13.w, r1.z, r12.w
          ge r12.z, r12.y, r12.x
          add r12.x, -r12.x, r12.y
          mul r12.x, r12.x, l(0.500000)
          min r12.y, r10.w, r12.w
          min r12.x, r12.y, r12.x
          div r10.w, r12.x, r10.w
          mul r10.w, r10.w, r10.w
          and r10.w, r10.w, r12.z
          mul r6.w, r6.w, r10.w
          and r6.w, r6.w, r9.w
        else
          mov r6.w, l(0)
        endif
        div r12.xyz, r13.xyzx, r12.wwww
        dp3 r9.w, r12.xyzx, r12.xyzx
        mul r10.w, r9.w, r9.w
        mul r9.w, r9.w, r10.w
        sqrt r9.w, r9.w
        dp3 r10.w, r4.xyzx, r12.xyzx
        div r10.w, r10.w, r9.w
        dp3_sat r12.w, r6.xyzx, r12.xyzx
        div r12.w, r12.w, r9.w
        add r10.w, r10.w, r12.w
        dp3_sat r12.w, r10.xyzx, r12.xyzx
        div r12.w, r12.w, r9.w
        add r10.w, r10.w, r12.w
        dp3_sat r12.x, r7.zxyz, r12.xyzx
        div r9.w, r12.x, r9.w
        add r9.w, r9.w, r10.w
        mul r9.w, r9.w, l(0.250000)
        and r9.w, r9.w, r14.y
      else
        mov r6.w, l(0)
        mov r9.w, l(0)
      endif
      max r8.x, r6.w, r8.x
      add r8.w, r8.w, r9.w
    else
      iadd r5.w, -r1.w, r5.w
      ishl r5.w, r5.w, l(1)
      iadd r5.w, r1.w, r5.w
      ld_indexable(buffer)(float,float,float,float) r12.xyzw, r5.wwww, t16.xyzw
      iadd r5.w, r5.w, l(1)
      ld_indexable(buffer)(float,float,float,float) r13.xyzw, r5.wwww, t16.xyzw
      mad r14.xyz, r4.xyzx, r12.wwww, r12.xyzx
      add r14.xyz, -r3.xyzx, r14.xyzx
      dp3 r5.w, r4.xyzx, r14.xyzx
      mad r14.xyz, r4.xyzx, r13.wwww, r13.xyzx
      add r14.xyz, -r3.xyzx, r14.xyzx
      dp3 r6.w, r4.xyzx, r14.xyzx
      max r5.w, r5.w, r6.w
      ge r5.w, r5.w, l(0.000000)
      if_nz r5.w
        add r14.xyz, -r12.xyzx, r13.xyzx
        add r15.xyz, r3.xyzx, -r12.xyzx
        add r13.xyz, r3.xyzx, -r13.xyzx
        dp3 r5.w, r15.xyzx, r14.xyzx
        dp3 r6.w, r15.xyzx, r15.xyzx
        lt r9.w, l(0.000000), r5.w
        dp3 r10.w, r14.xyzx, r14.xyzx
        ge r14.w, r5.w, r10.w
        dp3 r13.x, r13.xyzx, r13.xyzx
        mul r13.y, r5.w, r5.w
        div r13.y, r13.y, r10.w
        add r13.y, r6.w, -r13.y
        movc r13.x, r14.w, r13.x, r13.y
        movc r6.w, r9.w, r13.x, r6.w
        lt r13.xy, r6.wwww, r5.yzyy
        and r13.xy, r8.yzyy, r13.xyxx
        if_nz r13.x
          dp3 r6.w, r9.xyzx, r14.xyzx
          dp3 r9.w, r9.xyzx, r15.xyzx
          mul r13.x, r6.w, r6.w
          mad r13.x, r5.y, r10.w, -r13.x
          ne r13.z, r13.x, l(0.000000)
          mul r14.w, r10.w, r9.w
          mad r14.w, r6.w, r5.w, -r14.w
          div_sat r13.x, r14.w, r13.x
          and r16.x, r13.x, r13.z
          mad r13.x, r6.w, r16.x, r5.w
          lt r13.z, r13.x, l(0.000000)
          div_sat r11.z, -r9.w, r5.y
          lt r14.w, r10.w, r13.x
          add r6.w, r6.w, -r9.w
          div_sat r11.x, r6.w, r5.y
          div r16.y, r13.x, r10.w
          movc r16.xy, r14.wwww, r11.xyxx, r16.xyxx
          movc r11.xz, r13.zzzz, r11.zzwz, r16.xxyx
          lt r6.w, l(0.000000), r11.x
          mul r9.w, r11.x, cb0[8].x
          mul r11.x, r1.z, r9.w
          mad r16.xyz, r9.wwww, r2.xywx, r3.xyzx
          mad r12.xyz, r11.zzzz, r14.xyzx, r12.xyzx
          add r13.x, -r12.w, r13.w
          mad r11.z, r11.z, r13.x, r12.w
          add r12.xyz, -r12.xyzx, r16.xyzx
          dp3 r12.x, r12.xyzx, r12.xyzx
          sqrt r12.x, r12.x
          mad r9.w, r9.w, r1.z, r11.z
          ge r12.y, r9.w, r12.x
          add r9.w, -r12.x, r9.w
          mul r9.w, r9.w, l(0.500000)
          min r11.z, r11.x, r11.z
          min r9.w, r9.w, r11.z
          div r9.w, r9.w, r11.x
          mul r9.w, r9.w, r9.w
          and r9.w, r9.w, r12.y
          and r6.w, r6.w, r9.w
        else
          mov r6.w, l(0)
        endif
        if_nz r13.y
          div_sat r5.w, r5.w, r10.w
          mad r12.xyz, -r5.wwww, r14.xyzx, r15.xyzx
          dp3 r9.w, r12.xyzx, r12.xyzx
          sqrt r9.w, r9.w
          add r10.w, -r12.w, r13.w
          mad r5.w, r5.w, r10.w, r12.w
          div_sat r5.w, r5.w, r9.w
          dp3 r10.w, -r12.xyzx, r4.xyzx
          max r10.w, r10.w, l(0.000000)
          ne r11.x, r10.w, l(0.000000)
          mul r5.w, r5.w, r5.w
          mul r10.w, r10.w, r5.w
          div r10.w, r10.w, r9.w
          add r10.w, -r10.w, l(1.000000)
          mul r11.z, r10.w, r10.w
          mul r10.w, r10.w, r11.z
          sqrt r10.w, r10.w
          add r10.w, -r10.w, l(1.000000)
          and r10.w, r10.w, r11.x
          dp3 r11.x, -r12.xyzx, r6.xyzx
          max r11.x, r11.x, l(0.000000)
          ne r11.z, r11.x, l(0.000000)
          mul r11.x, r5.w, r11.x
          div r11.x, r11.x, r9.w
          add r11.x, -r11.x, l(1.000000)
          mul r12.w, r11.x, r11.x
          mul r11.x, r11.x, r12.w
          sqrt r11.x, r11.x
          add r11.x, -r11.x, l(1.000000)
          and r11.x, r11.x, r11.z
          add r10.w, r10.w, r11.x
          dp3 r11.x, -r12.xyzx, r10.xyzx
          max r11.x, r11.x, l(0.000000)
          ne r11.z, r11.x, l(0.000000)
          mul r11.x, r5.w, r11.x
          div r11.x, r11.x, r9.w
          add r11.x, -r11.x, l(1.000000)
          mul r12.w, r11.x, r11.x
          mul r11.x, r11.x, r12.w
          sqrt r11.x, r11.x
          add r11.x, -r11.x, l(1.000000)
          and r11.x, r11.x, r11.z
          add r10.w, r10.w, r11.x
          dp3 r11.x, -r12.yzxy, r7.xywx
          max r11.x, r11.x, l(0.000000)
          ne r11.z, r11.x, l(0.000000)
          mul r5.w, r5.w, r11.x
          div r5.w, r5.w, r9.w
          add r5.w, -r5.w, l(1.000000)
          mul r9.w, r5.w, r5.w
          mul r5.w, r5.w, r9.w
          sqrt r5.w, r5.w
          add r5.w, -r5.w, l(1.000000)
          and r5.w, r5.w, r11.z
          add r5.w, r5.w, r10.w
          mul r5.w, r5.w, l(0.250000)
        else
          mov r5.w, l(0)
        endif
      else
        mov r6.w, l(0)
        mov r5.w, l(0)
      endif
      max r8.x, r6.w, r8.x
      add r8.w, r5.w, r8.w
    endif
    iadd r4.w, r4.w, l(1)
  endloop
  mul r1.xy, r8.xwxx, cb0[9].xyxx
else
  mov r1.xy, l(0,0,0,0)
endif
mov_sat r1.xyzw, r1.xyxx
store_uav_typed u0.xyzw, r0.xyzw, r1.xyzw
ret
// Approximately 356 instruction slots used
