//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//   using 3Dmigoto v1.2.67 on Mon Jan 01 13:12:21 2018
//
//
// Buffer Definitions: 
//
// cbuffer $Globals
// {
//
//   float4 specColor;                  // Offset:    0 Size:    16 [unused]
//   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
//   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]
//   
//   struct
//   {
//       
//       float4x4 mLightSpaceInverse;   // Offset:  160
//       float4x4 mLightSpace;          // Offset:  224
//       float4 vShadowBias;            // Offset:  288
//       float4 vBiasDir;               // Offset:  304
//       float4 vSmoothOffs;            // Offset:  320
//       float4 vShadowsDesc;           // Offset:  336
//       float4 avCPlane[8];            // Offset:  352
//       float4 avCascadeZ[2];          // Offset:  480
//       float4 avUVTransform[8];       // Offset:  512
//       float4 avZTransformZF[8];      // Offset:  640
//
//   } g_ShadSettings;                  // Offset:  160 Size:   608 [unused]
//   float4x4 g_mCloudsShadowsSpace;    // Offset:  768 Size:    64 [unused]
//   float4 g_vCloudsShadowDesc;        // Offset:  832 Size:    16
//   
//   struct
//   {
//       
//       float4 vDesc;                  // Offset:  848
//       float4 vFogLayerPlane;         // Offset:  864
//       float4 vFogLayerColor;         // Offset:  880
//       float4 vFogLayerSettings;      // Offset:  896
//       float4 vFogColor;              // Offset:  912
//       float4 vFogDistance;           // Offset:  928
//
//   } g_FogDesc;                       // Offset:  848 Size:    96
//   float4 FogK;                       // Offset:  944 Size:    16 [unused]
//      = 0x3fc00000 0x3fe66666 0x4019999a 0x3f800000 
//   float4x4 g_mWorldViewProjection;   // Offset:  960 Size:    64 [unused]
//   float3 g_deltaCam;                 // Offset: 1024 Size:    12 [unused]
//   float3 g_sunVector;                // Offset: 1040 Size:    12 [unused]
//   float3 g_camPos;                   // Offset: 1056 Size:    12 [unused]
//   float3 g_worldPos;                 // Offset: 1072 Size:    12 [unused]
//   float3 g_color_Diffuse;            // Offset: 1088 Size:    12 [unused]
//   float4 g_color_Empty;              // Offset: 1104 Size:    16 [unused]
//   float cEPS;                        // Offset: 1120 Size:     4 [unused]
//      = 0x3a83126f 
//   float c0;                          // Offset: 1124 Size:     4 [unused]
//      = 0x00000000 
//   float c0_05;                       // Offset: 1128 Size:     4 [unused]
//      = 0x3d4ccccd 
//   float c0_5;                        // Offset: 1132 Size:     4 [unused]
//      = 0x3f000000 
//   float c1_0;                        // Offset: 1136 Size:     4
//      = 0x3f800000 
//   float c2_0;                        // Offset: 1140 Size:     4
//      = 0x40000000 
//   float c3_0;                        // Offset: 1144 Size:     4 [unused]
//      = 0x40400000 
//   float c4_0;                        // Offset: 1148 Size:     4 [unused]
//      = 0x40800000 
//   float c400_0;                      // Offset: 1152 Size:     4 [unused]
//      = 0x43c80000 
//
// }
//
// 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
// CloudsShadowsSampler              sampler      NA          NA    1        1
// RoadAlphaTextureSampler           sampler      NA          NA    2        1
// RoadTextureSampler                sampler      NA          NA    3        1
// AlphaMaskTextureSampler           sampler      NA          NA    4        1
// SkyTextureSampler                 sampler      NA          NA    5        1
// NormalTextureSampler              sampler      NA          NA    6        1
// NormalTextureSampler              texture  float4          2d    0        1
// CloudsShadowsSampler              texture  float4          2d    1        1
// RoadAlphaTextureSampler           texture  float4          2d    2        1
// RoadTextureSampler                texture  float4          2d    3        1
// SkyTextureSampler                 texture  float4          2d    4        1
// AlphaMaskTextureSampler           texture  float4          2d    5        1
// g_tLightsShadows                  texture  float4          2d    6        1
// g_tLightsList                     texture   uint2          3d    7        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   xy          1     NONE   float   xy  
// TEXCOORD                 3     zw        1     NONE   float     zw
// TEXCOORD                 1   xyzw        2     NONE   float   xyzw
// TEXCOORD                 2   xyzw        3     NONE   float   xy w
// TEXCOORD                 4   xyzw        4     NONE   float       
// TEXCOORD                 5   xyz         5     NONE   float   xyz 
// TEXCOORD                 6   xyz         6     NONE   float   xy  
// TEXCOORD                 7   xyzw        7     NONE   float   xyzw
//
//
// 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[72], 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_sampler s6, 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_texture2d (float,float,float,float) t6
dcl_resource_texture3d (uint,uint,uint,uint) t7
dcl_input_ps linear v1.xy
dcl_input_ps linear v1.zw
dcl_input_ps linear v2.xyzw
dcl_input_ps linear v3.xyw
dcl_input_ps linear v5.xyz
dcl_input_ps linear v6.xy
dcl_input_ps linear v7.xyzw
dcl_output o0.xyzw
dcl_temps 9
sample r0.xyz, v1.xyxx, t0.xyzw, s6
mad r0.xyz, r0.xyzx, cb0[71].yyyy, -cb0[71].xxxx
dp3 r0.w, r0.xyzx, r0.xyzx
rsq r0.w, r0.w
mul r0.xyz, r0.wwww, r0.xyzx
sample r0.w, v6.xyxx, t1.xzwy, s1
add r0.w, r0.w, l(-1.000000)
mad r0.w, cb0[52].z, r0.w, l(1.000000)
div r1.xy, v3.xyxx, v3.wwww
dp3 r0.x, r0.xyzx, -cb0[4].xyzx
max r0.x, r0.x, l(0.000000)
mul r0.xyz, r0.xxxx, cb0[5].xyzx
mad r0.xyz, r0.xyzx, r0.wwww, cb0[3].xyzx
lt r0.w, cb0[4].w, l(1.500000)
if_nz r0.w
  mov r2.xyz, r0.xyzx
endif 
if_z r0.w
  mul r1.zw, r1.xxxy, cb1[0].xxxy
  ftoi r3.xy, r1.zwzz
  mov r3.w, l(0)
  ld r0.w, r3.xyww, t7.xzwy
  umin r0.w, r0.w, l(17)
  ige r1.z, l(1), r0.w
  if_nz r1.z
    mov r2.xyz, r0.xyzx
  endif 
  if_z r1.z
    mov r2.x, l(1)
    mov r2.yzw, r0.xxzy
    loop 
      ige r1.z, r2.x, r0.w
      breakc_nz r1.z
      mov r3.z, r2.x
      ld r1.z, r3.xyzw, t7.yzxw
      ishl r1.z, r1.z, l(3)
      iadd r1.w, r1.z, l(1)
      ge r4.xy, cb1[r1.w + 15].xyxx, l(100.000000, 100.000000, 0.000000, 0.000000)
      if_nz r4.x
        add r3.z, l(-100.000000), cb1[r1.w + 15].x
      else 
        mov r3.z, cb1[r1.w + 15].x
      endif 
      if_nz r4.y
        add r4.x, l(-100.000000), cb1[r1.w + 15].y
      else 
        mov r4.x, cb1[r1.w + 15].y
      endif 
      add r5.xyz, -v5.xyzx, cb1[r1.z + 15].xyzx
      dp3 r4.z, r5.xyzx, r5.xyzx
      mad r4.w, r4.z, cb1[r1.w + 15].w, l(1.000000)
      div r4.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w
      add r4.w, r4.w, l(-0.100000)
      mul_sat r4.w, r4.w, l(1.11111116)
      lt r5.w, l(0.001000), r4.w
      if_nz r5.w
        sqrt r4.z, r4.z
        div r4.z, l(1.000000, 1.000000, 1.000000, 1.000000), r4.z
        mul r5.xyz, r4.zzzz, r5.xyzx
        max r4.z, r5.y, l(0.000000)
        mul r4.z, r4.z, r4.w
        iadd r4.w, r1.w, l(1)
        lt r5.w, l(2.000000), cb1[r1.z + 15].w
        if_nz r5.w
          add r5.w, l(-3.000000), cb1[r1.z + 15].w
          dp3 r5.x, r5.xyzx, cb1[r4.w + 15].xyzx
          add r5.y, -|r5.x|, l(1.000000)
          sqrt r5.y, r5.y
          mad r5.z, |r5.x|, l(-0.0187292993), l(0.074261)
          mad r5.z, r5.z, |r5.x|, l(-0.212114394)
          mad r5.z, r5.z, |r5.x|, l(1.57072878)
          mul r6.x, r5.y, r5.z
          mad r6.x, r6.x, l(-2.000000), l(3.14159274)
          lt r5.x, r5.x, -r5.x
          and r5.x, r5.x, r6.x
          mad r5.x, r5.z, r5.y, r5.x
          lt r5.y, r5.x, r5.w
          if_nz r5.y
            frc r5.y, cb1[r4.w + 15].w
            div r5.x, r5.x, r5.w
            add r5.x, -r5.y, r5.x
            add r5.y, -r5.y, l(1.000000)
            div_sat r5.x, r5.x, r5.y
            add r5.x, -r5.x, l(1.000000)
          else 
            mov r5.x, l(0)
          endif 
          mul r4.z, r4.z, r5.x
          lt r5.x, l(0.000000), r4.z
          ge r5.y, cb1[r4.w + 15].w, l(1.000000)
          and r5.x, r5.y, r5.x
          if_nz r5.x
            ftoi r5.x, cb1[r4.w + 15].w
            iadd r5.x, r5.x, l(-1)
          else 
            mov r5.x, l(-1)
          endif 
          mov r5.yzw, v5.xxyz
        else 
          lt r6.x, l(0.000000), r4.z
          and r4.y, r4.y, r6.x
          if_nz r4.y
            ge r4.y, cb1[r4.w + 15].w, l(1.000000)
            if_nz r4.y
              ftoi r4.y, cb1[r4.w + 15].w
              iadd r4.y, r4.y, l(-1)
              add r6.xyz, v5.xyzx, -cb1[r1.z + 15].xyzx
              lt r7.xy, |r6.xzxx|, r6.yyyy
              and r4.w, r7.y, r7.x
              if_nz r4.w
                mov r4.w, cb0[8].x
              else 
                lt r7.xy, r6.yyyy, -|r6.xzxx|
                and r6.w, r7.y, r7.x
                if_nz r6.w
                  mov r4.w, cb0[8].y
                else 
                  lt r6.w, |r6.x|, r6.z
                  if_nz r6.w
                    mov r4.w, cb0[7].x
                  else 
                    lt r6.w, r6.z, -|r6.x|
                    if_nz r6.w
                      mov r4.w, cb0[7].z
                    else 
                      ge r6.w, r6.x, l(0.000000)
                      if_nz r6.w
                        mov r4.w, cb0[7].y
                      else 
                        mov r4.w, cb0[7].w
                      endif 
                    endif 
                  endif 
                endif 
              endif 
              ult r6.w, r4.w, cb0[8].x
              if_nz r6.w
                dp2 r7.x, r6.xzxx, cb1[r4.w + 9].xyxx
                dp2 r7.z, r6.xzxx, cb1[r4.w + 9].zwzz
                mov r7.y, r6.y
              else 
                dp2 r7.y, r6.yzyy, cb1[r4.w + 9].xyxx
                dp2 r7.z, r6.yzyy, cb1[r4.w + 9].zwzz
                mov r7.x, r6.x
              endif 
              add r5.yzw, r7.xxyz, cb1[r1.z + 15].xxyz
              iadd r5.x, r4.y, r4.w
            else 
              mov r5.x, l(-1)
              mov r5.yzw, v5.xxyz
            endif 
          else 
            mov r5.x, l(-1)
            mov r5.yzw, v5.xxyz
          endif 
        endif 
        ige r1.z, r5.x, l(0)
        if_nz r1.z
          iadd r1.z, r1.w, l(3)
          or r4.y, r1.z, l(5)
          iadd r4.w, r4.y, l(1)
          or r6.x, r4.w, l(7)
          mul r7.xyzw, r5.zzzz, cb1[r4.y + 15].xyzw
          mad r7.xyzw, r5.yyyy, cb1[r1.z + 15].xyzw, r7.xyzw
          mad r7.xyzw, r5.wwww, cb1[r4.w + 15].xyzw, r7.xyzw
          add r6.xyzw, r7.xyzw, cb1[r6.x + 15].xyzw
          div r5.yzw, r6.xxyz, r6.wwww
          lt r4.yw, l(0.000000, 1.000000, 0.000000, 1.000000), |r5.yyyz|
          or r1.z, r4.w, r4.y
          if_nz r1.z
            mov r4.y, l(0)
          endif 
          if_z r1.z
            mad r1.z, r5.y, l(0.500000), l(0.500000)
            mad r4.w, -r5.z, l(0.500000), l(0.500000)
            ushr r5.y, r5.x, l(5)
            and r5.x, r5.x, l(31)
            dp4 r5.z, cb1[2].xyzw, cb1[r5.y + 5].xyzw
            mul r6.x, r5.z, cb1[4].x
            div r6.x, l(0.500000), r6.x
            add r6.y, -r6.x, l(1.000000)
            max r1.z, r1.z, r6.x
            min r1.z, r6.y, r1.z
            max r4.w, r4.w, r6.x
            min r4.w, r6.y, r4.w
            utof r5.x, r5.x
            add r1.z, r1.z, r5.x
            mul r6.x, r5.z, r1.z
            dp4 r1.z, cb1[1].xyzw, cb1[r5.y + 5].xyzw
            dp2 r4.w, r4.wwww, r5.zzzz
            add r6.y, r1.z, r4.w
            sample_c_lz r4.y, r6.xyxx, t6.xxxx, s0, r5.w
          endif 
          mul r4.z, r4.y, r4.z
        endif 
        mul r5.x, r3.z, r4.z
        mul r5.y, r4.x, r4.z
        mul r5.z, r4.z, cb1[r1.w + 15].z
        add r2.yzw, r2.yyzw, r5.xxzy
      endif 
      iadd r2.x, r2.x, l(1)
    endloop 
    mov r2.x, r2.y
    mov r2.yz, r2.wwzw
  endif 
endif 
mul r0.xy, v2.xyxx, l(0.250000, 1.000000, 0.000000, 0.000000)
sample r0.xyzw, r0.xyxx, t2.xyzw, s2
sample r3.xyzw, v2.xyxx, t3.xyzw, s3
mul r0.xyzw, r0.xyzw, r3.xyzw
mov r2.w, cb0[71].x
mul r3.xyzw, r0.xyzw, r2.xyzw
sample r1.xyzw, r1.xyxx, t4.xyzw, s5
mov_sat r4.xyz, v7.xyzx
lt r0.w, cb0[56].w, l(0.500000)
if_nz r0.w
  mad r5.xyz, -r0.xyzx, r2.xyzx, r1.xyzx
  mad o0.xyz, r4.xyzx, r5.xyzx, r3.xyzx
endif 
if_z r0.w
  mov_sat r0.w, v7.w
  mul r1.w, r1.w, r1.w
  mad r5.xyz, cb0[5].xyzx, r1.wwww, cb0[3].xyzx
  ge r1.w, cb0[53].z, l(0.000000)
  if_nz r1.w
    mad r6.xyz, cb0[55].xyzx, r5.xyzx, -r3.xyzx
    mad r6.xyz, r0.wwww, r6.xyzx, r3.xyzx
    add r7.xyz, r1.xyzx, -r6.xyzx
    mad o0.xyz, r4.xyzx, r7.xyzx, r6.xyzx
  else 
    mul r1.w, -cb0[54].w, cb0[56].z
    min r1.w, r1.w, l(1.000000)
    lt r2.w, r1.w, l(0.999900)
    if_nz r2.w
      mul r1.w, r1.w, r1.w
      mad r6.xyz, cb0[55].xyzx, r5.xyzx, -r3.xyzx
      mad r6.xyz, r0.wwww, r6.xyzx, r3.xyzx
      add r7.xyz, r1.xyzx, -r6.xyzx
      mad r6.xyz, r4.xyzx, r7.xyzx, r6.xyzx
      mad r7.xyz, -r0.xyzx, r2.xyzx, r1.xyzx
      mad r7.xyz, r4.xyzx, r7.xyzx, r3.xyzx
      mad r8.xyz, cb0[55].xyzx, r5.xyzx, -r7.xyzx
      mad r7.xyz, r0.wwww, r8.xyzx, r7.xyzx
      add r7.xyz, -r6.xyzx, r7.xyzx
      mad o0.xyz, r1.wwww, r7.xyzx, r6.xyzx
    else 
      mad r0.xyz, -r0.xyzx, r2.xyzx, r1.xyzx
      mad r0.xyz, r4.xyzx, r0.xyzx, r3.xyzx
      mad r1.xyz, cb0[55].xyzx, r5.xyzx, -r0.xyzx
      mad o0.xyz, r0.wwww, r1.xyzx, r0.xyzx
    endif 
  endif 
endif 
sample r0.xy, v2.zwzz, t5.yzxw, s4
dp2 r0.x, v1.zwzz, r0.xyxx
mul o0.w, r0.x, r3.w
ret 
// Approximately 257 instruction slots used
