
cbuffer cbDefaultXSC : register(b0)
{
  float4x4 ViewProj : packoffset(c0);
  float4x4 ViewMatrix : packoffset(c4);
  float4x4 SecondaryProj : packoffset(c8);
  float4x4 SecondaryViewProj : packoffset(c12);
  float4x4 SecondaryInvViewProj : packoffset(c16);
  float4 ConstantColour : packoffset(c20);
  float4 Time : packoffset(c21);
  float4 CameraPosition : packoffset(c22);
  float4 InvProjectionParams : packoffset(c23);
  float4 SecondaryInvProjectionParams : packoffset(c24);
  float4 ShaderDebugParams : packoffset(c25);
  float4 ToneMappingDebugParams : packoffset(c26);
  float4 HDR_EncodeScale2 : packoffset(c27);
  float4 EmissiveSurfaceMultiplier : packoffset(c28);
  float4 AlphaLight_OffsetScale : packoffset(c29);
  float4 TessellationScaleFactor : packoffset(c30);
  float4 FogNearColour : packoffset(c31);
  float4 FogFarColour : packoffset(c32);
  float4 FogParams : packoffset(c33);
  float4 AdvanceEnvironmentShaderDebugParams : packoffset(c34);
  float4 SMAA_RTMetrics : packoffset(c35);
}

cbuffer cbDefaultVSC : register(b1)
{
  float4x4 ProjMatrix : packoffset(c0);
  float4x4 TextureTransform : packoffset(c4);
  float4x4 InvViewProj : packoffset(c8);
  float4x4 PrevViewProj : packoffset(c12);
  float4x4 PrevSecViewProj : packoffset(c16);
  float4 TextureScaleBias : packoffset(c20);
  float4 RenderTargetSizeVS : packoffset(c21);
  float4 RenderTargetResolutionVS : packoffset(c22);
  float4 MorphTargetParams : packoffset(c23);
  float4 OnePixelStepForS0VS : packoffset(c24);
  float4 ScreenRes[2] : packoffset(c25);
  float4 ClearSurfaceColor : packoffset(c27);
  float4 ClearSurfaceDepth : packoffset(c28);
  float4 VertexDepthClamp : packoffset(c29);
  float4 FlareScreenAspect : packoffset(c30);
  float4 DecalParams : packoffset(c31);
  float4 UserClipPlane0 : packoffset(c32);
  float4 UserClipPlane1 : packoffset(c33);
  float4 UserClipPlane2 : packoffset(c34);
  float4 UserClipPlane3 : packoffset(c35);
  float4 DecalScaleParams : packoffset(c36);
  float4 MipLevel : packoffset(c37);
}

cbuffer cbModelVSC : register(b4)
{
  float4 VertexScale : packoffset(c0);
}

cbuffer cbInstanceXSC : register(b10)
{
  float4x4 WorldMatrix : packoffset(c0);
  float4 LightmapTransform : packoffset(c4);
  float4 RInstConstants[6] : packoffset(c5);
  float4 RadiosityProbeTexcoordAndScale : packoffset(c11);
}

Texture2D<float4> StereoParams : register(t125);

void main(
  float3 v0 : POSITION0,
  out float4 o0 : TEXCOORD0,
  out float4 o1 : TEXCOORD1,
  out float4 o2 : TEXCOORD2,
  out float4 o3 : TEXCOORD3,
  out float4 o4 : TEXCOORD4,
  out float4 o5 : TEXCOORD5,
  out float4 o6 : TEXCOORD6,
  out float4 o7 : TEXCOORD7,
  out float4 o8 : SV_Position0)
{
  float4 r0,r1,r2;
  uint4 bitmask;

  o0.x = WorldMatrix._m30;
  o0.y = WorldMatrix._m31;
  o0.z = WorldMatrix._m32;
  o0.w = RInstConstants[1].y;
  o1.w = RInstConstants[3].y + -RInstConstants[1].y;
  o1.xyz = RInstConstants[3].xxx * RInstConstants[0].xyz;
  r0.x = v0.x * VertexScale.x + 9.999999747e-005;
  r0.yzw = VertexScale.xxx * v0.xyz;
  r1.x = max(abs(r0.x), abs(r0.z));
  r1.x = 1.000000e+000 / r1.x;
  r1.y = min(abs(r0.x), abs(r0.z));
  r1.x = r1.y * r1.x;
  r1.y = r1.x * r1.x;
  r1.z = r1.y * 2.083509974e-002 + -8.513300121e-002;
  r1.z = r1.y * r1.z + 1.801410019e-001;
  r1.z = r1.y * r1.z + -3.302994967e-001;
  r1.y = r1.y * r1.z + 9.998660088e-001;
  r1.z = r1.x * r1.y;
  r1.z = r1.z * -2.000000000e+000 + 1.570796371e+000;
  r1.w = abs(r0.x) < abs(r0.z);
  r1.z = r1.w ? r1.z : 0;
  r1.x = r1.x * r1.y + r1.z;
  r1.y = r0.x < -r0.x;
  r1.y = r1.y ? -3.141593 : 0;
  r1.x = r1.x + r1.y;
  r1.y = min(r0.x, r0.z);
  r0.x = max(r0.x, r0.z);
  r0.x = r0.x >= -r0.x;
  r1.y = r1.y < -r1.y;
  r0.x = r0.x ? r1.y : 0;
  r0.x = r0.x ? -r1.x : r1.x;
  r0.x = 7.068583488e+000 + r0.x;
  r0.x = 6.366197467e-001 * r0.x;
  r0.x = trunc(r0.x);
  r0.x = r0.x * 1.570796371e+000 + -7.853981853e-001;
  sincos(r0.x, r0.x, r1.x);
  r0.y = dot(r0.yzw, r0.yzw);
  r0.y = sqrt(r0.y);
  r0.z = -5.299999714e-001 + r0.y;
  r0.y = r0.w / r0.y;
  r0.z = saturate(2.127659559e+000 * r0.z);
  r0.w = RInstConstants[1].z / RInstConstants[2].y;
  r1.y = RInstConstants[3].y + -r0.w;
  r0.z = r0.z * r1.y + r0.w;
  r0.x = r0.z * r0.x;
  r0.w = r0.z * r1.x;
  r1.x = abs(r0.y) * -1.872929931e-002 + 7.426100224e-002;
  r1.x = r1.x * abs(r0.y) + -2.121143937e-001;
  r1.x = r1.x * abs(r0.y) + 1.570728779e+000;
  r1.y = 1.000000000e+000 + -abs(-r0.y);
  r0.y = r0.y < -r0.y;
  r1.y = sqrt(r1.y);
  r1.z = r1.x * r1.y;
  r1.z = r1.z * -2.000000000e+000 + 3.141592741e+000;
  r0.y = r0.y ? r1.z : 0;
  r0.y = r1.x * r1.y + r0.y;
  r1.x = abs(RInstConstants[2].y) * -1.872929931e-002 + 7.426100224e-002;
  r1.x = r1.x * abs(RInstConstants[2].y) + -2.121143937e-001;
  r1.x = r1.x * abs(RInstConstants[2].y) + 1.570728779e+000;
  r1.y = 1.000000000e+000 + -abs(-RInstConstants[2].y);
  r1.y = sqrt(r1.y);
  r1.z = r1.x * r1.y;
  r1.z = r1.z * -2.000000000e+000 + 3.141592741e+000;
  r1.w = RInstConstants[2].y < -RInstConstants[2].y;
  r1.z = r1.w ? r1.z : 0;
  r1.x = r1.x * r1.y + r1.z;
  r1.x = 6.366197467e-001 * r1.x;
  r1.x = min(r1.x, 2.000000000e+000);
  r0.y = r1.x * r0.y;
  sincos(r0.y, r1.x, r2.x);
  r0.y = r1.x * r0.x;
  r0.x = r1.x * r0.w;
  r1.z = r2.x * r0.z;
  r0.yz = float2(1.414214e+000,1.414214e+000) * r0.xy;
  r0.x = r0.x == 0.000000;
  r0.w = dot(r0.yz, r0.yz);
  r0.w = rsqrt(r0.w);
  r2.xy = r0.yz * r0.ww;
  //movc r0.xw, r0.xxxx, r0.yyyz, r2.xxxy
r0.xw = r0.xxxx ? r0.yyyz : r2.xxxy;
  // r0.x = r0.x ? r0.y : r2.x;
  // r0.w = r0.x ? r0.z : r2.y;
  r1.xy = r0.xw * float2(5.000000e-002,5.000000e-002) + r0.yz;
  r1.x = RInstConstants[5].y * r1.x;
  r1.w = 1.000000000e+000;
  r0.x = dot(r1.xyzw, WorldMatrix._m00_m10_m20_m30);
  r0.y = dot(r1.xyzw, WorldMatrix._m01_m11_m21_m31);
  r0.z = dot(r1.xyzw, WorldMatrix._m02_m12_m22_m32);
  r0.w = 1.000000000e+000;
  r1.z = dot(r0.xyzw, ViewProj._m02_m12_m22_m32);
  r1.x = dot(r0.xyzw, ViewProj._m00_m10_m20_m30);
  r1.y = dot(r0.xyzw, ViewProj._m01_m11_m21_m31);
  r0.w = dot(r0.xyzw, ViewProj._m03_m13_m23_m33);
  o7.xyz = CameraPosition.xyz + -r0.xyz;
  r0.x = r0.w < 0.000000000e+000;
  r0.x = r0.x ? -1.000000047e-003 : 1.000000047e-003;
  r0.y = abs(r0.w) < 1.000000047e-003;
  r1.w = r0.y ? r0.x : r0.w;


float4 stereo = StereoParams.Load(0);
float4 r23;
r23.xyzw = r1.xyzw;
r1.x += stereo.x * (r1.w - stereo.y);


  r0.xyz = r1.xyz / r1.www;


  r0.x = -ProjMatrix._m20 * r0.z + r0.x;
  r0.x = r0.x / ProjMatrix._m00;
  r0.y = r0.y / ProjMatrix._m11;
  r0.z = r0.z / r0.z;
  r2.xyz = ViewMatrix._m01_m11_m21 * r0.yyy;
  r2.xyz = ViewMatrix._m00_m10_m20 * r0.xxx + r2.xyz;
  r0.xyz = ViewMatrix._m02_m12_m22 * r0.zzz + r2.xyz;
  o2.yzw = r0.xyz * r1.www;
  o3.xyzw = r1.xyzw;

  o8.xyz = r23.xyz;

  r0.xy = r1.xy / r0.ww;
  r0.xy = r0.xy * float2(5.000000e-001,-5.000000e-001) + float2(5.000000e-001,5.000000e-001);
  r0.xy = r0.xy * RenderTargetSizeVS.xy + RenderTargetSizeVS.zw;
  o4.xy = r0.xy * r0.ww;
  o8.w = r0.w;
  o2.x = RInstConstants[1].x;
  o4.zw = RInstConstants[2].yz;
  o5.x = WorldMatrix._m20;
  o5.y = WorldMatrix._m21;
  o5.z = WorldMatrix._m22;
  o5.w = RInstConstants[3].y;
  r0.x = RInstConstants[3].w * RInstConstants[3].y;
  r0.y = RInstConstants[3].y + -RInstConstants[1].z;
  o6.y = r0.x / r0.y;
  o6.x = RInstConstants[0].w;
  o6.zw = float2(0.000000e+000,0.000000e+000);
  o7.w = 0.000000000e+000;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//
// Buffer Definitions: 
//
// cbuffer cbDefaultXSC
// {
//
//   float4x4 ViewProj;                 // Offset:    0 Size:    64
//   float4x4 ViewMatrix;               // Offset:   64 Size:    64
//   float4x4 SecondaryProj;            // Offset:  128 Size:    64 [unused]
//   float4x4 SecondaryViewProj;        // Offset:  192 Size:    64 [unused]
//   float4x4 SecondaryInvViewProj;     // Offset:  256 Size:    64 [unused]
//   float4 ConstantColour;             // Offset:  320 Size:    16 [unused]
//   float4 Time;                       // Offset:  336 Size:    16 [unused]
//   float4 CameraPosition;             // Offset:  352 Size:    16
//   float4 InvProjectionParams;        // Offset:  368 Size:    16 [unused]
//   float4 SecondaryInvProjectionParams;// Offset:  384 Size:    16 [unused]
//   float4 ShaderDebugParams;          // Offset:  400 Size:    16 [unused]
//   float4 ToneMappingDebugParams;     // Offset:  416 Size:    16 [unused]
//   float4 HDR_EncodeScale2;           // Offset:  432 Size:    16 [unused]
//   float4 EmissiveSurfaceMultiplier;  // Offset:  448 Size:    16 [unused]
//   float4 AlphaLight_OffsetScale;     // Offset:  464 Size:    16 [unused]
//   float4 TessellationScaleFactor;    // Offset:  480 Size:    16 [unused]
//   float4 FogNearColour;              // Offset:  496 Size:    16 [unused]
//   float4 FogFarColour;               // Offset:  512 Size:    16 [unused]
//   float4 FogParams;                  // Offset:  528 Size:    16 [unused]
//   float4 AdvanceEnvironmentShaderDebugParams;// Offset:  544 Size:    16 [unused]
//   float4 SMAA_RTMetrics;             // Offset:  560 Size:    16 [unused]
//
// }
//
// cbuffer cbDefaultVSC
// {
//
//   float4x4 ProjMatrix;               // Offset:    0 Size:    64
//   float4x4 TextureTransform;         // Offset:   64 Size:    64 [unused]
//   float4x4 InvViewProj;              // Offset:  128 Size:    64 [unused]
//   float4x4 PrevViewProj;             // Offset:  192 Size:    64 [unused]
//   float4x4 PrevSecViewProj;          // Offset:  256 Size:    64 [unused]
//   float4 TextureScaleBias;           // Offset:  320 Size:    16 [unused]
//   float4 RenderTargetSizeVS;         // Offset:  336 Size:    16
//   float4 RenderTargetResolutionVS;   // Offset:  352 Size:    16 [unused]
//   float4 MorphTargetParams;          // Offset:  368 Size:    16 [unused]
//   float4 OnePixelStepForS0VS;        // Offset:  384 Size:    16 [unused]
//   float4 ScreenRes[2];               // Offset:  400 Size:    32 [unused]
//   float4 ClearSurfaceColor;          // Offset:  432 Size:    16 [unused]
//   float4 ClearSurfaceDepth;          // Offset:  448 Size:    16 [unused]
//   float4 VertexDepthClamp;           // Offset:  464 Size:    16 [unused]
//   float4 FlareScreenAspect;          // Offset:  480 Size:    16 [unused]
//   float4 DecalParams;                // Offset:  496 Size:    16 [unused]
//   float4 UserClipPlane0;             // Offset:  512 Size:    16 [unused]
//   float4 UserClipPlane1;             // Offset:  528 Size:    16 [unused]
//   float4 UserClipPlane2;             // Offset:  544 Size:    16 [unused]
//   float4 UserClipPlane3;             // Offset:  560 Size:    16 [unused]
//   float4 DecalScaleParams;           // Offset:  576 Size:    16 [unused]
//   float4 MipLevel;                   // Offset:  592 Size:    16 [unused]
//
// }
//
// cbuffer cbModelVSC
// {
//
//   float4 VertexScale;                // Offset:    0 Size:    16
//
// }
//
// cbuffer cbInstanceXSC
// {
//
//   float4x4 WorldMatrix;              // Offset:    0 Size:    64
//   float4 LightmapTransform;          // Offset:   64 Size:    16 [unused]
//   float4 RInstConstants[6];          // Offset:   80 Size:    96
//   float4 RadiosityProbeTexcoordAndScale;// Offset:  176 Size:    16 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// cbDefaultXSC                      cbuffer      NA          NA    0        1
// cbDefaultVSC                      cbuffer      NA          NA    1        1
// cbModelVSC                        cbuffer      NA          NA    4        1
// cbInstanceXSC                     cbuffer      NA          NA   10        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION                 0   xyz         0     NONE   float   xyz 
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD                 0   xyzw        0     NONE   float   xyzw
// TEXCOORD                 1   xyzw        1     NONE   float   xyzw
// TEXCOORD                 2   xyzw        2     NONE   float   xyzw
// TEXCOORD                 3   xyzw        3     NONE   float   xyzw
// TEXCOORD                 4   xyzw        4     NONE   float   xyzw
// TEXCOORD                 5   xyzw        5     NONE   float   xyzw
// TEXCOORD                 6   xyzw        6     NONE   float   xyzw
// TEXCOORD                 7   xyzw        7     NONE   float   xyzw
// SV_Position              0   xyzw        8      POS   float   xyzw
//
vs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[23], immediateIndexed
dcl_constantbuffer cb1[22], immediateIndexed
dcl_constantbuffer cb4[1], immediateIndexed
dcl_constantbuffer cb10[11], immediateIndexed
dcl_input v0.xyz
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xyzw
dcl_output o4.xyzw
dcl_output o5.xyzw
dcl_output o6.xyzw
dcl_output o7.xyzw
dcl_output_siv o8.xyzw, position
dcl_temps 3
mov o0.x, cb10[0].w
mov o0.y, cb10[1].w
mov o0.z, cb10[2].w
mov o0.w, cb10[6].y
add o1.w, -cb10[6].y, cb10[8].y
mul o1.xyz, cb10[5].xyzx, cb10[8].xxxx
mad r0.x, v0.x, cb4[0].x, l(0.000100)
mul r0.yzw, v0.xxyz, cb4[0].xxxx
max r1.x, |r0.x|, |r0.z|
div r1.x, l(1.000000, 1.000000, 1.000000, 1.000000), r1.x
min r1.y, |r0.x|, |r0.z|
mul r1.x, r1.x, r1.y
mul r1.y, r1.x, r1.x
mad r1.z, r1.y, l(0.020835), l(-0.085133)
mad r1.z, r1.y, r1.z, l(0.180141)
mad r1.z, r1.y, r1.z, l(-0.330299)
mad r1.y, r1.y, r1.z, l(0.999866)
mul r1.z, r1.y, r1.x
mad r1.z, r1.z, l(-2.000000), l(1.570796)
lt r1.w, |r0.x|, |r0.z|
and r1.z, r1.w, r1.z
mad r1.x, r1.x, r1.y, r1.z
lt r1.y, r0.x, -r0.x
and r1.y, r1.y, l(0xc0490fdb)
add r1.x, r1.y, r1.x
min r1.y, r0.x, r0.z
max r0.x, r0.x, r0.z
ge r0.x, r0.x, -r0.x
lt r1.y, r1.y, -r1.y
and r0.x, r0.x, r1.y
movc r0.x, r0.x, -r1.x, r1.x
add r0.x, r0.x, l(7.068583)
mul r0.x, r0.x, l(0.636620)
round_z r0.x, r0.x
mad r0.x, r0.x, l(1.570796), l(-0.785398)
sincos r0.x, r1.x, r0.x
dp3 r0.y, r0.yzwy, r0.yzwy
sqrt r0.y, r0.y
add r0.z, r0.y, l(-0.530000)
div r0.y, r0.w, r0.y
mul_sat r0.z, r0.z, l(2.127660)
div r0.w, cb10[6].z, cb10[7].y
add r1.y, -r0.w, cb10[8].y
mad r0.z, r0.z, r1.y, r0.w
mul r0.x, r0.x, r0.z
mul r0.w, r1.x, r0.z
mad r1.x, |r0.y|, l(-0.018729), l(0.074261)
mad r1.x, r1.x, |r0.y|, l(-0.212114)
mad r1.x, r1.x, |r0.y|, l(1.570729)
add r1.y, -|r0.y|, l(1.000000)
lt r0.y, r0.y, -r0.y
sqrt r1.y, r1.y
mul r1.z, r1.y, r1.x
mad r1.z, r1.z, l(-2.000000), l(3.141593)
and r0.y, r0.y, r1.z
mad r0.y, r1.x, r1.y, r0.y
mad r1.x, |cb10[7].y|, l(-0.018729), l(0.074261)
mad r1.x, r1.x, |cb10[7].y|, l(-0.212114)
mad r1.x, r1.x, |cb10[7].y|, l(1.570729)
add r1.y, -|cb10[7].y|, l(1.000000)
sqrt r1.y, r1.y
mul r1.z, r1.y, r1.x
mad r1.z, r1.z, l(-2.000000), l(3.141593)
lt r1.w, cb10[7].y, -cb10[7].y
and r1.z, r1.w, r1.z
mad r1.x, r1.x, r1.y, r1.z
mul r1.x, r1.x, l(0.636620)
min r1.x, r1.x, l(2.000000)
mul r0.y, r0.y, r1.x
sincos r1.x, r2.x, r0.y
mul r0.y, r0.x, r1.x
mul r0.x, r0.w, r1.x
mul r1.z, r0.z, r2.x
mul r0.yz, r0.xxyx, l(0.000000, 1.414214, 1.414214, 0.000000)
eq r0.x, r0.x, l(0.000000)
dp2 r0.w, r0.yzyy, r0.yzyy
rsq r0.w, r0.w
mul r2.xy, r0.wwww, r0.yzyy
movc r0.xw, r0.xxxx, r0.yyyz, r2.xxxy
mad r1.xy, r0.xwxx, l(0.050000, 0.050000, 0.000000, 0.000000), r0.yzyy
mul r1.x, r1.x, cb10[10].y
mov r1.w, l(1.000000)
dp4 r0.x, r1.xyzw, cb10[0].xyzw
dp4 r0.y, r1.xyzw, cb10[1].xyzw
dp4 r0.z, r1.xyzw, cb10[2].xyzw
mov r0.w, l(1.000000)
dp4 r1.z, r0.xyzw, cb0[2].xyzw
dp4 r1.x, r0.xyzw, cb0[0].xyzw
dp4 r1.y, r0.xyzw, cb0[1].xyzw
dp4 r0.w, r0.xyzw, cb0[3].xyzw
add o7.xyz, -r0.xyzx, cb0[22].xyzx
lt r0.x, r0.w, l(0.000000)
movc r0.x, r0.x, l(-0.001000), l(0.001000)
lt r0.y, |r0.w|, l(0.001000)
movc r1.w, r0.y, r0.x, r0.w
div r0.xyz, r1.xyzx, r1.wwww
mad r0.x, -cb1[0].z, r0.z, r0.x
div r0.x, r0.x, cb1[0].x
div r0.y, r0.y, cb1[1].y
div r0.z, r0.z, r0.z
mul r2.xyz, r0.yyyy, cb0[5].xyzx
mad r2.xyz, cb0[4].xyzx, r0.xxxx, r2.xyzx
mad r0.xyz, cb0[6].xyzx, r0.zzzz, r2.xyzx
mul o2.yzw, r1.wwww, r0.xxyz
mov o3.xyzw, r1.xyzw
mov o8.xyz, r1.xyzx
div r0.xy, r1.xyxx, r0.wwww
mad r0.xy, r0.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
mad r0.xy, r0.xyxx, cb1[21].xyxx, cb1[21].zwzz
mul o4.xy, r0.wwww, r0.xyxx
mov o8.w, r0.w
mov o2.x, cb10[6].x
mov o4.zw, cb10[7].yyyz
mov o5.x, cb10[0].z
mov o5.y, cb10[1].z
mov o5.z, cb10[2].z
mov o5.w, cb10[8].y
mul r0.x, cb10[8].y, cb10[8].w
add r0.y, -cb10[6].z, cb10[8].y
div o6.y, r0.x, r0.y
mov o6.x, cb10[5].w
mov o6.zw, l(0,0,0,0)
mov o7.w, l(0)
ret 
// Approximately 124 instruction slots used
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
