//Lighting PS 5.
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
//   using 3Dmigoto v1.3.16 on Sun Dec 25 17:52:36 2022
//
//
// Buffer Definitions:
//
// cbuffer RenderView
// {
//
//   float4x4 uProjectionMatrix;        // Index:    0 1 2 3          Components:    16 [unused]
//   float4x4 uModelViewMatrix;         // Index:    4 5 6 7          Components:    16 [unused]
//   float4x4 uInverseProjectionMatrix; // Index:    8 9 10 11        Components:    16 [unused]
//   float4x4 uPrevProjection;          // Index:   12 13 14 15       Components:    16 [unused]
//   float4x4 uInverseModelViewMatrix;  // Index:   16 17 18 19       Components:    16
//   float4x4 uPrevModelView;           // Index:   20 21 22 23       Components:    16 [unused]
//   float4x4 uRotationMatrix;          // Index:   24 25 26 27       Components:    16 [unused]
//   float4x4 uInverseRotationMatrix;   // Index:   28 29 30 31       Components:    16
//   float4x4 uTransposedRotationMatrix;// Index:   32 33 34 35       Components:    16 [unused]
//   float4x4 uClipMatrix;              // Index:   36 37 38 39       Components:    16 [unused]
//   float4x4 uInverseClipMatrix;       // Index:   40 41 42 43       Components:    16 [unused]
//   float4x4 uPrevClipMatrix;          // Index:   44 45 46 47       Components:    16 [unused]
//   float4x4 uNormalMatrix;            // Index:   48 49 50 51       Components:    16 [unused]
//   float3 uViewOrigin;                // Index:   52.xyz            Components:     3 [unused]
//   float uViewWidth;                  // Index:   52.w              Components:     1
//   float uViewHeight;                 // Index:   53.x              Components:     1
//   float uZNear;                      // Index:   53.y              Components:     1 [unused]
//   float uZFar;                       // Index:   53.z              Components:     1 [unused]
//   float2 uInvFocalCoords;            // Index:   54.xy             Components:     2
//   float4 uResolutionScale;           // Index:   55.xyzw           Components:     4
//   float4 uScreenBounds;              // Index:   56.xyzw           Components:     4
//   float4 uFrustumCorners[4];         // Index:   57 58 59 60       Components:    16 [unused]
//
// }
//
// cbuffer WorldLights
// {
//
//   struct
//   {
//
//       float value;                   // Index:    0
//       float padding1;                // Index:    0.y
//       float padding2;                // Index:    0.z
//       float padding3;                // Index:    0.w
//
//   } uValues[256];                    // Index:    0-255            Components:  1024
//
// }
//
// cbuffer QuakeWarpParams
// {
//
//   float uTime;                       // Index:    0.x              Components:     1 [unused]
//   float uAlpha;                      // Index:    0.y              Components:     1
//   float uAlphaWeight;                // Index:    0.z              Components:     1 [unused]
//   float uAlphaClamp;                 // Index:    0.w              Components:     1 [unused]
//
// }
//
// cbuffer LightCluster
// {
//
//   struct
//   {
//
//       float4 vParam1;                // Index:    0
//       float4 vParam2;                // Index:    1
//       uint dwParam3;                 // Index:    2
//       uint dwParam4;                 // Index:    2.y
//       uint dwParam5;                 // Index:    2.z
//       uint dwParam6;                 // Index:    2.w
//       float4 vParam7;                // Index:    3
//
//   } uClusterLights[256];             // Index:    0-1023           Components:  4096
//   float uClusterMinZ;                // Index: 1024.x              Components:     1
//   float uClusterZSliceFactor;        // Index: 1024.y              Components:     1
//   int uShowOverdraw;                 // Index: 1024.z              Components:     1
//   int uShowNormals;                  // Index: 1024.w              Components:     1
//
// }
//
// Resource bind info for sbTable
// {
//
//   uint $Element;                     // Index:    0.x              Components:     1
//
// }
//
// Resource bind info for sbIndexes
// {
//
//   uint $Element;                     // Index:    0.x              Components:     1
//
// }
//
// Resource bind info for sbShadowItems
// {
//
//   struct
//   {
//
//       float4x4 uVolumeMatrix;        // Index:    0
//       float3 uDirection;             // Index:    4
//       float uShadeAmount;            // Index:    4.w
//       float4 uViewportRect;          // Index:    5
//       float4 uSourcePos;             // Index:    6
//       float uBias;                   // Index:    7
//       float uPadding[3];             // Index:    7.y
//
//   } $Element;                        // Index:    0-7              Components:    32
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// uSampletQuakeImage                sampler      NA          NA    0        1
// uSampletLightmap                  sampler      NA          NA    1        1
// uSampletShadowMap               sampler_c      NA          NA    4        1
// uSampletFullBright                sampler      NA          NA    6        1
// uTex_tQuakeImage                  texture  float4          2d    0        1
// uTex_tLightmap                    texture  float4     2darray    1        1
// sbTable                           texture  struct         r/o    2        1
// sbIndexes                         texture  struct         r/o    3        1
// uTex_tShadowMap                   texture  float4          2d    4        1
// sbShadowItems                     texture  struct         r/o    5        1
// uTex_tFullBright                  texture  float4          2d    6        1
// RenderView                        cbuffer      NA          NA    0        1
// WorldLights                       cbuffer      NA          NA    1        1
// QuakeWarpParams                   cbuffer      NA          NA    2        1
// LightCluster                      cbuffer      NA          NA    3        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float   xy
// TEXCOORD                 0   xy          1     NONE   float   xy
// TEXCOORD                 1     zw        1     NONE   float     zw
// POSITION                 0   xyz         2     NONE   float     z
// MASK                     0      w        2     NONE   float
// POSITION                 1   xyzw        3     NONE   float
// POSITION                 2   xyzw        4     NONE   float
// STYLES                   0   xyzw        5     NONE   float   xyzw
// PLANE                    0   xyzw        6     NONE   float   xyz
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_4_0
dcl_globalFlags refactoringAllowed | enableRawAndStructuredBuffers
dcl_immediateConstantBuffer { { 0, 0, 1.000000, 0},
                              { 0, 0.250000, 1.000000, 0},
                              { 0, 0.500000, 0.700000, 0},
                              { 0, 0.700000, 0.500000, 0},
                              { 0, 1.000000, 0, 0},
                              { 0.250000, 1.000000, 0, 0},
                              { 0.500000, 1.000000, 0, 0},
                              { 0.700000, 0.700000, 0, 0},
                              { 0.800000, 0.400000, 0, 0},
                              { 1.000000, 0.200000, 0, 0},
                              { 1.000000, 0, 0, 0} }
dcl_constantbuffer CB0[57], immediateIndexed
dcl_constantbuffer CB1[256], dynamicIndexed
dcl_constantbuffer CB2[1], immediateIndexed
dcl_constantbuffer CB3[1025], dynamicIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s4, mode_comparison
dcl_sampler s6, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2darray (float,float,float,float) t1
dcl_resource_structured t2, 4
dcl_resource_structured t3, 4
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_structured t5, 128
dcl_resource_texture2d (float,float,float,float) t6
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_input_ps linear v1.xy
dcl_input_ps linear v1.zw
dcl_input_ps linear v2.z
dcl_input_ps linear v5.xyzw
dcl_input_ps linear v6.xyz
dcl_output o0.xyzw
dcl_temps 37
dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture2d)(float,float,float,float) r25.xyzw, l(0, 0, 0, 0), t125.xyzw
add r0.x, v5.x, l(0.500000)
ftoi r0.x, r0.x
ine r0.y, r0.x, l(255)
if_nz r0.y
  add r0.y, v5.y, l(0.500000)
  ftoi r0.y, r0.y
  mov r1.xy, v1.zwzz
  mov r1.z, l(0)
  sample r1.xyzw, r1.xyzx, t1.xyzw, s1
  mul r0.xzw, r1.xxyz, cb1[r0.x + 0].xxxx
  ine r1.x, r0.y, l(255)
  if_nz r1.x
    add r1.x, v5.z, l(0.500000)
    ftoi r1.x, r1.x
    mov r2.xy, v1.zwzz
    mov r2.z, l(1.000000)
    sample r2.xyzw, r2.xyzx, t1.xyzw, s1
    mad r0.xzw, r2.xxyz, cb1[r0.y + 0].xxxx, r0.xxzw
    ine r0.y, r1.x, l(255)
    if_nz r0.y
      add r0.y, v5.w, l(0.500000)
      ftoi r0.y, r0.y
      mov r2.xy, v1.zwzz
      mov r2.z, l(2.000000)
      sample r2.xyzw, r2.xyzx, t1.xyzw, s1
      mad r0.xzw, r2.xxyz, cb1[r1.x + 0].xxxx, r0.xxzw
      ine r1.x, r0.y, l(255)
      if_nz r1.x
        mov r1.xy, v1.zwzz
        mov r1.z, l(3.000000)
        sample r1.xyzw, r1.xyzx, t1.xyzw, s1
        mad r0.xzw, r1.xxyz, cb1[r0.y + 0].xxxx, r0.xxzw
      endif
    endif
  endif
else
  mov r0.xzw, l(0,0,0,0)
endif
sample r1.xyzw, v1.xyxx, t0.xyzw, s0
lt r0.y, l(0.999000), r1.w
if_nz r0.y
  add r0.x, r0.z, r0.x
  add r0.x, r0.w, r0.x
  mul r0.xzw, r0.xxxx, l(0.666666687, 0.000000, 0.666666687, 0.666666687)
  div r2.x, v0.x, cb0[52].w
  div r2.y, v0.y, cb0[53].x
  mul r2.zw, cb0[55].zzzw, cb0[56].xxxy
  mad r2.xy, r2.xyxx, cb0[55].zwzz, -r2.zwzz
  
  mov r20.xy, r2.xyxx
  add r21.x, v2.z, r25.y
  mul r21.x, r21.x, r25.x
  mul r21.y, l(2.0), cb0[52].w
  div r21.y, l(1.0), r21.y
  mad r20.x, r21.x, r21.y, r20.x
  
  add r3.xy, -r20.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
  mul r3.xy, r3.xyxx, l(16.000000, 8.000000, 0.000000, 0.000000)
  ftoi r3.xy, r3.xyxx
  div r2.w, -v2.z, cb3[1024].x
  max r2.w, r2.w, l(1.000000)
  log r2.w, r2.w
  mul r2.w, r2.w, cb3[1024].y
  round_ni r2.w, r2.w
  ftoi r2.w, r2.w
  imin r2.w, r2.w, l(23)
  ishl r3.y, r3.y, l(4)
  iadd r3.x, r3.x, r3.y
  ishl r2.w, r2.w, l(7)
  iadd r2.w, r2.w, r3.x
  ld_structured r3.x, r2.w, l(0), t2.xxxx
  ushr r2.w, r3.x, l(16)
  if_nz r2.w
    add r2.z, -r2.y, l(1.000000)
    mad r2.xy, r2.xzxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
    mul r2.xy, r2.xyxx, cb0[54].xyxx
    mul r2.xy, r2.xyxx, -v2.zzzz
    ishl r3.x, r3.x, l(5)
    and r3.x, r3.x, l(0x001fffe0)
    mov r2.z, v2.z
	
	add r25.w, r2.z, r25.y
    div r25.w, r25.w, cb0[12].x
    mad r2.x, r25.x, r25.w, r2.x
	
    mul r3.yzw, r2.yyyy, cb0[17].xxyz
    mad r3.yzw, cb0[16].xxyz, r2.xxxx, r3.yyzw
    mad r3.yzw, cb0[18].xxyz, v2.zzzz, r3.yyzw
    add r3.yzw, r3.yyzw, cb0[19].xxyz
    mov r4.w, l(1.000000)
    mov r5.xyz, r0.wwww
    mov r5.w, l(0)
    mov r6.xyzw, l(0,0,0,0)
    mov r7.x, l(0)
    loop
      uge r7.y, r7.x, r2.w
      breakc_nz r7.y
      iadd r7.y, r3.x, r7.x
      ld_structured r8.x, r7.y, l(0), t3.xxxx
      ishl r7.y, r8.x, l(2)
      add r7.z, r5.w, l(1.000000)
      ushr r7.w, cb3[r7.y + 2].z, l(1)
      and r7.w, r7.w, l(7)
      ieq r7.w, r7.w, l(1)
      if_nz r7.w
        add r8.xyz, -r2.xyzx, cb3[r7.y + 0].xyzx
        dp3 r7.w, r8.xyzx, r8.xyzx
        rsq r7.w, r7.w
        mul r8.xyz, r7.wwww, r8.xyzx
        dp3 r7.w, r8.xyzx, cb3[r7.y + 3].xyzx
        ge r8.w, -r7.w, cb3[r7.y + 3].w
        if_nz r8.w
          add r9.xyz, r2.xyzx, -cb3[r7.y + 0].xyzx
          dp3 r8.w, r9.xyzx, r9.xyzx
          sqrt r8.w, r8.w
          ge r9.x, cb3[r7.y + 0].w, r8.w
          if_nz r9.x
            dp3 r8.x, v6.xyzx, r8.xyzx
            max r8.x, r8.x, l(0.000000)
            lt r8.y, l(0.000000), r8.x
            if_nz r8.y
              add r8.z, -r8.w, cb3[r7.y + 0].w
              div r8.z, r8.z, cb3[r7.y + 0].w
              mul r9.xyz, cb3[r7.y + 1].wwww, cb3[r7.y + 1].xyzx
              mul r9.xyz, r8.zzzz, r9.xyzx
              mul r8.xzw, r8.xxxx, r9.xxyz
              add r7.w, r7.w, l(1.000000)
              add r9.x, l(1.000000), -cb3[r7.y + 3].w
              div r9.x, l(1.000000, 1.000000, 1.000000, 1.000000), r9.x
              mad r7.w, -r7.w, r9.x, l(1.000000)
              mul r8.xzw, r7.wwww, r8.xxzw
              mov r7.w, l(-1)
            else
              mov r8.xzw, l(0,0,0,0)
            endif
          else
            mov r8.xyzw, l(0,0,0,0)
          endif
        else
          mov r8.xyzw, l(0,0,0,0)
        endif
        and r7.w, r7.w, r8.y
      else
        mad r9.xyz, v6.xyzx, l(16.000000, 16.000000, 16.000000, 0.000000), cb3[r7.y + 0].xyzx
        add r10.xyz, r2.xyzx, -r9.xyzx
        dp3 r8.y, r10.xyzx, r10.xyzx
        sqrt r8.y, r8.y
        ge r9.w, cb3[r7.y + 0].w, r8.y
        if_nz r9.w
          add r9.xyz, -r2.xyzx, r9.xyzx
          dp3 r9.w, r9.xyzx, r9.xyzx
          rsq r9.w, r9.w
          mul r9.xyz, r9.wwww, r9.xyzx
          dp3 r9.x, v6.xyzx, r9.xyzx
          lt r9.y, l(0.000000), r9.x
          if_nz r9.y
            add r8.y, -r8.y, cb3[r7.y + 0].w
            div r8.y, r8.y, cb3[r7.y + 0].w
            mul r10.xyz, cb3[r7.y + 1].wwww, cb3[r7.y + 1].xyzx
            mul r10.xyz, r8.yyyy, r10.xyzx
            mul r8.xzw, r9.xxxx, r10.xxyz
            mov r8.y, l(-1)
          else
            mov r8.xzw, l(0,0,0,0)
          endif
        else
          mov r8.xzw, l(0,0,0,0)
          mov r9.y, l(0)
        endif
        and r7.w, r8.y, r9.y
      endif
      and r8.y, l(1), cb3[r7.y + 2].z
      ine r8.y, r8.y, l(0)
      and r7.w, r7.w, r8.y
      if_nz r7.w
        ishr r7.w, cb3[r7.y + 2].z, l(4)
        and r7.w, r7.w, l(255)
        iadd r7.w, r7.w, l(-1)
        movc r4.xyz, r6.wwww, r6.xyzx, r3.yzwy
        add r9.xyz, r2.xyzx, -cb3[r7.y + 0].xyzx
        mul r10.xyz, r9.yyyy, cb0[29].xyzx
        mad r9.xyw, cb0[28].xyxz, r9.xxxx, r10.xyxz
        mad r9.xyz, cb0[30].xyzx, r9.zzzz, r9.xywx
        add r9.xyz, r9.xyzx, cb0[31].xyzx
        dp3 r8.y, r9.xyzx, r9.xyzx
        rsq r8.y, r8.y
        mul r9.xyz, r8.yyyy, r9.xyzx
        ge r10.xyz, |r9.xyzx|, |r9.yxxy|
        and r10.xyz, r10.xyzx, l(0x3f800000, 0x3f800000, 0x3f800000, 0)
        ge r11.xyz, |r9.xyzx|, |r9.zzyz|
        and r11.xyz, r11.xyzx, l(0x3f800000, 0x3f800000, 0x3f800000, 0)
        mul r10.xyz, r10.xyzx, r11.xyzx
        lt r11.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r9.xyzx
        lt r9.xyz, r9.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
        iadd r9.xyz, -r11.xyzx, r9.xyzx
        itof r9.xyz, r9.xyzx
        ge r9.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r9.xyzx
        movc r9.xyz, r9.xyzx, l(3.000000,5.000000,4.000000,0), l(0,2.000000,1.000000,0)
        dp3 r8.y, r10.xyzx, r9.xyzx
        ftoi r8.y, r8.y
        imin r7.w, r7.w, r8.y
        ige r8.y, l(3), r7.w
        movc r8.y, r8.y, cb3[r7.y + 2].x, cb3[r7.y + 2].y
        ishl r9.x, r7.w, l(3)
        and r9.x, r9.x, l(24)
        ushr r8.y, r8.y, r9.x
        and r8.y, r8.y, l(255)
        ushr r9.x, cb3[r7.y + 2].y, l(16)
        ushr r9.y, cb3[r7.y + 2].y, l(24)
        and r9.xy, r9.xyxx, l(63, 63, 0, 0)
        ushr r7.yw, r9.xxxy, r7.w
        ishl r7.yw, r7.yyyw, l(8)
        and r7.yw, r7.yyyw, l(0, 256, 0, 256)
        iadd r7.y, r7.y, r8.y
        iadd r7.y, r7.w, r7.y
        ld_structured r9.xyzw, r7.y, l(0), t5.xyzw
        ld_structured r10.xyzw, r7.y, l(16), t5.xyzw
        ld_structured r11.xyzw, r7.y, l(32), t5.xyzw
        ld_structured r12.xyzw, r7.y, l(48), t5.xyzw
        mov r13.x, r9.x
        mov r13.y, r10.x
        mov r13.z, r11.x
        mov r13.w, r12.x
        dp4 r13.x, r13.xyzw, r4.xyzw
        mov r14.x, r9.y
        mov r14.y, r10.y
        mov r14.z, r11.y
        mov r14.w, r12.y
        dp4 r13.y, r14.xyzw, r4.xyzw
        mov r14.x, r9.z
        mov r14.y, r10.z
        mov r14.z, r11.z
        mov r14.w, r12.z
        dp4 r13.z, r14.xyzw, r4.xyzw
        mov r12.x, r9.w
        mov r12.y, r10.w
        mov r12.z, r11.w
        dp4 r7.w, r12.xyzw, r4.xyzw
        div r9.xyz, r13.xyzx, r7.wwww
        mad r9.xy, r9.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
        ld_structured r10.xyzw, r7.y, l(80), t5.xyzw
        add r11.xy, -r10.xyxx, r10.zwzz
        mul r11.xy, r11.xyxx, l(0.000122070313, 0.000122070313, 0.000000, 0.000000)
        mul r9.xy, r9.xyxx, r11.xyxx
        ge r11.xy, r11.xyxx, r9.xyxx
        movc r11.xy, r11.xyxx, l(0,-1.000000,0,0), l(1.000000,-0.000000,0,0)
        add r7.w, r11.y, r11.x
        add r7.w, r7.w, l(1.000000)
        ge r8.y, l(1.000000), r9.z
        movc r8.y, r8.y, l(-1.000000), l(-0.000000)
        add r7.w, r7.w, r8.y
        add r7.w, r7.w, l(1.000000)
        ge r11.xy, r9.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
        movc r11.xy, r11.xyxx, l(-1.000000,-1.000000,0,0), l(-0.000000,-0.000000,0,0)
        add r7.w, r7.w, r11.x
        add r7.w, r7.w, l(1.000000)
        add r7.w, r11.y, r7.w
        add r7.w, r7.w, l(1.000000)
        ge r8.y, r9.z, l(0.000000)
        movc r8.y, r8.y, l(-1.000000), l(-0.000000)
        add r7.w, r7.w, r8.y
        add r7.w, r7.w, l(1.000000)
        ne r7.w, r7.w, l(0.000000)
        if_nz r7.w
          iadd r7.w, r7.x, l(1)
          mov r6.xyz, r4.xyzx
          mov r6.w, l(-1)
          mov r5.w, r7.z
          mov r7.x, r7.w
          continue
        endif
        ld_structured r11.xyz, r7.y, l(76), t5.xyzx
        mad r9.xy, r11.yzyy, l(0.000122070313, 0.000122070313, 0.000000, 0.000000), r9.xyxx
        mad r9.xy, r9.xyxx, l(8192.000000, 8192.000000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
        round_ni r11.yz, r9.xxyx
        add r9.xy, r9.xyxx, -r11.yzyy
        add r11.yz, r11.yyzy, l(0.000000, -0.500000, -0.500000, 0.000000)
        mad r12.xy, -r9.yxyy, l(2.000000, 2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000)
        mad r12.zw, r9.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, 1.000000, 1.000000)
        add r13.xy, -r9.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000)
        div r13.xy, r13.xyxx, r12.yxyy
        div r9.xy, r9.xyxx, r12.zwzz
        add r13.zw, r13.xxxy, l(0.000000, 0.000000, -1.000000, -1.000000)
        add r13.xy, r9.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
        mul r7.w, r12.x, r12.y
        add r14.xyzw, r11.yzyz, r13.zwxw
        ld_structured r15.x, r7.y, l(112), t5.xxxx
        add r9.xy, r10.wwww, -r14.ywyy
        add r9.xy, r9.xyxx, r10.yyyy
        add r16.xyzw, r10.xzyw, l(0.500000, -0.500000, 0.500000, -0.500000)
        max r10.xz, r14.xxzx, r16.xxxx
        min r14.xz, r16.yyyy, r10.xxzx
        max r9.xy, r9.xyxx, r16.zzzz
        min r14.yw, r16.wwww, r9.xxxy
        mul r14.xyzw, r14.xyzw, l(0.000122070313, 0.000122070313, 0.000122070313, 0.000122070313)
        add r7.y, r9.z, -r15.x
        sample_c_lz r8.y, r14.xyxx, t4.xxxx, s4, r7.y
        mul r9.xy, r12.xyxx, r12.zwzz
        sample_c_lz r9.z, r14.zwzz, t4.xxxx, s4, r7.y
        mul r9.x, r9.z, r9.x
        mad r7.w, r7.w, r8.y, r9.x
        add r13.xyzw, r11.yzyz, r13.zyxy
        add r9.xz, r10.wwww, -r13.yywy
        add r9.xz, r9.xxzx, r10.yyyy
        max r10.xy, r16.xxxx, r13.xzxx
        min r10.xz, r16.yyyy, r10.xxyx
        max r9.xz, r16.zzzz, r9.xxzx
        min r10.yw, r16.wwww, r9.xxxz
        mul r10.xyzw, r10.xyzw, l(0.000122070313, 0.000122070313, 0.000122070313, 0.000122070313)
        sample_c_lz r8.y, r10.xyxx, t4.xxxx, s4, r7.y
        mad r7.w, r9.y, r8.y, r7.w
        mul r8.y, r12.w, r12.z
        sample_c_lz r7.y, r10.zwzz, t4.xxxx, s4, r7.y
        mad r7.y, r8.y, r7.y, r7.w
        mad r7.y, r7.y, l(0.062500), r11.x
        min r7.y, r7.y, l(1.000000)
        mul r8.xzw, r7.yyyy, r8.xxzw
        add r5.w, r5.w, l(2.000000)
        mov r6.xyz, r4.xyzx
        mov r6.w, l(-1)
      else
        mov r5.w, r7.z
      endif
      add r5.xyz, r5.xyzx, r8.xzwx
      iadd r7.x, r7.x, l(1)
    endloop
    mov r0.xzw, r5.xxyz
  else
    mov r5.w, l(0)
  endif
  ieq r2.x, cb3[1024].z, l(1)
  if_nz r2.x
    ftou r2.y, r5.w
    umin r2.y, r2.y, l(10)
    mov r1.xyz, icb[r2.y + 0].xyzx
  endif
  if_z r2.x
    mul r2.xyz, r0.xzwx, r1.xyzx
    sample r3.xyzw, v1.xyxx, t6.xyzw, s6
    mad r0.xzw, -r1.xxyz, r0.xxzw, r3.xxyz
    mad r1.xyz, r3.wwww, r0.xzwx, r2.xyzx
  endif
endif
if_z r0.y
  discard_nz l(-1)
  ret
endif
mul o0.w, r1.w, cb2[0].y
ieq r0.x, cb3[1024].w, l(1)
movc o0.xyz, r0.xxxx, v6.xyzx, r1.xyzx
ret
// Approximately 338 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v1.3.16 on Sun Dec 25 17:52:36 2022
//
// struct sbShadowItems_type
// {
//     float4x4 uVolumeMatrix;        // Offset:    0
//     float3 uDirection;             // Offset:   64
//     float uShadeAmount;            // Offset:   76
//     float4 uViewportRect;          // Offset:   80
//     float4 uSourcePos;             // Offset:   96
//     float uBias;                   // Offset:  112
//     float uPadding[3];             // Offset:  116
// };
//
// cbuffer RenderView : register(b0)
// {
//   float4x4 uProjectionMatrix : packoffset(c0);
//   float4x4 uModelViewMatrix : packoffset(c4);
//   float4x4 uInverseProjectionMatrix : packoffset(c8);
//   float4x4 uPrevProjection : packoffset(c12);
//   float4x4 uInverseModelViewMatrix : packoffset(c16);
//   float4x4 uPrevModelView : packoffset(c20);
//   float4x4 uRotationMatrix : packoffset(c24);
//   float4x4 uInverseRotationMatrix : packoffset(c28);
//   float4x4 uTransposedRotationMatrix : packoffset(c32);
//   float4x4 uClipMatrix : packoffset(c36);
//   float4x4 uInverseClipMatrix : packoffset(c40);
//   float4x4 uPrevClipMatrix : packoffset(c44);
//   float4x4 uNormalMatrix : packoffset(c48);
//   float3 uViewOrigin : packoffset(c52);
//   float uViewWidth : packoffset(c52.w);
//   float uViewHeight : packoffset(c53);
//   float uZNear : packoffset(c53.y);
//   float uZFar : packoffset(c53.z);
//   float2 uInvFocalCoords : packoffset(c54);
//   float4 uResolutionScale : packoffset(c55);
//   float4 uScreenBounds : packoffset(c56);
//   float4 uFrustumCorners[4] : packoffset(c57);
// }
//
// cbuffer WorldLights : register(b1)
// {
//
//   struct
//   {
//     float value;
//     float padding1;
//     float padding2;
//     float padding3;
//   } uValues[256] : packoffset(c0);
//
// }
//
// cbuffer QuakeWarpParams : register(b2)
// {
//   float uTime : packoffset(c0);
//   float uAlpha : packoffset(c0.y);
//   float uAlphaWeight : packoffset(c0.z);
//   float uAlphaClamp : packoffset(c0.w);
// }
//
// cbuffer LightCluster : register(b3)
// {
//
//   struct
//   {
//     float4 vParam1;
//     float4 vParam2;
//     uint dwParam3;
//     uint dwParam4;
//     uint dwParam5;
//     uint dwParam6;
//     float4 vParam7;
//   } uClusterLights[256] : packoffset(c0);
//
//   float uClusterMinZ : packoffset(c1024);
//   float uClusterZSliceFactor : packoffset(c1024.y);
//   int uShowOverdraw : packoffset(c1024.z);
//   int uShowNormals : packoffset(c1024.w);
// }
//
// SamplerState uSampletQuakeImage_s : register(s0);
// SamplerState uSampletLightmap_s : register(s1);
// SamplerState uSampletFullBright_s : register(s6);
// SamplerComparisonState uSampletShadowMap_s : register(s4);
// Texture2D<float4> uTex_tQuakeImage : register(t0);
// Texture2DArray<float4> uTex_tLightmap : register(t1);
// StructuredBuffer<uint> sbTable : register(t2);
// StructuredBuffer<uint> sbIndexes : register(t3);
// Texture2D<float4> uTex_tShadowMap : register(t4);
// StructuredBuffer<sbShadowItems_type> sbShadowItems : register(t5);
// Texture2D<float4> uTex_tFullBright : register(t6);
//
//
// // 3Dmigoto declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Texture2D<float4> StereoParams : register(t125);
//
//
// void main(
//   float4 v0 : SV_Position0,
//   float2 v1 : TEXCOORD0,
//   float2 w1 : TEXCOORD1,
//   float3 v2 : POSITION0,
//   float w2 : MASK0,
//   float4 v3 : POSITION1,
//   float4 v4 : POSITION2,
//   float4 v5 : STYLES0,
//   float4 v6 : PLANE0,
//   out float4 o0 : SV_Target0)
// {
//   const float4 icb[] = { { 0, 0, 1.000000, 0},
//                               { 0, 0.250000, 1.000000, 0},
//                               { 0, 0.500000, 0.700000, 0},
//                               { 0, 0.700000, 0.500000, 0},
//                               { 0, 1.000000, 0, 0},
//                               { 0.250000, 1.000000, 0, 0},
//                               { 0.500000, 1.000000, 0, 0},
//                               { 0.700000, 0.700000, 0, 0},
//                               { 0.800000, 0.400000, 0, 0},
//                               { 1.000000, 0.200000, 0, 0},
//                               { 1.000000, 0, 0, 0} };
//   float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
//   r0.x = 0.5 + v5.x;
//   r0.x = (int)r0.x;
//   r0.y = cmp((int)r0.x != 255);
//   if (r0.y != 0) {
//     r0.y = 0.5 + v5.y;
//     r0.y = (int)r0.y;
//     r1.xy = w1.xy;
//     r1.z = 0;
//     r1.xyzw = uTex_tLightmap.Sample(uSampletLightmap_s, r1.xyz).xyzw;
//     r0.xzw = uValues[r0.x].value * r1.xyz;
//     r1.x = cmp((int)r0.y != 255);
//     if (r1.x != 0) {
//       r1.x = 0.5 + v5.z;
//       r1.x = (int)r1.x;
//       r2.xy = w1.xy;
//       r2.z = 1;
//       r2.xyzw = uTex_tLightmap.Sample(uSampletLightmap_s, r2.xyz).xyzw;
//       r0.xzw = r2.xyz * uValues[r0.y].value + r0.xzw;
//       r0.y = cmp((int)r1.x != 255);
//       if (r0.y != 0) {
//         r0.y = 0.5 + v5.w;
//         r0.y = (int)r0.y;
//         r2.xy = w1.xy;
//         r2.z = 2;
//         r2.xyzw = uTex_tLightmap.Sample(uSampletLightmap_s, r2.xyz).xyzw;
//         r0.xzw = r2.xyz * uValues[r1.x].value + r0.xzw;
//         r1.x = cmp((int)r0.y != 255);
//         if (r1.x != 0) {
//           r1.xy = w1.xy;
//           r1.z = 3;
//           r1.xyzw = uTex_tLightmap.Sample(uSampletLightmap_s, r1.xyz).xyzw;
//           r0.xzw = r1.xyz * uValues[r0.y].value + r0.xzw;
//         }
//       }
//     }
//   } else {
//     r0.xzw = float3(0,0,0);
//   }
//   r1.xyzw = uTex_tQuakeImage.Sample(uSampletQuakeImage_s, v1.xy).xyzw;
//   r0.y = cmp(0.999000013 < r1.w);
//   if (r0.y != 0) {
//     r0.x = r0.x + r0.z;
//     r0.x = r0.x + r0.w;
//     r0.xzw = float3(0.666666687,0.666666687,0.666666687) * r0.xxx;
//     r2.x = v0.x / uViewWidth;
//     r2.y = v0.y / uViewHeight;
//     r2.zw = uScreenBounds.xy * uResolutionScale.zw;
//     r2.xy = r2.xy * uResolutionScale.zw + -r2.zw;
//     r3.xy = float2(1,1) + -r2.xy;
//     r3.xy = float2(16,8) * r3.xy;
//     r3.xy = (int2)r3.xy;
//     r2.w = -v2.z / uClusterMinZ;
//     r2.w = max(1, r2.w);
//     r2.w = log2(r2.w);
//     r2.w = uClusterZSliceFactor * r2.w;
//     r2.w = floor(r2.w);
//     r2.w = (int)r2.w;
//     r2.w = min(23, (int)r2.w);
//     r3.y = (uint)r3.y << 4;
//     r3.x = (int)r3.x + (int)r3.y;
//     r2.w = (uint)r2.w << 7;
//     r2.w = (int)r2.w + (int)r3.x;
//     r3.x = sbTable[r2.w].x;
//     r2.w = (uint)r3.x >> 16;
//     if (r2.w != 0) {
//       r2.z = 1 + -r2.y;
//       r2.xy = r2.xz * float2(2,2) + float2(-1,-1);
//       r2.xy = uInvFocalCoords.xy * r2.xy;
//       r2.xy = -v2.zz * r2.xy;
//       r3.x = (uint)r3.x << 5;
//       r3.x = (int)r3.x & 0x001fffe0;
//       r2.z = v2.z;
//       r3.yzw = uInverseModelViewMatrix._m01_m11_m21 * r2.yyy;
//       r3.yzw = uInverseModelViewMatrix._m00_m10_m20 * r2.xxx + r3.yzw;
//       r3.yzw = uInverseModelViewMatrix._m02_m12_m22 * v2.zzz + r3.yzw;
//       r3.yzw = uInverseModelViewMatrix._m03_m13_m23 + r3.yzw;
//       r4.w = 1;
//       r5.xyz = r0.www;
//       r5.w = 0;
//       r6.xyzw = float4(0,0,0,0);
//       r7.x = 0;
//       while (true) {
//         r7.y = cmp((uint)r7.x >= (uint)r2.w);
//         if (r7.y != 0) break;
//         r7.y = (int)r3.x + (int)r7.x;
//         r8.x = sbIndexes[r7.y].x;
//         r7.y = (uint)r8.x << 2;
//         r7.z = 1 + r5.w;
//         r7.w = (uint8)uClusterLights[r7.y].dwParam5 >> 1;
//         r7.w = (int)r7.w & 7;
//         r7.w = cmp((int)r7.w == 1);
//         if (r7.w != 0) {
//           r8.xyz = uClusterLights[r7.y].vParam1.xyz + -r2.xyz;
//           r7.w = dot(r8.xyz, r8.xyz);
//           r7.w = rsqrt(r7.w);
//           r8.xyz = r8.xyz * r7.www;
//           r7.w = dot(r8.xyz, uClusterLights[r7.y].vParam7.xyz);
//           r8.w = cmp(-r7.w >= uClusterLights[r7.y].vParam7.w);
//           if (r8.w != 0) {
//             r9.xyz = -uClusterLights[r7.y].vParam1.xyz + r2.xyz;
//             r8.w = dot(r9.xyz, r9.xyz);
//             r8.w = sqrt(r8.w);
//             r9.x = cmp(uClusterLights[r7.y].vParam1.w >= r8.w);
//             if (r9.x != 0) {
//               r8.x = dot(v6.xyz, r8.xyz);
//               r8.x = max(0, r8.x);
//               r8.y = cmp(0 < r8.x);
//               if (r8.y != 0) {
//                 r8.z = uClusterLights[r7.y].vParam1.w + -r8.w;
//                 r8.z = r8.z / uClusterLights[r7.y].vParam1.w;
//                 r9.xyz = uClusterLights[r7.y].vParam2.xyz * uClusterLights[r7.y].vParam2.www;
//                 r9.xyz = r9.xyz * r8.zzz;
//                 r8.xzw = r9.xyz * r8.xxx;
//                 r7.w = 1 + r7.w;
//                 r9.x = -uClusterLights[r7.y].vParam7.w + 1;
//                 r9.x = 1 / r9.x;
//                 r7.w = -r7.w * r9.x + 1;
//                 r8.xzw = r8.xzw * r7.www;
//                 r7.w = -1;
//               } else {
//                 r8.xzw = float3(0,0,0);
//               }
//             } else {
//               r8.xyzw = float4(0,0,0,0);
//             }
//           } else {
//             r8.xyzw = float4(0,0,0,0);
//           }
//           r7.w = (int)r7.w & (int)r8.y;
//         } else {
//           r9.xyz = v6.xyz * float3(16,16,16) + uClusterLights[r7.y].vParam1.xyz;
//           r10.xyz = -r9.xyz + r2.xyz;
//           r8.y = dot(r10.xyz, r10.xyz);
//           r8.y = sqrt(r8.y);
//           r9.w = cmp(uClusterLights[r7.y].vParam1.w >= r8.y);
//           if (r9.w != 0) {
//             r9.xyz = r9.xyz + -r2.xyz;
//             r9.w = dot(r9.xyz, r9.xyz);
//             r9.w = rsqrt(r9.w);
//             r9.xyz = r9.xyz * r9.www;
//             r9.x = dot(v6.xyz, r9.xyz);
//             r9.y = cmp(0 < r9.x);
//             if (r9.y != 0) {
//               r8.y = uClusterLights[r7.y].vParam1.w + -r8.y;
//               r8.y = r8.y / uClusterLights[r7.y].vParam1.w;
//               r10.xyz = uClusterLights[r7.y].vParam2.xyz * uClusterLights[r7.y].vParam2.www;
//               r10.xyz = r10.xyz * r8.yyy;
//               r8.xzw = r10.xyz * r9.xxx;
//               r8.y = -1;
//             } else {
//               r8.xzw = float3(0,0,0);
//             }
//           } else {
//             r8.xzw = float3(0,0,0);
//             r9.y = 0;
//           }
//           r7.w = (int)r8.y & (int)r9.y;
//         }
//         r8.y = 1 & (int8)uClusterLights[r7.y].dwParam5;
//         r8.y = cmp((int)r8.y != 0);
//         r7.w = r8.y ? r7.w : 0;
//         if (r7.w != 0) {
//           r7.w = (uint8)uClusterLights[r7.y].dwParam5 >> 4;
//           r7.w = (int)r7.w & 255;
//           r7.w = (int)r7.w + -1;
//           r4.xyz = r6.www ? r6.xyz : r3.yzw;
//           r9.xyz = -uClusterLights[r7.y].vParam1.xyz + r2.xyz;
//           r10.xyz = uInverseRotationMatrix._m01_m11_m21 * r9.yyy;
//           r9.xyw = uInverseRotationMatrix._m00_m10_m20 * r9.xxx + r10.xyz;
//           r9.xyz = uInverseRotationMatrix._m02_m12_m22 * r9.zzz + r9.xyw;
//           r9.xyz = uInverseRotationMatrix._m03_m13_m23 + r9.xyz;
//           r8.y = dot(r9.xyz, r9.xyz);
//           r8.y = rsqrt(r8.y);
//           r9.xyz = r9.xyz * r8.yyy;
//           r10.xyz = cmp(abs(r9.xyz) >= abs(r9.yxx));
//           r10.xyz = r10.xyz ? float3(1,1,1) : 0;
//           r11.xyz = cmp(abs(r9.xyz) >= abs(r9.zzy));
//           r11.xyz = r11.xyz ? float3(1,1,1) : 0;
//           r10.xyz = r11.xyz * r10.xyz;
//           r11.xyz = cmp(float3(0,0,0) < r9.xyz);
//           r9.xyz = cmp(r9.xyz < float3(0,0,0));
//           r9.xyz = (int3)-r11.xyz + (int3)r9.xyz;
//           r9.xyz = (int3)r9.xyz;
//           r9.xyz = cmp(float3(0,0,0) >= r9.xyz);
//           r9.xyz = r9.xyz ? float3(3,5,4) : float3(0,2,1);
//           r8.y = dot(r10.xyz, r9.xyz);
//           r8.y = (int)r8.y;
//           r7.w = min((int)r8.y, (int)r7.w);
//           r8.y = cmp(3 >= (int)r7.w);
//           r8.y = r8.y ? uClusterLights[r7.y].dwParam3 : uClusterLights[r7.y].dwParam4;
//           r9.x = (uint)r7.w << 3;
//           r9.x = (int)r9.x & 24;
//           r8.y = (uint)r8.y >> (uint)r9.x;
//           r8.y = (int)r8.y & 255;
//           r9.x = (uint8)uClusterLights[r7.y].dwParam4 >> 16;
//           r9.y = (uint8)uClusterLights[r7.y].dwParam4 >> 24;
//           r9.xy = (int2)r9.xy & int2(63,63);
//           r7.yw = (uint2)r9.xy >> (uint)r7.w;
//           r7.yw = (uint2)r7.yw << 8;
//           r7.yw = (int2)r7.yw & int2(256,256);
//           r7.y = (int)r7.y + (int)r8.y;
//           r7.y = (int)r7.w + (int)r7.y;
//           r9.x = sbShadowItems[r7.y].uVolumeMatrix._m00;
//           r9.y = sbShadowItems[r7.y].uVolumeMatrix._m10;
//           r9.z = sbShadowItems[r7.y].uVolumeMatrix._m20;
//           r9.w = sbShadowItems[r7.y].uVolumeMatrix._m30;
//           r10.x = sbShadowItems[r7.y].uVolumeMatrix._m01;
//           r10.y = sbShadowItems[r7.y].uVolumeMatrix._m11;
//           r10.z = sbShadowItems[r7.y].uVolumeMatrix._m21;
//           r10.w = sbShadowItems[r7.y].uVolumeMatrix._m31;
//           r11.x = sbShadowItems[r7.y].uVolumeMatrix._m02;
//           r11.y = sbShadowItems[r7.y].uVolumeMatrix._m12;
//           r11.z = sbShadowItems[r7.y].uVolumeMatrix._m22;
//           r11.w = sbShadowItems[r7.y].uVolumeMatrix._m32;
//           r12.x = sbShadowItems[r7.y].uVolumeMatrix._m03;
//           r12.y = sbShadowItems[r7.y].uVolumeMatrix._m13;
//           r12.z = sbShadowItems[r7.y].uVolumeMatrix._m23;
//           r12.w = sbShadowItems[r7.y].uVolumeMatrix._m33;
//           r13.x = r9.x;
//           r13.y = r10.x;
//           r13.z = r11.x;
//           r13.w = r12.x;
//           r13.x = dot(r13.xyzw, r4.xyzw);
//           r14.x = r9.y;
//           r14.y = r10.y;
//           r14.z = r11.y;
//           r14.w = r12.y;
//           r13.y = dot(r14.xyzw, r4.xyzw);
//           r14.x = r9.z;
//           r14.y = r10.z;
//           r14.z = r11.z;
//           r14.w = r12.z;
//           r13.z = dot(r14.xyzw, r4.xyzw);
//           r12.x = r9.w;
//           r12.y = r10.w;
//           r12.z = r11.w;
//           r7.w = dot(r12.xyzw, r4.xyzw);
//           r9.xyz = r13.xyz / r7.www;
//           r9.xy = r9.xy * float2(0.5,0.5) + float2(0.5,0.5);
//           r10.x = sbShadowItems[r7.y].uViewportRect.x;
//           r10.y = sbShadowItems[r7.y].uViewportRect.y;
//           r10.z = sbShadowItems[r7.y].uViewportRect.z;
//           r10.w = sbShadowItems[r7.y].uViewportRect.w;
//           r11.xy = r10.zw + -r10.xy;
//           r11.xy = float2(0.000122070313,0.000122070313) * r11.xy;
//           r9.xy = r11.xy * r9.xy;
//           r11.xy = cmp(r11.xy >= r9.xy);
//           r11.xy = r11.xy ? float2(0,-1) : float2(1,-0);
//           r7.w = r11.x + r11.y;
//           r7.w = 1 + r7.w;
//           r8.y = cmp(1 >= r9.z);
//           r8.y = r8.y ? -1 : -0;
//           r7.w = r8.y + r7.w;
//           r7.w = 1 + r7.w;
//           r11.xy = cmp(r9.xy >= float2(0,0));
//           r11.xy = r11.xy ? float2(-1,-1) : float2(-0,-0);
//           r7.w = r11.x + r7.w;
//           r7.w = 1 + r7.w;
//           r7.w = r7.w + r11.y;
//           r7.w = 1 + r7.w;
//           r8.y = cmp(r9.z >= 0);
//           r8.y = r8.y ? -1 : -0;
//           r7.w = r8.y + r7.w;
//           r7.w = 1 + r7.w;
//           r7.w = cmp(r7.w != 0.000000);
//           if (r7.w != 0) {
//             r7.w = (int)r7.x + 1;
//             r6.xyz = r4.xyz;
//             r6.w = -1;
//             r5.w = r7.z;
//             r7.x = r7.w;
//             continue;
//           }
//           r11.x = sbShadowItems[r7.y].uShadeAmount;
//           r11.y = sbShadowItems[r7.y].uViewportRect.x;
//           r11.z = sbShadowItems[r7.y].uViewportRect.y;
//           r9.xy = r11.yz * float2(0.000122070313,0.000122070313) + r9.xy;
//           r9.xy = r9.xy * float2(8192,8192) + float2(0.5,0.5);
//           r11.yz = floor(r9.xy);
//           r9.xy = -r11.yz + r9.xy;
//           r11.yz = float2(-0.5,-0.5) + r11.yz;
//           r12.xy = -r9.yx * float2(2,2) + float2(3,3);
//           r12.zw = r9.xy * float2(2,2) + float2(1,1);
//           r13.xy = float2(2,2) + -r9.xy;
//           r13.xy = r13.xy / r12.yx;
//           r9.xy = r9.xy / r12.zw;
//           r13.zw = float2(-1,-1) + r13.xy;
//           r13.xy = float2(1,1) + r9.xy;
//           r7.w = r12.y * r12.x;
//           r14.xyzw = r13.zwxw + r11.yzyz;
//           r15.x = sbShadowItems[r7.y].uBias;
//           r9.xy = -r14.yw + r10.ww;
//           r9.xy = r10.yy + r9.xy;
//           r16.xyzw = float4(0.5,-0.5,0.5,-0.5) + r10.xzyw;
//           r10.xz = max(r16.xx, r14.xz);
//           r14.xz = min(r10.xz, r16.yy);
//           r9.xy = max(r16.zz, r9.xy);
//           r14.yw = min(r9.xy, r16.ww);
//           r14.xyzw = float4(0.000122070313,0.000122070313,0.000122070313,0.000122070313) * r14.xyzw;
//           r7.y = -r15.x + r9.z;
//           r8.y = uTex_tShadowMap.SampleCmpLevelZero(uSampletShadowMap_s, r14.xy, r7.y).x;
//           r9.xy = r12.zw * r12.xy;
//           r9.z = uTex_tShadowMap.SampleCmpLevelZero(uSampletShadowMap_s, r14.zw, r7.y).x;
//           r9.x = r9.x * r9.z;
//           r7.w = r7.w * r8.y + r9.x;
//           r13.xyzw = r13.zyxy + r11.yzyz;
//           r9.xz = -r13.yw + r10.ww;
//           r9.xz = r10.yy + r9.xz;
//           r10.xy = max(r13.xz, r16.xx);
//           r10.xz = min(r10.xy, r16.yy);
//           r9.xz = max(r9.xz, r16.zz);
//           r10.yw = min(r9.xz, r16.ww);
//           r10.xyzw = float4(0.000122070313,0.000122070313,0.000122070313,0.000122070313) * r10.xyzw;
//           r8.y = uTex_tShadowMap.SampleCmpLevelZero(uSampletShadowMap_s, r10.xy, r7.y).x;
//           r7.w = r9.y * r8.y + r7.w;
//           r8.y = r12.z * r12.w;
//           r7.y = uTex_tShadowMap.SampleCmpLevelZero(uSampletShadowMap_s, r10.zw, r7.y).x;
//           r7.y = r8.y * r7.y + r7.w;
//           r7.y = r7.y * 0.0625 + r11.x;
//           r7.y = min(1, r7.y);
//           r8.xzw = r8.xzw * r7.yyy;
//           r5.w = 2 + r5.w;
//           r6.xyz = r4.xyz;
//           r6.w = -1;
//         } else {
//           r5.w = r7.z;
//         }
//         r5.xyz = r8.xzw + r5.xyz;
//         r7.x = (int)r7.x + 1;
//       }
//       r0.xzw = r5.xyz;
//     } else {
//       r5.w = 0;
//     }
//     r2.x = cmp(uShowOverdraw == 1);
//     if (r2.x != 0) {
//       r2.y = (uint)r5.w;
//       r2.y = min(10, (uint)r2.y);
//       r1.xyz = icb[r2.y+0].xyz;
//     }
//     if (r2.x == 0) {
//       r2.xyz = r1.xyz * r0.xzw;
//       r3.xyzw = uTex_tFullBright.Sample(uSampletFullBright_s, v1.xy).xyzw;
//       r0.xzw = -r1.xyz * r0.xzw + r3.xyz;
//       r1.xyz = r3.www * r0.xzw + r2.xyz;
//     }
//   }
//   if (r0.y == 0) {
//     if (-1 != 0) discard;
//     return;
//   }
//   o0.w = uAlpha * r1.w;
//   r0.x = cmp(uShowNormals == 1);
//   o0.xyz = r0.xxx ? v6.xyz : r1.xyz;
//   return;
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// E:\GOG\Quake Enhanced\ShaderFixes\ab220f4f184b9642-ps_replace.txt(215,17-21): error X3004: undeclared identifier 'uint8'
/////////////////////////////////////////////////////////////////////////////
