//sky
// ---- Created with 3Dmigoto v1.2.67 on Thu Nov 30 02:21:59 2017
Texture3D<float4> t1 : register(t1);

Texture3D<float4> t0 : register(t0);

SamplerState s1_s : register(s1);

SamplerState s0_s : register(s0);

cbuffer cb4 : register(b4)
{
  float4 cb4[15];
}

cbuffer cb2 : register(b2)
{
  float4 cb2[4];
}

cbuffer cb1 : register(b1)
{
  float4 cb1[12];
}

cbuffer cb0 : register(b0)
{
  float4 cb0[15];
}




// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);


void main(
  float3 v0 : POSITION0,
  float4 v1 : TEXCOORD0,
  float4 v2 : TEXCOORD1,
  float4 v3 : TEXCOORD2,
  float3 v4 : TEXCOORD3,
  out float4 o0 : SV_POSITION0,
  out float2 o1 : TEXCOORD0,
  out float2 p1 : TEXCOORD1,
  out float4 o2 : TEXCOORD8,
  out float4 o3 : TEXCOORD2,
  out float4 o4 : TEXCOORD3,
  out float4 o5 : TEXCOORD4,
  out float4 o6 : TEXCOORD5,
  out float3 o7 : TEXCOORD6,
  out float o8 : SV_CullDistance0)
{
  float4 r0,r1,r2,r3,r4;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.xyz = v0.xyz;
  r0.w = 1;
  r1.x = dot(r0.xyzw, cb4[4].xyzw);
  r1.y = dot(r0.xyzw, cb4[5].xyzw);
  r1.z = dot(r0.xyzw, cb4[6].xyzw);
  r2.xyzw = cb2[1].xyzw * r1.yyyy;
  r2.xyzw = cb2[0].xyzw * r1.xxxx + r2.xyzw;
  r1.xyzw = cb2[2].xyzw * r1.zzzz + r2.xyzw;
  o0.xyzw = cb2[3].xyzw + r1.xyzw;

o0.x = o0.x * 1.11;
  r1.x = saturate(v1.z);
  o3.w = r1.x * 0.5 + 0.5;
  r1.xyz = -cb0[12].xyz + v0.xyz;
  r2.xy = -cb0[9].xy + v0.xz;
  o5.xy = r2.xy / cb0[10].xy;
  r1.w = dot(r1.xyz, r1.xyz);
  r2.x = rsqrt(r1.w);
  r1.w = sqrt(r1.w);
  o7.x = r1.w / cb0[10].w;
  r2.x = -r1.y * r2.x + 1;
  o7.y = 0.5 * r2.x;
  r2.x = dot(r0.xyzw, cb4[0].xyzw);
  r2.y = dot(r0.xyzw, cb4[1].xyzw);
  r2.z = dot(r0.xyzw, cb4[2].xyzw);
  r0.x = cmp(cb4[14].y < cb1[11].x);
  if (r0.x != 0) {
    r0.y = -cb4[14].y + r2.y;
    r0.y = max(0, r0.y);
    r0.y = 9.99999975e-006 + r0.y;
    r0.z = -cb4[14].y + cb1[11].x;
    r0.y = saturate(r0.z / r0.y);
    r0.z = r1.w * r0.y;
    r0.w = -r1.w * r0.y + r1.w;
    r2.w = cmp(0 < r0.w);
    if (r2.w != 0) {
      r0.y = 1 + -r0.y;
      r0.y = 5000 * r0.y;
      r2.w = -cb1[11].x + r2.y;
      r0.w = 9.99999975e-006 + r0.w;
      r0.w = r2.w / r0.w;
      r2.w = cb1[5].x * r0.w;
      r3.x = cmp(r2.w == 0.000000);
      r3.y = -r2.w * r0.y;
      r3.y = 1.44269502 * r3.y;
      r3.y = exp2(r3.y);
      r3.y = 1 + -r3.y;
      r2.w = r3.y / r2.w;
      r2.w = r3.x ? r0.y : r2.w;
      r3.x = min(cb1[11].x, r2.y);
      r3.x = -cb1[5].x * r3.x;
      r3.x = 1.44269502 * r3.x;
      r3.x = exp2(r3.x);
      r3.x = -cb1[5].y * r3.x;
      r2.w = r3.x * r2.w;
      r2.w = 1.44269502 * r2.w;
      r2.w = exp2(r2.w);
      r2.w = min(1, r2.w);
      r0.w = cb0[8].z * r0.w;
      r3.x = cmp(r0.w == 0.000000);
      r3.y = -r0.w * r0.y;
      r3.y = 1.44269502 * r3.y;
      r3.y = exp2(r3.y);
      r3.y = 1 + -r3.y;
      r0.w = r3.y / r0.w;
      r0.y = r3.x ? r0.y : r0.w;
      r0.w = cb1[11].x + -cb0[8].x;
      r0.w = -cb0[8].z * r0.w;
      r0.w = 1.44269502 * r0.w;
      r0.w = exp2(r0.w);
      r0.w = -cb0[8].y * r0.w;
      r0.y = r0.w * r0.y;
      r0.y = 1.44269502 * r0.y;
      r0.y = exp2(r0.y);
      r0.y = min(1, r0.y);
      r0.y = r2.w * r0.y;
    } else {
      r0.y = 1;
    }
    r0.z = -cb1[11].y * r0.z;
    r0.z = 1.44269502 * r0.z;
    r0.z = exp2(r0.z);
    r0.z = min(1, r0.z);
  } else {
    r0.w = cb4[14].y + -r2.y;
    r0.w = max(0, r0.w);
    r0.w = 9.99999975e-006 + r0.w;
    r2.w = cb4[14].y + -cb1[11].x;
    r0.w = saturate(r2.w / r0.w);
    r2.w = -r1.w * r0.w + r1.w;
    r3.x = 5000 * r0.w;
    r3.y = max(cb1[11].x, r2.y);
    r3.z = -cb4[14].y + r3.y;
    r0.w = r1.w * r0.w + 9.99999975e-006;
    r0.w = r3.z / r0.w;
    r3.z = cb1[5].x * r0.w;
    r3.w = cmp(r3.z == 0.000000);
    r4.x = -r3.z * r3.x;
    r4.x = 1.44269502 * r4.x;
    r4.x = exp2(r4.x);
    r4.x = 1 + -r4.x;
    r3.z = r4.x / r3.z;
    r3.z = r3.w ? r3.x : r3.z;
    r3.y = min(cb4[14].y, r3.y);
    r3.y = -cb1[5].x * r3.y;
    r3.y = 1.44269502 * r3.y;
    r3.y = exp2(r3.y);
    r3.y = -cb1[5].y * r3.y;
    r3.y = r3.y * r3.z;
    r3.y = 1.44269502 * r3.y;
    r3.y = exp2(r3.y);
    r3.y = min(1, r3.y);
    r0.w = cb0[8].z * r0.w;
    r3.z = cmp(r0.w == 0.000000);
    r3.w = -r0.w * r3.x;
    r3.w = 1.44269502 * r3.w;
    r3.w = exp2(r3.w);
    r3.w = 1 + -r3.w;
    r0.w = r3.w / r0.w;
    r0.w = r3.z ? r3.x : r0.w;
    r3.x = cb4[14].y + -cb0[8].x;
    r3.x = -cb0[8].z * r3.x;
    r3.x = 1.44269502 * r3.x;
    r3.x = exp2(r3.x);
    r3.x = -cb0[8].y * r3.x;
    r0.w = r3.x * r0.w;
    r0.w = 1.44269502 * r0.w;
    r0.w = exp2(r0.w);
    r0.w = min(1, r0.w);
    r0.y = r3.y * r0.w;
    r0.w = -cb1[11].y * r2.w;
    r0.w = 1.44269502 * r0.w;
    r0.w = exp2(r0.w);
    r0.z = min(1, r0.w);
  }
  r3.xz = -cb4[14].xz;
  r3.y = -0;
  r2.xyz = r3.xyz + r2.xyz;
  r0.w = dot(r2.xyz, r2.xyz);
  r0.w = sqrt(r0.w);
  r0.w = 9.99999975e-005 + r0.w;
  r0.w = r2.y / r0.w;
  r2.x = -0.0199999996 + r0.w;
  r2.x = -57.7078018 * r2.x;
  r2.x = exp2(r2.x);
  r2.x = 1 + r2.x;
  r2.x = 1 / r2.x;
  r0.w = saturate(20 * r0.w);
  r0.w = r2.x * r0.w;
  r2.x = -cb0[13].x + r1.w;
  r2.x = saturate(cb0[13].y * r2.x);
  r2.x = 1 + -r2.x;
  r0.w = r2.x * r0.w;
  r2.x = r0.y * r0.w;
  r3.x = -r0.y * r0.w + 1;
  r4.x = r3.x * r0.z;
  r4.y = 1 + -r0.z;
  r4.z = r2.x * r0.z;
  r3.y = r4.y * r2.x;
  r3.z = r4.z;
  o2.xyz = r0.xxx ? r4.xyz : r3.xyz;
  r0.x = -cb0[14].x + r1.w;
  r0.x = saturate(cb0[14].y * r0.x);
  r0.x = cb0[14].z * r0.x;
  r0.x = max(0.200000003, r0.x);
  r0.y = t0.SampleLevel(s0_s, v1.xyz, r0.x).z;
  r0.x = t1.SampleLevel(s1_s, v1.xyz, r0.x).z;
  r0.x = r0.x + -r0.y;
  r0.x = cb0[14].w * r0.x + r0.y;
  r0.x = saturate(r0.x * v2.x + -0.00200000009);
  r0.y = cmp(r0.x >= 9.99999975e-005);
  o8.x = r0.y ? 0.5 : -0.5;
  o1.xy = v3.xy;
  p1.x = v2.x;
  p1.y = r0.x;
  o3.xyz = v1.xyz;
  o4.xyz = r1.xyz;
  o5.z = 0.5;
  o6.xyz = v4.xyz;
  o7.z = cb0[9].w;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.2.67 on Thu Nov 30 02:21:59 2017
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION                 0   xyz         0     NONE   float   xyz 
// TEXCOORD                 0   xyz         1     NONE   float   xyz 
// TEXCOORD                 1   x           2     NONE   float   x   
// TEXCOORD                 2   xy          3     NONE   float   xy  
// TEXCOORD                 3   xyz         4     NONE   float   xyz 
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION              0   xyzw        0      POS   float   xyzw
// TEXCOORD                 0   xy          1     NONE   float   xy  
// TEXCOORD                 1     zw        1     NONE   float     zw
// TEXCOORD                 8   xyz         2     NONE   float   xyz 
// TEXCOORD                 2   xyzw        3     NONE   float   xyzw
// TEXCOORD                 3   xyz         4     NONE   float   xyz 
// TEXCOORD                 4   xyz         5     NONE   float   xyz 
// TEXCOORD                 5   xyz         6     NONE   float   xyz 
// TEXCOORD                 6   xyz         7     NONE   float   xyz 
// SV_CullDistance          0   x           8  CULLDST   float   x   
//
vs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[15], immediateIndexed
dcl_constantbuffer cb1[12], immediateIndexed
dcl_constantbuffer cb2[4], immediateIndexed
dcl_constantbuffer cb4[15], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_resource_texture3d (float,float,float,float) t0
dcl_resource_texture3d (float,float,float,float) t1
dcl_input v0.xyz
dcl_input v1.xyz
dcl_input v2.x
dcl_input v3.xy
dcl_input v4.xyz
dcl_output_siv o0.xyzw, position
dcl_output o1.xy
dcl_output o1.zw
dcl_output o2.xyz
dcl_output o3.xyzw
dcl_output o4.xyz
dcl_output o5.xyz
dcl_output o6.xyz
dcl_output o7.xyz
dcl_output_siv o8.x, cull_distance
dcl_temps 5
mov r0.xyz, v0.xyzx
mov r0.w, l(1.000000)
dp4 r1.x, r0.xyzw, cb4[4].xyzw
dp4 r1.y, r0.xyzw, cb4[5].xyzw
dp4 r1.z, r0.xyzw, cb4[6].xyzw
mul r2.xyzw, r1.yyyy, cb2[1].xyzw
mad r2.xyzw, cb2[0].xyzw, r1.xxxx, r2.xyzw
mad r1.xyzw, cb2[2].xyzw, r1.zzzz, r2.xyzw
add o0.xyzw, r1.xyzw, cb2[3].xyzw
mov_sat r1.x, v1.z
mad o3.w, r1.x, l(0.500000), l(0.500000)
add r1.xyz, v0.xyzx, -cb0[12].xyzx
add r2.xy, v0.xzxx, -cb0[9].xyxx
div o5.xy, r2.xyxx, cb0[10].xyxx
dp3 r1.w, r1.xyzx, r1.xyzx
rsq r2.x, r1.w
sqrt r1.w, r1.w
div o7.x, r1.w, cb0[10].w
mad r2.x, -r1.y, r2.x, l(1.000000)
mul o7.y, r2.x, l(0.500000)
dp4 r2.x, r0.xyzw, cb4[0].xyzw
dp4 r2.y, r0.xyzw, cb4[1].xyzw
dp4 r2.z, r0.xyzw, cb4[2].xyzw
lt r0.x, cb4[14].y, cb1[11].x
if_nz r0.x
  add r0.y, r2.y, -cb4[14].y
  max r0.y, r0.y, l(0.000000)
  add r0.y, r0.y, l(0.000010)
  add r0.z, cb1[11].x, -cb4[14].y
  div_sat r0.y, r0.z, r0.y
  mul r0.z, r0.y, r1.w
  mad r0.w, -r1.w, r0.y, r1.w
  lt r2.w, l(0.000000), r0.w
  if_nz r2.w
    add r0.y, -r0.y, l(1.000000)
    mul r0.y, r0.y, l(5000.000000)
    add r2.w, r2.y, -cb1[11].x
    add r0.w, r0.w, l(0.000010)
    div r0.w, r2.w, r0.w
    mul r2.w, r0.w, cb1[5].x
    eq r3.x, r2.w, l(0.000000)
    mul r3.y, r0.y, -r2.w
    mul r3.y, r3.y, l(1.442695)
    exp r3.y, r3.y
    add r3.y, -r3.y, l(1.000000)
    div r2.w, r3.y, r2.w
    movc r2.w, r3.x, r0.y, r2.w
    min r3.x, r2.y, cb1[11].x
    mul r3.x, r3.x, -cb1[5].x
    mul r3.x, r3.x, l(1.442695)
    exp r3.x, r3.x
    mul r3.x, r3.x, -cb1[5].y
    mul r2.w, r2.w, r3.x
    mul r2.w, r2.w, l(1.442695)
    exp r2.w, r2.w
    min r2.w, r2.w, l(1.000000)
    mul r0.w, r0.w, cb0[8].z
    eq r3.x, r0.w, l(0.000000)
    mul r3.y, r0.y, -r0.w
    mul r3.y, r3.y, l(1.442695)
    exp r3.y, r3.y
    add r3.y, -r3.y, l(1.000000)
    div r0.w, r3.y, r0.w
    movc r0.y, r3.x, r0.y, r0.w
    add r0.w, -cb0[8].x, cb1[11].x
    mul r0.w, r0.w, -cb0[8].z
    mul r0.w, r0.w, l(1.442695)
    exp r0.w, r0.w
    mul r0.w, r0.w, -cb0[8].y
    mul r0.y, r0.y, r0.w
    mul r0.y, r0.y, l(1.442695)
    exp r0.y, r0.y
    min r0.y, r0.y, l(1.000000)
    mul r0.y, r0.y, r2.w
  else 
    mov r0.y, l(1.000000)
  endif 
  mul r0.z, r0.z, -cb1[11].y
  mul r0.z, r0.z, l(1.442695)
  exp r0.z, r0.z
  min r0.z, r0.z, l(1.000000)
else 
  add r0.w, -r2.y, cb4[14].y
  max r0.w, r0.w, l(0.000000)
  add r0.w, r0.w, l(0.000010)
  add r2.w, -cb1[11].x, cb4[14].y
  div_sat r0.w, r2.w, r0.w
  mad r2.w, -r1.w, r0.w, r1.w
  mul r3.x, r0.w, l(5000.000000)
  max r3.y, r2.y, cb1[11].x
  add r3.z, r3.y, -cb4[14].y
  mad r0.w, r1.w, r0.w, l(0.000010)
  div r0.w, r3.z, r0.w
  mul r3.z, r0.w, cb1[5].x
  eq r3.w, r3.z, l(0.000000)
  mul r4.x, r3.x, -r3.z
  mul r4.x, r4.x, l(1.442695)
  exp r4.x, r4.x
  add r4.x, -r4.x, l(1.000000)
  div r3.z, r4.x, r3.z
  movc r3.z, r3.w, r3.x, r3.z
  min r3.y, r3.y, cb4[14].y
  mul r3.y, r3.y, -cb1[5].x
  mul r3.y, r3.y, l(1.442695)
  exp r3.y, r3.y
  mul r3.y, r3.y, -cb1[5].y
  mul r3.y, r3.z, r3.y
  mul r3.y, r3.y, l(1.442695)
  exp r3.y, r3.y
  min r3.y, r3.y, l(1.000000)
  mul r0.w, r0.w, cb0[8].z
  eq r3.z, r0.w, l(0.000000)
  mul r3.w, r3.x, -r0.w
  mul r3.w, r3.w, l(1.442695)
  exp r3.w, r3.w
  add r3.w, -r3.w, l(1.000000)
  div r0.w, r3.w, r0.w
  movc r0.w, r3.z, r3.x, r0.w
  add r3.x, -cb0[8].x, cb4[14].y
  mul r3.x, r3.x, -cb0[8].z
  mul r3.x, r3.x, l(1.442695)
  exp r3.x, r3.x
  mul r3.x, r3.x, -cb0[8].y
  mul r0.w, r0.w, r3.x
  mul r0.w, r0.w, l(1.442695)
  exp r0.w, r0.w
  min r0.w, r0.w, l(1.000000)
  mul r0.y, r0.w, r3.y
  mul r0.w, r2.w, -cb1[11].y
  mul r0.w, r0.w, l(1.442695)
  exp r0.w, r0.w
  min r0.z, r0.w, l(1.000000)
endif 
mov r3.xz, -cb4[14].xxzx
mov r3.y, l(-0.000000)
add r2.xyz, r2.xyzx, r3.xyzx
dp3 r0.w, r2.xyzx, r2.xyzx
sqrt r0.w, r0.w
add r0.w, r0.w, l(0.000100)
div r0.w, r2.y, r0.w
add r2.x, r0.w, l(-0.020000)
mul r2.x, r2.x, l(-57.707802)
exp r2.x, r2.x
add r2.x, r2.x, l(1.000000)
div r2.x, l(1.000000, 1.000000, 1.000000, 1.000000), r2.x
mul_sat r0.w, r0.w, l(20.000000)
mul r0.w, r0.w, r2.x
add r2.x, r1.w, -cb0[13].x
mul_sat r2.x, r2.x, cb0[13].y
add r2.x, -r2.x, l(1.000000)
mul r0.w, r0.w, r2.x
mul r2.x, r0.w, r0.y
mad r3.x, -r0.y, r0.w, l(1.000000)
mul r4.x, r0.z, r3.x
add r4.y, -r0.z, l(1.000000)
mul r4.z, r0.z, r2.x
mul r3.y, r2.x, r4.y
mov r3.z, r4.z
movc o2.xyz, r0.xxxx, r4.xyzx, r3.xyzx
add r0.x, r1.w, -cb0[14].x
mul_sat r0.x, r0.x, cb0[14].y
mul r0.x, r0.x, cb0[14].z
max r0.x, r0.x, l(0.200000)
sample_l_indexable(texture3d)(float,float,float,float) r0.y, v1.xyzx, t0.xzyw, s0, r0.x
sample_l_indexable(texture3d)(float,float,float,float) r0.x, v1.xyzx, t1.zxyw, s1, r0.x
add r0.x, -r0.y, r0.x
mad r0.x, cb0[14].w, r0.x, r0.y
mad_sat r0.x, r0.x, v2.x, l(-0.002000)
ge r0.y, r0.x, l(0.000100)
movc o8.x, r0.y, l(0.500000), l(-0.500000)
mov o1.xy, v3.xyxx
mov o1.z, v2.x
mov o1.w, r0.x
mov o3.xyz, v1.xyzx
mov o4.xyz, r1.xyzx
mov o5.z, l(0.500000)
mov o6.xyz, v4.xyzx
mov o7.z, cb0[9].w
ret 
// Approximately 0 instruction slots used

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 