//Culling CS 1.
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
//
//   using 3Dmigoto v1.3.16 on Thu Mar 24 18:25:12 2022
//
//
// Note: shader requires additional functionality:
//       64 UAV slots
//
//
// Buffer Definitions:
//
// cbuffer ConstBuf__passData
// {
//
//   struct CullingData
//   {
//
//       float4x4 cViewProjectionMatrix;// Index:    0
//       float4x4 cViewProjectionMatrixNextFrame;// Index:    4
//
//       struct CullingMatrixWrapper
//       {
//
//           float4x4 mat;              // Index:    8
//
//       } cShadowVPMatrices[32];       // Index:    8
//       float4 cShadowmapUVScaleBias[32];// Index:  136
//       uint4 cPlaneStartsCountsBitPositions[32];// Index:  168
//       float4 cCullingPlanes[512];    // Index:  200
//       float4 cDepthBufferSizeWidth;  // Index:  712
//       float4 cShadowDepthBufferSizeWidth;// Index:  713
//       uint cCascadeMask;             // Index:  714
//       uint cFrustumsCount;           // Index:  714.y
//       uint cCullByDepthBuffer;       // Index:  714.z
//       uint cCullShadowsByDepthBuffer;// Index:  714.w
//       uint cCullShadowsIntersectingOptim;// Index:  715
//       uint cForceNoCulling;          // Index:  715.y
//       uint cCullByMotionProjection;  // Index:  715.z
//       uint cNumToCull;               // Index:  715.w
//       uint cNumSpheresToCull;        // Index:  716
//       uint cNumFramesDelay;          // Index:  716.y
//
//   } resourceTables__passData;        // Index:    0-716.y          Components:  2866
                                        // Textures:  t0-t5
//
// }
//
// Resource bind info for resourceTables__passData.bboxesToProcess
// {
//
//   struct OOBBoxUnpacked
//   {
//
//       float3 HalfExtentX;            // Index:    0
//       float3 HalfExtentY;            // Index:    0.w
//       float3 HalfExtentZ;            // Index:    1.z
//       float3 Center;                 // Index:    2.y
//
//   } $Element;                        // Index:    0 1 2            Components:    12
//
// }
//
// Resource bind info for resourceTables__passData.sphereVelocities
// {
//
//   float4 $Element;                   // Index:    0.xyzw           Components:     4
//
// }
//
// Resource bind info for resourceTables__passData.visibilityBufferBoxes
// {
//
//   uint $Element;                     // Index:    0.x              Components:     1
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// resourceTables__passData__smpPointClampTrunc    sampler      NA          NA    0        1
// resourceTables__passData.texDepth    texture   float          2d    0        1
// resourceTables__passData.texDepthShadow    texture   float          2d    1        1
// resourceTables__passData.bboxesToProcess    texture  struct         r/o    3        1
// resourceTables__passData.sphereVelocities    texture  struct         r/o    5        1
// resourceTables__passData.visibilityBufferBoxes        UAV  struct         r/w    8        1
// ConstBuf__passData                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[717], dynamicIndexed
dcl_sampler s0, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_structured t3, 48
dcl_resource_structured t5, 16
dcl_uav_structured u8, 4
dcl_input vThreadID.x
dcl_temps 50
dcl_thread_group 64, 1, 1
dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture2d)(float,float,float,float) r40.xyzw, l(0, 0, 0, 0), t125.xyzw
ld_structured_indexable(structured_buffer, stride=48)(mixed,mixed,mixed,mixed) r0.xyzw, vThreadID.x, l(0), t3.xyzw
ld_structured_indexable(structured_buffer, stride=48)(mixed,mixed,mixed,mixed) r1.xyzw, vThreadID.x, l(16), t3.zwxy
ld_structured_indexable(structured_buffer, stride=48)(mixed,mixed,mixed,mixed) r2.xyzw, vThreadID.x, l(32), t3.xyzw
ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.xyz, vThreadID.x, l(0), t5.xyzx
movc r3.xyz, cb0[715].zzzz, r3.xyzx, l(0,0,0,0)
mov r4.xyz, r2.yzwy
mov r4.w, l(1.000000)
mov r5.x, r0.w
mov r5.yz, r1.zzwz
mov r6.xy, r1.xyxx
mov r6.z, r2.x
mov r7.xy, l(0,0,0,0)
mov r3.w, l(0)
loop
  uge r5.w, r3.w, cb0[714].y
  breakc_nz r5.w
  mov r7.zw, l(0,0,1,0)
  mov r5.w, l(0)
  loop
    uge r6.w, r5.w, cb0[r3.w + 168].y
    breakc_nz r6.w
    iadd r6.w, r5.w, cb0[r3.w + 168].x
    dp4 r8.x, cb0[r6.w + 200].xyzw, r4.xyzw
    dp3 r8.y, cb0[r6.w + 200].xyzx, r0.xyzx
    dp3 r8.z, cb0[r6.w + 200].xyzx, r5.xyzx
    dp3 r6.w, cb0[r6.w + 200].xyzx, r6.xyzx
    add r8.y, |r8.z|, |r8.y|
    add r6.w, |r6.w|, r8.y
    lt r8.y, r8.x, -r6.w
    lt r6.w, r8.x, r6.w
    movc r7.z, r8.y, l(0), r7.z
    ult r8.x, r5.w, l(6)
    and r6.w, r6.w, r8.x
    movc r7.w, r6.w, l(1), r7.w
    iadd r5.w, r5.w, l(1)
  endloop
  ishl r8.xy, r7.zwzz, cb0[r3.w + 168].zzzz
  or r8.xy, r7.xyxx, r8.xyxx
  ieq r5.w, l(0), cb0[r3.w + 168].z
  ine r6.w, r7.z, l(0)
  and r5.w, r5.w, r6.w
  or r6.w, r8.x, l(6)
  ieq r8.z, r7.w, l(0)
  and r8.z, r8.z, l(8)
  or r6.w, r6.w, r8.z
  movc r7.x, r5.w, r6.w, r8.x
  ishl r5.w, l(1), cb0[r3.w + 168].z
  and r5.w, r5.w, cb0[714].x
  movc r7.y, r5.w, r8.y, r7.y
  iadd r3.w, r3.w, l(1)
endloop
not r3.w, r7.y
and r3.w, r7.x, r3.w
and r3.w, r3.w, cb0[714].x
ishl r4.xyz, r3.wwww, l(1, 2, 3, 0)
not r4.xyz, r4.xyzx
and r3.w, r4.y, r4.x
and r3.w, r4.z, r3.w
not r4.x, cb0[714].x
or r3.w, r3.w, r4.x
and r3.w, r3.w, r7.x
movc r3.w, cb0[715].x, r3.w, r7.x
ine r4.x, l(0), cb0[714].z
and r4.y, r3.w, l(1)
ieq r4.y, r4.y, l(1)
and r4.x, r4.y, r4.x
if_nz r4.x
  add r4.xyz, r0.xyzx, r2.yzwy
  mov r5.x, r0.w
  mov r5.yz, r1.zzwz
  add r6.xyz, r4.xyzx, r5.xyzx
  mov r7.xy, r1.xyxx
  mov r7.z, r2.x
  add r8.xyz, r6.xyzx, r7.xyzx
  add r9.xyz, r3.xyzx, r8.xyzx
  mov r9.w, l(1.000000)
  
  add r40.w, r9.z, r40.y
  mul r40.w, r40.w, l(0.0)
  mad r9.x, r40.x, r40.w, r9.x
  
  dp4 r10.x, r9.xyzw, cb0[0].xyzw
  dp4 r10.y, r9.xyzw, cb0[1].xyzw
  dp4 r10.z, r9.xyzw, cb0[2].xyzw
  dp4 r4.w, r9.xyzw, cb0[3].xyzw
  lt r5.w, r4.w, r10.z
  and r5.w, r5.w, l(1)
  div r9.xyz, r10.xyzx, r4.wwww
  mov r8.w, l(1.000000)
  
  add r40.w, r8.z, r40.y
  mul r40.w, r40.w, l(0.0)
  //mad r8.x, r40.x, r40.w, r8.x
  
  dp4 r10.x, r8.xyzw, cb0[4].xyzw
  dp4 r10.y, r8.xyzw, cb0[5].xyzw
  dp4 r10.z, r8.xyzw, cb0[6].xyzw
  dp4 r4.w, r8.xyzw, cb0[7].xyzw
  
  add r40.w, r4.w, -r40.y
  mad r10.x, r40.x, r40.w, r10.x
  
  div r8.xyz, r10.xyzx, r4.wwww
  add r8.xyz, r8.xyzx, r9.xyzx
  mul r10.xyz, r8.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
  mad r8.xyz, -r8.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r9.xyzx
  mad r9.xy, -|r8.xyxx|, l(1.500000, 1.500000, 0.000000, 0.000000), r10.xyxx
  mad r8.xyz, |r8.xyzx|, l(1.500000, 1.500000, 1.500000, 0.000000), r10.xyzx
  add r10.xyz, -r0.xyzx, r2.yzwy
  add r11.xyz, r5.xyzx, r10.xyzx
  add r12.xyz, r7.xyzx, r11.xyzx
  add r13.xyz, r3.xyzx, r12.xyzx
  mov r13.w, l(1.000000)
  
  add r40.w, r13.z, r40.y
  mul r40.w, r40.w, l(0.0)
  mad r13.x, r40.x, r40.w, r13.x
  
  dp4 r14.x, r13.xyzw, cb0[0].xyzw
  dp4 r14.y, r13.xyzw, cb0[1].xyzw
  dp4 r14.z, r13.xyzw, cb0[2].xyzw
  dp4 r4.w, r13.xyzw, cb0[3].xyzw
  movc r5.w, r5.w, l(1), l(0)
  lt r6.w, r4.w, r14.z
  and r6.w, r6.w, l(1)
  or r5.w, r5.w, r6.w
  div r13.xyz, r14.xyzx, r4.wwww
  mov r12.w, l(1.000000)
  
  add r40.w, r12.z, r40.y
  mul r40.w, r40.w, l(0.0)
  //mad r12.x, r40.x, r40.w, r12.x
  
  dp4 r14.x, r12.xyzw, cb0[4].xyzw
  dp4 r14.y, r12.xyzw, cb0[5].xyzw
  dp4 r14.z, r12.xyzw, cb0[6].xyzw
  dp4 r4.w, r12.xyzw, cb0[7].xyzw
  
  add r40.w, r4.w, -r40.y
  mad r14.x, r40.x, r40.w, r14.x
  
  div r12.xyz, r14.xyzx, r4.wwww
  add r12.xyz, r12.xyzx, r13.xyzx
  mul r14.xyz, r12.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
  mad r12.xyz, -r12.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r13.xyzx
  mad r9.zw, -|r12.xxxy|, l(0.000000, 0.000000, 1.500000, 1.500000), r14.xxxy
  mad r12.xyz, |r12.xyzx|, l(1.500000, 1.500000, 1.500000, 0.000000), r14.xyzx
  add r4.xyz, r4.xyzx, -r5.xyzx
  add r13.xyz, r7.xyzx, r4.xyzx
  add r14.xyz, r3.xyzx, r13.xyzx
  mov r14.w, l(1.000000)
  
  add r40.w, r14.z, r40.y
  mul r40.w, r40.w, l(0.0)
  mad r14.x, r40.x, r40.w, r14.x
  
  dp4 r15.x, r14.xyzw, cb0[0].xyzw
  dp4 r15.y, r14.xyzw, cb0[1].xyzw
  dp4 r15.z, r14.xyzw, cb0[2].xyzw
  dp4 r4.w, r14.xyzw, cb0[3].xyzw
  movc r5.w, r5.w, l(1), l(0)
  lt r6.w, r4.w, r15.z
  and r6.w, r6.w, l(1)
  or r5.w, r5.w, r6.w
  div r14.xyz, r15.xyzx, r4.wwww
  mov r13.w, l(1.000000)
  
  add r40.w, r13.z, r40.y
  mul r40.w, r40.w, l(0.0)
  //mad r13.x, r40.x, r40.w, r13.x
  
  dp4 r15.x, r13.xyzw, cb0[4].xyzw
  dp4 r15.y, r13.xyzw, cb0[5].xyzw
  dp4 r15.z, r13.xyzw, cb0[6].xyzw
  dp4 r4.w, r13.xyzw, cb0[7].xyzw
  
  add r40.w, r4.w, -r40.y
  mad r15.x, r40.x, r40.w, r15.x
  
  div r13.xyz, r15.xyzx, r4.wwww
  add r13.xyz, r13.xyzx, r14.xyzx
  mul r15.xyz, r13.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
  mad r13.xyz, -r13.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r14.xyzx
  mad r14.xy, -|r13.xyxx|, l(1.500000, 1.500000, 0.000000, 0.000000), r15.xyxx
  mad r13.xyz, |r13.xyzx|, l(1.500000, 1.500000, 1.500000, 0.000000), r15.xyzx
  add r5.xyz, -r5.xyzx, r10.xyzx
  add r10.xyz, r7.xyzx, r5.xyzx
  add r15.xyz, r3.xyzx, r10.xyzx
  mov r15.w, l(1.000000)
  
  add r40.w, r15.z, r40.y
  mul r40.w, r40.w, l(0.0)
  mad r15.x, r40.x, r40.w, r15.x
  
  dp4 r16.x, r15.xyzw, cb0[0].xyzw
  dp4 r16.y, r15.xyzw, cb0[1].xyzw
  dp4 r16.z, r15.xyzw, cb0[2].xyzw
  dp4 r4.w, r15.xyzw, cb0[3].xyzw
  movc r5.w, r5.w, l(1), l(0)
  lt r6.w, r4.w, r16.z
  and r6.w, r6.w, l(1)
  or r5.w, r5.w, r6.w
  div r15.xyz, r16.xyzx, r4.wwww
  mov r10.w, l(1.000000)
  
  add r40.w, r10.z, r40.y
  mul r40.w, r40.w, l(0.0)
  //mad r10.x, r40.x, r40.w, r10.x
  
  dp4 r16.x, r10.xyzw, cb0[4].xyzw
  dp4 r16.y, r10.xyzw, cb0[5].xyzw
  dp4 r16.z, r10.xyzw, cb0[6].xyzw
  dp4 r4.w, r10.xyzw, cb0[7].xyzw
  
  add r40.w, r4.w, -r40.y
  mad r16.x, r40.x, r40.w, r16.x
  
  div r10.xyz, r16.xyzx, r4.wwww
  add r10.xyz, r10.xyzx, r15.xyzx
  mul r16.xyz, r10.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
  mad r10.xyz, -r10.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r15.xyzx
  mad r14.zw, -|r10.xxxy|, l(0.000000, 0.000000, 1.500000, 1.500000), r16.xxxy
  mad r10.xyz, |r10.xyzx|, l(1.500000, 1.500000, 1.500000, 0.000000), r16.xyzx
  add r6.xyz, r6.xyzx, -r7.xyzx
  add r15.xyz, r3.xyzx, r6.xyzx
  mov r15.w, l(1.000000)
  
  add r40.w, r15.z, r40.y
  mul r40.w, r40.w, l(0.0)
  mad r15.x, r40.x, r40.w, r15.x
  
  dp4 r16.x, r15.xyzw, cb0[0].xyzw
  dp4 r16.y, r15.xyzw, cb0[1].xyzw
  dp4 r16.z, r15.xyzw, cb0[2].xyzw
  dp4 r4.w, r15.xyzw, cb0[3].xyzw
  movc r5.w, r5.w, l(1), l(0)
  lt r7.w, r4.w, r16.z
  and r7.w, r7.w, l(1)
  or r5.w, r5.w, r7.w
  div r15.xyz, r16.xyzx, r4.wwww
  mov r6.w, l(1.000000)
  
  add r40.w, r6.z, r40.y
  mul r40.w, r40.w, l(0.0)
  //mad r6.x, r40.x, r40.w, r6.x
  
  dp4 r16.x, r6.xyzw, cb0[4].xyzw
  dp4 r16.y, r6.xyzw, cb0[5].xyzw
  dp4 r16.z, r6.xyzw, cb0[6].xyzw
  dp4 r4.w, r6.xyzw, cb0[7].xyzw
  
  add r40.w, r4.w, -r40.y
  mad r16.x, r40.x, r40.w, r16.x
  
  div r6.xyz, r16.xyzx, r4.wwww
  add r6.xyz, r6.xyzx, r15.xyzx
  mul r16.xyz, r6.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
  mad r6.xyz, -r6.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r15.xyzx
  mad r15.xy, -|r6.xyxx|, l(1.500000, 1.500000, 0.000000, 0.000000), r16.xyxx
  mad r6.xyz, |r6.xyzx|, l(1.500000, 1.500000, 1.500000, 0.000000), r16.xyzx
  add r11.xyz, -r7.xyzx, r11.xyzx
  add r16.xyz, r3.xyzx, r11.xyzx
  mov r16.w, l(1.000000)
  
  add r40.w, r16.z, r40.y
  mul r40.w, r40.w, l(0.0)
  mad r16.x, r40.x, r40.w, r16.x
  
  dp4 r17.x, r16.xyzw, cb0[0].xyzw
  dp4 r17.y, r16.xyzw, cb0[1].xyzw
  dp4 r17.z, r16.xyzw, cb0[2].xyzw
  dp4 r4.w, r16.xyzw, cb0[3].xyzw
  movc r5.w, r5.w, l(1), l(0)
  lt r6.w, r4.w, r17.z
  and r6.w, r6.w, l(1)
  or r5.w, r5.w, r6.w
  div r16.xyz, r17.xyzx, r4.wwww
  mov r11.w, l(1.000000)
  
  add r40.w, r11.z, r40.y
  mul r40.w, r40.w, l(0.0)
  //mad r11.x, r40.x, r40.w, r11.x
  
  dp4 r17.x, r11.xyzw, cb0[4].xyzw
  dp4 r17.y, r11.xyzw, cb0[5].xyzw
  dp4 r17.z, r11.xyzw, cb0[6].xyzw
  dp4 r4.w, r11.xyzw, cb0[7].xyzw
  
  add r40.w, r4.w, -r40.y
  mad r17.x, r40.x, r40.w, r17.x
  
  div r11.xyz, r17.xyzx, r4.wwww
  add r11.xyz, r11.xyzx, r16.xyzx
  mul r17.xyz, r11.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
  mad r11.xyz, -r11.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r16.xyzx
  mad r15.zw, -|r11.xxxy|, l(0.000000, 0.000000, 1.500000, 1.500000), r17.xxxy
  mad r11.xyz, |r11.xyzx|, l(1.500000, 1.500000, 1.500000, 0.000000), r17.xyzx
  add r4.xyz, -r7.xyzx, r4.xyzx
  add r16.xyz, r3.xyzx, r4.xyzx
  mov r16.w, l(1.000000)
  
  add r40.w, r16.z, r40.y
  mul r40.w, r40.w, l(0.0)
  mad r16.x, r40.x, r40.w, r16.x
  
  dp4 r17.x, r16.xyzw, cb0[0].xyzw
  dp4 r17.y, r16.xyzw, cb0[1].xyzw
  dp4 r17.z, r16.xyzw, cb0[2].xyzw
  dp4 r6.w, r16.xyzw, cb0[3].xyzw
  movc r5.w, r5.w, l(1), l(0)
  lt r7.w, r6.w, r17.z
  and r7.w, r7.w, l(1)
  or r5.w, r5.w, r7.w
  div r16.xyz, r17.xyzx, r6.wwww
  mov r4.w, l(1.000000)
  
  add r40.w, r4.z, r40.y
  mul r40.w, r40.w, l(0.0)
  //mad r4.x, r40.x, r40.w, r4.x
  
  dp4 r17.x, r4.xyzw, cb0[4].xyzw
  dp4 r17.y, r4.xyzw, cb0[5].xyzw
  dp4 r17.z, r4.xyzw, cb0[6].xyzw
  dp4 r4.x, r4.xyzw, cb0[7].xyzw
  
  add r40.w, r4.w, -r40.y
  mad r17.x, r40.x, r40.w, r17.x
  
  div r4.xyz, r17.xyzx, r4.xxxx
  add r4.xyz, r4.xyzx, r16.xyzx
  mul r17.xyz, r4.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
  mad r4.xyz, -r4.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r16.xyzx
  mad r16.xy, -|r4.xyxx|, l(1.500000, 1.500000, 0.000000, 0.000000), r17.xyxx
  mad r4.xyz, |r4.xyzx|, l(1.500000, 1.500000, 1.500000, 0.000000), r17.xyzx
  add r7.xyz, -r7.xyzx, r5.xyzx
  add r17.xyz, r3.xyzx, r7.xyzx
  mov r17.w, l(1.000000)
  
  add r40.w, r17.z, r40.y
  mul r40.w, r40.w, l(0.0)
  mad r17.x, r40.x, r40.w, r17.x
  
  dp4 r5.x, r17.xyzw, cb0[0].xyzw
  dp4 r5.y, r17.xyzw, cb0[1].xyzw
  dp4 r5.z, r17.xyzw, cb0[2].xyzw
  dp4 r4.w, r17.xyzw, cb0[3].xyzw
  movc r5.w, r5.w, l(1), l(0)
  lt r6.w, r4.w, r5.z
  and r6.w, r6.w, l(1)
  or r5.w, r5.w, r6.w
  div r5.xyz, r5.xyzx, r4.wwww
  mov r7.w, l(1.000000)
  
  add r40.w, r7.z, r40.y
  mul r40.w, r40.w, l(0.0)
  //mad r7.x, r40.x, r40.w, r7.x
  
  dp4 r17.x, r7.xyzw, cb0[4].xyzw
  dp4 r17.y, r7.xyzw, cb0[5].xyzw
  dp4 r17.z, r7.xyzw, cb0[6].xyzw
  dp4 r4.w, r7.xyzw, cb0[7].xyzw
  
  add r40.w, r4.w, -r40.y
  mad r17.x, r40.x, r40.w, r17.x
  
  div r7.xyz, r17.xyzx, r4.wwww
  add r7.xyz, r5.xyzx, r7.xyzx
  mul r17.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
  mad r5.xyz, -r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r5.xyzx
  mad r7.xy, -|r5.xyxx|, l(1.500000, 1.500000, 0.000000, 0.000000), r17.xyxx
  mad r5.xyz, |r5.xyzx|, l(1.500000, 1.500000, 1.500000, 0.000000), r17.xyzx
  min r7.zw, r9.zzzw, r14.xxxy
  min r7.zw, r7.zzzw, r9.xxxy
  min r9.xy, r15.zwzz, r15.xyxx
  min r9.xy, r9.xyxx, r14.zwzz
  min r7.xy, r7.xyxx, r16.xyxx
  min r7.xy, r7.xyxx, r9.xyxx
  min r7.xy, r7.xyxx, r7.zwzz
  max r9.xyz, r12.xyzx, r13.xyzx
  max r8.xyz, r8.xyzx, r9.xyzx
  max r6.xyz, r6.xyzx, r11.xyzx
  max r6.xyz, r6.xyzx, r10.xyzx
  max r4.xyz, r4.xyzx, r5.xyzx
  max r4.xyz, r4.xyzx, r6.xyzx
  max r4.xyz, r4.xyzx, r8.xyzx
  if_z r5.w
    max r5.xy, r7.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000)
    min r5.xy, r5.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
    max r4.xy, r4.yxyy, l(-1.000000, -1.000000, 0.000000, 0.000000)
    min r5.zw, r4.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000)
    mad r6.xyzw, r5.xzwy, l(0.500000, -0.500000, 0.500000, -0.500000), l(0.500000, 0.500000, 0.500000, 0.500000)
    add r4.xy, -r6.xyxx, r6.zwzz
    mul r4.xy, r4.xyxx, cb0[712].xyxx
    max r4.y, r4.y, l(0.000010)
    max r4.x, r4.y, r4.x
    log r4.x, r4.x
    round_pi r4.x, r4.x
    max r4.x, r4.x, l(0.000000)
    sample_l_indexable(texture2d)(float,float,float,float) r4.y, r6.xyxx, t0.yxzw, s0, r4.x
    mad r5.xyzw, r5.wzxy, l(0.500000, -0.500000, 0.500000, -0.500000), l(0.500000, 0.500000, 0.500000, 0.500000)
    sample_l_indexable(texture2d)(float,float,float,float) r4.w, r5.xyxx, t0.yzwx, s0, r4.x
    sample_l_indexable(texture2d)(float,float,float,float) r5.x, r5.zwzz, t0.xyzw, s0, r4.x
    sample_l_indexable(texture2d)(float,float,float,float) r4.x, r6.zwzz, t0.xyzw, s0, r4.x
    min r4.w, r4.w, r5.x
    min r4.y, r4.w, r4.y
    min r4.x, r4.x, r4.y
    ge r4.x, r4.z, r4.x
    and r4.y, r3.w, l(-4)
    movc r3.w, r4.x, r3.w, r4.y
  endif
endif
if_nz cb0[714].w
  add r4.xyz, r0.xyzx, r2.yzwy
  mov r5.x, r0.w
  mov r5.yz, r1.zzwz
  add r6.xyz, r4.xyzx, r5.xyzx
  mov r1.z, r2.x
  add r7.xyz, r1.xyzx, r6.xyzx
  add r7.xyz, r3.xyzx, r7.xyzx
  add r0.xyz, -r0.xyzx, r2.yzwy
  add r2.xyz, r5.xyzx, r0.xyzx
  add r8.xyz, r1.xyzx, r2.xyzx
  add r8.xyz, r3.xyzx, r8.xyzx
  add r4.xyz, r4.xyzx, -r5.xyzx
  add r9.xyz, r1.xyzx, r4.xyzx
  add r9.xyz, r3.xyzx, r9.xyzx
  add r0.xyz, -r5.xyzx, r0.xyzx
  add r5.xyz, r1.xyzx, r0.xyzx
  add r5.xyz, r3.xyzx, r5.xyzx
  add r6.xyz, -r1.xyzx, r6.xyzx
  add r6.xyz, r3.xyzx, r6.xyzx
  add r2.xyz, -r1.xyzx, r2.xyzx
  add r2.xyz, r3.xyzx, r2.xyzx
  add r4.xyz, -r1.xyzx, r4.xyzx
  add r4.xyz, r3.xyzx, r4.xyzx
  add r0.xyz, -r1.xyzx, r0.xyzx
  add r0.xyz, r3.xyzx, r0.xyzx
  mov r7.w, l(1.000000)
  mov r8.w, l(1.000000)
  mov r9.w, l(1.000000)
  mov r5.w, l(1.000000)
  mov r6.w, l(1.000000)
  mov r2.w, l(1.000000)
  mov r4.w, l(1.000000)
  mov r0.w, l(1.000000)
  mov r1.x, r3.w
  mov r1.y, l(1)
  loop
    uge r1.z, r1.y, cb0[714].y
    breakc_nz r1.z
    ishl r1.z, l(1), cb0[r1.y + 168].z
    ine r1.w, l(0), cb0[r1.y + 168].w
    and r3.x, r1.x, r1.z
    ine r3.x, r3.x, l(0)
    and r1.w, r1.w, r3.x
    if_nz r1.w
      ishl r1.w, r1.y, l(2)
      dp4 r3.z, r7.xyzw, cb0[r1.w + 10].xyzw
      dp4 r10.x, r7.xyzw, cb0[r1.w + 11].xyzw
      lt r10.y, r10.x, r3.z
      and r10.y, r10.y, l(1)
      dp4 r11.z, r8.xyzw, cb0[r1.w + 10].xyzw
      dp4 r10.z, r8.xyzw, cb0[r1.w + 11].xyzw
      movc r10.y, r10.y, l(1), l(0)
      lt r10.w, r10.z, r11.z
      and r10.w, r10.w, l(1)
      or r10.y, r10.w, r10.y
      dp4 r12.z, r9.xyzw, cb0[r1.w + 10].xyzw
      dp4 r10.w, r9.xyzw, cb0[r1.w + 11].xyzw
      movc r10.y, r10.y, l(1), l(0)
      lt r11.w, r10.w, r12.z
      and r11.w, r11.w, l(1)
      or r10.y, r10.y, r11.w
      dp4 r13.z, r5.xyzw, cb0[r1.w + 10].xyzw
      dp4 r11.w, r5.xyzw, cb0[r1.w + 11].xyzw
      movc r10.y, r10.y, l(1), l(0)
      lt r12.w, r11.w, r13.z
      and r12.w, r12.w, l(1)
      or r10.y, r10.y, r12.w
      dp4 r14.z, r6.xyzw, cb0[r1.w + 10].xyzw
      dp4 r12.w, r6.xyzw, cb0[r1.w + 11].xyzw
      movc r10.y, r10.y, l(1), l(0)
      lt r13.w, r12.w, r14.z
      and r13.w, r13.w, l(1)
      or r10.y, r10.y, r13.w
      dp4 r15.z, r2.xyzw, cb0[r1.w + 10].xyzw
      dp4 r13.w, r2.xyzw, cb0[r1.w + 11].xyzw
      movc r10.y, r10.y, l(1), l(0)
      lt r14.w, r13.w, r15.z
      and r14.w, r14.w, l(1)
      or r10.y, r10.y, r14.w
      dp4 r16.z, r4.xyzw, cb0[r1.w + 10].xyzw
      dp4 r14.w, r4.xyzw, cb0[r1.w + 11].xyzw
      movc r10.y, r10.y, l(1), l(0)
      lt r15.w, r14.w, r16.z
      and r15.w, r15.w, l(1)
      or r10.y, r10.y, r15.w
      dp4 r17.z, r0.xyzw, cb0[r1.w + 10].xyzw
      dp4 r15.w, r0.xyzw, cb0[r1.w + 11].xyzw
      movc r10.y, r10.y, l(1), l(0)
      lt r16.w, r15.w, r17.z
      and r16.w, r16.w, l(1)
      or r10.y, r10.y, r16.w
      if_z r10.y
        dp4 r3.x, r7.xyzw, cb0[r1.w + 8].xyzw
        dp4 r3.y, r7.xyzw, cb0[r1.w + 9].xyzw
        div r3.xyz, r3.xyzx, r10.xxxx
        dp4 r11.x, r8.xyzw, cb0[r1.w + 8].xyzw
        dp4 r11.y, r8.xyzw, cb0[r1.w + 9].xyzw
        div r10.xyz, r11.xyzx, r10.zzzz
        dp4 r12.x, r9.xyzw, cb0[r1.w + 8].xyzw
        dp4 r12.y, r9.xyzw, cb0[r1.w + 9].xyzw
        div r11.xyz, r12.xyzx, r10.wwww
        dp4 r13.x, r5.xyzw, cb0[r1.w + 8].xyzw
        dp4 r13.y, r5.xyzw, cb0[r1.w + 9].xyzw
        div r12.xyz, r13.xyzx, r11.wwww
        dp4 r14.x, r6.xyzw, cb0[r1.w + 8].xyzw
        dp4 r14.y, r6.xyzw, cb0[r1.w + 9].xyzw
        div r13.xyz, r14.xyzx, r12.wwww
        dp4 r15.x, r2.xyzw, cb0[r1.w + 8].xyzw
        dp4 r15.y, r2.xyzw, cb0[r1.w + 9].xyzw
        div r14.xyz, r15.xyzx, r13.wwww
        dp4 r16.x, r4.xyzw, cb0[r1.w + 8].xyzw
        dp4 r16.y, r4.xyzw, cb0[r1.w + 9].xyzw
        div r15.xyz, r16.xyzx, r14.wwww
        dp4 r17.x, r0.xyzw, cb0[r1.w + 8].xyzw
        dp4 r17.y, r0.xyzw, cb0[r1.w + 9].xyzw
        div r16.xyz, r17.xyzx, r15.wwww
        min r17.xy, r10.xyxx, r11.xyxx
        min r17.xy, r3.xyxx, r17.xyxx
        min r17.zw, r13.xxxy, r14.xxxy
        min r17.zw, r12.xxxy, r17.zzzw
        min r18.xy, r15.xyxx, r16.xyxx
        min r17.zw, r17.zzzw, r18.xxxy
        min r17.xy, r17.zwzz, r17.xyxx
        max r10.xyz, r10.xyzx, r11.xyzx
        max r3.xyz, r3.xyzx, r10.xyzx
        max r10.xyz, r13.xyzx, r14.xyzx
        max r10.xyz, r10.xyzx, r12.xyzx
        max r11.xyz, r15.xyzx, r16.xyzx
        max r10.xyz, r10.xyzx, r11.xyzx
        max r3.xyz, r3.xyzx, r10.xyzx
        max r10.xy, r17.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000)
        min r10.xy, r10.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
        max r3.xy, r3.yxyy, l(-1.000000, -1.000000, 0.000000, 0.000000)
        min r10.zw, r3.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000)
        mad r11.zw, r10.xxxz, cb0[r1.y + 136].xxxy, cb0[r1.y + 136].zzzw
        mad r11.xy, r10.wyww, cb0[r1.y + 136].xyxx, cb0[r1.y + 136].zwzz
        add r3.xy, -r11.zwzz, r11.xyxx
        mul r3.xy, r3.xyxx, cb0[713].xyxx
        max r1.w, r3.y, l(0.000010)
        max r1.w, r1.w, r3.x
        log r1.w, r1.w
        round_pi r1.w, r1.w
        max r1.w, r1.w, l(0.000000)
        sample_l_indexable(texture2d)(float,float,float,float) r3.x, r11.zwzz, t1.xyzw, s0, r1.w
        sample_l_indexable(texture2d)(float,float,float,float) r3.y, r11.xwxx, t1.yxzw, s0, r1.w
        sample_l_indexable(texture2d)(float,float,float,float) r10.x, r11.zyzz, t1.xyzw, s0, r1.w
        sample_l_indexable(texture2d)(float,float,float,float) r1.w, r11.xyxx, t1.yzwx, s0, r1.w
        min r3.y, r3.y, r10.x
        min r3.x, r3.y, r3.x
        min r1.w, r1.w, r3.x
        ge r1.w, r3.z, r1.w
        not r1.z, r1.z
        and r1.z, r1.z, r1.x
        movc r1.x, r1.w, r1.x, r1.z
      endif
    endif
    iadd r1.y, r1.y, l(1)
  endloop
  mov r3.w, r1.x
endif
movc r0.x, cb0[715].y, l(0x7fffff07), r3.w
//mov r0.x, l(0x7fffff07)
ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r0.y, vThreadID.x, l(0), u8.xxxx
and r0.z, r0.y, l(4)
ubfe r0.y, l(2), l(4), r0.y
and r1.xy, r0.xxxx, l(4, 1, 0, 0)
ine r0.w, r1.x, l(0)
ieq r1.x, r1.y, l(0)
and r0.w, r0.w, r1.x
ieq r0.z, r0.z, l(0)
ult r1.x, r0.y, cb0[716].y
or r0.z, r0.z, r1.x
or r1.x, r0.x, l(2)
movc r0.z, r0.z, r1.x, r0.x
iadd r0.y, r0.y, l(1)
umin r0.y, r0.y, l(3)
ishl r0.y, r0.y, l(4)
or r0.y, r0.y, r0.z
movc r0.x, r0.w, r0.y, r0.x
store_structured u8.x, vThreadID.x, l(0), r0.x
ret
// Approximately 480 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v1.3.16 on Thu Mar 24 18:25:12 2022
//
// struct OOBBoxUnpacked
// {
//     float3 HalfExtentX;            // Offset:    0
//     float3 HalfExtentY;            // Offset:   12
//     float3 HalfExtentZ;            // Offset:   24
//     float3 Center;                 // Offset:   36
// };
//
// cbuffer ConstBuf__passData : register(b0)
// {
//
//   struct
//   {
//     float4x4 cViewProjectionMatrix;
//     float4x4 cViewProjectionMatrixNextFrame;
//
//     struct
//     {
//       float4x4 mat;
//     } cShadowVPMatrices[32];
//
//     float4 cShadowmapUVScaleBias[32];
//     uint4 cPlaneStartsCountsBitPositions[32];
//     float4 cCullingPlanes[512];
//     float4 cDepthBufferSizeWidth;
//     float4 cShadowDepthBufferSizeWidth;
//     uint cCascadeMask;
//     uint cFrustumsCount;
//     uint cCullByDepthBuffer;
//     uint cCullShadowsByDepthBuffer;
//     uint cCullShadowsIntersectingOptim;
//     uint cForceNoCulling;
//     uint cCullByMotionProjection;
//     uint cNumToCull;
//     uint cNumSpheresToCull;
//     uint cNumFramesDelay;
//   } resourceTables__passData : packoffset(c0);
//
//
// SamplerState resourceTables__passData__smpPointClampTrunc_s : register(s0);
// Texture2D<float> resourceTables__passData.texDepth : register(t0);
// Texture2D<float> resourceTables__passData.texDepthShadow : register(t1);
// StructuredBuffer<OOBBoxUnpacked> resourceTables__passData.bboxesToProcess : register(t3);
// StructuredBuffer<float4> resourceTables__passData.sphereVelocities : register(t5);
// RWStructuredBuffer<uint> resourceTables__passData.visibilityBufferBoxes : register(u8);
//
//
// // 3Dmigoto declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Texture2D<float4> StereoParams : register(t125);
//
//
// void main)
// {
//   Textures:.x = [t0-t5].val[/4];
//   Textures:.y = [t0-t5].val[/4+1];
//   Textures:.z = [t0-t5].val[/4+2];
//   Textures:.w = [t0-t5].val[/4+3];
//   float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_thread_group 64, 1, 1
//   r0.x = resourceTables__passData.bboxesToProcess[vThreadID.x].HalfExtentX.z;
//   r0.y = resourceTables__passData.bboxesToProcess[vThreadID.x].HalfExtentY.x;
//   r0.z = resourceTables__passData.bboxesToProcess[vThreadID.x].HalfExtentX.x;
//   r0.w = resourceTables__passData.bboxesToProcess[vThreadID.x].HalfExtentX.y;
//   r1.x = resourceTables__passData.bboxesToProcess[vThreadID.x].HalfExtentY.y;
//   r1.y = resourceTables__passData.bboxesToProcess[vThreadID.x].HalfExtentY.z;
//   r1.z = resourceTables__passData.bboxesToProcess[vThreadID.x].HalfExtentZ.x;
//   r1.w = resourceTables__passData.bboxesToProcess[vThreadID.x].HalfExtentZ.y;
//   r2.xyzw = resourceTables__passData.sphereVelocities[vThreadID.x].???;
//   stride=16)(mixed = r3.x ? vThreadID.x : 0;
//   r3.xyz = resourceTables__passData.cCullByMotionProjection;
//   r4.xyz = r2.yzw;
//   r4.w = 1.000000;
//   r5.x = r0.w;
//   r5.yz = r1.zw;
//   r6.xy = r1.xy;
//   r6.z = 0;
//   r7.xy = 0;
//   while (true) {
//      = cmp( >= );
//     if (r5.w != 0) break;
//     r5.w = 0;
//     r7.zw = 0;
//     while (true) {
//        = cmp( >= );
//       if (r6.w != 0) break;
//       r6.w =  + ;
//       r6.w = dot(r5.w, resourceTables__passData.resourceTables__passData.cPlaneStartsCountsBitPositions[r3.w].x);
//       r8.x = dot(resourceTables__passData.resourceTables__passData.cCullingPlanes[r6.w].xyz, r4.xyz);
//       r8.y = dot(resourceTables__passData.resourceTables__passData.cCullingPlanes[r6.w].xyz, r0.xyz);
//       r8.z = dot(resourceTables__passData.resourceTables__passData.cCullingPlanes[r6.w].xyz, r5.xyz);
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// error X3506: unrecognized compiler target '                                        // Textures:  t0-t5'
/////////////////////////////////////////////////////////////////////////////
