// MANUALLY DUMPED [ShaderRegex\ShaderFixes\Plague_DHR.ini\_Shadows1]
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
//   using 3Dmigoto v1.3.16 on Tue Dec 29 12:52:06 2020
//
//
// Buffer Definitions:
//
// cbuffer CBufferGlobalConstant_Z
// {
//
//   struct StructGlobalConstant_Z
//   {
//
//       float4 c[90];                  // Offset:    0
//
//   } Global;                          // Offset:    0 Size:  1440
//
// }
//
// cbuffer CBufferUserConstant_Z
// {
//
//   struct StructUserConstant_Z
//   {
//
//       float4 c[58];                  // Offset:    0
//
//   } User;                            // Offset:    0 Size:   928
//
// }
//
// cbuffer CBufferOmniConstant_Z
// {
//
//   struct StructOmniConstant_Z
//   {
//
//       struct ShaderOmni_Z
//       {
//
//           float4 Pos;                // Offset:    0
//           float4 Dir;                // Offset:   16
//           float4 Color;              // Offset:   32
//           float4 Value;              // Offset:   48
//           float4 Value2;             // Offset:   64
//           float4 Value3;             // Offset:   80
//           float4x4 ViewMat;          // Offset:   96
//           float4x4 ProjMat;          // Offset:  160
//
//       } Elt[5];                      // Offset:    0
//
//   } OmniArray;                       // Offset:    0 Size:  1120
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// sZBufferSampler                   sampler      NA          NA    1        1
// sProjSpotSamplerComp            sampler_c      NA          NA    2        1
// sGBuffer0                         texture    uint          2d    1        1
// sGBuffer1                         texture    uint          2d    2        1
// sGBuffer2                         texture    uint          2d    3        1
// sGBuffer3                         texture    uint          2d    4        1
// sZBuffer                          texture  float4          2d    5        1
// sBlueNoiseR8                      texture  float4     2darray    6        1
// sProjSpotTexArray[0]              texture  float4          2d    7        1
// sProjOmniTexArray[0]              texture  float4        cube   12        1
// CBufferGlobalConstant_Z           cbuffer      NA          NA    0        1
// CBufferUserConstant_Z             cbuffer      NA          NA    1        1
// CBufferOmniConstant_Z             cbuffer      NA          NA    2        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float   xy
// TEXCOORD                 0   xyzw        1     NONE   float   xyzw
// INSTANCE_COLOR           0   x           2     NONE   float
// INSTANCE_INDEXES         0   xy          3     NONE    uint
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
// SV_Target                1   xyzw        1   TARGET   float   xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[57], immediateIndexed
dcl_constantbuffer cb1[3], immediateIndexed
dcl_constantbuffer cb2[14], immediateIndexed
dcl_sampler s1, mode_default
dcl_sampler s2, mode_comparison
dcl_resource_texture2d (uint,uint,uint,uint) t1
dcl_resource_texture2d (uint,uint,uint,uint) t2
dcl_resource_texture2d (uint,uint,uint,uint) t3
dcl_resource_texture2d (uint,uint,uint,uint) t4
dcl_resource_texture2d (float,float,float,float) t5
dcl_resource_texture2darray (float,float,float,float) t6
dcl_resource_texture2d (float,float,float,float) t7
dcl_resource_texturecube (float,float,float,float) t12
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_input_ps linear noperspective v1.xyzw
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_temps 37
dcl_resource_texture2d (float,float,float,float) t125


mov r30.xy, v0.xy



ftoi r0.xy, r30.xyxx
mov r0.zw, l(0,0,0,0)






ld_indexable(texture2d)(uint,uint,uint,uint) r1.x, r0.xyww, t1.xyzw
ld_indexable(texture2d)(uint,uint,uint,uint) r1.y, r0.xyww, t2.yxzw
ld_indexable(texture2d)(uint,uint,uint,uint) r1.z, r0.xyww, t3.yzxw




ubfe r2.xy, l(8, 4, 0, 0), l(8, 16, 0, 0), r1.yyyy
utof r1.w, r2.x
mul r3.x, r1.w, l(0.00392156886)
ushr r2.x, r1.y, l(20)
and r2.z, r1.z, l(255)
ubfe r3.zw, l(0, 0, 8, 8), l(0, 0, 8, 16), r1.zzzz
utof r4.x, r2.z
utof r4.yz, r3.zzwz
mul r4.xyz, r4.xyzx, l(0.00392156886, 0.00392156886, 0.00392156886, 0.000000)
mul r5.xyz, r4.xyzx, r4.xyzx
ieq r1.z, r2.y, l(7)
if_nz r1.z
  ld_indexable(texture2d)(uint,uint,uint,uint) r0.x, r0.xyzw, t4.xyzw
  ushr r0.y, r1.x, l(24)
  utof r0.y, r0.y
  mul r3.y, r0.y, l(0.00392156886)
  ushr r0.yz, r0.xxxx, l(0, 17, 6, 0)
  and r0.yz, r0.yyzy, l(0, 0x00007ff0, 0x00007ff0, 0)
  bfi r0.x, l(10), l(5), r0.x, l(0)
  f16tof32 r6.xyz, r0.yzxy
  mad r0.xyz, r6.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
  min r0.w, r3.y, r3.x
  mad r0.w, r0.w, l(2.000000), l(-1.000000)
  max r0.w, r0.w, l(0.000000)
  mad r6.xyz, r0.wwww, l(-0.040000, -0.040000, -0.040000, 0.000000), l(0.040000, 0.040000, 0.040000, 0.000000)
  mov r2.zw, r3.xxxy
else
  and r0.w, r1.y, l(255)
  utof r0.w, r0.w
  mul r0.w, r0.w, l(0.00392156886)
  mad r1.y, r1.w, l(0.00784313772), l(-1.000000)
  max r1.y, r1.y, l(0.000000)
  mad r1.y, r1.y, l(-0.040000), l(0.040000)




  mad r3.yzw, r4.xxyz, r4.xxyz, -r1.yyyy
  mad r6.xyz, r0.wwww, r3.yzwy, r1.yyyy
endif
and r0.w, r2.x, cb2[5].y
and r0.w, r0.w, l(5)
if_nz r0.w
  




  sample_l_indexable(texture2d)(float,float,float,float) r4.z, v1.xyxx, t5.yzxw, s1, l(0.000000)
  



  and r0.w, r1.x, l(4095)
  utof r7.x, r0.w
  ubfe r0.w, l(12), l(12), r1.x
  utof r7.y, r0.w
  mad r7.xy, r7.xyxx, l(0.000488400517, 0.000488400517, 0.000000, 0.000000), l(-1.000000, -1.00000, 0.000000, 0.000000)
  mov r7.zw, l(0,0,1.000000,-1.000000)
  dp3 r8.z, r7.xyzx, -r7.xywx
  max r0.w, r8.z, l(0.000000)
  sqrt r0.w, r0.w
  mul r8.xy, r0.wwww, r7.xyxx

ld_indexable(texture2d)(float,float,float,float) r21.xyzw, l(0, 0, 0, 0), t125.xyzw

//add r8.x, r8.x, r21.x


//approx fare away light clipping fix
//mad r1.xyw, r8.xyxz, l(2.000000, 1.000000, 2.000000, -1.600000), l(0.800000, 0.000000, 0.000000, 1.000000)
  

mad r1.xyw, r8.xyxz, l(2.000000, 2.000000, 2.000000, -2.000000), l(0.000000, 0.000000, 0.000000, 1.000000)




  mov r4.xy, v1.zwzz
  



  mov r4.w, l(1.000000)

// Pattern Fix for Shadows, Lights and Reflections 1:
ld_indexable(texture2d)(float,float,float,float) r21.xyzw, l(0, 0, 0, 0), t125.xyzw
dp4 r23.w, r4.xyzw, cb0[56].xyzw
mul r22.x r21.y, r23.w
add r22.x, r22.x, l(-1.0)
mul r22.x, r21.x, r22.x
add r4.x, r4.x, r22.x


  dp4 r7.x, r4.xyzw, cb0[53].xyzw
  dp4 r7.y, r4.xyzw, cb0[54].xyzw
  dp4 r7.z, r4.xyzw, cb0[55].xyzw
  dp4 r0.w, r4.xyzw, cb0[56].xyzw
  div r4.xyz, r7.xyzx, r0.wwww
  dp3 r0.w, -r4.xyzx, -r4.xyzx
  rsq r0.w, r0.w
  mul r3.yzw, r0.wwww, -r4.xxyz
  if_z r1.z
    mov r5.xyz, l(0,0,0,0)
    mov r0.xyz, l(0,0,0,0)
    mov r2.zw, l(0,0,0,0)
  endif
  add r7.xyz, -r4.xyzx, cb2[0].xyzx
  dp3 r0.w, r7.xyzx, r7.xyzx
  sqrt r2.x, r0.w
  div r8.xyz, r7.xyzx, r2.xxxx
  dp3_sat r5.w, r1.xywx, r8.xyzx
  mul r6.w, r0.w, cb2[4].y
  mad r7.w, r0.w, cb2[4].y, l(1.000000)
  div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w
  div r8.w, l(1.000000, 1.000000, 1.000000, 1.000000), cb2[3].y
  mul r8.w, r8.w, r8.w
  mul r6.w, r6.w, r8.w
  mad r6.w, -r6.w, r6.w, l(1.000000)
  max r6.w, r6.w, l(0.000000)
  mul r6.w, r6.w, r6.w
  mul r6.w, r6.w, r7.w
  ge r7.w, l(0.000000), r6.w
  eq r8.w, cb2[3].x, l(0.000000)
  ge r9.x, l(0.000000), r5.w
  and r8.w, r8.w, r9.x
  or r7.w, r7.w, r8.w
  and r8.w, cb2[2].w, l(64)
  if_nz r8.w
    if_nz r7.w
      mov r9.xyz, l(0,0,0,0)
    endif
    if_z r7.w
      mul r10.xyz, r6.wwww, cb2[2].xyzx
      lt r8.w, l(0.000000), cb2[3].x
      if_nz r8.w
        max r8.w, r3.x, l(0.080000)
        mul r8.w, r8.w, r8.w
        dp3 r9.w, -r3.yzwy, r1.xywx
        add r9.w, r9.w, r9.w
        mad r11.xyz, r1.xywx, -r9.wwww, -r3.yzwy
        dp3 r9.w, r11.xyzx, r11.xyzx
        rsq r9.w, r9.w
        mul r11.xyz, r9.wwww, r11.xyzx
        add r9.w, r2.x, l(0.000010)
        div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w
        mul_sat r9.w, r9.w, cb2[3].x
        mad r9.w, r9.w, l(0.500000), r8.w
        min r9.w, r9.w, l(1.000000)
        div r8.w, r8.w, r9.w
        mul r8.w, r8.w, r8.w
        dp3 r9.w, r7.xyzx, r11.xyzx
        mad r11.xyz, r9.wwww, r11.xyzx, -r7.xyzx
        dp3 r9.w, r11.xyzx, r11.xyzx
        sqrt r9.w, r9.w
        div_sat r9.w, cb2[3].x, r9.w
        mad r11.xyz, r11.xyzx, r9.wwww, r7.xyzx
      else
        mov r11.xyz, r7.xyzx
        mov r8.w, l(1.000000)
      endif
      dp3 r9.w, r11.xyzx, r11.xyzx
      rsq r9.w, r9.w
      mul r12.xyz, r9.wwww, r11.xyzx
      if_nz r1.z
        mul r13.xyz, r1.ywxy, r0.zxyz
        mad r13.xyz, r0.yzxy, r1.wxyw, -r13.xyzx
        max r14.xy, r2.zwzz, cb2[4].zzzz
        max r14.xy, r14.xyxx, l(0.080000, 0.080000, 0.000000, 0.000000)
        mad r15.xyz, r11.xyzx, r9.wwww, r3.yzwy
        dp3 r10.w, r15.xyzx, r15.xyzx
        rsq r10.w, r10.w
        mul r15.xyz, r10.wwww, r15.xyzx
        dp3 r10.w, r1.xywx, r3.yzwy
        dp3_sat r11.w, r15.xyzx, r12.xyzx
        dp3_sat r12.w, r1.xywx, r15.xyzx
        dp3_sat r13.w, r1.xywx, r12.xyzx
        dp3 r14.z, r0.xyzx, r15.xyzx
        dp3 r14.w, r13.xyzx, r15.xyzx
        dp3 r15.x, r0.xyzx, r3.yzwy
        dp3 r15.y, r13.xyzx, r3.yzwy
        dp3 r15.z, r0.xyzx, r12.xyzx
        dp3 r13.x, r13.xyzx, r12.xyzx
        add r16.xyz, -r6.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
        add r11.w, -r11.w, l(1.000000)
        mul r13.y, r11.w, r11.w
        mul r13.xy, r13.xyxx, r13.xyxx
        mul r11.w, r11.w, r13.y
        mad r16.xyz, r16.xyzx, r11.wwww, r6.xyzx
        mul r17.xyz, r14.xyxx, r14.xyxx
        mul r17.xyz, r17.xyyx, r17.xyzx
        mul r11.w, r14.z, r14.z
        div r13.y, r11.w, r17.x
        mul r13.z, r14.w, r14.w
        div r14.z, r13.z, r17.y
        add r13.y, r13.y, r14.z
        mad r13.y, r12.w, r12.w, r13.y
        mul r13.y, r13.y, r13.y
        mad r13.y, r13.y, r17.z, l(1.000000012E-007)
        rcp r13.y, r13.y
        mad r14.xy, r14.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
        mul r14.xy, r14.xyxx, r14.xyxx
        mul r14.xy, r14.xyxx, r14.xyxx
        mul r14.zw, r15.xxxy, r15.xxxy
        mul r15.x, r14.y, r14.w
        mad r15.x, r14.z, r14.x, r15.x
        mad r15.x, |r10.w|, |r10.w|, r15.x
        sqrt r15.x, r15.x
        mul r15.y, r15.z, r15.z
        mul r14.y, r13.x, r14.y
        mad r14.x, r15.y, r14.x, r14.y
        mad r14.x, r13.w, r13.w, r14.x
        sqrt r14.x, r14.x
        mul r14.x, |r10.w|, r14.x
        mad r14.x, r13.w, r15.x, r14.x
        add r14.x, r14.x, l(0.000010)
        div r14.x, l(0.500000), r14.x
        mul r15.xzw, r13.yyyy, r16.xxyz
        mul r15.xzw, r14.xxxx, r15.xxzw
        add r17.xyz, -r16.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
        mad r18.xyz, r5.xyzx, l(0.990000, 0.990000, 0.990000, 0.000000), l(0.010000, 0.010000, 0.010000, 0.000000)
        dp3 r13.y, r18.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000)
        div r18.xyz, r5.xyzx, r13.yyyy
        mul r15.xzw, r15.xxzw, r18.xxyz
        add r15.xzw, r15.xxzw, r15.xxzw
        log r14.xy, r2.zwzz
        mul r14.xy, r14.xyxx, l(1.500000, 1.500000, 0.000000, 0.000000)
        exp r14.xy, r14.xyxx
        max r14.xy, r14.xyxx, cb2[4].zzzz
        max r14.xy, r14.xyxx, l(0.080000, 0.080000, 0.000000, 0.000000)
        mul r18.xyz, r14.xyxx, r14.xyxx
        mul r18.xyz, r18.xyyx, r18.xyzx
        div r11.w, r11.w, r18.x
        div r13.y, r13.z, r18.y
        add r11.w, r11.w, r13.y
        mad r11.w, r12.w, r12.w, r11.w
        mul r11.w, r11.w, r11.w
        mad r11.w, r11.w, r18.z, l(1.000000012E-007)
        rcp r11.w, r11.w
        mad r13.yz, r14.xxyx, l(0.000000, 0.500000, 0.500000, 0.000000), l(0.000000, 0.500000, 0.500000, 0.000000)
        mul r13.yz, r13.yyzy, r13.yyzy
        mul r13.yz, r13.yyzy, r13.yyzy
        mul r12.w, r13.z, r14.w
        mad r12.w, r14.z, r13.y, r12.w
        mad r12.w, |r10.w|, |r10.w|, r12.w
        sqrt r12.w, r12.w
        mul r13.x, r13.z, r13.x
        mad r13.x, r15.y, r13.y, r13.x
        mad r13.x, r13.w, r13.w, r13.x
        sqrt r13.x, r13.x
        mul r10.w, |r10.w|, r13.x
        mad r10.w, r13.w, r12.w, r10.w
        add r10.w, r10.w, l(0.000010)
        div r10.w, l(0.500000), r10.w
        mul r13.xyz, r11.wwww, r16.xyzx
        mul r13.xyz, r10.wwww, r13.xyzx
        mad r13.xyz, r13.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r15.xzwx
      else
        max r10.w, r3.x, cb2[4].z
        max r10.w, r10.w, l(0.080000)
        mad r11.xyz, r11.xyzx, r9.wwww, r3.yzwy
        dp3 r9.w, r11.xyzx, r11.xyzx
        rsq r9.w, r9.w
        mul r11.xyz, r9.wwww, r11.xyzx
        dp3 r9.w, r1.xywx, r3.yzwy
        dp3_sat r11.w, r11.xyzx, r12.xyzx
        dp3_sat r11.x, r1.xywx, r11.xyzx
        dp3_sat r11.y, r1.xywx, r12.xyzx
        add r14.xyz, -r6.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
        add r11.z, -r11.w, l(1.000000)
        mul r12.w, r11.z, r11.z
        mul r12.w, r12.w, r12.w
        mul r11.z, r11.z, r12.w
        mad r14.xyz, r14.xyzx, r11.zzzz, r6.xyzx
        mul r11.z, r10.w, r10.w
        mul r11.z, r11.z, r11.z
        mad r12.w, r11.x, r11.z, -r11.x
        mad r11.x, r12.w, r11.x, l(1.000000)
        mul r11.x, r11.x, r11.x
        div r11.x, r11.z, r11.x
        mad r15.xy, r10.wwww, l(0.500000, -0.337748349, 0.000000, 0.000000), l(0.500000, 1.000000, 0.000000, 0.000000)
        mul r11.z, r15.x, r15.x
        mad r12.w, -r15.x, r15.x, l(1.000000)
        mad r13.w, |r9.w|, r12.w, r11.z
        mad r11.z, r11.y, r12.w, r11.z
        mul r11.z, |r9.w|, r11.z
        mad r11.z, r11.y, r13.w, r11.z
        add r11.z, r11.z, l(0.000010)
        rcp r11.z, r11.z
        mul r11.z, r11.z, l(0.500000)
        mul r14.xyz, r11.xxxx, r14.xyzx
        mul r13.xyz, r11.zzzz, r14.xyzx
        mul r11.x, r11.w, r11.w
        dp2 r11.x, r11.xxxx, r10.wwww
        mad r10.w, r10.w, l(0.500000), r11.x
        add r10.w, r10.w, l(-1.000000)
        add r11.x, -r11.y, l(1.000000)
        mul r11.y, r11.x, r11.x
        mul r11.y, r11.y, r11.y
        mul r11.x, r11.x, r11.y
        mad r11.x, r10.w, r11.x, l(1.000000)
        add r9.w, -|r9.w|, l(1.000000)
        mul r11.y, r9.w, r9.w
        mul r11.y, r11.y, r11.y
        mul r9.w, r9.w, r11.y
        mad r9.w, r10.w, r9.w, l(1.000000)
        mul r9.w, r9.w, r11.x
        mul r17.xyz, r15.yyyy, r9.wwww
      endif
      mul r11.xyz, r5.wwww, r10.xyzx
      mul r9.xyz, r11.xyzx, r17.xyzx
      dp3_sat r9.w, r1.xywx, r12.xyzx
      mul r10.xyz, r9.wwww, r10.xyzx
      mul r10.xyz, r8.wwww, r10.xyzx
      mul r10.xyz, r10.xyzx, r13.xyzx
    else
      mov r10.xyz, l(0,0,0,0)
    endif
    lt r8.w, cb2[4].w, l(1.000000)
    lt r11.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r9.xyzx
    or r9.w, r11.y, r11.x
    or r9.w, r11.z, r9.w
    lt r11.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r10.xyzx
    or r10.w, r11.y, r11.x
    or r10.w, r11.z, r10.w
    or r9.w, r9.w, r10.w
    and r8.w, r8.w, r9.w
    if_nz r8.w
      mov r4.w, l(1.000000)
      dp4 r11.x, r4.xyzw, cb2[6].xyzw
      dp4 r11.y, r4.xyzw, cb2[7].xyzw
      dp4 r11.z, r4.xyzw, cb2[8].xyzw
      dp4 r8.w, r4.xyzw, cb2[9].xyzw
      div r11.xyzw, r11.yzzx, r8.wwww
      dp3 r8.w, r11.xzwx, r11.xzwx
      rsq r8.w, r8.w
      mul r11.xyzw, r8.wwww, r11.xyzw
      max r8.w, |r11.z|, |r11.x|
      max r8.w, r8.w, |r11.w|
      eq r12.xy, |r11.wxww|, r8.wwww
      div r13.xyzw, |r11.xyzw|, |r11.wwxx|
      div r11.xy, |r11.wxww|, |r11.zzzz|
      movc r11.xy, r12.yyyy, r13.zwzz, r11.xyxx
      movc r11.xy, r12.xxxx, r13.xyxx, r11.xyxx
      max r8.w, r11.y, r11.x
      add r8.w, r8.w, l(-0.850000)
      max r8.w, r8.w, l(0.000000)
      mul r8.w, r8.w, l(5.000000)
      min r8.w, r8.w, l(1.000000)
      add r9.w, -r5.w, l(1.000000)
      mad r9.w, cb2[1].w, r9.w, l(0.050000)
      mad r8.w, r8.w, l(0.150000), r9.w
      mad r11.xyz, r1.xywx, r8.wwww, r4.xyzx
      mov r11.w, l(1.000000)
      dp4 r12.x, r11.xyzw, cb2[6].xyzw
      dp4 r12.y, r11.xyzw, cb2[7].xyzw
      dp4 r12.z, r11.xyzw, cb2[8].xyzw
      dp4 r11.w, r11.xyzw, cb2[9].xyzw
      dp3 r8.w, r12.xyzx, r12.xyzx
      rsq r8.w, r8.w
      mul r13.xyz, r8.wwww, r12.xyzx
      mul r14.xyz, r13.zxyz, l(0.000000, 1.000000, 0.000000, 0.000000)
      mad r14.xyz, r13.yzxy, l(1.000000, 0.000000, 0.000000, 0.000000), -r14.xyzx
      dp2 r8.w, r14.xyxx, r14.xyxx
      rsq r8.w, r8.w
      mul r14.xyz, r8.wwww, r14.xyzx
      mul r15.xyz, r13.yzxy, r14.zxyz
      mad r15.xyz, r14.yzxy, r13.zxyz, -r15.xyzx
      mul r14.xyz, r14.xyzx, cb2[1].wwww
      mul r15.xyz, r15.xyzx, cb2[1].wwww
      max r8.w, |r12.z|, |r12.y|
      max r8.w, r8.w, |r12.x|
      ne r9.w, r12.x, |r12.x|
      movc r16.xz, r9.wwww, -r12.xxzx, r12.xxzx
      eq r17.xy, |r12.xyxx|, r8.wwww
      eq r17.zw, r12.yyyz, |r12.yyyz|
      mul r18.xyz, r12.zyxz, l(-1.000000, 1.000000, -1.000000, 0.000000)
      mul r19.xyz, r12.yzxy, l(-1.000000, 1.000000, -1.000000, 0.000000)
      movc r20.xyz, r17.zzzz, r18.yxzy, r19.xyzx
      mov r12.w, -r12.z
      movc r18.xz, r17.wwww, r19.yyzy, r12.wwxw
      movc r12.xyz, r17.yyyy, r20.xyzx, r18.xyzx
      mov r16.y, r18.y
      movc r11.xyz, r17.xxxx, r16.xyzx, r12.xyzx
      dp4 r8.w, r11.xyzw, cb2[12].xyzw
      dp4 r9.w, r11.xyzw, cb2[13].xyzw
      div r8.w, r8.w, r9.w
      mul r9.w, r2.x, l(0.200000)
      min r9.w, r9.w, l(1.000000)
      mad r9.w, r9.w, l(6.000000), l(2.000000)
      ftou r11.xy, v0.xyxx
      ftou r12.z, cb0[1].w
      and r12.xy, r11.xyxx, l(63, 63, 0, 0)
      mov r12.w, l(0)
      ld_indexable(texture2darray)(float,float,float,float) r10.w, r12.xyzw, t6.yzwx
      mul r9.w, r9.w, l(0.500000)
      mov r11.xy, l(0,0,0,0)
      loop
        uge r11.z, r11.y, l(8)
        breakc_nz r11.z
        imul null, r11.zw, r11.yyyy, l(0, 0, 0xc13faa00, 0x91e10e00)
        utof r11.zw, r11.zzzw
        mad r11.zw, r11.zzzw, l(0.000000, 0.000000, 2.328306437E-010, 2.328306437E-010), r10.wwww
        frc r11.zw, r11.zzzw
        mad r11.zw, r11.zzzw, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000)
        mul r12.xyz, r15.xyzx, r11.wwww
        mad r12.xyz, r11.zzzz, r14.xyzx, r12.xyzx
        mad r12.xyz, r12.xyzx, r9.wwww, r13.xyzx
        sample_c_lz_indexable(texturecube)(float,float,float,float) r11.z, r12.xyzx, t12.xxxx, s2, r8.w
        add r11.x, r11.z, r11.x
        iadd r11.y, r11.y, l(1)
      endloop
      mul r8.w, r11.x, l(0.125000)
      mad r8.w, r8.w, r8.w, cb2[4].w
      min r8.w, r8.w, l(1.000000)
    else
      mov r8.w, l(1.000000)
    endif
    mul r9.xyz, r8.wwww, r9.xyzx
    mul r10.xyz, r8.wwww, r10.xyzx
  else
    dp3 r8.x, cb2[1].xyzx, r8.xyzx
    mad_sat r8.x, r8.x, cb2[3].z, cb2[3].w
    mul r8.y, r8.x, r8.x
    mul r8.x, r8.y, r8.x
    if_nz r7.w
      mov r8.yzw, l(0,0,0,0)
    endif
    if_z r7.w
      mul r11.xyz, r6.wwww, cb2[2].xyzx
      lt r6.w, l(0.000000), cb2[3].x
      if_nz r6.w
        max r6.w, r3.x, l(0.080000)
        mul r6.w, r6.w, r6.w
        dp3 r7.w, -r3.yzwy, r1.xywx
        add r7.w, r7.w, r7.w
        mad r12.xyz, r1.xywx, -r7.wwww, -r3.yzwy
        dp3 r7.w, r12.xyzx, r12.xyzx
        rsq r7.w, r7.w
        mul r12.xyz, r7.wwww, r12.xyzx
        add r2.x, r2.x, l(0.000010)
        div r2.x, l(1.000000, 1.000000, 1.000000, 1.000000), r2.x
        mul_sat r2.x, r2.x, cb2[3].x
        mad r2.x, r2.x, l(0.500000), r6.w
        min r2.x, r2.x, l(1.000000)
        div r2.x, r6.w, r2.x
        mul r2.x, r2.x, r2.x
        dp3 r6.w, r7.xyzx, r12.xyzx
        mad r12.xyz, r6.wwww, r12.xyzx, -r7.xyzx
        dp3 r6.w, r12.xyzx, r12.xyzx
        sqrt r6.w, r6.w
        div_sat r6.w, cb2[3].x, r6.w
        mad r12.xyz, r12.xyzx, r6.wwww, r7.xyzx
      else
        mov r12.xyz, r7.xyzx
        mov r2.x, l(1.000000)
      endif
      dp3 r6.w, r12.xyzx, r12.xyzx
      rsq r6.w, r6.w
      mul r13.xyz, r6.wwww, r12.xyzx
      if_nz r1.z
        mul r14.xyz, r1.ywxy, r0.zxyz
        mad r14.xyz, r0.yzxy, r1.wxyw, -r14.xyzx
        max r15.xy, r2.zwzz, cb2[4].zzzz
        max r15.xy, r15.xyxx, l(0.080000, 0.080000, 0.000000, 0.000000)
        mad r16.xyz, r12.xyzx, r6.wwww, r3.yzwy
        dp3 r7.w, r16.xyzx, r16.xyzx
        rsq r7.w, r7.w
        mul r16.xyz, r7.wwww, r16.xyzx
        dp3 r7.w, r1.xywx, r3.yzwy
        dp3_sat r9.w, r16.xyzx, r13.xyzx
        dp3_sat r10.w, r1.xywx, r16.xyzx
        dp3_sat r11.w, r1.xywx, r13.xyzx
        dp3 r12.w, r0.xyzx, r16.xyzx
        dp3 r13.w, r14.xyzx, r16.xyzx
        dp3 r14.w, r0.xyzx, r3.yzwy
        dp3 r15.z, r14.xyzx, r3.yzwy
        dp3 r0.x, r0.xyzx, r13.xyzx
        dp3 r0.y, r14.xyzx, r13.xyzx
        add r14.xyz, -r6.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
        add r0.z, -r9.w, l(1.000000)
        mul r9.w, r0.z, r0.z
        mul r9.w, r9.w, r9.w
        mul r0.z, r0.z, r9.w
        mad r14.xyz, r14.xyzx, r0.zzzz, r6.xyzx
        mul r16.xyz, r15.xyxx, r15.xyxx
        mul r16.xyz, r16.xyyx, r16.xyzx
        mul r0.z, r12.w, r12.w
        div r9.w, r0.z, r16.x
        mul r12.w, r13.w, r13.w
        div r13.w, r12.w, r16.y
        add r9.w, r9.w, r13.w
        mad r9.w, r10.w, r10.w, r9.w
        mul r9.w, r9.w, r9.w
        mad r9.w, r9.w, r16.z, l(1.000000012E-007)
        rcp r9.w, r9.w
        mad r15.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
        mul r15.xy, r15.xyxx, r15.xyxx
        mul r15.xy, r15.xyxx, r15.xyxx
        mul r13.w, r14.w, r14.w
        mul r14.w, r15.z, r15.z
        mul r15.z, r15.y, r14.w
        mad r15.z, r13.w, r15.x, r15.z
        mad r15.z, |r7.w|, |r7.w|, r15.z
        mul r0.xy, r0.xyxx, r0.xyxx
        mul r15.y, r15.y, r0.y
        mad r15.x, r0.x, r15.x, r15.y
        mad r15.x, r11.w, r11.w, r15.x
        sqrt r15.xz, r15.xxzx
        mul r15.x, |r7.w|, r15.x
        mad r15.x, r11.w, r15.z, r15.x
        add r15.x, r15.x, l(0.000010)
        div r15.x, l(0.500000), r15.x
        mul r15.yzw, r9.wwww, r14.xxyz
        mul r15.xyz, r15.xxxx, r15.yzwy
        add r16.xyz, -r14.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
        mad r17.xyz, r5.xyzx, l(0.990000, 0.990000, 0.990000, 0.000000), l(0.010000, 0.010000, 0.010000, 0.000000)
        dp3 r9.w, r17.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000)
        div r5.xyz, r5.xyzx, r9.wwww
        mul r5.xyz, r15.xyzx, r5.xyzx
        add r5.xyz, r5.xyzx, r5.xyzx
        log r2.zw, r2.zzzw
        mul r2.zw, r2.zzzw, l(0.000000, 0.000000, 1.500000, 1.500000)
        exp r2.zw, r2.zzzw
        max r2.zw, r2.zzzw, cb2[4].zzzz
        max r2.zw, r2.zzzw, l(0.000000, 0.000000, 0.080000, 0.080000)
        mul r15.xyz, r2.zwzz, r2.zwzz
        mul r15.xyz, r15.xyyx, r15.xyzx
        div r0.z, r0.z, r15.x
        div r9.w, r12.w, r15.y
        add r0.z, r0.z, r9.w
        mad r0.z, r10.w, r10.w, r0.z
        mul r0.z, r0.z, r0.z
        mad r0.z, r0.z, r15.z, l(1.000000012E-007)
        rcp r0.z, r0.z
        mad r2.zw, r2.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000)
        mul r2.zw, r2.zzzw, r2.zzzw
        mul r2.zw, r2.zzzw, r2.zzzw
        mul r9.w, r2.w, r14.w
        mad r9.w, r13.w, r2.z, r9.w
        mad r9.w, |r7.w|, |r7.w|, r9.w
        sqrt r9.w, r9.w
        mul r0.y, r0.y, r2.w
        mad r0.x, r0.x, r2.z, r0.y
        mad r0.x, r11.w, r11.w, r0.x
        sqrt r0.x, r0.x
        mul r0.x, r0.x, |r7.w|
        mad r0.x, r11.w, r9.w, r0.x
        add r0.x, r0.x, l(0.000010)
        div r0.x, l(0.500000), r0.x
        mul r14.xyz, r0.zzzz, r14.xyzx
        mul r0.xyz, r0.xxxx, r14.xyzx
        mad r0.xyz, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r5.xyzx
      else
        max r2.z, r3.x, cb2[4].z
        max r2.z, r2.z, l(0.080000)
        mad r5.xyz, r12.xyzx, r6.wwww, r3.yzwy
        dp3 r2.w, r5.xyzx, r5.xyzx
        rsq r2.w, r2.w
        mul r5.xyz, r2.wwww, r5.xyzx
        dp3 r2.w, r1.xywx, r3.yzwy
        dp3_sat r3.x, r5.xyzx, r13.xyzx
        dp3_sat r3.y, r1.xywx, r5.xyzx
        dp3_sat r3.z, r1.xywx, r13.xyzx
        add r5.xyz, -r6.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
        add r3.w, -r3.x, l(1.000000)
        mul r6.w, r3.w, r3.w
        mul r6.w, r6.w, r6.w
        mul r3.w, r3.w, r6.w
        mad r5.xyz, r5.xyzx, r3.wwww, r6.xyzx
        mul r3.w, r2.z, r2.z
        mul r3.w, r3.w, r3.w
        mad r6.x, r3.y, r3.w, -r3.y
        mad r3.y, r6.x, r3.y, l(1.000000)
        mul r3.y, r3.y, r3.y
        div r3.y, r3.w, r3.y
        mad r6.xy, r2.zzzz, l(0.500000, -0.337748349, 0.000000, 0.000000), l(0.500000, 1.000000, 0.000000, 0.000000)
        mul r3.w, r6.x, r6.x
        mad r6.x, -r6.x, r6.x, l(1.000000)
        mad r6.z, |r2.w|, r6.x, r3.w
        mad r3.w, r3.z, r6.x, r3.w
        mul r3.w, |r2.w|, r3.w
        mad r3.w, r3.z, r6.z, r3.w
        add r3.w, r3.w, l(0.000010)
        rcp r3.w, r3.w
        mul r3.w, r3.w, l(0.500000)
        mul r5.xyz, r3.yyyy, r5.xyzx
        mul r0.xyz, r3.wwww, r5.xyzx
        mul r3.x, r3.x, r3.x
        dp2 r3.x, r3.xxxx, r2.zzzz
        mad r2.z, r2.z, l(0.500000), r3.x
        add r2.z, r2.z, l(-1.000000)
        add r3.x, -r3.z, l(1.000000)
        mul r3.y, r3.x, r3.x
        mul r3.y, r3.y, r3.y
        mul r3.x, r3.x, r3.y
        mad r3.x, r2.z, r3.x, l(1.000000)
        add r2.w, -|r2.w|, l(1.000000)
        mul r3.y, r2.w, r2.w
        mul r3.y, r3.y, r3.y
        mul r2.w, r2.w, r3.y
        mad r2.z, r2.z, r2.w, l(1.000000)
        mul r2.z, r2.z, r3.x
        mul r16.xyz, r6.yyyy, r2.zzzz
      endif
      mul r3.xyz, r5.wwww, r11.xyzx
      mul r8.yzw, r3.xxyz, r16.xxyz
      dp3_sat r2.z, r1.xywx, r13.xyzx
      mul r3.xyz, r2.zzzz, r11.xyzx
      mul r2.xzw, r2.xxxx, r3.xxyz
      mul r0.xyz, r0.xyzx, r2.xzwx
    else
      mov r0.xyz, l(0,0,0,0)
    endif
    lt r2.x, cb2[4].w, l(1.000000)
    lt r3.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r8.yzwy
    or r2.z, r3.y, r3.x
    or r2.z, r3.z, r2.z
    lt r3.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r0.xyzx
    or r2.w, r3.y, r3.x
    or r2.w, r3.z, r2.w
    or r2.z, r2.w, r2.z
    and r2.x, r2.z, r2.x
    if_nz r2.x
      mov r4.w, l(1.000000)
      dp4 r2.x, r4.xyzw, cb2[8].xyzw
      mul r2.x, |r2.x|, cb2[5].x
      mul r2.x, r2.x, cb2[1].w
      add r2.z, -r5.w, l(1.000000)
      mad r2.x, r2.x, r2.z, l(0.020000)
      mad r3.xyz, r1.xywx, r2.xxxx, r4.xyzx
      mov r3.w, l(1.000000)
      dp4 r5.x, r3.xyzw, cb2[10].xyzw
      dp4 r5.y, r3.xyzw, cb2[11].xyzw
      dp4 r5.z, r3.xyzw, cb2[12].xyzw
      dp4 r2.x, r3.xyzw, cb2[13].xyzw
      div r3.xyzw, r5.yzzx, r2.xxxx
      deriv_rtx_fine r5.xyzw, r3.zxwz
      deriv_rty_fine r6.xyzw, r3.xyzw
      mul r2.xz, r5.yywy, r6.yywy
      mad r2.xz, r6.xxzx, r5.xxzx, -r2.xxzx
      mul r2.w, r5.y, r6.w
      mad r2.w, r5.z, r6.x, -r2.w
      div r2.w, l(1.000000, 1.000000, 1.000000, 1.000000), r2.w
      mul r2.xz, r2.wwww, r2.xxzx
      movc r2.xz, r1.zzzz, l(0,0,0,0), r2.xxzx
      ftou r5.xy, v0.xyxx
      ftou r6.z, cb0[1].w
      and r6.xy, r5.xyxx, l(63, 63, 0, 0)
      mov r6.w, l(0)
      ld_indexable(texture2darray)(float,float,float,float) r1.z, r6.xyzw, t6.yzxw
      sincos r5.x, r6.x, r1.z
      mul r2.w, cb2[1].w, l(1.750000)
      mov r3.y, l(0)
      mov r4.w, l(0)
      loop
        uge r5.y, r4.w, l(8)
        breakc_nz r5.y
        imul null, r5.yz, r4.wwww, l(0, 0xc13faa00, 0x91e10e00, 0)
        utof r5.yz, r5.yyzy
        mad r5.yz, r5.yyzy, l(0.000000, 2.328306437E-010, 2.328306437E-010, 0.000000), r1.zzzz
        frc r5.yz, r5.yyzy
        mad r5.yz, r5.yyzy, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000)
        mul r5.yz, r2.wwww, r5.yyzy
        mul r6.yz, r6.xxxx, r5.yyzy
        mad r11.x, r5.z, r5.x, r6.y
        mad r11.y, r5.y, -r5.x, r6.z
        add r5.yz, r3.wwxw, r11.xxyx
        dp2 r5.w, r11.xyxx, r2.xzxx
        add r5.w, r3.z, r5.w
        sample_c_lz_indexable(texture2d)(float,float,float,float) r5.y, r5.yzyy, t7.xxxx, s2, r5.w
        add r3.y, r3.y, r5.y
        iadd r4.w, r4.w, l(1)
      endloop
      mul r1.z, r3.y, l(0.125000)
      mad r1.z, r1.z, r1.z, cb2[4].w
      min r1.z, r1.z, l(1.000000)
    else
      mov r1.z, l(1.000000)
    endif
    add r1.z, r1.z, l(-1.000000)
    mad r1.z, r8.x, r1.z, l(1.000000)
    mul r9.xyz, r1.zzzz, r8.yzwy
    mul r10.xyz, r0.xyzx, r1.zzzz
  endif
  lt r0.x, l(0.000000), cb1[2].x
  ieq r0.yz, r2.yyyy, l(0, 4, 6, 0)
  or r0.y, r0.z, r0.y
  and r0.x, r0.y, r0.x
  lt r2.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r9.xyzx
  or r0.y, r2.y, r2.x
  or r0.y, r2.z, r0.y
  lt r2.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r10.xyzx
  or r0.z, r2.y, r2.x
  or r0.z, r2.z, r0.z
  or r0.y, r0.z, r0.y
  and r0.x, r0.y, r0.x
  if_nz r0.x
    rsq r0.x, r0.w
    mul r0.xyz, r0.xxxx, r7.xyzx
    ftou r0.w, cb1[2].z
    dp3 r1.z, r1.xywx, r0.xyzx
    mad r1.z, -r1.z, r1.z, l(1.000000)
    max r1.z, r1.z, l(0.000000)
    mul r1.z, r1.z, l(0.001000)
    mad r1.xyz, r1.zzzz, r1.xywx, r4.xyzx
    mov r1.w, l(1.000000)
    dp4 r2.x, r1.xyzw, cb0[49].xyzw
    dp4 r2.y, r1.xyzw, cb0[50].xyzw
    dp4 r2.z, r1.xyzw, cb0[51].xyzw
    dp4 r1.w, r1.xyzw, cb0[52].xyzw
    div r2.xyz, r2.xyzx, r1.wwww
    mad r3.xy, r2.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
    mad r1.xyz, r0.xyzx, l(0.150000, 0.150000, 0.150000, 0.000000), r1.xyzx
    mov r1.w, l(1.000000)
    dp4 r0.x, r1.xyzw, cb0[49].xyzw
    dp4 r0.y, r1.xyzw, cb0[50].xyzw
    dp4 r0.z, r1.xyzw, cb0[51].xyzw
    dp4 r1.x, r1.xyzw, cb0[52].xyzw
    div r0.xyz, r0.xyzx, r1.xxxx
    mad r1.xyw, r2.xyxz, l(0.500000, -0.500000, 0.000000, 1.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
    mad r0.xyz, r0.xyzx, l(0.500000, -0.500000, 1.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
    add r0.xyz, -r1.xywx, r0.xyzx
    lt r1.z, r1.z, l(0.000000)
    movc r1.z, r1.z, l(-1.000000), l(1.000000)
    mul r2.xyz, r0.xyzx, r1.zzzz
    max r2.w, |r2.y|, |r2.x|
    div r2.xyz, r2.xyzx, r2.wwww
    max r2.w, cb0[18].w, cb0[18].z
    mul r2.xyz, r2.wwww, r2.xyzx
    add r4.xyz, r2.xyzx, r2.xyzx
    mad r1.xyw, r2.xyxz, l(2.000000, 2.000000, 0.000000, 2.000000), r1.xyxw
    mad r0.xyz, r0.xyzx, r1.zzzz, -r4.xyzx
    iadd r2.xy, r0.wwww, l(-1, 2, 0, 0)
    imul null, r1.z, r2.y, r2.x
    ushr r1.z, r1.z, l(1)
    utof r1.z, r1.z
    div r0.xyz, r0.xyzx, r1.zzzz
    eq r1.z, cb0[49].z, l(0.000000)
    ftou r2.xy, v0.xyxx
    ftou r2.z, cb0[1].w
    movc r4.z, r1.z, l(0), r2.z
    and r4.xy, r2.xyxx, l(63, 63, 0, 0)
    mov r4.w, l(0)
    ld_indexable(texture2darray)(float,float,float,float) r1.z, r4.xyzw, t6.yzxw
    mov r2.xyz, r1.xywx
    mov r4.xyz, r1.xywx
    mov r2.w, l(1.000000)
    mov r3.zw, l(0,0,-1.000000,2)
    loop
      ult r4.w, r0.w, r3.w
      breakc_nz r4.w
      sample_l_indexable(texture2d)(float,float,float,float) r4.w, r4.xyxx, t5.yzwx, s1, l(0.000000)
      add r4.w, r4.w, -cb0[51].z
      div r4.w, cb0[51].w, r4.w
      add r5.x, r4.z, -cb0[51].z
      div r5.x, cb0[51].w, r5.x
      add r4.w, -r4.w, r5.x
      add r4.w, r4.w, l(-0.075000)
      lt r4.w, |r4.w|, l(0.075000)
      lt r5.x, r3.z, l(0.000000)
      and r4.w, r4.w, r5.x
      movc r3.z, r4.w, r2.w, r3.z
      utof r4.w, r3.w
      mul r5.xyz, r0.xyzx, r4.wwww
      mad r4.xyz, r5.xyzx, r1.zzzz, r2.xyzx
      mad r2.xyz, r4.wwww, r0.xyzx, r2.xyzx
      add r2.w, r2.w, r4.w
      iadd r3.w, r3.w, l(1)
    endloop
    lt r0.z, l(0.000000), r3.z
    and r0.z, r0.z, l(0x3f800000)
    mad r0.xy, r0.xyxx, r3.zzzz, r3.xyxx
    mad r0.xy, r0.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
    mad r0.xy, |r0.xyxx|, l(7.000000, 7.000000, 0.000000, 0.000000), l(-6.000000, -6.000000, 0.000000, 0.000000)
    max r0.xy, r0.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
    mad r0.x, -r0.x, r0.x, l(1.000000)
    mad r0.x, -r0.y, r0.y, r0.x
    max r0.x, r0.x, l(0.000000)
    mad r0.x, -r0.z, r0.x, l(1.000000)
    mul r9.xyz, r0.xxxx, r9.xyzx
    mul r10.xyz, r0.xxxx, r10.xyzx
  endif
  mov o0.xyz, r9.xyzx
  mov o0.w, l(1.000000)
  mov o1.xyz, r10.xyzx
  mov o1.w, l(1.000000)
else
  mov o0.xyzw, l(0,0,0,0)
  mov o1.xyzw, l(0,0,0,0)
endif
ret
// Approximately 756 instruction slots used
