// 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
// srvLightModelTexture              texture  float4          2d    3        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) t3
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 35
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_tgsm_structured g11, 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) r2.xyzw, r1.xyxx, t0.xyzw, s0.x
  gather4_indexable(texture2d)(float,float,float,float) r1.xyzw, r1.xyxx, t3.xyzw, s0.w
  ne r3.xyzw, r2.wzxy, l(0.000000, 0.000000, 0.000000, 0.000000)
  and r3.xyzw, r3.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
  mul r1.xyzw, r1.wzxy, r3.xyzw
  lt r3.xyzw, r1.xyzw, l(0.166666672, 0.166666672, 0.166666672, 0.166666672)
  or r3.x, r3.y, r3.x
  or r3.x, r3.z, r3.x
  or r3.x, r3.w, r3.x
  ge r4.xyzw, r1.xyzw, l(0.166666672, 0.166666672, 0.166666672, 0.166666672)
  lt r5.xyzw, r1.xyzw, l(0.500000, 0.500000, 0.500000, 0.500000)
  and r4.xyzw, r4.xyzw, r5.xyzw
  or r3.y, r4.y, r4.x
  or r3.y, r4.z, r3.y
  or r3.y, r4.w, r3.y
  ge r1.xyzw, r1.xyzw, l(0.500000, 0.500000, 0.500000, 0.500000)
  or r1.x, r1.y, r1.x
  or r1.x, r1.z, r1.x
  or r1.x, r1.w, r1.x
  mad r4.xyzw, cb2[24].zzzz, r2.wzxy, -cb2[24].yyyy
  div r4.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000), r4.xyzw
  lt r2.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000), r2.wzxy
  and r2.xyzw, r2.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
  mul r2.xyzw, r4.xyzw, r2.xyzw
  min r1.yz, r4.yywy, r4.xxzx
  min r1.y, r1.z, r1.y
  max r1.zw, r2.yyyw, r2.xxxz
  max r1.z, r1.w, r1.z
  if_z cb5[1].w
    mov r5.xy, vThreadGroupID.xyxx
    mov r5.zw, l(0,0,0,0)
    ld_indexable(texture2d)(float,float,float,float) r3.zw, r5.xyww, t4.zwxy
    ld_indexable(texture2d)(uint,uint,uint,uint) r1.w, r5.xyzw, t5.yzwx
  else
    mov r3.zw, l(0,0,10000.000000,-10000.000000)
    mov r1.w, l(-1)
  endif
  store_structured g5.x, vThreadIDInGroupFlattened.x, l(0), r1.y
  store_structured g6.x, vThreadIDInGroupFlattened.x, l(0), r1.z
  store_structured g7.x, vThreadIDInGroupFlattened.x, l(0), r3.z
  store_structured g8.x, vThreadIDInGroupFlattened.x, l(0), r3.w
  sync_g_t
  ult r5.x, vThreadIDInGroupFlattened.x, l(32)
  if_nz r5.x
    iadd r5.y, vThreadIDInGroupFlattened.x, l(32)
    ld_structured r5.z, r5.y, l(0), g5.xxxx
    min r1.y, r1.y, r5.z
    store_structured g5.x, vThreadIDInGroupFlattened.x, l(0), r1.y
    ld_structured r1.y, r5.y, l(0), g6.xxxx
    max r1.y, r1.y, r1.z
    store_structured g6.x, vThreadIDInGroupFlattened.x, l(0), r1.y
    ld_structured r1.y, r5.y, l(0), g7.xxxx
    min r1.y, r1.y, r3.z
    store_structured g7.x, vThreadIDInGroupFlattened.x, l(0), r1.y
    ld_structured r1.y, r5.y, l(0), g8.xxxx
    max r1.y, r1.y, r3.w
    store_structured g8.x, vThreadIDInGroupFlattened.x, l(0), r1.y
  endif
  sync_g_t
  ld_structured r1.y, vThreadIDInGroupFlattened.x, l(0), g5.xxxx
  iadd r6.xyzw, vThreadIDInGroupFlattened.xxxx, l(16, 8, 4, 2)
  ld_structured r1.z, r6.x, l(0), g5.xxxx
  min r1.y, r1.z, r1.y
  store_structured g5.x, vThreadIDInGroupFlattened.x, l(0), r1.y
  ld_structured r1.z, vThreadIDInGroupFlattened.x, l(0), g6.xxxx
  ld_structured r3.z, r6.x, l(0), g6.xxxx
  max r1.z, r1.z, r3.z
  store_structured g6.x, vThreadIDInGroupFlattened.x, l(0), r1.z
  ld_structured r3.z, vThreadIDInGroupFlattened.x, l(0), g7.xxxx
  ld_structured r3.w, r6.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 r5.y, r6.x, l(0), g8.xxxx
  max r3.w, r3.w, r5.y
  store_structured g8.x, vThreadIDInGroupFlattened.x, l(0), r3.w
  sync_g_t
  ld_structured r5.y, r6.y, l(0), g5.xxxx
  min r1.y, r1.y, r5.y
  store_structured g5.x, vThreadIDInGroupFlattened.x, l(0), r1.y
  ld_structured r5.y, r6.y, l(0), g6.xxxx
  max r1.z, r1.z, r5.y
  store_structured g6.x, vThreadIDInGroupFlattened.x, l(0), r1.z
  ld_structured r5.y, r6.y, l(0), g7.xxxx
  min r3.z, r3.z, r5.y
  store_structured g7.x, vThreadIDInGroupFlattened.x, l(0), r3.z
  ld_structured r5.y, r6.y, l(0), g8.xxxx
  max r3.w, r3.w, r5.y
  store_structured g8.x, vThreadIDInGroupFlattened.x, l(0), r3.w
  sync_g_t
  ld_structured r5.y, r6.z, l(0), g5.xxxx
  min r1.y, r1.y, r5.y
  store_structured g5.x, vThreadIDInGroupFlattened.x, l(0), r1.y
  ld_structured r5.y, r6.z, l(0), g6.xxxx
  max r1.z, r1.z, r5.y
  store_structured g6.x, vThreadIDInGroupFlattened.x, l(0), r1.z
  ld_structured r5.y, r6.z, l(0), g7.xxxx
  min r3.z, r3.z, r5.y
  store_structured g7.x, vThreadIDInGroupFlattened.x, l(0), r3.z
  ld_structured r5.y, r6.z, l(0), g8.xxxx
  max r3.w, r3.w, r5.y
  store_structured g8.x, vThreadIDInGroupFlattened.x, l(0), r3.w
  sync_g_t
  ld_structured r5.y, r6.w, l(0), g5.xxxx
  min r1.y, r1.y, r5.y
  store_structured g5.x, vThreadIDInGroupFlattened.x, l(0), r1.y
  ld_structured r5.y, r6.w, l(0), g6.xxxx
  max r1.z, r1.z, r5.y
  store_structured g6.x, vThreadIDInGroupFlattened.x, l(0), r1.z
  ld_structured r5.y, r6.w, l(0), g7.xxxx
  min r3.z, r3.z, r5.y
  store_structured g7.x, vThreadIDInGroupFlattened.x, l(0), r3.z
  ld_structured r5.y, r6.w, l(0), g8.xxxx
  max r3.w, r3.w, r5.y
  store_structured g8.x, vThreadIDInGroupFlattened.x, l(0), r3.w
  sync_g_t
  iadd r5.y, vThreadIDInGroupFlattened.x, l(1)
  ld_structured r5.z, r5.y, l(0), g5.xxxx
  min r1.y, r1.y, r5.z
  store_structured g5.x, vThreadIDInGroupFlattened.x, l(0), r1.y
  ld_structured r1.y, r5.y, l(0), g6.xxxx
  max r1.y, r1.y, r1.z
  store_structured g6.x, vThreadIDInGroupFlattened.x, l(0), r1.y
  ld_structured r1.y, r5.y, l(0), g7.xxxx
  min r1.y, r1.y, r3.z
  store_structured g7.x, vThreadIDInGroupFlattened.x, l(0), r1.y
  ld_structured r1.y, r5.y, l(0), g8.xxxx
  max r1.y, r1.y, r3.w
  store_structured g8.x, vThreadIDInGroupFlattened.x, l(0), r1.y
  sync_g_t
  ld_structured r1.y, l(0), l(0), g5.xxxx
  ld_structured r1.z, 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 r1.z, r1.y, r1.z
  ge r5.z, r3.w, r3.z
  if_nz r5.z
    add r5.z, -r1.y, r1.z
    mad r5.z, r5.z, l(0.500000), r1.y
    iadd r7.xyzw, r4.xyzw, -r5.zzzz
    iadd r8.xyzw, r2.xyzw, -r5.zzzz
    umax r8.xy, r8.ywyy, r8.xzxx
    umax r5.w, r8.y, r8.x
    umin r7.xy, r7.ywyy, r7.xzxx
    umin r7.x, r7.y, r7.x
    store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r5.w
    store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r7.x
    sync_g_t
    if_nz r5.x
      iadd r7.y, vThreadIDInGroupFlattened.x, l(32)
      ld_structured r7.z, r7.y, l(0), g9.xxxx
      umax r5.w, r5.w, r7.z
      store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r5.w
      ld_structured r5.w, r7.y, l(0), g10.xxxx
      umin r5.w, r5.w, r7.x
      store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r5.w
    endif
    sync_g_t
    ld_structured r5.w, vThreadIDInGroupFlattened.x, l(0), g9.xxxx
    ld_structured r7.x, r6.x, l(0), g9.xxxx
    umax r5.w, r5.w, r7.x
    store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r5.w
    ld_structured r7.x, vThreadIDInGroupFlattened.x, l(0), g10.xxxx
    ld_structured r7.y, r6.x, l(0), g10.xxxx
    umin r7.x, r7.y, r7.x
    store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r7.x
    sync_g_t
    ld_structured r7.y, r6.y, l(0), g9.xxxx
    umax r5.w, r5.w, r7.y
    store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r5.w
    ld_structured r7.y, r6.y, l(0), g10.xxxx
    umin r7.x, r7.y, r7.x
    store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r7.x
    sync_g_t
    ld_structured r7.y, r6.z, l(0), g9.xxxx
    umax r5.w, r5.w, r7.y
    store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r5.w
    ld_structured r7.y, r6.z, l(0), g10.xxxx
    umin r7.x, r7.y, r7.x
    store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r7.x
    sync_g_t
    ld_structured r7.y, r6.w, l(0), g9.xxxx
    umax r5.w, r5.w, r7.y
    store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r5.w
    ld_structured r7.y, r6.w, l(0), g10.xxxx
    umin r7.x, r7.y, r7.x
    store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r7.x
    sync_g_t
    ld_structured r7.y, r5.y, l(0), g9.xxxx
    umax r5.w, r5.w, r7.y
    store_structured g9.x, vThreadIDInGroupFlattened.x, l(0), r5.w
    ld_structured r5.w, r5.y, l(0), g10.xxxx
    umin r5.w, r5.w, r7.x
    store_structured g10.x, vThreadIDInGroupFlattened.x, l(0), r5.w
    sync_g_t
    ld_structured r5.w, l(0), l(0), g9.xxxx
    iadd r5.w, r5.z, r5.w
    ld_structured r7.x, l(0), l(0), g10.xxxx
    iadd r5.z, r5.z, r7.x
    max r5.w, r1.y, r5.w
    ishl r7.xy, vThreadGroupID.xyxx, l(4, 4, 0, 0)
    utof r7.xy, r7.xyxx
    add r7.xy, r7.xyxx, l(7.500000, 7.500000, 0.000000, 0.000000)
    mad r7.xy, r7.xyxx, cb2[29].xyxx, cb2[29].zwzz
    add r8.z, r1.y, r5.w
    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 r10.xyz, r9.xyzx, r5.wwww, -|r8.xyzx|
    dp3 r5.w, r10.xyzx, r10.xyzx
    sqrt r7.w, r5.w
    add r10.z, r1.z, r5.z
    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, r1.zzzz, -|r10.xyzx|
    dp3 r5.z, r11.xyzx, r11.xyzx
    sqrt r9.w, r5.z
    and r11.x, r1.w, l(0x0000ffff)
    firstbit_hi r11.y, r11.x
    ushr r11.z, r1.w, l(16)
    firstbit_lo r11.z, r11.z
    iadd r11.z, r11.z, l(16)
    add r11.w, -r3.z, r3.w
    iadd r11.y, -r11.y, l(32)
    utof r11.y, r11.y
    movc r11.x, r11.x, r11.y, l(0)
    mul r11.x, r11.w, r11.x
    mad r11.x, r11.x, l(0.031250), r3.z
    utof r11.y, r11.z
    mul r11.y, r11.w, r11.y
    mad r11.y, r11.y, l(0.031250), r3.z
    add r12.z, r3.z, r11.x
    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 r13.xyz, r9.xyzx, r11.xxxx, -|r12.xyzx|
    dp3 r11.x, r13.xyzx, r13.xyzx
    sqrt r11.z, r11.x
    add r13.z, r3.w, r11.y
    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, r11.yyyy, -|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 r9.x, r0.w, l(63)
      ushr r9.x, r9.x, l(6)
      ishl r9.y, vThreadIDInGroupFlattened.x, l(2)
      uge r14.xyzw, vThreadIDInGroupFlattened.xxxx, l(1, 2, 4, 8)
      iadd r15.xyzw, r9.yyyy, l(-4, -8, -16, -32)
      uge r16.xy, vThreadIDInGroupFlattened.xxxx, l(16, 32, 0, 0)
      iadd r16.zw, r9.yyyy, l(0, 0, -64, -128)
      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 r9.z, l(0)
      mov r11.y, l(0)
      mov r17.xyz, l(0,0,0,0)
      loop
        uge r17.w, r17.z, r9.x
        breakc_nz r17.w
        bfi r17.w, l(26), l(6), r17.z, vThreadIDInGroupFlattened.x
        iadd r18.x, r0.y, r17.w
        ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r18.x, r18.x, l(0), t2.xxxx
        ult r17.w, r17.w, r0.w
        if_nz r17.w
          imul null, r17.w, r18.x, l(12)
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r19.xyzw, r17.w, l(0), t1.xyzw
          ubfe r18.yz, l(0, 14, 14, 0), l(0, 14, 14, 0), r19.xxyx
          f16tof32 r17.w, r19.z
          and r20.xyz, r19.wxyw, l(0x0000ffff, 0x00003fff, 0x00003fff, 0)
          ushr r19.xy, r19.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 r20.y
	iadd r20.y, r20.y, r35.z       // Adjust nTileMinX based on fTileMaxZ
endif
iadd r20.z, r20.z, |r35.z|     // Adjust nTileDeltaX to counter nTileMinX adjustment


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