//
// 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 g_vParams;                  // Offset:    0 Size:    16 [unused]
//   float4 g_aUVShiftData[64];         // Offset:   16 Size:  1024 [unused]
//   float4 bones[192];                 // Offset: 1040 Size:  3072 [unused]
//   
//   struct
//   {
//       
//       float4 vPlane;                 // Offset: 4112
//       float4 vSettings;              // Offset: 4128
//
//   } g_ClipPlane;                     // Offset: 4112 Size:    32 [unused]
//   float4x4 g_mCloudsShadowsSpace;    // Offset: 4144 Size:    64 [unused]
//   float4 g_vCloudsShadowDesc;        // Offset: 4208 Size:    16
//   float4 specColor;                  // Offset: 4224 Size:    16
//   float4 ControlData;                // Offset: 4240 Size:    16 [unused]
//   float4 difColor;                   // Offset: 4256 Size:    16
//   float4 ambient;                    // Offset: 4272 Size:    16
//   float4 lightCount;                 // Offset: 4288 Size:    16
//   float4 g_avLightPos[4];            // Offset: 4304 Size:    64
//   float4 g_avLightColor[4];          // Offset: 4368 Size:    64
//   float4 g_avConeDir[4];             // Offset: 4432 Size:    64
//   float4 g_vAmbientSettings;         // Offset: 4496 Size:    16
//   
//   struct
//   {
//       
//       float4 vDesc;                  // Offset: 4512
//       float4 vFogLayerPlane;         // Offset: 4528
//       float4 vFogLayerColor;         // Offset: 4544
//       float4 vFogLayerSettings;      // Offset: 4560
//       float4 vFogColor;              // Offset: 4576
//       float4 vFogDistance;           // Offset: 4592
//
//   } g_FogDesc;                       // Offset: 4512 Size:    96
//   float4 g_vScreenDepthRect;         // Offset: 4608 Size:    16 [unused]
//   float4x4 g_mViewProj;              // Offset: 4624 Size:    64 [unused]
//   float4x4 g_mView;                  // Offset: 4688 Size:    64 [unused]
//   float3 g_vCamPos;                  // Offset: 4752 Size:    12 [unused]
//   float4 g_vSkyColor;                // Offset: 4768 Size:    16
//   float4 g_vFogK;                    // Offset: 4784 Size:    16
//   
//   struct
//   {
//       
//       float4x4 mLightSpaceInverse;   // Offset: 4800
//       float4x4 mLightSpace;          // Offset: 4864
//       float4 vShadowBias;            // Offset: 4928
//       float4 vBiasDir;               // Offset: 4944
//       float4 vSmoothOffs;            // Offset: 4960
//       float4 vShadowsDesc;           // Offset: 4976
//       float4 avCPlane[8];            // Offset: 4992
//       float4 avCascadeZ[2];          // Offset: 5120
//       float4 avUVTransform[8];       // Offset: 5152
//       float4 avZTransformZF[8];      // Offset: 5280
//
//   } g_ShadSettings;                  // Offset: 4800 Size:   608
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// CloudsShadowsSampler              sampler      NA          NA    0        1
// AmbientSampler                    sampler      NA          NA    1        1
// DPattern0Sampler                  sampler      NA          NA    2        1
// DPattern1Sampler                  sampler      NA          NA    3        1
// DPattern2Sampler                  sampler      NA          NA    4        1
// DamageSampler                     sampler      NA          NA    5        1
// AlphaSampler                      sampler      NA          NA    6        1
// DiffuseSampler                    sampler      NA          NA    7        1
// shadowSamplerF                  sampler_c      NA          NA    8        1
// DamageSampler                     texture  float4          2d    0        1
// DPattern0Sampler                  texture  float4          2d    1        1
// DPattern2Sampler                  texture  float4          2d    2        1
// DPattern1Sampler                  texture  float4          2d    3        1
// DiffuseSampler                    texture  float4          2d    4        1
// AlphaSampler                      texture  float4          2d    5        1
// CloudsShadowsSampler              texture  float4          2d    6        1
// AmbientSampler                    texture  float4        cube    7        1
// g_tDepthTexture                   texture  float4     2darray    8        1
// $Globals                          cbuffer      NA          NA    0        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                 1   xyz         2     NONE   float   xyz 
// TEXCOORD                 2   xyzw        3     NONE   float   xyzw
// TEXCOORD                 3   xyzw        4     NONE   float   xyzw
// TEXCOORD                 4   xyz         5     NONE   float   xyz 
// TEXCOORD                 5   xyz         6     NONE   float   xyz 
// TEXCOORD                 6   xyz         7     NONE   float   xyz 
// TEXCOORD                 7   xyzw        8     NONE   float       
// SV_ClipDistance          0   x           9  CLIPDST   float       
//
//
// 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[338], dynamicIndexed
dcl_sampler s0, mode_default
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_sampler s7, mode_default
dcl_sampler s8, mode_comparison
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_texturecube (float,float,float,float) t7
dcl_resource_texture2darray (float,float,float,float) t8
dcl_input_ps linear v1.xy
dcl_input_ps linear v2.xyz
dcl_input_ps linear v3.xyzw
dcl_input_ps linear v4.xyzw
dcl_input_ps linear v5.xyz
dcl_input_ps linear v6.xyz
dcl_input_ps linear v7.xyz
dcl_output o0.xyzw
dcl_temps 11
lt r0.xyzw, cb0[320].xyzw, v3.wwww
and r0.xyzw, r0.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
dp4 r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.xyzw
lt r1.xyzw, cb0[321].xyzw, v3.wwww
and r1.xyzw, r1.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
dp4 r0.y, l(1.000000, 1.000000, 1.000000, 1.000000), r1.xyzw
add r0.z, r0.y, r0.x
ftou r0.w, r0.z
mad r1.xy, v3.xyxx, cb0[r0.w + 322].zwzz, cb0[r0.w + 322].xyxx
mad r1.z, v3.z, cb0[r0.w + 330].y, cb0[r0.w + 330].x
mul r1.w, v3.w, cb0[311].z
lt r2.xyzw, cb0[320].xyzw, r1.wwww
and r2.xyzw, r2.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
dp4 r2.x, l(1.000000, 1.000000, 1.000000, 1.000000), r2.xyzw
lt r3.xyzw, cb0[321].xyzw, r1.wwww
and r3.xyzw, r3.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
dp4 r1.w, l(1.000000, 1.000000, 1.000000, 1.000000), r3.xyzw
add r2.z, r1.w, r2.x
lt r1.w, r0.z, r2.z
if_nz r1.w
  ftou r1.w, r2.z
  mad r3.xy, v3.xyxx, cb0[r1.w + 322].zwzz, cb0[r1.w + 322].xyxx
  mad r1.w, v3.z, cb0[r1.w + 330].y, cb0[r1.w + 330].x
  mad r2.w, -cb0[r0.w + 330].w, cb0[311].w, v3.w
  mad r0.w, -cb0[r0.w + 330].w, cb0[311].w, cb0[r0.w + 330].w
  div r0.w, r2.w, r0.w
else 
  mov r3.xy, r1.xyxx
  mov r1.w, r1.z
  mov r2.z, r0.z
  mov r0.w, l(0)
endif 
lt r2.w, l(0.000000), r0.w
mov r3.zw, l(0,0,0,-1)
loop 
  ilt r4.x, l(1), r3.w
  breakc_nz r4.x
  itof r4.y, r3.w
  mov r4.z, r3.z
  mov r4.w, l(-1)
  loop 
    ilt r5.x, l(1), r4.w
    breakc_nz r5.x
    itof r4.x, r4.w
    mul r5.xy, r4.xyxx, cb0[310].xxxx
    mad r0.xy, r5.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), r1.xyxx
    sample_c_lz r0.x, r0.xyzx, t8.xxxx, s8, r1.z
    if_nz r2.w
      mad r2.xy, r5.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), r3.xyxx
      sample_c_lz r0.y, r2.xyzx, t8.xxxx, s8, r1.w
      add r0.y, -r0.x, r0.y
      mad r0.x, r0.w, r0.y, r0.x
    endif 
    add r4.z, r0.x, r4.z
    iadd r4.w, r4.w, l(1)
  endloop 
  mov r3.z, r4.z
  iadd r3.w, r3.w, l(1)
endloop 
ge r0.x, v2.z, l(0.250000)
if_nz r0.x
  sample r0.xyzw, v1.xyxx, t0.xyzw, s5
  ge r1.xy, v2.zzzz, l(0.500000, 0.750000, 0.000000, 0.000000)
  if_nz r1.x
    max r0.x, r0.y, r0.x
  endif 
  if_nz r1.y
    max r0.x, r0.z, r0.x
  endif 
  add r0.y, r0.x, l(-0.500000)
  mad r0.y, -r0.y, l(2.000000), l(1.000000)
  lt r0.z, r0.y, l(0.125000)
  if_nz r0.z
    discard_nz l(-1)
  endif 
  lt r0.z, r0.w, l(0.330000)
  if_nz r0.z
    sample r1.xyzw, v2.xyxx, t1.wxyz, s2
    mov r2.xyz, r1.yzwy
  else 
    lt r0.z, l(0.660000), r0.w
    if_nz r0.z
      sample r1.xyzw, v2.xyxx, t2.wxyz, s4
      mov r2.xyz, r1.yzwy
    else 
      sample r1.xyzw, v2.xyxx, t3.wxyz, s3
      mov r2.xyz, r1.yzwy
    endif 
  endif 
  add r0.x, r0.x, r0.x
  min r0.x, r0.x, l(1.000000)
else 
  mov r2.xyz, l(0,0,0,0)
  mov r0.xy, l(0,1.000000,0,0)
  mov r1.x, l(0)
endif 
sample r4.xyzw, v1.xyxx, t4.xyzw, s7
mov r3.x, l(0.500000)
mov r3.y, r4.w
sample r0.zw, r3.xyxx, t5.ywxz, s6
lt r1.z, r0.w, l(0.125000)
if_nz r1.z
  discard_nz l(-1)
endif 
mul r1.z, r3.z, l(0.111111112)
dp3 r1.w, v7.xyzx, v7.xyzx
rsq r1.w, r1.w
mul r3.xyw, r1.wwww, v7.xyxz
mov r1.y, l(0.500000)
sample r1.x, r1.yxyy, t5.xyzw, s6
add r2.xyz, r2.xyzx, -r4.xyzx
mad r2.xyz, r0.xxxx, r2.xyzx, r4.xyzx
mul r2.xyz, r2.xyzx, cb0[266].xyzx
mul r2.xyz, r2.xyzx, l(1.700000, 1.700000, 1.700000, 0.000000)
add r1.x, -r0.z, r1.x
mad r0.x, r0.x, r1.x, r0.z
mul r1.xyw, r0.xxxx, cb0[264].xyxz
mad r0.x, -r3.z, l(0.111111112), l(1.000000)
mad r0.x, v4.w, r0.x, r1.z
sample r0.z, v4.xyxx, t6.xzyw, s0
mul r1.z, v4.z, cb0[263].z
add r0.z, r0.z, l(-1.000000)
mad r0.z, r1.z, r0.z, l(1.000000)
mul r0.x, r0.z, r0.x
ftoi r0.z, cb0[268].x
mov r4.xyz, l(0,0,0,0)
mov r5.xyz, l(0,0,0,0)
mov r6.xyz, l(0,0,0,0)
mov r7.xyz, l(0,0,0,0)
mov r1.z, l(0)
loop 
  ige r2.w, r1.z, r0.z
  breakc_nz r2.w
  ge r8.xy, cb0[r1.z + 273].xyxx, l(100.000000, 100.000000, 0.000000, 0.000000)
  if_nz r8.x
    add r9.x, l(-100.000000), cb0[r1.z + 273].x
  else 
    mov r9.x, cb0[r1.z + 273].x
  endif 
  if_nz r8.y
    add r9.y, l(-100.000000), cb0[r1.z + 273].y
  else 
    mov r9.y, cb0[r1.z + 273].y
  endif 
  lt r2.w, l(1.000000), cb0[r1.z + 269].w
  if_nz r2.w
    add r8.yzw, -v6.xxyz, cb0[r1.z + 269].xxyz
    dp3 r2.w, r8.yzwy, r8.yzwy
    sqrt r3.z, r2.w
    div r8.yzw, r8.yyzw, r3.zzzz
    mad r2.w, r2.w, cb0[r1.z + 273].w, l(1.000000)
    div r2.w, l(1.000000, 1.000000, 1.000000, 1.000000), r2.w
    add r2.w, r2.w, l(-0.100000)
    mul_sat r2.w, r2.w, l(1.11111116)
    lt r3.z, l(2.000000), cb0[r1.z + 269].w
    if_nz r3.z
      add r3.z, l(-3.000000), cb0[r1.z + 269].w
      dp3 r4.w, r8.yzwy, cb0[r1.z + 277].xyzx
      add r5.w, -|r4.w|, l(1.000000)
      sqrt r5.w, r5.w
      mad r6.w, |r4.w|, l(-0.0187292993), l(0.074261)
      mad r6.w, r6.w, |r4.w|, l(-0.212114394)
      mad r6.w, r6.w, |r4.w|, l(1.57072878)
      mul r7.w, r5.w, r6.w
      mad r7.w, r7.w, l(-2.000000), l(3.14159274)
      lt r4.w, r4.w, -r4.w
      and r4.w, r4.w, r7.w
      mad r4.w, r6.w, r5.w, r4.w
      lt r5.w, r4.w, r3.z
      if_nz r5.w
        frc r5.w, cb0[r1.z + 277].w
        div r3.z, r4.w, r3.z
        add r3.z, -r5.w, r3.z
        add r4.w, -r5.w, l(1.000000)
        div_sat r3.z, r3.z, r4.w
        add r3.z, -r3.z, l(1.000000)
      else 
        mov r3.z, l(0)
      endif 
      mul r2.w, r2.w, r3.z
    endif 
  else 
    mov r8.yzw, -cb0[r1.z + 269].xxyz
    mov r2.w, l(1.000000)
  endif 
  lt r3.z, l(0.004000), r2.w
  if_nz r3.z
    dp3 r3.z, r8.yzwy, r3.xywx
    lt r4.w, l(0.000000), r3.z
    if_nz r4.w
      mov r9.z, cb0[r1.z + 273].z
      mul r10.xyz, r3.zzzz, r9.xyzx
      mul r10.xyz, r2.wwww, r10.xyzx
    else 
      mov r10.xyz, l(0,0,0,0)
    endif 
    if_z r8.x
      add r8.xyz, r8.yzwy, v5.xyzx
      mul r8.xyz, r8.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
      dp3 r3.z, r8.xyzx, r8.xyzx
      rsq r3.z, r3.z
      mul r8.xyz, r3.zzzz, r8.xyzx
      dp3 r3.z, r8.xyzx, r3.xywx
      max r3.z, r3.z, l(0.000000)
      lt r4.w, l(0.004000), r3.z
      if_nz r4.w
        log r3.z, r3.z
        mul r3.z, r3.z, cb0[264].w
        exp r3.z, r3.z
        sqrt r2.w, r2.w
        mul r2.w, r2.w, r3.z
        mov r9.w, cb0[r1.z + 273].z
        mul r8.xyz, r2.wwww, r9.xywx
        mul r8.xyz, r1.xywx, r8.xyzx
      else 
        mov r8.xyz, l(0,0,0,0)
      endif 
    else 
      mov r8.xyz, l(0,0,0,0)
    endif 
    if_z r1.z
      mov r4.xyz, r10.xyzx
      mov r5.xyz, r8.xyzx
    else 
      add r6.xyz, r6.xyzx, r10.xyzx
      add r7.xyz, r7.xyzx, r8.xyzx
    endif 
  endif 
  iadd r1.z, r1.z, l(1)
endloop 
mad r1.xyz, r4.xyzx, r0.xxxx, r6.xyzx
lt r0.z, l(0.500000), cb0[281].x
if_nz r0.z
  sample r3.xyz, r3.xywx, t7.xyzw, s1
  max r0.z, cb0[267].z, cb0[267].y
  max r0.z, r0.z, cb0[267].x
  max r1.w, r3.z, r3.y
  max r1.w, r1.w, r3.x
  lt r2.w, r1.w, r0.z
  if_nz r2.w
    div r0.z, r0.z, r1.w
    mul r3.xyz, r0.zzzz, r3.xyzx
  endif 
else 
  mov r3.xyz, cb0[267].xyzx
endif 
add r1.xyz, r1.xyzx, r3.xyzx
mul r3.xyz, r0.xxxx, r5.xyzx
mad r1.xyz, r1.xyzx, r2.xyzx, r3.xyzx
add r1.xyz, r7.xyzx, r1.xyzx
mov_sat r2.xyz, cb0[299].xyzx
lt r0.x, cb0[285].w, l(0.500000)
if_nz r0.x
  add r3.xyz, -r1.xyzx, cb0[298].xyzx
  mad o0.xyz, r2.xyzx, r3.xyzx, r1.xyzx
endif 
if_z r0.x
  mov_sat r0.x, cb0[299].w
  mul r0.z, cb0[298].w, cb0[298].w
  mad r3.xyz, cb0[273].xyzx, r0.zzzz, cb0[267].xyzx
  ge r0.z, cb0[282].z, l(0.000000)
  if_nz r0.z
    mad r4.xyz, cb0[284].xyzx, r3.xyzx, -r1.xyzx
    mad r4.xyz, r0.xxxx, r4.xyzx, r1.xyzx
    add r5.xyz, -r4.xyzx, cb0[298].xyzx
    mad o0.xyz, r2.xyzx, r5.xyzx, r4.xyzx
  else 
    mul r0.z, -cb0[283].w, cb0[285].z
    min r0.z, r0.z, l(1.000000)
    lt r1.w, r0.z, l(0.999900)
    if_nz r1.w
      mul r0.z, r0.z, r0.z
      mad r4.xyz, cb0[284].xyzx, r3.xyzx, -r1.xyzx
      mad r4.xyz, r0.xxxx, r4.xyzx, r1.xyzx
      add r5.xyz, -r4.xyzx, cb0[298].xyzx
      mad r4.xyz, r2.xyzx, r5.xyzx, r4.xyzx
      add r5.xyz, -r1.xyzx, cb0[298].xyzx
      mad r5.xyz, r2.xyzx, r5.xyzx, r1.xyzx
      mad r6.xyz, cb0[284].xyzx, r3.xyzx, -r5.xyzx
      mad r5.xyz, r0.xxxx, r6.xyzx, r5.xyzx
      add r5.xyz, -r4.xyzx, r5.xyzx
      mad o0.xyz, r0.zzzz, r5.xyzx, r4.xyzx
    else 
      add r4.xyz, -r1.xyzx, cb0[298].xyzx
      mad r1.xyz, r2.xyzx, r4.xyzx, r1.xyzx
      mad r2.xyz, cb0[284].xyzx, r3.xyzx, -r1.xyzx
      mad o0.xyz, r0.xxxx, r2.xyzx, r1.xyzx
    endif 
  endif 
endif 
mul o0.w, r0.y, r0.w
ret 
// Approximately 292 instruction slots used
