//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//   using 3Dmigoto v1.2.67 on Mon Jan 01 13:11:46 2018
//
//
// Buffer Definitions: 
//
// cbuffer $Globals
// {
//
//   float4 specColor;                  // Offset:    0 Size:    16
//   float4 ControlData;                // Offset:   16 Size:    16 [unused]
//   float4 difColor;                   // Offset:   32 Size:    16 [unused]
//   float4 ambient;                    // Offset:   48 Size:    16
//   float4 g_vDefLightDir;             // Offset:   64 Size:    16 [unused]
//   float4 g_vDefLightColor;           // Offset:   80 Size:    16
//   float4 g_vDefSpecColor;            // Offset:   96 Size:    16 [unused]
//   uint CS_FRONT;                     // Offset:  112 Size:     4
//      = 0x00000000 
//   uint CS_RIGHT;                     // Offset:  116 Size:     4
//      = 0x00000001 
//   uint CS_BACK;                      // Offset:  120 Size:     4
//      = 0x00000002 
//   uint CS_LEFT;                      // Offset:  124 Size:     4
//      = 0x00000003 
//   uint CS_TOP;                       // Offset:  128 Size:     4
//      = 0x00000004 
//   uint CS_BOTTOM;                    // Offset:  132 Size:     4
//      = 0x00000005 
//   float4 g_vAmbientSettings;         // Offset:  144 Size:    16 [unused]
//   float4 g_vScreenDepthRect;         // Offset:  160 Size:    16
//   float4x4 g_mCloudsShadowsSpace;    // Offset:  176 Size:    64 [unused]
//   float4 g_vCloudsShadowDesc;        // Offset:  240 Size:    16
//   
//   struct
//   {
//       
//       float4x4 mLightSpaceInverse;   // Offset:  256
//       float4x4 mLightSpace;          // Offset:  320
//       float4 vShadowBias;            // Offset:  384
//       float4 vBiasDir;               // Offset:  400
//       float4 vSmoothOffs;            // Offset:  416
//       float4 vShadowsDesc;           // Offset:  432
//       float4 avCPlane[8];            // Offset:  448
//       float4 avCascadeZ[2];          // Offset:  576
//       float4 avUVTransform[8];       // Offset:  608
//       float4 avZTransformZF[8];      // Offset:  736
//
//   } g_ShadSettings;                  // Offset:  256 Size:   608 [unused]
//   
//   struct
//   {
//       
//       float4 vDesc;                  // Offset:  864
//       float4 vFogLayerPlane;         // Offset:  880
//       float4 vFogLayerColor;         // Offset:  896
//       float4 vFogLayerSettings;      // Offset:  912
//       float4 vFogColor;              // Offset:  928
//       float4 vFogDistance;           // Offset:  944
//
//   } g_FogDesc;                       // Offset:  864 Size:    96
//   float4 g_vOffset;                  // Offset:  960 Size:    16 [unused]
//   float4 g_vCamPos;                  // Offset:  976 Size:    16 [unused]
//   float4 g_vState;                   // Offset:  992 Size:    16 [unused]
//   float4 g_vSettings;                // Offset: 1008 Size:    16
//   float4x4 g_mViewProj;              // Offset: 1024 Size:    64 [unused]
//   float4x4 g_mView;                  // Offset: 1088 Size:    64 [unused]
//   float4 g_avPData[64];              // Offset: 1152 Size:  1024 [unused]
//
// }
//
// cbuffer CBLightSettings
// {
//
//   struct
//   {
//       
//       float4 vLightsListSettings2;   // Offset:    0
//       float4 vShadowLODYPos;         // Offset:   16
//       float4 vShadowLODXSZ;          // Offset:   32
//       float4 vShadowLODYSZ;          // Offset:   48
//       float4 vShadowTexRes;          // Offset:   64
//
//   } g_LightListSettings;             // Offset:    0 Size:    80
//   float4 g_avLODMask[4];             // Offset:   80 Size:    64
//   float4 g_avRot[6];                 // Offset:  144 Size:    96
//   float4 g_avLightsInfo[2048];       // Offset:  240 Size: 32768
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// LightsShadowsSampler            sampler_c      NA          NA    0        1
// SSAOSampler                       sampler      NA          NA    1        1
// CloudsShadowsSampler              sampler      NA          NA    2        1
// SkyTextureSampler                 sampler      NA          NA    3        1
// DiffuseSampler                    sampler      NA          NA    4        1
// NormalsSampler                    sampler      NA          NA    5        1
// SkyTextureSampler                 texture  float4          2d    0        1
// DiffuseSampler                    texture  float4          2d    1        1
// NormalsSampler                    texture  float4          2d    2        1
// CloudsShadowsSampler              texture  float4          2d    3        1
// SSAOSampler                       texture  float4          2d    4        1
// g_tLightsShadows                  texture  float4          2d    5        1
// g_tLightsList                     texture   uint2          3d    6        1
// $Globals                          cbuffer      NA          NA    0        1
// CBLightSettings                   cbuffer      NA          NA    1        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float       
// TEXCOORD                 0   xyz         1     NONE   float   xyz 
// TEXCOORD                 2   xyzw        2     NONE   float   xyzw
// TEXCOORD                 3   xyzw        3     NONE   float   xyzw
// TEXCOORD                 4   xyzw        4     NONE   float   xyzw
// TEXCOORD                 5   xyz         5     NONE   float   xyz 
// TEXCOORD                 6   xyzw        6     NONE   float       
// TEXCOORD                 7   xyz         7     NONE   float   xy  
// TEXCOORD                 8   xyzw        8     NONE   float   xy w
// TEXCOORD                 9   xyzw        9     NONE   float   xyzw
// COLOR                    0   xyzw       10     NONE   float   x  w
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_4_1
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[64], immediateIndexed
dcl_constantbuffer cb1[2063], dynamicIndexed
dcl_sampler s0, mode_comparison
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_sampler s4, mode_default
dcl_sampler s5, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t5
dcl_resource_texture3d (uint,uint,uint,uint) t6
dcl_input_ps linear v1.xyz
dcl_input_ps linear v2.xyzw
dcl_input_ps linear v3.xyzw
dcl_input_ps linear v4.xyzw
dcl_input_ps linear v5.xyz
dcl_input_ps linear v7.xy
dcl_input_ps linear v8.xyw
dcl_input_ps linear v9.xyzw
dcl_input_ps linear v10.xw
dcl_output o0.xyzw
dcl_temps 17
div r0.xy, v8.xyxx, v8.wwww
sample r1.xyzw, r0.xyxx, t0.xyzw, s3
sample r2.xyzw, v1.xyxx, t1.xyzw, s4
sample r3.xyzw, v1.xyxx, t2.xyzw, s5
mad r4.xyz, r3.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
mov r4.w, -r4.z
dp3 r3.x, v2.xyzx, r4.xywx
dp3 r3.y, v3.xyzx, r4.xywx
dp3 r3.z, v4.xyzx, r4.xywx
dp3 r0.z, r3.xyzx, r3.xyzx
rsq r0.z, r0.z
mul r3.xyz, r0.zzzz, r3.xyzx
sample r0.z, v7.xyxx, t3.xzyw, s2
add r0.z, r0.z, l(-1.000000)
mad r0.z, cb0[15].z, r0.z, l(1.000000)
mul r4.xyz, r3.wwww, cb0[0].xyzx
dp3 r0.w, v5.xyzx, v5.xyzx
rsq r0.w, r0.w
mul r5.xy, r0.xyxx, cb1[0].xyxx
ftoi r5.yz, r5.xxyx
mov r5.w, l(0)
ld r6.xy, r5.yzww, t6.xyzw
umin r3.w, r6.y, l(17)
mov r7.x, v2.w
mov r7.y, v3.w
mov r7.z, v4.w
lt r4.w, l(0.500000), cb1[0].w
mov r6.yzw, l(0,0,0,0)
mov r8.xyz, l(0,0,0,0)
mov r9.xyz, l(0,0,0,0)
mov r10.xyz, l(0,0,0,0)
mov r7.w, l(0)
mov r5.x, l(0)
mov r8.w, r6.x
loop 
  ige r9.w, r7.w, r3.w
  breakc_nz r9.w
  if_nz r7.w
    iadd r5.x, r5.x, l(1)
    ld r8.w, r5.yzxw, t6.yzwx
  endif 
  ishl r9.w, r8.w, l(3)
  iadd r10.w, r9.w, l(1)
  ge r11.xy, cb1[r10.w + 15].xyxx, l(100.000000, 100.000000, 0.000000, 0.000000)
  if_nz r11.x
    add r12.x, l(-100.000000), cb1[r10.w + 15].x
  else 
    mov r12.x, cb1[r10.w + 15].x
  endif 
  if_nz r11.y
    add r12.y, l(-100.000000), cb1[r10.w + 15].y
  else 
    mov r12.y, cb1[r10.w + 15].y
  endif 
  lt r11.z, l(1.000000), cb1[r9.w + 15].w
  if_nz r11.z
    add r13.xyz, -r7.xyzx, cb1[r9.w + 15].xyzx
    dp3 r11.z, r13.xyzx, r13.xyzx
    sqrt r11.w, r11.z
    div r13.xyz, r13.xyzx, r11.wwww
    mad r11.z, r11.z, cb1[r10.w + 15].w, l(1.000000)
    div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r11.z
    add r11.z, r11.z, l(-0.100000)
    mul_sat r11.z, r11.z, l(1.11111116)
    iadd r11.w, r10.w, l(1)
    lt r13.w, l(2.000000), cb1[r9.w + 15].w
    if_nz r13.w
      add r14.x, l(-3.000000), cb1[r9.w + 15].w
      dp3 r14.y, r13.xyzx, cb1[r11.w + 15].xyzx
      add r14.z, -|r14.y|, l(1.000000)
      sqrt r14.z, r14.z
      mad r14.w, |r14.y|, l(-0.0187292993), l(0.074261)
      mad r14.w, r14.w, |r14.y|, l(-0.212114394)
      mad r14.w, r14.w, |r14.y|, l(1.57072878)
      mul r15.x, r14.z, r14.w
      mad r15.x, r15.x, l(-2.000000), l(3.14159274)
      lt r14.y, r14.y, -r14.y
      and r14.y, r14.y, r15.x
      mad r14.y, r14.w, r14.z, r14.y
      lt r14.z, r14.y, r14.x
      if_nz r14.z
        frc r14.z, cb1[r11.w + 15].w
        div r14.x, r14.y, r14.x
        add r14.x, -r14.z, r14.x
        add r14.y, -r14.z, l(1.000000)
        div_sat r14.x, r14.x, r14.y
        add r14.x, -r14.x, l(1.000000)
      else 
        mov r14.x, l(0)
      endif 
      mul r11.z, r11.z, r14.x
      lt r14.x, l(0.000000), r11.z
      ge r14.y, cb1[r11.w + 15].w, l(1.000000)
      and r14.x, r14.y, r14.x
      if_nz r14.x
        ftoi r14.x, cb1[r11.w + 15].w
        iadd r14.x, r14.x, l(-1)
      else 
        mov r14.x, l(-1)
      endif 
      mov r14.y, v2.w
      mov r14.z, v3.w
      mov r14.w, v4.w
    else 
      lt r15.x, l(0.000000), r11.z
      and r11.y, r11.y, r15.x
      if_nz r11.y
        ge r11.y, cb1[r11.w + 15].w, l(1.000000)
        if_nz r11.y
          ftoi r11.y, cb1[r11.w + 15].w
          iadd r11.y, r11.y, l(-1)
          add r15.xyz, r7.xyzx, -cb1[r9.w + 15].xyzx
          lt r16.xy, |r15.xzxx|, r15.yyyy
          and r11.w, r16.y, r16.x
          if_nz r11.w
            mov r11.w, cb0[8].x
          else 
            lt r16.xy, r15.yyyy, -|r15.xzxx|
            and r15.w, r16.y, r16.x
            if_nz r15.w
              mov r11.w, cb0[8].y
            else 
              lt r15.w, |r15.x|, r15.z
              if_nz r15.w
                mov r11.w, cb0[7].x
              else 
                lt r15.w, r15.z, -|r15.x|
                if_nz r15.w
                  mov r11.w, cb0[7].z
                else 
                  ge r15.w, r15.x, l(0.000000)
                  if_nz r15.w
                    mov r11.w, cb0[7].y
                  else 
                    mov r11.w, cb0[7].w
                  endif 
                endif 
              endif 
            endif 
          endif 
          ult r15.w, r11.w, cb0[8].x
          if_nz r15.w
            dp2 r16.x, r15.xzxx, cb1[r11.w + 9].xyxx
            dp2 r16.z, r15.xzxx, cb1[r11.w + 9].zwzz
            mov r16.y, r15.y
          else 
            dp2 r16.y, r15.yzyy, cb1[r11.w + 9].xyxx
            dp2 r16.z, r15.yzyy, cb1[r11.w + 9].zwzz
            mov r16.x, r15.x
          endif 
          add r14.yzw, r16.xxyz, cb1[r9.w + 15].xxyz
          iadd r14.x, r11.y, r11.w
        else 
          mov r14.x, l(-1)
          mov r14.y, v2.w
          mov r14.z, v3.w
          mov r14.w, v4.w
        endif 
      else 
        mov r14.x, l(-1)
        mov r14.y, v2.w
        mov r14.z, v3.w
        mov r14.w, v4.w
      endif 
    endif 
    ige r11.y, r14.x, l(0)
    if_nz r11.y
      iadd r11.y, r10.w, l(3)
      or r11.w, r11.y, l(5)
      iadd r15.x, r11.w, l(1)
      or r15.y, r15.x, l(7)
      mul r16.xyzw, r14.zzzz, cb1[r11.w + 15].xyzw
      mad r16.xyzw, r14.yyyy, cb1[r11.y + 15].xyzw, r16.xyzw
      mad r16.xyzw, r14.wwww, cb1[r15.x + 15].xyzw, r16.xyzw
      add r15.xyzw, r16.xyzw, cb1[r15.y + 15].xyzw
      div r14.yzw, r15.xxyz, r15.wwww
      lt r11.yw, l(0.000000, 1.000000, 0.000000, 1.000000), |r14.yyyz|
      or r11.y, r11.w, r11.y
      if_nz r11.y
        mov r11.w, l(0)
      endif 
      if_z r11.y
        mad r11.y, r14.y, l(0.500000), l(0.500000)
        mad r14.y, -r14.z, l(0.500000), l(0.500000)
        ushr r14.z, r14.x, l(5)
        and r14.x, r14.x, l(31)
        dp4 r15.x, cb1[2].xyzw, cb1[r14.z + 5].xyzw
        if_z r13.w
          mul r15.y, r15.x, cb1[4].x
          div r15.y, l(0.500000), r15.y
          add r15.z, -r15.y, l(1.000000)
          max r15.w, r11.y, r15.y
          min r11.y, r15.z, r15.w
          max r15.y, r14.y, r15.y
          min r14.y, r15.z, r15.y
        endif 
        utof r14.x, r14.x
        add r11.y, r11.y, r14.x
        mul r16.x, r15.x, r11.y
        dp4 r11.y, cb1[1].xyzw, cb1[r14.z + 5].xyzw
        dp2 r14.x, r14.yyyy, r15.xxxx
        add r16.y, r11.y, r14.x
        sample_c_lz r11.w, r16.xyxx, t5.xxxx, s0, r14.w
        and r11.y, r4.w, r13.w
        if_nz r11.y
          add r15.yz, r16.xxyx, -cb1[4].zzwz
          sample_c_lz r11.y, r15.yzyy, t5.xxxx, s0, r14.w
          add r11.y, r11.y, r11.w
          add r15.xw, r16.xxxy, cb1[4].zzzw
          sample_c_lz r13.w, r15.xzxx, t5.xxxx, s0, r14.w
          add r11.y, r11.y, r13.w
          sample_c_lz r13.w, r15.ywyy, t5.xxxx, s0, r14.w
          add r11.y, r11.y, r13.w
          sample_c_lz r13.w, r15.xwxx, t5.xxxx, s0, r14.w
          add r11.y, r11.y, r13.w
          mul r11.w, r11.y, l(0.200000)
        endif 
      endif 
      mul r11.z, r11.w, r11.z
    endif 
  else 
    mov r13.xyz, -cb1[r9.w + 15].xyzx
    mov r11.z, l(1.000000)
  endif 
  lt r9.w, l(0.000000), r11.z
  if_nz r9.w
    dp3 r9.w, r13.xyzx, r3.xyzx
    lt r11.y, l(0.000000), r9.w
    if_nz r11.y
      mov r12.z, cb1[r10.w + 15].z
      mul r14.xyz, r9.wwww, r12.xyzx
      mul r14.xyz, r11.zzzz, r14.xyzx
    else 
      mov r14.xyz, l(0,0,0,0)
    endif 
    if_z r11.x
      mad r11.xyw, v5.xyxz, r0.wwww, r13.xyxz
      mul r11.xyw, r11.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000)
      dp3 r9.w, r11.xywx, r11.xywx
      rsq r9.w, r9.w
      mul r11.xyw, r9.wwww, r11.xyxw
      dp3 r9.w, r11.xywx, r3.xyzx
      lt r11.x, l(0.000000), r9.w
      if_nz r11.x
        log r9.w, r9.w
        mul r9.w, r9.w, cb0[0].w
        exp r9.w, r9.w
        sqrt r11.x, r11.z
        mul r9.w, r9.w, r11.x
        mov r12.w, cb1[r10.w + 15].z
        mul r11.xyz, r9.wwww, r12.xywx
        mul r11.xyz, r4.xyzx, r11.xyzx
      else 
        mov r11.xyz, l(0,0,0,0)
      endif 
    else 
      mov r11.xyz, l(0,0,0,0)
    endif 
    if_z r7.w
      mov r6.yzw, r14.xxyz
      mov r8.xyz, r11.xyzx
    else 
      add r9.xyz, r9.xyzx, r14.xyzx
      add r10.xyz, r10.xyzx, r11.xyzx
    endif 
  endif 
  iadd r7.w, r7.w, l(1)
endloop 
mul r3.xyz, r8.xyzx, v10.xxxx
mad r4.xyz, r6.yzwy, r0.zzzz, r9.xyzx
mad r0.xy, r0.xyxx, cb0[10].zwzz, cb0[10].xyxx
sample r0.x, r0.xyxx, t4.yxzw, s1
mad r0.xyw, cb0[3].xyxz, r0.xxxx, r4.xyxz
mul r3.xyz, r0.zzzz, r3.xyzx
mad r0.xyz, r0.xywx, r2.xyzx, r3.xyzx
add r0.xyz, r10.xyzx, r0.xyzx
mov_sat r2.xyz, v9.xyzx
lt r0.w, cb0[57].w, l(0.500000)
if_nz r0.w
  add r3.xyz, -r0.xyzx, r1.xyzx
  mad o0.xyz, r2.xyzx, r3.xyzx, r0.xyzx
endif 
if_z r0.w
  mov_sat r0.w, v9.w
  mul r1.w, r1.w, r1.w
  mad r3.xyz, cb0[5].xyzx, r1.wwww, cb0[3].xyzx
  ge r1.w, cb0[54].z, l(0.000000)
  if_nz r1.w
    mad r4.xyz, cb0[56].xyzx, r3.xyzx, -r0.xyzx
    mad r4.xyz, r0.wwww, r4.xyzx, r0.xyzx
    add r5.xyz, r1.xyzx, -r4.xyzx
    mad o0.xyz, r2.xyzx, r5.xyzx, r4.xyzx
  else 
    mul r1.w, -cb0[55].w, cb0[57].z
    min r1.w, r1.w, l(1.000000)
    lt r3.w, r1.w, l(0.999900)
    if_nz r3.w
      mul r1.w, r1.w, r1.w
      mad r4.xyz, cb0[56].xyzx, r3.xyzx, -r0.xyzx
      mad r4.xyz, r0.wwww, r4.xyzx, r0.xyzx
      add r5.xyz, r1.xyzx, -r4.xyzx
      mad r4.xyz, r2.xyzx, r5.xyzx, r4.xyzx
      add r5.xyz, -r0.xyzx, r1.xyzx
      mad r5.xyz, r2.xyzx, r5.xyzx, r0.xyzx
      mad r6.xyz, cb0[56].xyzx, r3.xyzx, -r5.xyzx
      mad r5.xyz, r0.wwww, r6.xyzx, r5.xyzx
      add r5.xyz, -r4.xyzx, r5.xyzx
      mad o0.xyz, r1.wwww, r5.xyzx, r4.xyzx
    else 
      add r1.xyz, -r0.xyzx, r1.xyzx
      mad r0.xyz, r2.xyzx, r1.xyzx, r0.xyzx
      mad r1.xyz, cb0[56].xyzx, r3.xyzx, -r0.xyzx
      mad o0.xyz, r0.wwww, r1.xyzx, r0.xyzx
    endif 
  endif 
endif 
mul r0.x, r2.w, v10.w
add r0.y, -v1.z, cb0[63].x
mul_sat r0.y, r0.y, cb0[63].y
mul o0.w, r0.y, r0.x
ret 
// Approximately 321 instruction slots used
