// srvCrudeCullInfo v3
// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
//
//   using 3Dmigoto v1.3.11 on Tue Mar 05 19:41:32 2019
//
//
// Buffer Definitions:
//
// cbuffer _cbSharedPerViewData
// {
//
//   struct S_cbSharedPerViewData
//   {
//
//       row_major float4x4 mProjection;// Offset:    0
//       row_major float4x4 mProjectionPrev;// Offset:   64
//       row_major float4x4 mViewToViewport;// Offset:  128
//       row_major float4x4 mViewToWorld;// Offset:  192
//       row_major float4x4 mViewToWorldPrev;// Offset:  256
//       row_major float4x4 mFxWorldToSampleSpace;// Offset:  320
//       float4 vViewRemap;             // Offset:  384
//       float4 vViewDepthRemap;        // Offset:  400
//       float4 vEyeVectorUL;           // Offset:  416
//       float4 vEyeVectorLR;           // Offset:  432
//       float4 vEyeVectorDelta;        // Offset:  448
//       float4 vPixelToEyeVectorScaleBias;// Offset:  464
//       float4 vViewSpaceUpVector;     // Offset:  480
//       float4 vViewportSize;          // Offset:  496
//       float4 vTesselationEnabled;    // Offset:  512
//       float4 vEngineTime;            // Offset:  528
//       uint nFrameCounter;            // Offset:  544
//       float4 vShaderColor0;          // Offset:  560
//       float4 vShaderColor1;          // Offset:  576
//       float4 vShaderColor2;          // Offset:  592
//       float4 vShaderColor3;          // Offset:  608
//       float4 vShaderColor4;          // Offset:  624
//       float4 vClipPlane;             // Offset:  640
//       float4 vClipPlane0;            // Offset:  656
//       float4 vClipPlane1;            // Offset:  672
//       float4 vClipPlane2;            // Offset:  688
//       float4 vClipPlane3;            // Offset:  704
//       float4 vClipPlane4;            // Offset:  720
//       float4 vClipPlane5;            // Offset:  736
//       float4 vMippedDepthRemap;      // Offset:  752
//       float4 vSpecularOcclusionSettings;// Offset:  768
//       float4 vSaturatedAmbientOcclusionSettings;// Offset:  784
//       float4 vLightModelSettings;    // Offset:  800
//       float4 vHDRScale;              // Offset:  816
//       float4 vTweakableShaderParams; // Offset:  832
//       float4 vAtmosphericScatteringParameters;// Offset:  848
//       float4 vAtmosphericScatteringParameters2;// Offset:  864
//       float4 vAtmosphericScatteringParameters3;// Offset:  880
//       float3 vAtmosphericScatteringMieBeta;// Offset:  896
//       float3 vAtmosphericScatteringRayleighBeta;// Offset:  912
//       float3 vAtmosphericScatteringShadowedMieBeta;// Offset:  928
//       float3 vAtmosphericScatteringShadowedRayleighBeta;// Offset:  944
//       float3 vAttenuatedSunColor;    // Offset:  960
//       float3 vSunDirectionVS;        // Offset:  976
//       row_major float4x4 mViewToGlobalShadowVSPT;// Offset:  992
//       float4 vWindDirectionAndStrength;// Offset: 1056
//       float4 vWindDirectionAndStrengthPrev;// Offset: 1072
//       float4 vWindInitialDirectionAndStrength;// Offset: 1088
//       float4 vFxFadeParameters;      // Offset: 1104
//       float2 vFxSize;                // Offset: 1120
//       int nEnableGBufferSpecPowerAdjustment;// Offset: 1128
//       int nNumCSMCascades;           // Offset: 1132
//       float fCSMFadeAdd;             // Offset: 1136
//       int nEnableClothBias;          // Offset: 1140
//       int nEnableCloth;              // Offset: 1144
//       int2 viNumTiles;               // Offset: 1152
//       int nLightTileDebugFlags;      // Offset: 1160
//       int nEnableBoxReflections;     // Offset: 1164
//       int nSelectedBoxReflectionId;  // Offset: 1168
//       int nEnableAtmosphericScatteringBackdrop;// Offset: 1172
//       int nEnableSampleFromUICameraBackbuffer;// Offset: 1176
//       int nFallbackRoomMask;         // Offset: 1180
//       float4 vClearColor;            // Offset: 1184
//       float3 vGlobalLightDirectionVS;// Offset: 1200
//       float3 vGlobalLightFrontColor; // Offset: 1216
//       float3 vGlobalLightBackColor;  // Offset: 1232
//       float4 vShadowAtlasSize;       // Offset: 1248
//       float2 vShadowPoissonScale;    // Offset: 1264
//       int nShadowSpotKernel;         // Offset: 1272
//       int nShadowCSMKernel;          // Offset: 1276
//       float4 vJitter;                // Offset: 1280
//       float4 vUnjitter;              // Offset: 1296
//       int nHashedAlphaPeriod;        // Offset: 1312
//       int nIsRenderingOffscreen;     // Offset: 1316
//       int nMirrorsDisabled;          // Offset: 1320
//
//   } cbSharedPerViewData;             // Offset:    0 Size:  1324
//
// }
//
// cbuffer _cbCalculateTileIndices
// {
//
//   struct S_cbCalculateTileIndices
//   {
//
//       int2 viNumTiles;               // Offset:    0
//       int2 viNumMacroTiles;          // Offset:    8
//       int nNumTotalTiles;            // Offset:   16
//       int nNumNonGates;              // Offset:   20
//       int nNumGates;                 // Offset:   24
//       int nDisableTransparent;       // Offset:   28
//
//   } cbCalculateTileIndices;          // Offset:    0 Size:    32
//
// }
//
// Resource bind info for srvCrudeCullInfo
// {
//
//   uint4 $Element;                    // Offset:    0 Size:    16
//
// }
//
// Resource bind info for srvMacroTiles
// {
//
//   uint $Element;                     // Offset:    0 Size:     4
//
// }
//
// Resource bind info for uavObjectIndices
// {
//
//   struct STileData
//   {
//
//       uint nFeatureFlags;            // Offset:    0
//       uint nStartRoomIndex;          // Offset:    4
//       uint anIndices[128];           // Offset:    8
//
//   } $Element;                        // Offset:    0 Size:   520
//
// }
//
// Resource bind info for uavObjectIndicesTransparent
// {
//
//   struct STileDataTransparent
//   {
//
//       uint nStartRoomIndex;          // Offset:    0
//       uint nRoomMask;                // Offset:    4
//       uint anIndices[128];           // Offset:    8
//
//   } $Element;                        // Offset:    0 Size:   520
//
// }
//
// Resource bind info for uavFeaturePermutationTileList
// {
//
//   uint $Element;                     // Offset:    0 Size:     4
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// samplerPointClamp                 sampler      NA          NA    0        1
// srvDepthTexture                   texture  float4          2d    0        1
// srvCrudeCullInfo                  texture  struct         r/o    1        1
// srvMacroTiles                     texture  struct         r/o    2        1
// srvTransparencyMinMaxTexture      texture  float2          2d    4        1
// srvTransparencyBucketsTexture     texture    uint          2d    5        1
// uavObjectIndices                      UAV  struct         r/w    0        1
// uavObjectIndicesTransparent           UAV  struct         r/w    1        1
// uavFeaturePermutationTileList         UAV  struct         r/w    2        1
// uavFeaturePermutationDispatchIndirectBuffer        UAV    uint         buf    3        1
// _cbSharedPerViewData              cbuffer      NA          NA    2        1
// _cbCalculateTileIndices           cbuffer      NA          NA    5        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 cb2[32], immediateIndexed
dcl_constantbuffer cb5[2], immediateIndexed
dcl_sampler s0, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_structured t1, 16
dcl_resource_structured t2, 4
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_texture2d (uint,uint,uint,uint) t5
dcl_uav_structured u0, 520
dcl_uav_structured u1, 520
dcl_uav_structured u2, 4
dcl_uav_typed_buffer (uint,uint,uint,uint) u3
dcl_input vThreadIDInGroupFlattened
dcl_input vThreadGroupID.xy
dcl_input vThreadID.xy
//dcl_temps 34
dcl_temps 37

dcl_tgsm_structured g0, 4, 128
dcl_tgsm_structured g1, 4, 128
dcl_tgsm_structured g2, 256, 2
dcl_tgsm_structured g3, 4, 64
dcl_tgsm_structured g4, 4, 64
dcl_tgsm_structured g5, 4, 64
dcl_tgsm_structured g6, 4, 64
dcl_tgsm_structured g7, 4, 64
dcl_tgsm_structured g8, 4, 64
dcl_tgsm_structured g9, 4, 64
dcl_tgsm_structured g10, 4, 64
dcl_thread_group 8, 8, 1

dcl_resource_texture2d (float,float,float,float) t125
dcl_resource_texture1d (float,float,float,float) t120
ld_indexable(texture2d)(float,float,float,float) r35.xyzw, l(0, 0, 0, 0), t125.xyzw
ld_indexable(texture1d)(float,float,float,float) r36.xyzw, l(6, 0, 0, 0), t120.xyzw

imad r0.x, vThreadGroupID.y, cb5[0].x, vThreadGroupID.x
ushr r0.yz, vThreadGroupID.xxyx, l(0, 2, 2, 0)
imad r0.y, r0.z, cb5[0].z, r0.y
imul null, r0.z, r0.y, l(1025)
ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r0.z, r0.z, l(0), t2.xxxx
ieq r0.w, r0.z, l(-1)
if_nz r0.w
  if_z vThreadIDInGroupFlattened.x
    store_structured u1.x, r0.x, l(4), l(0)
    store_structured u0.xy, r0.x, l(0), l(0,0,0,0)
    imm_atomic_iadd r1.x, u3, l(0), l(1)
    imad r1.y, vThreadGroupID.y, l(0x00010000), vThreadGroupID.x
    store_structured u2.x, r1.x, l(0), r1.y
  endif
  ishl r1.x, vThreadIDInGroupFlattened.x, l(2)
  iadd r1.x, r1.x, l(8)
  store_structured u0.x, r0.x, r1.x, l(0)
  store_structured u1.x, r0.x, r1.x, l(0)
endif
if_z r0.w
  utof r1.xy, vThreadID.xyxx
  imad r0.y, r0.y, l(1025), l(1)
  ushr r0.w, r0.z, l(16)
  and r0.z, r0.z, l(0x0000ffff)
  mad r1.xy, r1.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(1.000000, 1.000000, 0.000000, 0.000000)
  mul r1.xy, r1.xyxx, cb2[31].xyxx
  gather4_indexable(texture2d)(float,float,float,float) r1.xyzw, r1.xyxx, t0.xyzw, s0.x
  mad r2.xyzw, cb2[24].zzzz, r1.wzxy, -cb2[24].yyyy
  div r2.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000), r2.xyzw
  lt r1.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000), r1.wzxy
  and r1.xyzw, r1.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
  mul r1.xyzw, r2.xyzw, r1.xyzw
  min r3.xy, r2.ywyy, r2.xzxx
  min r3.x, r3.y, r3.x
  max r3.yz, r1.yywy, r1.xxzx
  max r3.y, r3.z, r3.y
  if_z cb5[1].w
    mov r4.xy, vThreadGroupID.xyxx
    mov r4.zw, l(0,0,0,0)
    ld_indexable(texture2d)(float,float,float,float) r3.zw, r4.xyww, t4.zwxy
    ld_indexable(texture2d)(uint,uint,uint,uint) r4.x, r4.xyzw, t5.xyzw
  else
    mov r3.zw, l(0,0,10000.000000,-10000.000000)
    mov r4.x, l(-1)
  endif
  store_structured g5.x, vThreadIDInGroupFlattened.x, l(0), r3.x
  store_structured g6.x, vThreadIDInGroupFlattened.x, l(0), r3.y
  store_structured g7.x, vThreadIDInGroupFlattened.x, l(0), r3.z
  store_structured g8.x, vThreadIDInGroupFlattened.x, l(0), r3.w
  sync_g_t
  ult r4.y, vThreadIDInGroupFlattened.x, l(32)
  if_nz r4.y
    iadd r4.z, vThreadIDInGroupFlattened.x, l(32)
    ld_structured r4.w, r4.z, l(0), g5.xxxx
    min r3.x, r3.x, r4.w
    store_structured g5.x, vThreadIDInGroupFlattened.x, l(0), r3.x
    ld_structured r3.x, r4.z, l(0), g6.xxxx
    max r3.x, r3.x, r3.y
    store_structured g6.x, vThreadIDInGroupFlattened.x, l(0), r3.x
    ld_structured r3.x, r4.z, l(0), g7.xxxx
    min r3.x, r3.x, r3.z
    store_structured g7.x, vThreadIDInGroupFlattened.x, l(0), r3.x
    ld_structured r3.x, r4.z, l(0), g8.xxxx
    max r3.x, r3.x, r3.w
    store_structured g8.x, vThreadIDInGroupFlattened.x, l(0), r3.x
  endif
  sync_g_t
  ld_structured r3.x, vThreadIDInGroupFlattened.x, l(0), g5.xxxx
  iadd r5.xyzw, vThreadIDInGroupFlattened.xxxx, l(16, 8, 4, 2)
  ld_structured r3.y, r5.x, l(0), g5.xxxx
  min r3.x, r3.y, r3.x
  store_structured g5.x, vThreadIDInGroupFlattened.x, l(0), r3.x
  ld_structured r3.y, vThreadIDInGroupFlattened.x, l(0), g6.xxxx
  ld_structured r3.z, r5.x, l(0), g6.xxxx
  max r3.y, r3.z, r3.y
  store_structured g6.x, vThreadIDInGroupFlattened.x, l(0), r3.y
  ld_structured r3.z, vThreadIDInGroupFlattened.x, l(0), g7.xxxx
  ld_structured r3.w, r5.x, l(0), g7.xxxx
  min r3.z, r3.w, r3.z
  store_structured g7.x, vThreadIDInGroupFlattened.x, l(0), r3.z
  ld_structured r3.w, vThreadIDInGroupFlattened.x, l(0), g8.xxxx
  ld_structured r4.z, r5.x, l(0), g8.xxxx
  max r3.w, r3.w, r4.z
  store_structured g8.x, vThreadIDInGroupFlattened.x, l(0), r3.w
  sync_g_t
  ld_structured r4.z, r5.y, l(0), g5.xxxx
  min r3.x, r3.x, r4.z
  store_structured g5.x, vThreadIDInGroupFlattened.x, l(0), r3.x
  ld_structured r4.z, r5.y, l(0), g6.xxxx
  max r3.y, r3.y, r4.z
  store_structured g6.x, vThreadIDInGroupFlattened.x, l(0), r3.y
  ld_structured r4.z, r5.y, l(0), g7.xxxx
  min r3.z, r3.z, r4.z
  store_structured g7.x, vThreadIDInGroupFlattened.x, l(0), r3.z
  ld_structured r4.z, r5.y, l(0), g8.xxxx
  max r3.w, r3.w, r4.z
  store_structured g8.x, vThreadIDInGroupFlattened.x, l(0), r3.w
  sync_g_t
  ld_structured r4.z, r5.z, l(0), g5.xxxx
  min r3.x, r3.x, r4.z
  store_structured g5.x, vThreadIDInGroupFlattened.x, l(0), r3.x
  ld_structured r4.z, r5.z, l(0), g6.xxxx
  max r3.y, r3.y, r4.z
  store_structured g6.x, vThreadIDInGroupFlattened.x, l(0), r3.y
  ld_structured r4.z, r5.z, l(0), g7.xxxx
  min r3.z, r3.z, r4.z
  store_structured g7.x, vThreadIDInGroupFlattened.x, l(0), r3.z
  ld_structured r4.z, r5.z, l(0), g8.xxxx
  max r3.w, r3.w, r4.z
  store_structured g8.x, vThreadIDInGroupFlattened.x, l(0), r3.w
  sync_g_t
  ld_structured r4.z, r5.w, l(0), g5.xxxx
  min r3.x, r3.x, r4.z
  store_structured g5.x, vThreadIDInGroupFlattened.x, l(0), r3.x
  ld_structured r4.z, r5.w, l(0), g6.xxxx
  max r3.y, r3.y, r4.z
  store_structured g6.x, vThreadIDInGroupFlattened.x, l(0), r3.y
  ld_structured r4.z, r5.w, l(0), g7.xxxx
  min r3.z, r3.z, r4.z
  store_structured g7.x, vThreadIDInGroupFlattened.x, l(0), r3.z
  ld_structured r4.z, r5.w, l(0), g8.xxxx
  max r3.w, r3.w, r4.z
  store_structured g8.x, vThreadIDInGroupFlattened.x, l(0), r3.w
  sync_g_t
  iadd r4.z, vThreadIDInGroupFlattened.x, l(1)
  ld_structured r4.w, r4.z, l(0), g5.xxxx
  min r3.x, r3.x, r4.w
  store_structured g5.x, vThreadIDInGroupFlattened.x, l(0), r3.x
  ld_structured r3.x, r4.z, l(0), g6.xxxx
  max r3.x, r3.x, r3.y
  store_structured g6.x, vThreadIDInGroupFlattened.x, l(0), r3.x
  ld_structured r3.x, r4.z, l(0), g7.xxxx
  min r3.x, r3.x, r3.z
  store_structured g7.x, vThreadIDInGroupFlattened.x, l(0), r3.x
  ld_structured r3.x, r4.z, l(0), g8.xxxx
  max r3.x, r3.x, r3.w
  store_structured g8.x, vThreadIDInGroupFlattened.x, l(0), r3.x
  sync_g_t
  ld_structured r3.x, l(0), l(0), g5.xxxx
  ld_structured r3.y, l(0), l(0), g6.xxxx
  ld_structured r3.z, l(0), l(0), g7.xxxx
  ld_structured r3.w, l(0), l(0), g8.xxxx
  max r3.y, r3.x, r3.y
  ge r4.w, r3.w, r3.z
  if_nz r4.w
    add r4.w, -r3.x, r3.y
    mad r4.w, r4.w, l(0.500000), r3.x
    iadd r6.xyzw, r2.xyzw, -r4.wwww
    iadd r7.xyzw, r1.xyzw, -r4.wwww
    umax r7.xy, r7.ywyy, r7.xzxx
    umax r7.x, r7.y, r7.x
    umin r6.xy, r6.ywyy, r6.xzxx
    umin r6.x, r6.y, r6.x
    store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r7.x
    store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r6.x
    sync_g_t
    if_nz r4.y
      iadd r6.y, vThreadIDInGroupFlattened.x, l(32)
      ld_structured r6.z, r6.y, l(0), g9.xxxx
      umax r6.z, r6.z, r7.x
      store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r6.z
      ld_structured r6.y, r6.y, l(0), g10.xxxx
      umin r6.x, r6.y, r6.x
      store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r6.x
    endif
    sync_g_t
    ld_structured r6.x, vThreadIDInGroupFlattened.x, l(0), g9.xxxx
    ld_structured r6.y, r5.x, l(0), g9.xxxx
    umax r6.x, r6.y, r6.x
    store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r6.x
    ld_structured r6.y, vThreadIDInGroupFlattened.x, l(0), g10.xxxx
    ld_structured r6.z, r5.x, l(0), g10.xxxx
    umin r6.y, r6.z, r6.y
    store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r6.y
    sync_g_t
    ld_structured r6.z, r5.y, l(0), g9.xxxx
    umax r6.x, r6.z, r6.x
    store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r6.x
    ld_structured r6.z, r5.y, l(0), g10.xxxx
    umin r6.y, r6.z, r6.y
    store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r6.y
    sync_g_t
    ld_structured r6.z, r5.z, l(0), g9.xxxx
    umax r6.x, r6.z, r6.x
    store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r6.x
    ld_structured r6.z, r5.z, l(0), g10.xxxx
    umin r6.y, r6.z, r6.y
    store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r6.y
    sync_g_t
    ld_structured r6.z, r5.w, l(0), g9.xxxx
    umax r6.x, r6.z, r6.x
    store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r6.x
    ld_structured r6.z, r5.w, l(0), g10.xxxx
    umin r6.y, r6.z, r6.y
    store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r6.y
    sync_g_t
    ld_structured r6.z, r4.z, l(0), g9.xxxx
    umax r6.x, r6.z, r6.x
    store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r6.x
    ld_structured r6.x, r4.z, l(0), g10.xxxx
    umin r6.x, r6.x, r6.y
    store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r6.x
    sync_g_t
    ld_structured r6.x, l(0), l(0), g9.xxxx
    iadd r6.x, r4.w, r6.x
    ld_structured r6.y, l(0), l(0), g10.xxxx
    iadd r4.w, r4.w, r6.y
    max r6.x, r3.x, r6.x
    ishl r6.yz, vThreadGroupID.xxyx, l(0, 4, 4, 0)
    utof r6.yz, r6.yyzy
    add r6.yz, r6.yyzy, l(0.000000, 7.500000, 7.500000, 0.000000)
    mad r7.xy, r6.yzyy, cb2[29].xyxx, cb2[29].zwzz
    add r8.z, r3.x, r6.x
    mov r7.z, l(-0.500000)
    mul r8.xy, r8.zzzz, l(0.500000, 0.500000, 0.000000, 0.000000)
    mul r8.xyz, r7.xyzx, r8.xyzx
	
// Adjust tile center 0 -DarkStarSword
add r35.w, r8.z, -r35.y
mul r35.w, r35.w, r35.x
mul r35.w, r35.w, l(0.5)
div r35.w, r35.w, cb2[0].x
add r8.x, r8.x, r35.w
	
    mad r9.xy, |cb2[29].xyxx|, l(7.500000, 7.500000, 0.000000, 0.000000), |r7.xyxx|
    mov r9.z, l(1.000000)
    mad r6.xyz, r9.xyzx, r6.xxxx, -|r8.xyzx|
    dp3 r6.x, r6.xyzx, r6.xyzx
    sqrt r6.y, r6.x
    add r10.z, r3.y, r4.w
    mul r10.xy, r10.zzzz, l(0.500000, 0.500000, 0.000000, 0.000000)
    mul r10.xyz, r7.xyzx, r10.xyzx
	
// Adjust tile center 0 -DarkStarSword
add r35.w, r10.z, -r35.y
mul r35.w, r35.w, r35.x
mul r35.w, r35.w, l(0.5)
div r35.w, r35.w, cb2[0].x
add r10.x, r10.x, r35.w
	
    mad r11.xyz, r9.xyzx, r3.yyyy, -|r10.xyzx|
    dp3 r4.w, r11.xyzx, r11.xyzx
    sqrt r6.z, r4.w
    and r6.w, r4.x, l(0x0000ffff)
    firstbit_hi r7.w, r6.w
    ushr r9.w, r4.x, l(16)
    firstbit_lo r9.w, r9.w
    iadd r9.w, r9.w, l(16)
    add r11.x, -r3.z, r3.w
    iadd r7.w, -r7.w, l(32)
    utof r7.w, r7.w
    movc r6.w, r6.w, r7.w, l(0)
    mul r6.w, r11.x, r6.w
    mad r6.w, r6.w, l(0.031250), r3.z
    utof r7.w, r9.w
    mul r7.w, r11.x, r7.w
    mad r7.w, r7.w, l(0.031250), r3.z
    add r12.z, r3.z, r6.w
    mul r12.xy, r12.zzzz, l(0.500000, 0.500000, 0.000000, 0.000000)
    mul r12.xyz, r7.xyzx, r12.xyzx
	
// Adjust transparent tile center 0 -DarkStarSword
add r35.w, r12.z, -r35.y
mul r35.w, r35.w, r35.x
mul r35.w, r35.w, l(0.5)
div r35.w, r35.w, cb2[0].x
add r12.x, r12.x, r35.w
	
    mad r11.yzw, r9.xxyz, r6.wwww, -|r12.xxyz|
    dp3 r6.w, r11.yzwy, r11.yzwy
    sqrt r9.w, r6.w
    add r13.z, r3.w, r7.w
    mul r13.xy, r13.zzzz, l(0.500000, 0.500000, 0.000000, 0.000000)
    mul r13.xyz, r7.xyzx, r13.xyzx
	
// Adjust transparent tile center 1 -DarkStarSword
add r35.w, r13.z, -r35.y
mul r35.w, r35.w, r35.x
mul r35.w, r35.w, l(0.5)
div r35.w, r35.w, cb2[0].x
add r13.x, r13.x, r35.w
	
    mad r7.xyz, r9.xyzx, r7.wwww, -|r13.xyzx|
    dp3 r7.x, r7.xyzx, r7.xyzx
    sqrt r7.y, r7.x
    iadd r7.z, r0.z, l(63)
    ushr r7.z, r7.z, l(6)
    if_nz r0.w
      iadd r7.w, r0.w, l(63)
      ushr r7.w, r7.w, l(6)
      ishl r9.x, vThreadIDInGroupFlattened.x, l(2)
      uge r14.xyzw, vThreadIDInGroupFlattened.xxxx, l(1, 2, 4, 8)
      iadd r15.xyzw, r9.xxxx, l(-4, -8, -16, -32)
      uge r9.yz, vThreadIDInGroupFlattened.xxxx, l(0, 16, 32, 0)
      iadd r11.yz, r9.xxxx, l(0, -64, -128, 0)
      mov r8.w, l(1.000000)
      mov r10.w, l(1.000000)
      mov r12.w, l(1.000000)
      mov r13.w, l(1.000000)
      mov r11.w, l(0)
      mov r16.xyzw, l(0,0,0,0)
      loop
        uge r17.x, r16.w, r7.w
        breakc_nz r17.x
        bfi r17.x, l(26), l(6), r16.w, vThreadIDInGroupFlattened.x
        iadd r17.y, r0.y, r17.x
        ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r17.y, r17.y, l(0), t2.xxxx
        ult r17.x, r17.x, r0.w
        if_nz r17.x
          imul null, r17.x, r17.y, l(12)
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r18.xyzw, r17.x, l(0), t1.xyzw
          ubfe r17.xz, l(14, 0, 14, 0), l(14, 0, 14, 0), r18.xxyx
          f16tof32 r17.w, r18.z
          and r19.xyz, r18.wxyw, l(0x0000ffff, 0x00003fff, 0x00003fff, 0)
          ushr r18.xy, r18.wxww, l(16, 28, 0, 0)
		  
//Fix DSS		  
add r35.z, r17.w, -r35.y       // fTileMinZ - convergence
mul r35.z, r35.z, r35.x        // * separation
mul r35.z, r35.z, l(0.5)       // clip -> screen
div r35.z, r35.z, r17.w        // Perspective divide
utof r36.y, cb5[0].x           //   (float)viNumTiles.x
mul r35.z, r35.z, r36.y        // * (float)viNumTiles.x


round_ne r35.z, r35.z
ftoi r35.z, r35.z
if_nz r19.y
	iadd r19.y, r19.y, r35.z       // Adjust nTileMinX based on fTileMaxZ
endif
iadd r19.z, r19.z, |r35.z|     // Adjust nTileDeltaX to counter nTileMinX adjustment
		  
          imad r18.zw, r17.yyyy, l(0, 0, 12, 12), l(0, 0, 1, 3)
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r20.xyzw, r18.z, l(0), t1.xyzw
          imad r18.z, r17.y, l(12), l(2)
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r21.xyzw, r18.z, l(0), t1.xyzw
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r22.xyzw, r18.w, l(0), t1.xyzw
          imad r23.xyzw, r17.yyyy, l(12, 12, 12, 12), l(4, 5, 6, 7)
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r24.xz, r23.x, l(0), t1.xxyx
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r25.xyzw, r23.y, l(0), t1.xyzw
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r26.xyzw, r23.z, l(0), t1.xyzw
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r23.xyz, r23.w, l(0), t1.xyzx
          imad r27.xyzw, r17.yyyy, l(12, 12, 12, 12), l(8, 9, 10, 11)
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r28.xyz, r27.x, l(0), t1.xyzx
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r29.xyz, r27.y, l(0), t1.xyzx
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r27.xyz, r27.z, l(0), t1.xyzx
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r30.xyzw, r27.w, l(0), t1.xyzw
          dp4 r31.x, r20.xyzw, r8.xyzw
          dp4 r31.y, r21.xyzw, r8.xyzw
          dp4 r31.z, r22.xyzw, r8.xyzw
          ge r18.z, r31.y, l(0.000000)
          movc r32.xyzw, r18.zzzz, r25.xyzw, r26.xyzw
          mov r24.y, r32.x
          add r31.xzw, -r24.xxyz, |r31.xxyz|
          max r33.xyz, r31.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000)
          add r18.z, -|r31.y|, r32.x
          add r18.w, r32.y, r32.x
          add r18.w, -r18.w, |r31.y|
          ge r18.zw, r6.yyyy, r18.zzzw
          and r18.z, r18.w, r18.z
          dp2 r18.w, r32.zwzz, r31.xzxx
          ge r18.w, r6.y, r18.w
          and r18.z, r18.w, r18.z
          dp2 r18.w, r32.wzww, r31.zwzz
          ge r18.w, r6.y, r18.w
          and r18.z, r18.w, r18.z
          dp3 r18.w, r8.xyzx, r23.xyzx
          dp3 r19.w, r8.xyzx, r28.xyzx
          dp3 r23.w, r8.xyzx, r29.xyzx
          dp3 r27.w, r8.xyzx, r27.xyzx
          dp3 r28.w, r8.xyzx, r30.xyzx
          add r28.w, r30.w, r28.w
          max r18.w, r18.w, r19.w
          max r19.w, r23.w, r27.w
          max r18.w, r18.w, r19.w
          max r18.w, r28.w, r18.w
          dp3 r19.w, r33.xyzx, r33.xyzx
          ge r19.w, r6.x, r19.w
          ge r18.w, r6.y, r18.w
          dp4 r31.x, r20.xyzw, r10.xyzw
          dp4 r31.y, r21.xyzw, r10.xyzw
          dp4 r31.z, r22.xyzw, r10.xyzw
          ge r23.w, r31.y, l(0.000000)
          movc r32.xyzw, r23.wwww, r25.xyzw, r26.xyzw
          mov r24.w, r32.x
          add r31.xzw, -r24.xxwz, |r31.xxyz|
          max r33.xyz, r31.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000)
          add r23.w, -|r31.y|, r32.x
          ge r23.w, r6.z, r23.w
          add r27.w, r32.y, r32.x
          add r27.w, -r27.w, |r31.y|
          ge r27.w, r6.z, r27.w
          and r23.w, r23.w, r27.w
          dp2 r27.w, r32.zwzz, r31.xzxx
          ge r27.w, r6.z, r27.w
          and r23.w, r23.w, r27.w
          dp2 r27.w, r32.wzww, r31.zwzz
          ge r27.w, r6.z, r27.w
          and r23.w, r23.w, r27.w
          dp3 r27.w, r10.xyzx, r23.xyzx
          dp3 r28.w, r10.xyzx, r28.xyzx
          dp3 r29.w, r10.xyzx, r29.xyzx
          dp3 r31.x, r10.xyzx, r27.xyzx
          dp3 r31.y, r10.xyzx, r30.xyzx
          add r31.y, r30.w, r31.y
          max r27.w, r27.w, r28.w
          max r28.w, r29.w, r31.x
          max r27.w, r27.w, r28.w
          max r27.w, r31.y, r27.w
          dp3 r28.w, r33.xyzx, r33.xyzx
          ge r28.w, r4.w, r28.w
          ge r27.w, r6.z, r27.w
          or r19.w, r19.w, r28.w
          or r18.z, r18.z, r23.w
          or r18.w, r18.w, r27.w
          or r18.z, r18.z, r19.w
          iadd r19.y, -r19.y, vThreadGroupID.x
          ult r19.y, r19.y, r19.z
          iadd r17.x, -r17.x, vThreadGroupID.y
          ult r17.x, r17.x, r17.z
          and r17.x, r17.x, r19.y
          ge r17.z, r3.y, r17.w
          and r17.z, r17.z, r17.x
          or r18.z, r18.z, r18.w
          and r17.z, r17.z, r18.z
          dp4 r31.x, r20.xyzw, r12.xyzw
          dp4 r31.y, r21.xyzw, r12.xyzw
          dp4 r31.z, r22.xyzw, r12.xyzw
          ge r18.z, r31.y, l(0.000000)
          movc r32.xyzw, r18.zzzz, r25.xyzw, r26.xyzw
          mov r24.y, r32.x
          add r19.yzw, -r24.xxyz, |r31.xxyz|
          max r31.xzw, r19.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
          add r18.z, -|r31.y|, r32.x
          add r18.w, r32.y, r32.x
          add r18.w, -r18.w, |r31.y|
          ge r18.zw, r9.wwww, r18.zzzw
          and r18.z, r18.w, r18.z
          dp2 r18.w, r32.zwzz, r19.yzyy
          ge r18.w, r9.w, r18.w
          and r18.z, r18.w, r18.z
          dp2 r18.w, r32.wzww, r19.zwzz
          ge r18.w, r9.w, r18.w
          and r18.z, r18.w, r18.z
          dp3 r18.w, r12.xyzx, r23.xyzx
          dp3 r19.y, r12.xyzx, r28.xyzx
          dp3 r19.z, r12.xyzx, r29.xyzx
          dp3 r19.w, r12.xyzx, r27.xyzx
          dp3 r23.w, r12.xyzx, r30.xyzx
          add r23.w, r30.w, r23.w
          max r18.w, r18.w, r19.y
          max r19.y, r19.w, r19.z
          max r18.w, r18.w, r19.y
          max r18.w, r23.w, r18.w
          dp3 r19.y, r31.xzwx, r31.xzwx
          ge r19.y, r6.w, r19.y
          ge r18.w, r9.w, r18.w
          dp4 r20.x, r20.xyzw, r13.xyzw
          dp4 r20.y, r21.xyzw, r13.xyzw
          dp4 r20.z, r22.xyzw, r13.xyzw
          ge r19.z, r20.y, l(0.000000)
          movc r21.xyzw, r19.zzzz, r25.xyzw, r26.xyzw
          mov r24.w, r21.x
          add r20.xzw, -r24.xxwz, |r20.xxyz|
          max r22.xyz, r20.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000)
          add r19.z, -|r20.y|, r21.x
          add r19.w, r21.y, r21.x
          add r19.w, -r19.w, |r20.y|
          ge r19.zw, r7.yyyy, r19.zzzw
          and r19.z, r19.w, r19.z
          dp2 r19.w, r21.zwzz, r20.xzxx
          ge r19.w, r7.y, r19.w
          and r19.z, r19.w, r19.z
          dp2 r19.w, r21.wzww, r20.zwzz
          ge r19.w, r7.y, r19.w
          and r19.z, r19.w, r19.z
          dp3 r19.w, r13.xyzx, r23.xyzx
          dp3 r20.x, r13.xyzx, r28.xyzx
          dp3 r20.y, r13.xyzx, r29.xyzx
          dp3 r20.z, r13.xyzx, r27.xyzx
          dp3 r20.w, r13.xyzx, r30.xyzx
          add r20.w, r30.w, r20.w
          max r19.w, r19.w, r20.x
          max r20.x, r20.z, r20.y
          max r19.w, r19.w, r20.x
          max r19.w, r20.w, r19.w
          dp3 r20.x, r22.xyzx, r22.xyzx
          ge r20.x, r7.x, r20.x
          ge r19.w, r7.y, r19.w
          or r19.y, r19.y, r20.x
          or r18.zw, r18.zzzw, r19.zzzw
          or r18.z, r18.z, r19.y
          ge r17.w, r3.w, r17.w
          and r17.x, r17.w, r17.x
          or r17.w, r18.z, r18.w
          and r17.x, r17.w, r17.x
        else
          mov r19.x, l(0)
          mov r17.xz, l(0,0,0,0)
          mov r18.xy, l(0,0,0,0)
        endif
        sync_g_t
        and r17.w, r17.z, l(1)
        store_structured g2.x, l(0), r9.x, r17.w
        sync_g_t
        ld_structured r18.zw, l(0), r15.x, g2.xxxy
        and r17.w, r14.x, r18.z
        iadd r17.w, r17.w, r18.w
        store_structured g2.x, l(1), r9.x, r17.w
        sync_g_t
        ld_structured r17.w, l(1), r9.x, g2.xxxx
        ld_structured r18.z, l(1), r15.y, g2.xxxx
        and r18.z, r14.y, r18.z
        iadd r17.w, r17.w, r18.z
        store_structured g2.x, l(0), r9.x, r17.w
        sync_g_t
        ld_structured r17.w, l(0), r9.x, g2.xxxx
        ld_structured r18.z, l(0), r15.z, g2.xxxx
        and r18.z, r14.z, r18.z
        iadd r17.w, r17.w, r18.z
        store_structured g2.x, l(1), r9.x, r17.w
        sync_g_t
        ld_structured r17.w, l(1), r9.x, g2.xxxx
        ld_structured r18.z, l(1), r15.w, g2.xxxx
        and r18.z, r14.w, r18.z
        iadd r17.w, r17.w, r18.z
        store_structured g2.x, l(0), r9.x, r17.w
        sync_g_t
        ld_structured r17.w, l(0), r9.x, g2.xxxx
        ld_structured r18.z, l(0), r11.y, g2.xxxx
        and r18.z, r9.y, r18.z
        iadd r17.w, r17.w, r18.z
        store_structured g2.x, l(1), r9.x, r17.w
        sync_g_t
        ld_structured r17.w, l(1), r9.x, g2.xxxx
        ld_structured r18.z, l(1), r11.z, g2.xxxx
        and r18.z, r9.z, r18.z
        iadd r17.w, r17.w, r18.z
        store_structured g2.x, l(0), r9.x, r17.w
        sync_g_t
        ld_structured r17.w, l(0), l(252), g2.xxxx
        ld_structured r18.z, l(0), r9.x, g2.xxxx
        iadd r18.z, r16.x, r18.z
        iadd r18.z, r18.z, l(-1)
        ishl r18.w, l(1), r19.x
        bfi r18.x, l(1), r18.x, l(1), r18.w
        ult r18.w, r18.z, l(1023)
        and r17.z, r17.z, r18.w
        if_nz r17.z
          ishl r17.z, r18.y, l(12)
          iadd r17.z, r17.z, r17.y
          store_structured g0.x, r18.z, l(0), r17.z
          or r11.w, r11.w, r18.x
        endif
        sync_g_t
        and r17.z, r17.x, l(1)
        store_structured g2.x, l(0), r9.x, r17.z
        sync_g_t
        ld_structured r18.zw, l(0), r15.x, g2.xxxy
        and r17.z, r14.x, r18.z
        iadd r17.z, r17.z, r18.w
        store_structured g2.x, l(1), r9.x, r17.z
        sync_g_t
        ld_structured r17.z, l(1), r9.x, g2.xxxx
        ld_structured r18.z, l(1), r15.y, g2.xxxx
        and r18.z, r14.y, r18.z
        iadd r17.z, r17.z, r18.z
        store_structured g2.x, l(0), r9.x, r17.z
        sync_g_t
        ld_structured r17.z, l(0), r9.x, g2.xxxx
        ld_structured r18.z, l(0), r15.z, g2.xxxx
        and r18.z, r14.z, r18.z
        iadd r17.z, r17.z, r18.z
        store_structured g2.x, l(1), r9.x, r17.z
        sync_g_t
        ld_structured r17.z, l(1), r9.x, g2.xxxx
        ld_structured r18.z, l(1), r15.w, g2.xxxx
        and r18.z, r14.w, r18.z
        iadd r17.z, r17.z, r18.z
        store_structured g2.x, l(0), r9.x, r17.z
        sync_g_t
        ld_structured r17.z, l(0), r9.x, g2.xxxx
        ld_structured r18.z, l(0), r11.y, g2.xxxx
        and r18.z, r9.y, r18.z
        iadd r17.z, r17.z, r18.z
        store_structured g2.x, l(1), r9.x, r17.z
        sync_g_t
        ld_structured r17.z, l(1), r9.x, g2.xxxx
        ld_structured r18.z, l(1), r11.z, g2.xxxx
        and r18.z, r9.z, r18.z
        iadd r17.z, r17.z, r18.z
        store_structured g2.x, l(0), r9.x, r17.z
        sync_g_t
        ld_structured r17.z, l(0), l(252), g2.xxxx
        ld_structured r18.z, l(0), r9.x, g2.xxxx
        iadd r18.z, r16.y, r18.z
        iadd r18.z, r18.z, l(-1)
        ult r18.w, r18.z, l(127)
        and r17.x, r17.x, r18.w
        if_nz r17.x
          ishl r17.x, r18.y, l(12)
          iadd r17.x, r17.x, r17.y
          store_structured g1.x, r18.z, l(0), r17.x
          or r16.z, r16.z, r18.x
        endif
        iadd r16.xy, r16.xyxx, r17.wzww
        iadd r16.w, r16.w, l(1)
      endloop
      umin r6.xw, r16.xxxy, l(127, 0, 0, 127)
      ult r6.xw, l(0, 0, 0, 0), r6.xxxw
      or r4.w, r6.w, r6.x
      if_nz r4.w
        store_structured g3.x, vThreadIDInGroupFlattened.x, l(0), r11.w
        store_structured g4.x, vThreadIDInGroupFlattened.x, l(0), r16.z
        sync_g_t
        if_nz r4.y
          iadd r4.w, vThreadIDInGroupFlattened.x, l(32)
          ld_structured r6.x, r4.w, l(0), g3.xxxx
          or r6.x, r6.x, r11.w
          store_structured g3.x, vThreadIDInGroupFlattened.x, l(0), r6.x
          ld_structured r4.w, r4.w, l(0), g4.xxxx
          or r4.w, r4.w, r16.z
          store_structured g4.x, vThreadIDInGroupFlattened.x, l(0), r4.w
        endif
        sync_g_t
        ult r14.xyzw, vThreadIDInGroupFlattened.xxxx, l(16, 8, 4, 2)
        if_nz r14.x
          ld_structured r4.w, vThreadIDInGroupFlattened.x, l(0), g3.xxxx
          ld_structured r6.x, r5.x, l(0), g3.xxxx
          or r4.w, r4.w, r6.x
          store_structured g3.x, vThreadIDInGroupFlattened.x, l(0), r4.w
          ld_structured r4.w, vThreadIDInGroupFlattened.x, l(0), g4.xxxx
          ld_structured r6.x, r5.x, l(0), g4.xxxx
          or r4.w, r4.w, r6.x
          store_structured g4.x, vThreadIDInGroupFlattened.x, l(0), r4.w
        endif
        sync_g_t
        if_nz r14.y
          ld_structured r4.w, vThreadIDInGroupFlattened.x, l(0), g3.xxxx
          ld_structured r6.x, r5.y, l(0), g3.xxxx
          or r4.w, r4.w, r6.x
          store_structured g3.x, vThreadIDInGroupFlattened.x, l(0), r4.w
          ld_structured r4.w, vThreadIDInGroupFlattened.x, l(0), g4.xxxx
          ld_structured r6.x, r5.y, l(0), g4.xxxx
          or r4.w, r4.w, r6.x
          store_structured g4.x, vThreadIDInGroupFlattened.x, l(0), r4.w
        endif
        sync_g_t
        if_nz r14.z
          ld_structured r4.w, vThreadIDInGroupFlattened.x, l(0), g3.xxxx
          ld_structured r6.x, r5.z, l(0), g3.xxxx
          or r4.w, r4.w, r6.x
          store_structured g3.x, vThreadIDInGroupFlattened.x, l(0), r4.w
          ld_structured r4.w, vThreadIDInGroupFlattened.x, l(0), g4.xxxx
          ld_structured r6.x, r5.z, l(0), g4.xxxx
          or r4.w, r4.w, r6.x
          store_structured g4.x, vThreadIDInGroupFlattened.x, l(0), r4.w
        endif
        sync_g_t
        if_nz r14.w
          ld_structured r4.w, vThreadIDInGroupFlattened.x, l(0), g3.xxxx
          ld_structured r6.x, r5.w, l(0), g3.xxxx
          or r4.w, r4.w, r6.x
          store_structured g3.x, vThreadIDInGroupFlattened.x, l(0), r4.w
          ld_structured r4.w, vThreadIDInGroupFlattened.x, l(0), g4.xxxx
          ld_structured r6.x, r5.w, l(0), g4.xxxx
          or r4.w, r4.w, r6.x
          store_structured g4.x, vThreadIDInGroupFlattened.x, l(0), r4.w
        endif
        sync_g_t
        ult r4.w, vThreadIDInGroupFlattened.x, l(1)
        if_nz r4.w
          ld_structured r4.w, vThreadIDInGroupFlattened.x, l(0), g3.xxxx
          ld_structured r6.x, l(1), l(0), g3.xxxx
          or r4.w, r4.w, r6.x
          store_structured g3.x, vThreadIDInGroupFlattened.x, l(0), r4.w
          ld_structured r4.w, vThreadIDInGroupFlattened.x, l(0), g4.xxxx
          ld_structured r6.x, l(1), l(0), g4.xxxx
          or r4.w, r4.w, r6.x
          store_structured g4.x, vThreadIDInGroupFlattened.x, l(0), r4.w
        endif
        sync_g_t
        ld_structured r9.x, l(0), l(0), g3.xxxx
        ld_structured r9.y, l(0), l(0), g4.xxxx
      else
        mov r9.xy, l(0,0,0,0)
      endif
    else
      mov r16.xy, l(0,0,0,0)
      mov r9.xy, l(0,0,0,0)
    endif
    or r9.xy, r9.xyxx, l(1, 1, 0, 0)
    div r4.w, l(1.000000, 1.000000, 1.000000, 1.000000), -cb2[24].y
    mul r4.w, r4.w, l(0.999900)
    iadd r6.x, r0.z, r0.w
    ishl r6.w, vThreadIDInGroupFlattened.x, l(2)
    ge r4.w, r4.w, r3.x
    add r7.x, r11.x, l(9.999999960E-013)
    uge r11.xyzw, vThreadIDInGroupFlattened.xxxx, l(1, 2, 4, 8)
    iadd r14.xyzw, r6.wwww, l(-4, -8, -16, -32)
    uge r15.xy, vThreadIDInGroupFlattened.xxxx, l(16, 32, 0, 0)
    iadd r17.xyz, r6.wwww, l(-64, -128, 8, 0)
    mov r8.w, l(1.000000)
    mov r18.z, l(1.000000)
    mov r10.w, l(1.000000)
    mov r19.z, l(1.000000)
    mov r12.w, l(1.000000)
    mov r13.w, l(1.000000)
    mov r20.z, l(1.000000)
    mov r21.z, l(1.000000)
    mov r15.zw, r16.xxxy
    mov r7.w, l(0)
    loop
      uge r16.z, r7.w, r7.z
      breakc_nz r16.z
      bfi r16.z, l(26), l(6), r7.w, vThreadIDInGroupFlattened.x
      iadd r16.z, r0.w, r16.z
      iadd r16.w, r0.y, r16.z
      ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r16.w, r16.w, l(0), t2.xxxx
      ult r16.z, r16.z, r6.x
      if_nz r16.z
        imul null, r16.z, r16.w, l(12)
        ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r22.xyzw, r16.z, l(0), t1.xyzw
        and r23.xy, r22.xyxx, l(0x00003fff, 0x00003fff, 0, 0)
        ubfe r23.zw, l(0, 0, 14, 14), l(0, 0, 14, 14), r22.xxxy
        f16tof32 r16.z, r22.z
        ushr r22.xy, r22.xzxx, l(28, 16, 0, 0)
        f16tof32 r17.w, r22.y
		
add r35.z, r16.z, -r35.y       // fTileMinZ - convergence
add r35.w, r17.w, -r35.y       // fTileMaxZ - convergence
mul r35.zw, r35.xxzw, r35.xxxx // * separation
mul r35.zw, r35.xxzw, l(0.5)   // clip -> screen
div r35.z, r35.z, r16.z        // Perspective divide
div r35.w, r35.w, r17.w        // Perspective divide
utof r36.y, cb5[0].x           //   (float)viNumTiles.x
mul r35.zw, r35.xxzw, r36.yyyy // * (float)viNumTiles.x
	
round_ne r35.zw, r35.xxzw
ftoi r35.zw, r35.xxzw
if_nz r23.x
	iadd r23.x, r23.x, r35.w       // Adjust nTileMinX based on fTileMaxZ
endif
iadd r23.y, r23.y, |r35.w|     // Adjust nTileDeltaX to counter nTileMinX adjustment
		
        imad r22.yz, r16.wwww, l(0, 12, 12, 0), l(0, 1, 3, 0)
        ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r24.xyzw, r22.y, l(0), t1.xyzw
        imad r18.w, r16.w, l(12), l(2)
        ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r25.xyzw, r18.w, l(0), t1.xyzw
        ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r26.xyzw, r22.z, l(0), t1.xyzw
        imad r22.yz, r16.wwww, l(0, 12, 12, 0), l(0, 4, 5, 0)
        ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r27.xyzw, r22.y, l(0), t1.xyzw
        ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r28.xyz, r22.z, l(0), t1.xyzx
        dp4 r29.x, r24.xyzw, r8.xyzw
        dp4 r29.y, r25.xyzw, r8.xyzw
        dp4 r29.z, r26.xyzw, r8.xyzw
        add r30.xyz, -r27.xyzx, |r29.xyzx|
        max r30.xyz, r30.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
        dp3 r18.w, r30.xyzx, r30.xyzx
        add r19.w, r6.y, r27.w
        mul r19.w, r19.w, r19.w
        ge r18.w, r19.w, r18.w
        dp2 r19.w, r29.xyxx, r29.xyxx
        sqrt r18.y, r19.w
        mov r18.x, r29.z
        dp3 r18.x, r28.xyzx, r18.xyzx
        lt r18.x, r18.x, r6.y
        and r18.x, r18.x, r18.w
        dp4 r29.x, r24.xyzw, r10.xyzw
        dp4 r29.y, r25.xyzw, r10.xyzw
        dp4 r29.z, r26.xyzw, r10.xyzw
        add r30.xyz, -r27.xyzx, |r29.xyzx|
        max r30.xyz, r30.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
        dp3 r18.y, r30.xyzx, r30.xyzx
        add r18.w, r6.z, r27.w
        mul r18.w, r18.w, r18.w
        ge r18.y, r18.w, r18.y
        dp2 r18.w, r29.xyxx, r29.xyxx
        sqrt r19.y, r18.w
        mov r19.x, r29.z
        dp3 r18.w, r28.xyzx, r19.xyzx
        lt r18.w, r18.w, r6.z
        and r18.y, r18.w, r18.y
        or r18.x, r18.y, r18.x
        dp4 r29.x, r24.xyzw, r12.xyzw
        dp4 r29.y, r25.xyzw, r12.xyzw
        dp4 r29.z, r26.xyzw, r12.xyzw
        add r19.xyw, -r27.xyxz, |r29.xyxz|
        max r19.xyw, r19.xyxw, l(0.000000, 0.000000, 0.000000, 0.000000)
        dp3 r18.y, r19.xywx, r19.xywx
        add r18.w, r9.w, r27.w
        mul r18.w, r18.w, r18.w
        dp4 r24.x, r24.xyzw, r13.xyzw
        dp4 r24.y, r25.xyzw, r13.xyzw
        dp4 r24.z, r26.xyzw, r13.xyzw
        add r19.xyw, -r27.xyxz, |r24.xyxz|
        max r19.xyw, r19.xyxw, l(0.000000, 0.000000, 0.000000, 0.000000)
        dp3 r19.x, r19.xywx, r19.xywx
        add r19.y, r7.y, r27.w
        mul r19.y, r19.y, r19.y
        ge r18.y, r18.w, r18.y
        dp2 r18.w, r29.xyxx, r29.xyxx
        sqrt r20.y, r18.w
        mov r20.x, r29.z
        dp3 r18.w, r28.xyzx, r20.xyzx
        lt r18.w, r18.w, r9.w
        and r18.y, r18.w, r18.y
        ge r18.w, r19.y, r19.x
        dp2 r19.x, r24.xyxx, r24.xyxx
        sqrt r21.y, r19.x
        mov r21.x, r24.z
        dp3 r19.x, r28.xyzx, r21.xyzx
        lt r19.x, r19.x, r7.y
        and r18.w, r18.w, r19.x
        or r18.y, r18.w, r18.y
        iadd r18.w, -r23.x, vThreadGroupID.x
        ult r18.w, r18.w, r23.y
        iadd r19.x, -r23.z, vThreadGroupID.y
        ult r19.x, r19.x, r23.w
        and r18.w, r18.w, r19.x
        ge r19.x, r3.y, r16.z
        and r19.x, r18.w, r19.x
        ge r19.y, r17.w, r3.x
        and r19.x, r19.y, r19.x
        and r19.yw, r9.xxxy, r22.wwww
        ine r19.yw, r19.yyyw, l(0, 0, 0, 0)
        and r19.x, r19.y, r19.x
        and r18.x, r18.x, r19.x
        and r18.x, r4.w, r18.x
        add r19.x, -r3.z, r16.z
        div_sat r19.x, r19.x, r7.x
        mad r19.x, r19.x, l(32.000000), l(0.500000)
        ftou r19.x, r19.x
        add r19.y, -r3.z, r17.w
        div_sat r19.y, r19.y, r7.x
        mad r19.y, r19.y, l(32.000000), l(0.500000)
        ftou r19.y, r19.y
        umin r19.xy, r19.xyxx, l(31, 31, 0, 0)
        ushr r20.x, l(-1), r19.x
        iadd r19.x, r19.x, l(31)
        iadd r19.x, -r19.y, r19.x
        ishl r19.x, r20.x, r19.x
        iadd r19.y, -r19.y, l(31)
        ushr r19.x, r19.x, r19.y
        ge r16.z, r3.w, r16.z
        and r16.z, r16.z, r18.w
        ge r17.w, r17.w, r3.z
        and r16.z, r16.z, r17.w
        and r17.w, r4.x, r19.x
        ine r17.w, r17.w, l(0)
        and r16.z, r16.z, r17.w
        and r16.z, r18.y, r16.z
        and r16.z, r19.w, r16.z
      else
        mov r18.x, l(0)
        mov r16.z, l(0)
        mov r22.x, l(0)
      endif
      sync_g_t
      and r17.w, r18.x, l(1)
      store_structured g2.x, l(0), r6.w, r17.w
      sync_g_t
      ld_structured r18.yw, l(0), r14.x, g2.xxxy
      and r17.w, r11.x, r18.y
      iadd r17.w, r17.w, r18.w
      store_structured g2.x, l(1), r6.w, r17.w
      sync_g_t
      ld_structured r17.w, l(1), r6.w, g2.xxxx
      ld_structured r18.y, l(1), r14.y, g2.xxxx
      and r18.y, r11.y, r18.y
      iadd r17.w, r17.w, r18.y
      store_structured g2.x, l(0), r6.w, r17.w
      sync_g_t
      ld_structured r17.w, l(0), r6.w, g2.xxxx
      ld_structured r18.y, l(0), r14.z, g2.xxxx
      and r18.y, r11.z, r18.y
      iadd r17.w, r17.w, r18.y
      store_structured g2.x, l(1), r6.w, r17.w
      sync_g_t
      ld_structured r17.w, l(1), r6.w, g2.xxxx
      ld_structured r18.y, l(1), r14.w, g2.xxxx
      and r18.y, r11.w, r18.y
      iadd r17.w, r17.w, r18.y
      store_structured g2.x, l(0), r6.w, r17.w
      sync_g_t
      ld_structured r17.w, l(0), r6.w, g2.xxxx
      ld_structured r18.y, l(0), r17.x, g2.xxxx
      and r18.y, r15.x, r18.y
      iadd r17.w, r17.w, r18.y
      store_structured g2.x, l(1), r6.w, r17.w
      sync_g_t
      ld_structured r17.w, l(1), r6.w, g2.xxxx
      ld_structured r18.y, l(1), r17.y, g2.xxxx
      and r18.y, r15.y, r18.y
      iadd r17.w, r17.w, r18.y
      store_structured g2.x, l(0), r6.w, r17.w
      sync_g_t
      ld_structured r17.w, l(0), l(252), g2.xxxx
      ld_structured r18.y, l(0), r6.w, g2.xxxx
      iadd r18.y, r15.z, r18.y
      iadd r18.y, r18.y, l(-1)
      ult r18.w, r18.y, l(1023)
      and r18.x, r18.w, r18.x
      if_nz r18.x
        ishl r18.x, r22.x, l(12)
        iadd r18.x, r16.w, r18.x
        store_structured g0.x, r18.y, l(0), r18.x
      endif
      iadd r15.z, r15.z, r17.w
      sync_g_t
      and r17.w, r16.z, l(1)
      store_structured g2.x, l(0), r6.w, r17.w
      sync_g_t
      ld_structured r18.xy, l(0), r14.x, g2.xyxx
      and r17.w, r11.x, r18.x
      iadd r17.w, r17.w, r18.y
      store_structured g2.x, l(1), r6.w, r17.w
      sync_g_t
      ld_structured r17.w, l(1), r6.w, g2.xxxx
      ld_structured r18.x, l(1), r14.y, g2.xxxx
      and r18.x, r11.y, r18.x
      iadd r17.w, r17.w, r18.x
      store_structured g2.x, l(0), r6.w, r17.w
      sync_g_t
      ld_structured r17.w, l(0), r6.w, g2.xxxx
      ld_structured r18.x, l(0), r14.z, g2.xxxx
      and r18.x, r11.z, r18.x
      iadd r17.w, r17.w, r18.x
      store_structured g2.x, l(1), r6.w, r17.w
      sync_g_t
      ld_structured r17.w, l(1), r6.w, g2.xxxx
      ld_structured r18.x, l(1), r14.w, g2.xxxx
      and r18.x, r11.w, r18.x
      iadd r17.w, r17.w, r18.x
      store_structured g2.x, l(0), r6.w, r17.w
      sync_g_t
      ld_structured r17.w, l(0), r6.w, g2.xxxx
      ld_structured r18.x, l(0), r17.x, g2.xxxx
      and r18.x, r15.x, r18.x
      iadd r17.w, r17.w, r18.x
      store_structured g2.x, l(1), r6.w, r17.w
      sync_g_t
      ld_structured r17.w, l(1), r6.w, g2.xxxx
      ld_structured r18.x, l(1), r17.y, g2.xxxx
      and r18.x, r15.y, r18.x
      iadd r17.w, r17.w, r18.x
      store_structured g2.x, l(0), r6.w, r17.w
      sync_g_t
      ld_structured r17.w, l(0), l(252), g2.xxxx
      ld_structured r18.x, l(0), r6.w, g2.xxxx
      iadd r18.x, r15.w, r18.x
      iadd r18.x, r18.x, l(-1)
      ult r18.y, r18.x, l(1023)
      and r16.z, r16.z, r18.y
      if_nz r16.z
        ishl r16.z, r22.x, l(12)
        iadd r16.z, r16.z, r16.w
        store_structured g1.x, r18.x, l(0), r16.z
      endif
      iadd r15.w, r15.w, r17.w
      iadd r7.w, r7.w, l(1)
    endloop
    umin r3.zw, r15.zzzw, l(0, 0, 127, 127)
    sync_g_t
    if_z vThreadIDInGroupFlattened.x
      store_structured u0.x, r0.x, l(4), l(0)
      mov r9.z, l(0)
      store_structured u1.xy, r0.x, l(0), r9.zyzz
    endif
    ult r4.xw, vThreadIDInGroupFlattened.xxxx, r3.zzzw
    ld_structured r6.x, vThreadIDInGroupFlattened.x, l(0), g0.xxxx
    and r4.x, r4.x, r6.x
    store_structured u0.x, r0.x, r17.z, r4.x
    iadd r4.x, r6.w, l(256)
    iadd r6.x, vThreadIDInGroupFlattened.x, l(64)
    ult r3.zw, r6.xxxx, r3.zzzw
    ld_structured r6.y, r6.x, l(0), g0.xxxx
    and r3.z, r3.z, r6.y
    iadd r4.x, r4.x, l(8)
    store_structured u0.x, r0.x, r4.x, r3.z
    ld_structured r3.z, vThreadIDInGroupFlattened.x, l(0), g1.xxxx
    and r3.z, r3.z, r4.w
    store_structured u1.x, r0.x, r17.z, r3.z
    ld_structured r3.z, r6.x, l(0), g1.xxxx
    and r3.z, r3.z, r3.w
    store_structured u1.x, r0.x, r4.x, r3.z
  else
    add r3.z, -r3.x, r3.y
    mad r3.z, r3.z, l(0.500000), r3.x
    iadd r2.xyzw, r2.xyzw, -r3.zzzz
    iadd r1.xyzw, r1.xyzw, -r3.zzzz
    umax r1.xy, r1.ywyy, r1.xzxx
    umax r1.x, r1.y, r1.x
    umin r1.yz, r2.yywy, r2.xxzx
    umin r1.y, r1.z, r1.y
    store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r1.x
    store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r1.y
    sync_g_t
    if_nz r4.y
      iadd r1.z, vThreadIDInGroupFlattened.x, l(32)
      ld_structured r1.w, r1.z, l(0), g9.xxxx
      umax r1.x, r1.w, r1.x
      store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r1.x
      ld_structured r1.x, r1.z, l(0), g10.xxxx
      umin r1.x, r1.x, r1.y
      store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r1.x
    endif
    sync_g_t
    ld_structured r1.x, vThreadIDInGroupFlattened.x, l(0), g9.xxxx
    ld_structured r1.y, r5.x, l(0), g9.xxxx
    umax r1.x, r1.y, r1.x
    store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r1.x
    ld_structured r1.y, vThreadIDInGroupFlattened.x, l(0), g10.xxxx
    ld_structured r1.z, r5.x, l(0), g10.xxxx
    umin r1.y, r1.z, r1.y
    store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r1.y
    sync_g_t
    ld_structured r1.z, r5.y, l(0), g9.xxxx
    umax r1.x, r1.z, r1.x
    store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r1.x
    ld_structured r1.z, r5.y, l(0), g10.xxxx
    umin r1.y, r1.z, r1.y
    store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r1.y
    sync_g_t
    ld_structured r1.z, r5.z, l(0), g9.xxxx
    umax r1.x, r1.z, r1.x
    store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r1.x
    ld_structured r1.z, r5.z, l(0), g10.xxxx
    umin r1.y, r1.z, r1.y
    store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r1.y
    sync_g_t
    ld_structured r1.z, r5.w, l(0), g9.xxxx
    umax r1.x, r1.z, r1.x
    store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r1.x
    ld_structured r1.z, r5.w, l(0), g10.xxxx
    umin r1.y, r1.z, r1.y
    store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r1.y
    sync_g_t
    ld_structured r1.z, r4.z, l(0), g9.xxxx
    umax r1.x, r1.z, r1.x
    store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r1.x
    ld_structured r1.x, r4.z, l(0), g10.xxxx
    umin r1.x, r1.x, r1.y
    store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r1.x
    sync_g_t
    ld_structured r1.x, l(0), l(0), g9.xxxx
    ld_structured r1.y, l(0), l(0), g10.xxxx
    iadd r1.xy, r3.zzzz, r1.xyxx
    max r1.x, r3.x, r1.x
    ishl r1.zw, vThreadGroupID.xxxy, l(0, 0, 4, 4)
    utof r1.zw, r1.zzzw
    add r1.zw, r1.zzzw, l(0.000000, 0.000000, 7.500000, 7.500000)
    mad r2.xy, r1.zwzz, cb2[29].xyxx, cb2[29].zwzz
    add r6.z, r1.x, r3.x
    mov r2.z, l(-0.500000)
    mul r6.xy, r6.zzzz, l(0.500000, 0.500000, 0.000000, 0.000000)
    mul r6.xyz, r2.xyzx, r6.xyzx
	
// Adjust tile center 0 -DarkStarSword
add r35.w, r6.z, -r35.y
mul r35.w, r35.w, r35.x
mul r35.w, r35.w, l(0.5)
div r35.w, r35.w, cb2[0].x
add r6.x, r6.x, r35.w
	
    mad r7.xy, |cb2[29].xyxx|, l(7.500000, 7.500000, 0.000000, 0.000000), |r2.xyxx|
    mov r7.z, l(1.000000)
    mad r1.xzw, r7.xxyz, r1.xxxx, -|r6.xxyz|
    dp3 r1.x, r1.xzwx, r1.xzwx
    add r8.z, r3.y, r1.y
    mul r8.xy, r8.zzzz, l(0.500000, 0.500000, 0.000000, 0.000000)
    mul r2.xyz, r2.xyzx, r8.xyzx
	
// Adjust tile center 1 -DarkStarSword
add r35.w, r2.z, -r35.y
mul r35.w, r35.w, r35.x
mul r35.w, r35.w, l(0.5)
div r35.w, r35.w, cb2[0].x
add r2.x, r2.x, r35.w
	
    mad r4.xzw, r7.xxyz, r3.yyyy, -|r2.xxyz|
    dp3 r1.y, r4.xzwx, r4.xzwx
    sqrt r1.zw, r1.xxxy
    iadd r3.z, r0.z, l(63)
    ushr r3.z, r3.z, l(6)
    if_nz r0.w
      iadd r3.w, r0.w, l(63)
      ushr r3.w, r3.w, l(6)
      ishl r4.x, vThreadIDInGroupFlattened.x, l(2)
      uge r7.xyzw, vThreadIDInGroupFlattened.xxxx, l(1, 2, 4, 8)
      iadd r8.xyzw, r4.xxxx, l(-4, -8, -16, -32)
      uge r4.zw, vThreadIDInGroupFlattened.xxxx, l(0, 0, 16, 32)
      iadd r9.xy, r4.xxxx, l(-64, -128, 0, 0)
      mov r6.w, l(1.000000)
      mov r2.w, l(1.000000)
      mov r9.zw, l(0,0,0,0)
      mov r10.xy, l(0,0,0,0)
      loop
        uge r10.z, r10.y, r3.w
        breakc_nz r10.z
        bfi r10.z, l(26), l(6), r10.y, vThreadIDInGroupFlattened.x
        iadd r10.w, r0.y, r10.z
        ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r10.w, r10.w, l(0), t2.xxxx
        ult r10.z, r10.z, r0.w
        if_nz r10.z
          imul null, r10.z, r10.w, l(12)
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r11.xyzw, r10.z, l(0), t1.xyzw
          ubfe r12.xy, l(14, 14, 0, 0), l(14, 14, 0, 0), r11.xyxx
          f16tof32 r10.z, r11.z
          and r13.xyz, r11.wxyw, l(0x0000ffff, 0x00003fff, 0x00003fff, 0)
          ushr r11.xy, r11.wxww, l(16, 28, 0, 0)
		  
add r35.z, r10.z, -r35.y       // fTileMinZ - convergence
mul r35.z, r35.z, r35.x        // * separation
mul r35.z, r35.z, l(0.5)       // clip -> screen
div r35.z, r35.z, r10.z        // Perspective divide
utof r36.y, cb5[0].x           //   (float)viNumTiles.x
mul r35.z, r35.z, r36.y        // * (float)viNumTiles.x

round_ne r35.z, r35.z
ftoi r35.z, r35.z
if_nz r13.y
	iadd r13.y, r13.y, r35.z       // Adjust nTileMinX based on fTileMaxZ
endif
iadd r13.z, r13.z, |r35.z|     // Adjust nTileDeltaX to counter nTileMinX adjustment
		  
          imad r11.zw, r10.wwww, l(0, 0, 12, 12), l(0, 0, 1, 3)
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r14.xyzw, r11.z, l(0), t1.xyzw
          imad r11.z, r10.w, l(12), l(2)
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r15.xyzw, r11.z, l(0), t1.xyzw
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r16.xyzw, r11.w, l(0), t1.xyzw
          imad r17.xyzw, r10.wwww, l(12, 12, 12, 12), l(4, 5, 6, 7)
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r18.xy, r17.x, l(0), t1.xyxx
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r19.xyzw, r17.y, l(0), t1.xyzw
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r20.xyzw, r17.z, l(0), t1.xyzw
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r17.xyz, r17.w, l(0), t1.xyzx
          imad r21.xyzw, r10.wwww, l(12, 12, 12, 12), l(8, 9, 10, 11)
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r22.xyz, r21.x, l(0), t1.xyzx
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r23.xyz, r21.y, l(0), t1.xyzx
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r21.xyz, r21.z, l(0), t1.xyzx
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r24.xyzw, r21.w, l(0), t1.xyzw
          dp4 r25.x, r14.xyzw, r6.xyzw
          dp4 r25.y, r15.xyzw, r6.xyzw
          dp4 r25.z, r16.xyzw, r6.xyzw
          ge r11.z, r25.y, l(0.000000)
          movc r26.xyzw, r11.zzzz, r19.xyzw, r20.xyzw
          mov r18.z, r26.x
          add r25.xzw, -r18.xxzy, |r25.xxyz|
          max r27.xyz, r25.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000)
          add r11.z, -|r25.y|, r26.x
          add r11.w, r26.y, r26.x
          add r11.w, -r11.w, |r25.y|
          ge r11.zw, r1.zzzz, r11.zzzw
          and r11.z, r11.w, r11.z
          dp2 r11.w, r26.zwzz, r25.xzxx
          ge r11.w, r1.z, r11.w
          and r11.z, r11.w, r11.z
          dp2 r11.w, r26.wzww, r25.zwzz
          ge r11.w, r1.z, r11.w
          and r11.z, r11.w, r11.z
          dp3 r11.w, r6.xyzx, r17.xyzx
          dp3 r12.z, r6.xyzx, r22.xyzx
          dp3 r12.w, r6.xyzx, r23.xyzx
          dp3 r13.w, r6.xyzx, r21.xyzx
          dp3 r17.w, r6.xyzx, r24.xyzx
          add r17.w, r24.w, r17.w
          max r11.w, r11.w, r12.z
          max r12.z, r12.w, r13.w
          max r11.w, r11.w, r12.z
          max r11.w, r17.w, r11.w
          dp3 r12.z, r27.xyzx, r27.xyzx
          ge r11.w, r1.z, r11.w
          dp4 r14.x, r14.xyzw, r2.xyzw
          dp4 r14.y, r15.xyzw, r2.xyzw
          dp4 r14.z, r16.xyzw, r2.xyzw
          ge r12.w, r14.y, l(0.000000)
          movc r15.xyzw, r12.wwww, r19.xyzw, r20.xyzw
          mov r18.w, r15.x
          add r14.xzw, -r18.xxwy, |r14.xxyz|
          max r16.xyz, r14.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000)
          add r12.w, -|r14.y|, r15.x
          ge r12.zw, r1.xxxw, r12.zzzw
          add r13.w, r15.y, r15.x
          add r13.w, -r13.w, |r14.y|
          ge r13.w, r1.w, r13.w
          and r12.w, r12.w, r13.w
          dp2 r13.w, r15.zwzz, r14.xzxx
          ge r13.w, r1.w, r13.w
          and r12.w, r12.w, r13.w
          dp2 r13.w, r15.wzww, r14.zwzz
          ge r13.w, r1.w, r13.w
          and r12.w, r12.w, r13.w
          dp3 r13.w, r2.xyzx, r17.xyzx
          dp3 r14.x, r2.xyzx, r22.xyzx
          dp3 r14.y, r2.xyzx, r23.xyzx
          dp3 r14.z, r2.xyzx, r21.xyzx
          dp3 r14.w, r2.xyzx, r24.xyzx
          add r14.w, r24.w, r14.w
          max r13.w, r13.w, r14.x
          max r14.x, r14.z, r14.y
          max r13.w, r13.w, r14.x
          max r13.w, r14.w, r13.w
          dp3 r14.x, r16.xyzx, r16.xyzx
          ge r14.x, r1.y, r14.x
          ge r13.w, r1.w, r13.w
          or r12.z, r12.z, r14.x
          or r11.z, r11.z, r12.w
          or r11.w, r11.w, r13.w
          or r11.z, r11.z, r12.z
          iadd r12.z, -r13.y, vThreadGroupID.x
          ult r12.z, r12.z, r13.z
          iadd r12.x, -r12.x, vThreadGroupID.y
          ult r12.x, r12.x, r12.y
          and r12.x, r12.x, r12.z
          ge r10.z, r3.y, r10.z
          and r10.z, r10.z, r12.x
          or r11.z, r11.z, r11.w
          and r10.z, r10.z, r11.z
        else
          mov r13.x, l(0)
          mov r10.z, l(0)
          mov r11.xy, l(0,0,0,0)
        endif
        sync_g_t
        and r11.z, r10.z, l(1)
        store_structured g2.x, l(0), r4.x, r11.z
        sync_g_t
        ld_structured r11.zw, l(0), r8.x, g2.xxxy
        and r11.z, r7.x, r11.z
        iadd r11.z, r11.z, r11.w
        store_structured g2.x, l(1), r4.x, r11.z
        sync_g_t
        ld_structured r11.z, l(1), r4.x, g2.xxxx
        ld_structured r11.w, l(1), r8.y, g2.xxxx
        and r11.w, r7.y, r11.w
        iadd r11.z, r11.w, r11.z
        store_structured g2.x, l(0), r4.x, r11.z
        sync_g_t
        ld_structured r11.z, l(0), r4.x, g2.xxxx
        ld_structured r11.w, l(0), r8.z, g2.xxxx
        and r11.w, r7.z, r11.w
        iadd r11.z, r11.w, r11.z
        store_structured g2.x, l(1), r4.x, r11.z
        sync_g_t
        ld_structured r11.z, l(1), r4.x, g2.xxxx
        ld_structured r11.w, l(1), r8.w, g2.xxxx
        and r11.w, r7.w, r11.w
        iadd r11.z, r11.w, r11.z
        store_structured g2.x, l(0), r4.x, r11.z
        sync_g_t
        ld_structured r11.z, l(0), r4.x, g2.xxxx
        ld_structured r11.w, l(0), r9.x, g2.xxxx
        and r11.w, r4.z, r11.w
        iadd r11.z, r11.w, r11.z
        store_structured g2.x, l(1), r4.x, r11.z
        sync_g_t
        ld_structured r11.z, l(1), r4.x, g2.xxxx
        ld_structured r11.w, l(1), r9.y, g2.xxxx
        and r11.w, r4.w, r11.w
        iadd r11.z, r11.w, r11.z
        store_structured g2.x, l(0), r4.x, r11.z
        sync_g_t
        ld_structured r11.z, l(0), l(252), g2.xxxx
        ld_structured r11.w, l(0), r4.x, g2.xxxx
        iadd r11.w, r9.z, r11.w
        iadd r11.w, r11.w, l(-1)
        ult r12.x, r11.w, l(1023)
        and r10.z, r10.z, r12.x
        if_nz r10.z
          ishl r10.z, l(1), r13.x
          bfi r10.z, l(1), r11.x, l(1), r10.z
          ishl r11.x, r11.y, l(12)
          iadd r10.w, r10.w, r11.x
          store_structured g0.x, r11.w, l(0), r10.w
          or r10.x, r10.z, r10.x
        endif
        sync_g_t
        store_structured g2.x, l(0), r4.x, l(0)
        sync_g_t
        ld_structured r10.z, l(0), r8.x, g2.xxxx
        and r10.z, r7.x, r10.z
        store_structured g2.x, l(1), r4.x, r10.z
        sync_g_t
        ld_structured r10.z, l(1), r4.x, g2.xxxx
        ld_structured r10.w, l(1), r8.y, g2.xxxx
        and r10.w, r7.y, r10.w
        iadd r10.z, r10.w, r10.z
        store_structured g2.x, l(0), r4.x, r10.z
        sync_g_t
        ld_structured r10.z, l(0), r4.x, g2.xxxx
        ld_structured r10.w, l(0), r8.z, g2.xxxx
        and r10.w, r7.z, r10.w
        iadd r10.z, r10.w, r10.z
        store_structured g2.x, l(1), r4.x, r10.z
        sync_g_t
        ld_structured r10.z, l(1), r4.x, g2.xxxx
        ld_structured r10.w, l(1), r8.w, g2.xxxx
        and r10.w, r7.w, r10.w
        iadd r10.z, r10.w, r10.z
        store_structured g2.x, l(0), r4.x, r10.z
        sync_g_t
        ld_structured r10.z, l(0), r4.x, g2.xxxx
        ld_structured r10.w, l(0), r9.x, g2.xxxx
        and r10.w, r4.z, r10.w
        iadd r10.z, r10.w, r10.z
        store_structured g2.x, l(1), r4.x, r10.z
        sync_g_t
        ld_structured r10.z, l(1), r4.x, g2.xxxx
        ld_structured r10.w, l(1), r9.y, g2.xxxx
        and r10.w, r4.w, r10.w
        iadd r10.z, r10.w, r10.z
        store_structured g2.x, l(0), r4.x, r10.z
        sync_g_t
        ld_structured r10.z, l(0), l(252), g2.xxxx
        iadd r9.z, r9.z, r11.z
        iadd r9.w, r9.w, r10.z
        iadd r10.y, r10.y, l(1)
      endloop
      umin r1.xy, r9.zwzz, l(127, 127, 0, 0)
      ult r1.xy, l(0, 0, 0, 0), r1.xyxx
      or r1.x, r1.y, r1.x
      if_nz r1.x
        store_structured g3.x, vThreadIDInGroupFlattened.x, l(0), r10.x
        sync_g_t
        if_nz r4.y
          iadd r1.x, vThreadIDInGroupFlattened.x, l(32)
          ld_structured r1.x, r1.x, l(0), g3.xxxx
          or r1.x, r1.x, r10.x
          store_structured g3.x, vThreadIDInGroupFlattened.x, l(0), r1.x
        endif
        sync_g_t
        ult r4.xyzw, vThreadIDInGroupFlattened.xxxx, l(16, 8, 4, 2)
        if_nz r4.x
          ld_structured r1.x, vThreadIDInGroupFlattened.x, l(0), g3.xxxx
          ld_structured r1.y, r5.x, l(0), g3.xxxx
          or r1.x, r1.y, r1.x
          store_structured g3.x, vThreadIDInGroupFlattened.x, l(0), r1.x
        endif
        sync_g_t
        if_nz r4.y
          ld_structured r1.x, vThreadIDInGroupFlattened.x, l(0), g3.xxxx
          ld_structured r1.y, r5.y, l(0), g3.xxxx
          or r1.x, r1.y, r1.x
          store_structured g3.x, vThreadIDInGroupFlattened.x, l(0), r1.x
        endif
        sync_g_t
        if_nz r4.z
          ld_structured r1.x, vThreadIDInGroupFlattened.x, l(0), g3.xxxx
          ld_structured r1.y, r5.z, l(0), g3.xxxx
          or r1.x, r1.y, r1.x
          store_structured g3.x, vThreadIDInGroupFlattened.x, l(0), r1.x
        endif
        sync_g_t
        if_nz r4.w
          ld_structured r1.x, vThreadIDInGroupFlattened.x, l(0), g3.xxxx
          ld_structured r1.y, r5.w, l(0), g3.xxxx
          or r1.x, r1.y, r1.x
          store_structured g3.x, vThreadIDInGroupFlattened.x, l(0), r1.x
        endif
        sync_g_t
        ult r1.x, vThreadIDInGroupFlattened.x, l(1)
        if_nz r1.x
          ld_structured r1.x, vThreadIDInGroupFlattened.x, l(0), g3.xxxx
          ld_structured r1.y, l(1), l(0), g3.xxxx
          or r1.x, r1.y, r1.x
          store_structured g3.x, vThreadIDInGroupFlattened.x, l(0), r1.x
        endif
        sync_g_t
        ld_structured r1.x, l(0), l(0), g3.xxxx
      else
        mov r1.x, l(0)
      endif
    else
      mov r9.z, l(0)
      mov r1.x, l(0)
    endif
    or r1.x, r1.x, l(1)
    div r1.y, l(1.000000, 1.000000, 1.000000, 1.000000), -cb2[24].y
    mul r1.y, r1.y, l(0.999900)
    iadd r0.z, r0.z, r0.w
    ishl r3.w, vThreadIDInGroupFlattened.x, l(2)
    ge r1.y, r1.y, r3.x
    uge r4.xyzw, vThreadIDInGroupFlattened.xxxx, l(1, 2, 4, 8)
    iadd r5.xyzw, r3.wwww, l(-4, -8, -16, -32)
    uge r7.xy, vThreadIDInGroupFlattened.xxxx, l(16, 32, 0, 0)
    iadd r8.xyz, r3.wwww, l(-64, -128, 8, 0)
    mov r6.w, l(1.000000)
    mov r10.z, l(1.000000)
    mov r2.w, l(1.000000)
    mov r11.z, l(1.000000)
    mov r7.z, r9.z
    mov r7.w, l(0)
    loop
      uge r8.w, r7.w, r3.z
      breakc_nz r8.w
      bfi r8.w, l(26), l(6), r7.w, vThreadIDInGroupFlattened.x
      iadd r8.w, r0.w, r8.w
      iadd r9.x, r0.y, r8.w
      ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.x, r9.x, l(0), t2.xxxx
      ult r8.w, r8.w, r0.z
      if_nz r8.w
        imul null, r8.w, r9.x, l(12)
        ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r12.xyzw, r8.w, l(0), t1.xyzw
        and r9.yw, r12.xxxy, l(0, 0x00003fff, 0, 0x00003fff)
        ubfe r13.xy, l(14, 14, 0, 0), l(14, 14, 0, 0), r12.xyxx
        f16tof32 r8.w, r12.z
        ushr r12.xy, r12.xzxx, l(28, 16, 0, 0)
        f16tof32 r10.w, r12.y
		
add r35.z, r8.w, -r35.y       // fTileMinZ - convergence
add r35.w, r10.w, -r35.y       // fTileMaxZ - convergence
mul r35.zw, r35.xxzw, r35.xxxx // * separation
mul r35.zw, r35.xxzw, l(0.5)   // clip -> screen
div r35.z, r35.z, r8.w        // Perspective divide
div r35.w, r35.w, r10.w        // Perspective divide
utof r36.y, cb5[0].x           //   (float)viNumTiles.x
mul r35.zw, r35.xxzw, r36.yyyy // * (float)viNumTiles.x

round_ne r35.zw, r35.xxzw
ftoi r35.zw, r35.xxzw
if_nz r9.y
	iadd r9.y, r9.y, r35.w       // Adjust nTileMinX based on fTileMaxZ
endif
iadd r9.w, r9.w, |r35.w|     // Adjust nTileDeltaX to counter nTileMinX adjustment
		
        imad r12.yz, r9.xxxx, l(0, 12, 12, 0), l(0, 1, 3, 0)
        ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r14.xyzw, r12.y, l(0), t1.xyzw
        imad r11.w, r9.x, l(12), l(2)
        ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r15.xyzw, r11.w, l(0), t1.xyzw
        ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r16.xyzw, r12.z, l(0), t1.xyzw
        imad r12.yz, r9.xxxx, l(0, 12, 12, 0), l(0, 4, 5, 0)
        ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r17.xyzw, r12.y, l(0), t1.xyzw
        ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r18.xyz, r12.z, l(0), t1.xyzx
        dp4 r19.x, r14.xyzw, r6.xyzw
        dp4 r19.y, r15.xyzw, r6.xyzw
        dp4 r19.z, r16.xyzw, r6.xyzw
        add r20.xyz, -r17.xyzx, |r19.xyzx|
        max r20.xyz, r20.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
        dp3 r11.w, r20.xyzx, r20.xyzx
        add r12.y, r1.z, r17.w
        mul r12.y, r12.y, r12.y
        ge r11.w, r12.y, r11.w
        dp2 r12.y, r19.xyxx, r19.xyxx
        sqrt r10.y, r12.y
        mov r10.x, r19.z
        dp3 r10.x, r18.xyzx, r10.xyzx
        lt r10.x, r10.x, r1.z
        and r10.x, r10.x, r11.w
        dp4 r14.x, r14.xyzw, r2.xyzw
        dp4 r14.y, r15.xyzw, r2.xyzw
        dp4 r14.z, r16.xyzw, r2.xyzw
        add r15.xyz, -r17.xyzx, |r14.xyzx|
        max r15.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
        dp3 r10.y, r15.xyzx, r15.xyzx
        add r11.w, r1.w, r17.w
        mul r11.w, r11.w, r11.w
        ge r10.y, r11.w, r10.y
        dp2 r11.w, r14.xyxx, r14.xyxx
        sqrt r11.y, r11.w
        mov r11.x, r14.z
        dp3 r11.x, r18.xyzx, r11.xyzx
        lt r11.x, r11.x, r1.w
        and r10.y, r10.y, r11.x
        or r10.x, r10.y, r10.x
        iadd r9.y, -r9.y, vThreadGroupID.x
        ult r9.y, r9.y, r9.w
        iadd r9.w, -r13.x, vThreadGroupID.y
        ult r9.w, r9.w, r13.y
        and r9.y, r9.w, r9.y
        ge r8.w, r3.y, r8.w
        and r8.w, r8.w, r9.y
        ge r9.y, r10.w, r3.x
        and r8.w, r8.w, r9.y
        and r9.y, r1.x, r12.w
        ine r9.y, r9.y, l(0)
        and r8.w, r8.w, r9.y
        and r8.w, r10.x, r8.w
        and r8.w, r1.y, r8.w
      else
        mov r8.w, l(0)
        mov r12.x, l(0)
      endif
      sync_g_t
      and r9.y, r8.w, l(1)
      store_structured g2.x, l(0), r3.w, r9.y
      sync_g_t
      ld_structured r9.yw, l(0), r5.x, g2.xxxy
      and r9.y, r4.x, r9.y
      iadd r9.y, r9.y, r9.w
      store_structured g2.x, l(1), r3.w, r9.y
      sync_g_t
      ld_structured r9.y, l(1), r3.w, g2.xxxx
      ld_structured r9.w, l(1), r5.y, g2.xxxx
      and r9.w, r4.y, r9.w
      iadd r9.y, r9.w, r9.y
      store_structured g2.x, l(0), r3.w, r9.y
      sync_g_t
      ld_structured r9.y, l(0), r3.w, g2.xxxx
      ld_structured r9.w, l(0), r5.z, g2.xxxx
      and r9.w, r4.z, r9.w
      iadd r9.y, r9.w, r9.y
      store_structured g2.x, l(1), r3.w, r9.y
      sync_g_t
      ld_structured r9.y, l(1), r3.w, g2.xxxx
      ld_structured r9.w, l(1), r5.w, g2.xxxx
      and r9.w, r4.w, r9.w
      iadd r9.y, r9.w, r9.y
      store_structured g2.x, l(0), r3.w, r9.y
      sync_g_t
      ld_structured r9.y, l(0), r3.w, g2.xxxx
      ld_structured r9.w, l(0), r8.x, g2.xxxx
      and r9.w, r7.x, r9.w
      iadd r9.y, r9.w, r9.y
      store_structured g2.x, l(1), r3.w, r9.y
      sync_g_t
      ld_structured r9.y, l(1), r3.w, g2.xxxx
      ld_structured r9.w, l(1), r8.y, g2.xxxx
      and r9.w, r7.y, r9.w
      iadd r9.y, r9.w, r9.y
      store_structured g2.x, l(0), r3.w, r9.y
      sync_g_t
      ld_structured r9.y, l(0), l(252), g2.xxxx
      ld_structured r9.w, l(0), r3.w, g2.xxxx
      iadd r9.w, r7.z, r9.w
      iadd r9.w, r9.w, l(-1)
      ult r10.x, r9.w, l(1023)
      and r8.w, r8.w, r10.x
      if_nz r8.w
        ishl r8.w, r12.x, l(12)
        iadd r8.w, r8.w, r9.x
        store_structured g0.x, r9.w, l(0), r8.w
      endif
      iadd r7.z, r7.z, r9.y
      iadd r7.w, r7.w, l(1)
    endloop
    umin r0.y, r7.z, l(127)
    sync_g_t
    if_z vThreadIDInGroupFlattened.x
      store_structured u0.x, r0.x, l(4), l(0)
      store_structured u1.xy, r0.x, l(0), l(0,1,0,0)
    endif
    ult r0.z, vThreadIDInGroupFlattened.x, r0.y
    ld_structured r0.w, vThreadIDInGroupFlattened.x, l(0), g0.xxxx
    and r0.z, r0.w, r0.z
    store_structured u0.x, r0.x, r8.z, r0.z
    iadd r0.z, r3.w, l(256)
    iadd r0.w, vThreadIDInGroupFlattened.x, l(64)
    ult r0.y, r0.w, r0.y
    ld_structured r0.w, r0.w, l(0), g0.xxxx
    and r0.y, r0.w, r0.y
    iadd r0.z, r0.z, l(8)
    store_structured u0.x, r0.x, r0.z, r0.y
    store_structured u1.x, r0.x, r8.z, l(0)
    store_structured u1.x, r0.x, r0.z, l(0)
  endif
endif
ret
// Approximately 1443 instruction slots used
