//
// 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
// {
//
//   struct
//   {
//       
//       float4 vDesc;                  // Offset:    0
//       float4 vFogLayerPlane;         // Offset:   16
//       float4 vFogLayerColor;         // Offset:   32
//       float4 vFogLayerSettings;      // Offset:   48
//       float4 vFogColor;              // Offset:   64
//       float4 vFogDistance;           // Offset:   80
//
//   } g_FogDesc;                       // Offset:    0 Size:    96
//   float4 g_vAmbient;                 // Offset:   96 Size:    16 [unused]
//   float4 g_vLightColor;              // Offset:  112 Size:    16 [unused]
//   float3 g_vLightDir;                // Offset:  128 Size:    12
//   float4x4 g_mCloudsShadowsSpace;    // Offset:  144 Size:    64 [unused]
//   float4 g_vCloudsShadowDesc;        // Offset:  208 Size:    16 [unused]
//   float4 g_vCamPos;                  // Offset:  224 Size:    16
//   float4 g_vCenter;                  // Offset:  240 Size:    16
//   float4x4 g_mViewProj;              // Offset:  256 Size:    64
//   float4 g_vSettings0;               // Offset:  320 Size:    16
//   float4 g_vSettings1;               // Offset:  336 Size:    16
//   float4 g_vSettings2;               // Offset:  352 Size:    16
//   float4 g_vScreenRect;              // Offset:  368 Size:    16
//   float3 g_vPlaneN;                  // Offset:  384 Size:    12 [unused]
//   float4x4 g_mIWorld;                // Offset:  400 Size:    64
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// $Globals                          cbuffer      NA          NA    0        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION                 0   xyzw        0     NONE   float   xyzw
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float   xyzw
// TEXCOORD                 0   xyzw        1     NONE   float   xyzw
// TEXCOORD                 1   xyz         2     NONE   float   xyz 
// TEXCOORD                 2   xyz         3     NONE   float   xyz 
// TEXCOORD                 3   xyzw        4     NONE   float   xyzw
// TEXCOORD                 4   xyzw        5     NONE   float   xyzw
// TEXCOORD                 5   xyzw        6     NONE   float   xyzw
// TEXCOORD                 6   xyzw        7     NONE   float   xyzw
// TEXCOORD                 7   xyz         8     NONE   float   xyz 
// TEXCOORD                 8   xyz         9     NONE   float   xyz 
// SV_ClipDistance          0   x          10  CLIPDST   float   x   
// SV_ClipDistance          1    y         10  CLIPDST   float    y  
//
vs_4_0
dcl_constantbuffer cb0[28], immediateIndexed
dcl_input v0.xyzw
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xyz
dcl_output o3.xyz
dcl_output o4.xyzw
dcl_output o5.xyzw
dcl_output o6.xyzw
dcl_output o7.xyzw
dcl_output o8.xyz
dcl_output o9.xyz
dcl_output_siv o10.x, clip_distance
dcl_output_siv o10.y, clip_distance
// dcl_temps updated : previous = dcl_temps 8
dcl_temps 11
// added 3dmigoto declaration
dcl_resource_texture1d (float,float,float,float) t120
ld_indexable(texture1d)(float,float,float,float) r9.xyzw, l(0, 0, 0, 0), t120.xyzw
mov r10.x, r9.w
mov r10.y, r9.w
mov r10.zw, l(1.0, 1.0)
// end of 3dmigoto declaration
add r0.x, v0.w, cb0[20].y
add r0.x, -r0.x, cb0[20].x
div r0.x, r0.x, cb0[20].x
add r0.y, -cb0[20].z, cb0[20].w
mul r0.z, r0.y, r0.x
mad r0.x, r0.x, r0.y, cb0[20].z
add r0.y, cb0[20].z, cb0[21].z
lt r0.y, r0.x, r0.y
if_nz r0.y
  div r1.y, r0.z, cb0[21].z
else 
  add r0.y, cb0[20].w, -cb0[21].z
  lt r0.y, r0.y, r0.x
  if_nz r0.y
    add r0.y, -r0.x, cb0[20].w
    div r1.y, r0.y, cb0[21].z
  else 
    mov r1.y, l(1.000000)
  endif 
endif 
mad r0.xyz, v0.xyzx, r0.xxxx, cb0[15].xyzx
add r2.xyz, -r0.xyzx, cb0[14].xyzx
dp3 r2.w, r2.xyzx, r2.xyzx
sqrt r2.w, r2.w
div r2.xyz, r2.xyzx, r2.wwww
mov r0.w, l(1.000000)
// replacing matrix usage :dp4 r3.x, r0.xyzw, cb0[16].xyzw
dp4 r8.x, r0.xyzw, cb0[16].xyzw
mul r3.x, r8.x, r10.x
// replacing matrix usage :dp4 r3.y, r0.xyzw, cb0[17].xyzw
dp4 r8.y, r0.xyzw, cb0[17].xyzw
mul r3.y, r8.y, r10.y
dp4 r3.z, r0.xyzw, cb0[18].xyzw
dp4 r3.w, r0.xyzw, cb0[19].xyzw
dp4 r4.x, r0.xyzw, cb0[25].xyzw
dp4 r4.y, r0.xyzw, cb0[26].xyzw
dp4 r0.w, r0.xyzw, cb0[27].xyzw
div r1.x, r4.y, cb0[21].y
mul r5.xyzw, r3.xwwy, l(0.500000, 0.500000, 0.005000, -0.500000)
add r6.xy, r5.yyyy, r5.xwxx
mul r4.zw, r3.wwww, cb0[23].xxxy
mad o7.xy, r6.xyxx, cb0[23].zwzz, r4.zwzz
mul r4.z, r2.w, cb0[5].x
min r4.z, r4.z, l(1.000000)
dp3 r4.w, cb0[4].xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
lt r4.w, l(0.001000), r4.w
lt r5.x, r4.z, cb0[0].x
if_nz r5.x
  mul r5.x, r4.z, cb0[0].y
  div r5.x, r5.x, cb0[0].x
else 
  add r5.yw, -cb0[0].yyyx, l(0.000000, 1.000000, 0.000000, 1.000000)
  add r7.x, r4.z, -cb0[0].x
  mul r5.y, r5.y, r7.x
  div r5.y, r5.y, r5.w
  add r5.x, r5.y, cb0[0].y
endif 
mul r5.xyw, r5.xxxx, cb0[4].xyxz
log r5.xyw, r5.xyxw
mul r5.xyw, r5.xyxw, cb0[4].wwww
exp r5.xyw, r5.xyxw
mul r5.xyw, r5.xyxw, l(-1.442695, -1.442695, 0.000000, -1.442695)
exp r5.xyw, r5.xyxw
add r5.xyw, -r5.xyxw, l(1.000000, 1.000000, 0.000000, 1.000000)
lt r7.x, l(0.800000), r4.z
and r4.w, r4.w, r7.x
if_nz r4.w
  add r4.z, r4.z, l(-0.800000)
  mul r4.z, r4.z, l(5.000000)
  add r7.xyz, -r5.xywx, l(1.000000, 1.000000, 1.000000, 0.000000)
  mad r5.xyw, r4.zzzz, r7.xyxz, r5.xyxw
endif 
add r4.z, cb0[5].w, l(-0.250000)
add r4.z, r4.z, r4.z
dp3 r4.w, r5.xywx, l(0.333300, 0.333300, 0.333300, 0.000000)
add r7.xyz, -r5.xywx, r4.wwww
mad o5.xyz, r4.zzzz, r7.xyzx, r5.xywx
div r7.y, r0.w, cb0[22].z
div r7.xz, r4.xxyx, cb0[22].xxxx
mul r4.xyz, r7.xyzx, cb0[22].wwww
add o3.xyz, r4.xyzx, r4.xyzx
dp3 r0.w, r2.xyzx, cb0[8].xyzx
lt r4.w, r0.w, l(0.000000)
if_nz r4.w
  mov o4.x, l(0.750000)
else 
  mad r0.w, r0.w, r0.w, l(1.000000)
  mul o4.x, r0.w, l(0.750000)
endif 
mad o4.yz, -r2.wwww, l(0.000000, 0.0000625000030, 0.000250, 0.000000), l(0.000000, 1.000000, 1.000000, 0.000000)
dp3 r0.w, r2.xyzx, v0.xyzx
mul r0.w, |r0.w|, |r0.w|
mul o4.w, r0.w, r5.z
mov o0.xyzw, r3.xyzw
mov r1.zw, r7.xxxy
mov o1.xyzw, r1.zwxy
mov o5.w, l(0)
mov r6.zw, r3.zzzw
mov o6.xyzw, r6.xyzw
mov o7.zw, r6.zzzw
mov o2.xyz, r4.xyzx
mov o8.xyz, r0.xyzx
mov o9.xyz, l(0,0,0,0)
mad o10.xy, r1.xxxx, l(1.000000, -1.000000, 0.000000, 0.000000), l(0.000000, 1.000000, 0.000000, 0.000000)
ret 
// Approximately 101 instruction slots used
