//Bushes 2
cbuffer rage_matrices : register(b1)
{
  row_major float4x4 gWorld : packoffset(c0);
  row_major float4x4 gWorldView : packoffset(c4);
  row_major float4x4 gWorldViewProj : packoffset(c8);
  row_major float4x4 gViewInverse : packoffset(c12);
}

cbuffer misc_globals : register(b2)
{
  float4 globalFade : packoffset(c0);
  float globalHeightScale : packoffset(c1);
  float globalShaderQuality : packoffset(c1.y);
  float globalReuseMe00001 : packoffset(c1.z);
  float globalReuseMe00002 : packoffset(c1.w);
  float4 POMFlags : packoffset(c2);
  float4 g_Rage_Tessellation_CameraPosition : packoffset(c3);
  float4 g_Rage_Tessellation_CameraZAxis : packoffset(c4);
  float4 g_Rage_Tessellation_ScreenSpaceErrorParams : packoffset(c5);
  float4 g_Rage_Tessellation_LinearScale : packoffset(c6);
  float4 g_Rage_Tessellation_Frustum[4] : packoffset(c7);
  float4 g_Rage_Tessellation_Epsilons : packoffset(c11);
  float4 globalScalars : packoffset(c12);
  float4 globalScalars2 : packoffset(c13);
  float4 globalScalars3 : packoffset(c14);
  float4 globalScreenSize : packoffset(c15);
  uint4 gTargetAAParams : packoffset(c16);
  float4 colorize : packoffset(c17);
  float4 gGlobalParticleShadowBias : packoffset(c18);
  float gGlobalParticleDofAlphaScale : packoffset(c19);
  float gGlobalFogIntensity : packoffset(c19.y);
  float4 gPlayerLFootPos : packoffset(c20);
  float4 gPlayerRFootPos : packoffset(c21);
  float4 gStereoParams : packoffset(c22);
  float4 gStereoParams1 : packoffset(c23);
}

cbuffer common_locals : register(b13)
{
  float2 tintPaletteSelector : packoffset(c0);
}

cbuffer tri_uMovment_and_branch_bend_shared : register(b11)
{
  float4 branchBendEtc_WindVector[4] : packoffset(c0);
  float4 branchBendEtc_WindSpeedSoftClamp : packoffset(c4);
  float4 branchBendEtc_UnderWaterTransition : packoffset(c5);
  float4 branchBendEtc_AABBInfo[2] : packoffset(c6);
  float4 branchBendEtc_SfxWindEvalModulation : packoffset(c8);
  float4 branchBendEtc_SfxWindValueModulation : packoffset(c9);
  float4 branchBendEtc_Control1Fake : packoffset(c10);
  float4 branchBendEtc_Control2Fake : packoffset(c11);
  float4 branchBendEtc_DebugRenderControl1Fake : packoffset(c12);
  float4 branchBendEtc_DebugRenderControl2Fake : packoffset(c13);
  float4 branchBendEtc_DebugRenderControl3Fake : packoffset(c14);
}

cbuffer playercolenabled_buffer : register(b8)
{
  int bPlayerCollEnabled : packoffset(c0);
  int bVehTreeColl0Enabled : packoffset(c0.y);
  int bVehTreeColl1Enabled : packoffset(c0.z);
  int bVehTreeColl2Enabled : packoffset(c0.w);
  int bVehTreeColl3Enabled : packoffset(c1);
}

cbuffer trees_common_shared_locals : register(b9)
{
  float4 _worldPlayerPos_umGlobalPhaseShift : packoffset(c0);
  float4 _vecvehColl0[3] : packoffset(c1);
  float4 _vecvehColl1[3] : packoffset(c4);
  float4 _vecvehColl2[3] : packoffset(c7);
  float4 _vecvehColl3[3] : packoffset(c10);
  float4 umGlobalOverrideParams : packoffset(c13);
  float4 _globalEntityScale : packoffset(c14);
}

cbuffer trees_common_locals : register(b10)
{
  float4 umGlobalParams : packoffset(c0);
  float4 WindGlobalParams : packoffset(c1);
  float UseTreeNormals : packoffset(c2);
  float SelfShadowing : packoffset(c2.y);
  float AlphaScale : packoffset(c2.z);
  float AlphaTest : packoffset(c2.w);
  float ShadowFalloff : packoffset(c3);
  float AlphaScaleNormal : packoffset(c3.y);
  float AlphaClampNormal : packoffset(c3.z);
}
SamplerState TintPaletteSampler_s : register(s2);
SamplerState SfxWindSampler3D_s : register(s3);
Texture2D<float4> TintPaletteSampler : register(t2);
Texture3D<float4> SfxWindSampler3D : register(t3);

Texture2D<float4> StereoParams : register(t125);
Texture1D<float4> IniParams : register(t120);

void main( 
  float3 v0 : POSITION0,
  float3 v1 : NORMAL0,
  float4 v2 : COLOR0,
  float4 v3 : COLOR1,
  float2 v4 : TEXCOORD0,
  out float4 o0 : SV_Position0,
  out float4 o1 : COLOR0,
  out float4 o2 : TEXCOORD0,
  out float3 o3 : TEXCOORD1)
{
  float4 r0,r1,r2,r3,r4,r5,r6,r7,r8;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.xyz = gWorld._m10_m11_m12 * v1.yyy;
  r0.xyz = v1.xxx * gWorld._m00_m01_m02 + r0.xyz;
  r0.xyz = v1.zzz * gWorld._m20_m21_m22 + r0.xyz;
  r0.xyz = float3(-0,-0,-1) + r0.xyz;
  r0.xyz = UseTreeNormals * r0.xyz + float3(0,0,1);
  o3.xyz = r0.xyz * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5);
  r0.x = dot(branchBendEtc_UnderWaterTransition.xyz, v0.xyz);
  r0.x = saturate(branchBendEtc_UnderWaterTransition.w + r0.x);
  r0.y = 0 < r0.x;
  if (r0.y != 0) {
    r0.y = saturate(umGlobalParams.z * branchBendEtc_WindSpeedSoftClamp.z);
    r0.y = 1 + -r0.y;
    r1.x = branchBendEtc_WindVector[1].w * globalScalars2.x;
    r1.y = branchBendEtc_WindVector[2].w * globalScalars2.x;
    r0.zw = v2.yy + r1.xy;
    r0.zw = branchBendEtc_WindVector[3].ww + r0.zw;
    r0.zw = frac(r0.zw);
    r0.zw = float2(-0.5,-0.5) + r0.zw;
    r0.zw = -abs(r0.zw) * float2(2,2) + float2(1,1);
    r1.xy = r0.zw * r0.zw;
    r0.zw = -r0.zw * float2(2,2) + float2(3,3);
    r0.zw = r1.xy * r0.zw;
    r0.zw = r0.zw * float2(2,2) + float2(-1,-1);
    r1.xy = float2(1,1) + -r0.wz;
    r1.z = r1.y * r1.x;
    r1.xy = r1.xy * r0.zw;
    r0.z = r0.z * r0.w;
    r2.xyz = branchBendEtc_WindVector[1].xyz * r1.xxx;
    r1.xzw = r1.zzz * branchBendEtc_WindVector[0].xyz + r2.xyz;
    r1.xyz = r1.yyy * branchBendEtc_WindVector[2].xyz + r1.xzw;
    r1.xyz = r0.zzz * branchBendEtc_WindVector[3].xyz + r1.xyz;
    r2.xyz = branchBendEtc_SfxWindEvalModulation.xyz * globalScalars2.xxx + v2.yyy;
    r2.xyz = branchBendEtc_WindVector[3].www + r2.xyz;
    r2.xyz = frac(r2.xyz);
    r2.xyz = float3(-0.5,-0.5,-0.5) + r2.xyz;
    r2.xyz = -abs(r2.xyz) * float3(2,2,2) + float3(1,1,1);
    r3.xyz = r2.xyz * r2.xyz;
    r2.xyz = -r2.xyz * float3(2,2,2) + float3(3,3,3);
    r2.xyz = r3.xyz * r2.xyz;
    r0.z = r2.x + r2.x;
    r0.w = 0 < branchBendEtc_AABBInfo[0].w;
    //if (r0.w != 0) {
    //  r2.xyz = r2.xyz * float3(2,2,2) + float3(-1,-1,-1);
    //  r2.xyz = r2.xyz * branchBendEtc_SfxWindEvalModulation.www + v0.xyz;
    //  r2.xyz = -branchBendEtc_AABBInfo[0].xyz + r2.xyz;
    //  r2.xyz = branchBendEtc_AABBInfo[1].xyz * r2.xyz;
    //  r2.xyzw = SfxWindSampler3D.SampleLevel(SfxWindSampler3D_s, r2.xyz, 0).xyzw;
    //} else {
      r2.xyz = float3(0,0,0);
    //}
    r0.w = 1 + -branchBendEtc_SfxWindValueModulation.x;
    r0.z = branchBendEtc_SfxWindValueModulation.x * r0.z;
    r0.z = r0.z * 0.5 + r0.w;
    r1.xyz = r0.zzz * r2.xyz + r1.xyz;
    r0.z = max(v2.x, v2.z);
    r1.xyz = r0.zzz * r1.xyz;
    r1.xyz = r1.xyz * r0.yyy;
    r2.x = dot(gWorld._m00_m01_m02, r1.xyz);
    r2.y = dot(gWorld._m10_m11_m12, r1.xyz);
    r2.z = dot(gWorld._m20_m21_m22, r1.xyz);
    r0.z = dot(v0.xyz, v0.xyz);
    r1.xyz = float3(0.00100000005,0,0) + abs(r2.xyz);
    r0.w = dot(r1.xyz, r1.xyz);
    r0.zw = sqrt(r0.zw);
    r1.xy = branchBendEtc_WindSpeedSoftClamp.xy * r0.yy;
    r0.y = -branchBendEtc_WindSpeedSoftClamp.x * r0.y + r0.w;
    r0.y = max(0, r0.y);
    r0.y = r0.y / r1.y;
    r0.y = -1.44269502 * r0.y;
    r0.y = exp2(r0.y);
    r0.y = 1 + -r0.y;
    r0.y = r1.y * r0.y + r1.x;
    r0.y = r0.y / r0.w;
    r0.w = r1.x >= r0.w;
    r0.w = r0.w ? 1.000000 : 0;
    r1.x = 1 + -r0.y;
    r0.y = r1.x * r0.w + r0.y;
    r1.xyz = r2.xyz * r0.yyy + v0.xyz;
    r0.y = dot(r1.xyz, r1.xyz);
    r0.y = sqrt(r0.y);
    r0.y = r0.z / r0.y;
    r0.yzw = r1.xyz * r0.yyy;
  } else {
    r0.yzw = v0.xyz;
  }
  r1.x = r0.x < 1;
  r1.yzw = umGlobalParams.xxy * v2.xxz;
  r1.yzw = umGlobalOverrideParams.xxy * r1.yzw;
  r2.x = _worldPlayerPos_umGlobalPhaseShift.w + v2.y;
  r2.x = 6.28318501 * abs(r2.x);
  r2.yzw = umGlobalParams.zzw * umGlobalOverrideParams.zzw;
  r2.xyz = globalScalars2.xxx * r2.yzw + r2.xxx;
  r2.xyz = sin(r2.xyz);
  r1.yzw = r2.xyz * r1.yzw + v0.xyz;
  r1.xyz = r1.xxx ? r1.yzw : v0.xyz;
  r1.w = 1 + -r0.x;
  r0.xyz = r0.xxx * r0.yzw;
  r0.xyz = r1.www * r1.xyz + r0.xyz;
  r1.xyz = _globalEntityScale.zzz * gWorld._m00_m01_m02;
  r2.xyz = _globalEntityScale.zzz * gWorld._m10_m11_m12;
  r3.xyz = _globalEntityScale.www * gWorld._m20_m21_m22;
  r4.xyz = _globalEntityScale.xxy * r0.xyz;
  r4.w = 1;
  r5.x = r1.x;
  r5.y = r2.x;
  r5.z = r3.x;
  r5.w = gWorld._m30;
  r6.x = dot(r4.xyzw, r5.xyzw);
  r7.x = r1.y;
  r7.y = r2.y;
  r7.z = r3.y;
  r7.w = gWorld._m31;
  r6.y = dot(r4.xyzw, r7.xyzw);
  r8.x = r1.z;
  r8.y = r2.z;
  r8.z = r3.z;
  r8.w = gWorld._m32;
  r6.z = dot(r4.xyzw, r8.xyzw);
  r4.xyz = -_worldPlayerPos_umGlobalPhaseShift.xyz + r6.xyz;
  r0.w = dot(r4.xyz, r4.xyz);
  r1.w = 0.5625 + -r0.w;
  r1.w = 1.77777779 * r1.w;
  r1.w = max(0, r1.w);
  r0.w = rsqrt(r0.w);
  r4.xy = r4.xy * r0.ww;
  r4.xy = r4.xy * r1.ww;
  r6.xy = r4.xy * v2.xx + r6.xy;
  r4.xyz = -gWorld._m30_m31_m32 + r6.xyz;
  r4.xyz = _globalEntityScale.zzw * r4.xyz;
  r6.x = dot(r4.xyz, r1.xyz);
  r6.y = dot(r4.xyz, r2.xyz);
  r6.z = dot(r4.xyz, r3.xyz);
  r0.xyz = bPlayerCollEnabled ? r6.xyz : r0.xyz;
  if (bVehTreeColl0Enabled != 0) {
    r4.xyz = _globalEntityScale.xxy * r0.xyz;
    r4.w = 1;
    r5.x = dot(r4.xyzw, r5.xyzw);
    r5.y = dot(r4.xyzw, r7.xyzw);
    r0.w = dot(r4.xyzw, r8.xyzw);
    r4.xy = -_vecvehColl0[0].xy + r5.xy;
    r1.w = dot(_vecvehColl0[1].xy, r4.xy);
    r1.w = saturate(_vecvehColl0[1].w * r1.w);
    r4.xy = r1.ww * _vecvehColl0[1].xy + _vecvehColl0[0].xy;
    r4.xy = r5.xy + -r4.xy;
    r1.w = dot(r4.xy, r4.xy);
    r2.w = _vecvehColl0[2].y + -r1.w;
    r2.w = saturate(_vecvehColl0[2].z * r2.w);
    r3.w = _vecvehColl0[2].x * r2.w;
    r4.z = rsqrt(r1.w);
    r4.xy = r4.xy * r4.zz;
    r4.xy = r4.xy * r3.ww;
    r4.xy = r4.xy * v2.xx + r5.xy;
    r3.w = _vecvehColl0[2].w + -r0.w;
    r0.w = r2.w * r3.w + r0.w;
    r2.w = 0.5 * _vecvehColl0[2].x;
    r2.w = r2.w * r2.w;
    r1.w = r1.w < r2.w;
    r2.w = -0.25 + _vecvehColl0[2].w;
    r4.z = r1.w ? r2.w : r0.w;
    if (bVehTreeColl1Enabled != 0) {
      r5.xy = -_vecvehColl1[0].xy + r4.xy;
      r0.w = dot(_vecvehColl1[1].xy, r5.xy);
      r0.w = saturate(_vecvehColl1[1].w * r0.w);
      r5.xy = r0.ww * _vecvehColl1[1].xy + _vecvehColl1[0].xy;
      r5.xy = -r5.xy + r4.xy;
      r0.w = dot(r5.xy, r5.xy);
      r1.w = _vecvehColl1[2].y + -r0.w;
      r1.w = saturate(_vecvehColl1[2].z * r1.w);
      r2.w = _vecvehColl1[2].x * r1.w;
      r3.w = rsqrt(r0.w);
      r5.xy = r5.xy * r3.ww;
      r5.xy = r5.xy * r2.ww;
      r4.xy = r5.xy * v2.xx + r4.xy;
      r2.w = _vecvehColl1[2].w + -r4.z;
      r1.w = r1.w * r2.w + r4.z;
      r2.w = 0.5 * _vecvehColl1[2].x;
      r2.w = r2.w * r2.w;
      r0.w = r0.w < r2.w;
      r2.w = -0.25 + _vecvehColl1[2].w;
      r4.z = r0.w ? r2.w : r1.w;
    }
    if (bVehTreeColl2Enabled != 0) {
      r5.xy = -_vecvehColl2[0].xy + r4.xy;
      r0.w = dot(_vecvehColl2[1].xy, r5.xy);
      r0.w = saturate(_vecvehColl2[1].w * r0.w);
      r5.xy = r0.ww * _vecvehColl2[1].xy + _vecvehColl2[0].xy;
      r5.xy = -r5.xy + r4.xy;
      r0.w = dot(r5.xy, r5.xy);
      r1.w = _vecvehColl2[2].y + -r0.w;
      r1.w = saturate(_vecvehColl2[2].z * r1.w);
      r2.w = _vecvehColl2[2].x * r1.w;
      r3.w = rsqrt(r0.w);
      r5.xy = r5.xy * r3.ww;
      r5.xy = r5.xy * r2.ww;
      r4.xy = r5.xy * v2.xx + r4.xy;
      r2.w = _vecvehColl2[2].w + -r4.z;
      r1.w = r1.w * r2.w + r4.z;
      r2.w = 0.5 * _vecvehColl2[2].x;
      r2.w = r2.w * r2.w;
      r0.w = r0.w < r2.w;
      r2.w = -0.25 + _vecvehColl2[2].w;
      r4.z = r0.w ? r2.w : r1.w;
    }
    if (bVehTreeColl3Enabled != 0) {
      r5.xy = -_vecvehColl3[0].xy + r4.xy;
      r0.w = dot(_vecvehColl3[1].xy, r5.xy);
      r0.w = saturate(_vecvehColl3[1].w * r0.w);
      r5.xy = r0.ww * _vecvehColl3[1].xy + _vecvehColl3[0].xy;
      r5.xy = -r5.xy + r4.xy;
      r0.w = dot(r5.xy, r5.xy);
      r1.w = _vecvehColl3[2].y + -r0.w;
      r1.w = saturate(_vecvehColl3[2].z * r1.w);
      r2.w = _vecvehColl3[2].x * r1.w;
      r3.w = rsqrt(r0.w);
      r5.xy = r5.xy * r3.ww;
      r5.xy = r5.xy * r2.ww;
      r4.xy = r5.xy * v2.xx + r4.xy;
      r2.w = _vecvehColl3[2].w + -r4.z;
      r1.w = r1.w * r2.w + r4.z;
      r2.w = 0.5 * _vecvehColl3[2].x;
      r2.w = r2.w * r2.w;
      r0.w = r0.w < r2.w;
      r2.w = -0.25 + _vecvehColl3[2].w;
      r4.z = r0.w ? r2.w : r1.w;
    }
    r4.xyz = -gWorld._m30_m31_m32 + r4.xyz;
    r4.xyz = _globalEntityScale.zzw * r4.xyz;
    r0.x = dot(r4.xyz, r1.xyz);
    r0.y = dot(r4.xyz, r2.xyz);
    r0.z = dot(r4.xyz, r3.xyz);
  }
  r1.xyzw = gWorldViewProj._m10_m11_m12_m13 * r0.yyyy;
  r1.xyzw = r0.xxxx * gWorldViewProj._m00_m01_m02_m03 + r1.xyzw;
  r0.xyzw = r0.zzzz * gWorldViewProj._m20_m21_m22_m23 + r1.xyzw;
  o0.xyzw = gWorldViewProj._m30_m31_m32_m33 + r0.xyzw;
  r0.x = v3.z;
  r0.y = tintPaletteSelector.x;
  o1.xyzw = TintPaletteSampler.SampleLevel(TintPaletteSampler_s, r0.xy, 0).xyzw;
  o2.xy = v4.xy;
  o2.z = v2.w;
  o2.w = SelfShadowing;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//   using 3Dmigoto v1.1.36 on Sat Aug 08 07:21:49 2015
//
//
// Buffer Definitions: 
//
// cbuffer rage_matrices
// {
//
//   row_major float4x4 gWorld;         // Offset:    0 Size:    64
//   row_major float4x4 gWorldView;     // Offset:   64 Size:    64 [unused]
//   row_major float4x4 gWorldViewProj; // Offset:  128 Size:    64
//   row_major float4x4 gViewInverse;   // Offset:  192 Size:    64 [unused]
//
// }
//
// cbuffer misc_globals
// {
//
//   float4 globalFade;                 // Offset:    0 Size:    16 [unused]
//   float globalHeightScale;           // Offset:   16 Size:     4 [unused]
//   float globalShaderQuality;         // Offset:   20 Size:     4 [unused]
//   float globalReuseMe00001;          // Offset:   24 Size:     4 [unused]
//   float globalReuseMe00002;          // Offset:   28 Size:     4 [unused]
//   float4 POMFlags;                   // Offset:   32 Size:    16 [unused]
//   float4 g_Rage_Tessellation_CameraPosition;// Offset:   48 Size:    16 [unused]
//   float4 g_Rage_Tessellation_CameraZAxis;// Offset:   64 Size:    16 [unused]
//   float4 g_Rage_Tessellation_ScreenSpaceErrorParams;// Offset:   80 Size:    16 [unused]
//   float4 g_Rage_Tessellation_LinearScale;// Offset:   96 Size:    16 [unused]
//   float4 g_Rage_Tessellation_Frustum[4];// Offset:  112 Size:    64 [unused]
//   float4 g_Rage_Tessellation_Epsilons;// Offset:  176 Size:    16 [unused]
//   float4 globalScalars;              // Offset:  192 Size:    16 [unused]
//   float4 globalScalars2;             // Offset:  208 Size:    16
//   float4 globalScalars3;             // Offset:  224 Size:    16 [unused]
//   float4 globalScreenSize;           // Offset:  240 Size:    16 [unused]
//   uint4 gTargetAAParams;             // Offset:  256 Size:    16 [unused]
//   float4 colorize;                   // Offset:  272 Size:    16 [unused]
//   float4 gGlobalParticleShadowBias;  // Offset:  288 Size:    16 [unused]
//   float gGlobalParticleDofAlphaScale;// Offset:  304 Size:     4 [unused]
//   float gGlobalFogIntensity;         // Offset:  308 Size:     4 [unused]
//   float4 gPlayerLFootPos;            // Offset:  320 Size:    16 [unused]
//   float4 gPlayerRFootPos;            // Offset:  336 Size:    16 [unused]
//   float4 gStereoParams;              // Offset:  352 Size:    16 [unused]
//   float4 gStereoParams1;             // Offset:  368 Size:    16 [unused]
//
// }
//
// cbuffer common_locals
// {
//
//   float2 tintPaletteSelector;        // Offset:    0 Size:     8
//
// }
//
// cbuffer tri_uMovment_and_branch_bend_shared
// {
//
//   float4 branchBendEtc_WindVector[4];// Offset:    0 Size:    64
//   float4 branchBendEtc_WindSpeedSoftClamp;// Offset:   64 Size:    16
//   float4 branchBendEtc_UnderWaterTransition;// Offset:   80 Size:    16
//   float4 branchBendEtc_AABBInfo[2];  // Offset:   96 Size:    32
//   float4 branchBendEtc_SfxWindEvalModulation;// Offset:  128 Size:    16
//   float4 branchBendEtc_SfxWindValueModulation;// Offset:  144 Size:    16
//   float4 branchBendEtc_Control1Fake; // Offset:  160 Size:    16 [unused]
//   float4 branchBendEtc_Control2Fake; // Offset:  176 Size:    16 [unused]
//   float4 branchBendEtc_DebugRenderControl1Fake;// Offset:  192 Size:    16 [unused]
//   float4 branchBendEtc_DebugRenderControl2Fake;// Offset:  208 Size:    16 [unused]
//   float4 branchBendEtc_DebugRenderControl3Fake;// Offset:  224 Size:    16 [unused]
//
// }
//
// cbuffer playercolenabled_buffer
// {
//
//   int bPlayerCollEnabled;            // Offset:    0 Size:     4
//   int bVehTreeColl0Enabled;          // Offset:    4 Size:     4
//   int bVehTreeColl1Enabled;          // Offset:    8 Size:     4
//   int bVehTreeColl2Enabled;          // Offset:   12 Size:     4
//   int bVehTreeColl3Enabled;          // Offset:   16 Size:     4
//
// }
//
// cbuffer trees_common_shared_locals
// {
//
//   float4 _worldPlayerPos_umGlobalPhaseShift;// Offset:    0 Size:    16
//   float4 _vecvehColl0[3];            // Offset:   16 Size:    48
//   float4 _vecvehColl1[3];            // Offset:   64 Size:    48
//   float4 _vecvehColl2[3];            // Offset:  112 Size:    48
//   float4 _vecvehColl3[3];            // Offset:  160 Size:    48
//   float4 umGlobalOverrideParams;     // Offset:  208 Size:    16
//   float4 _globalEntityScale;         // Offset:  224 Size:    16
//
// }
//
// cbuffer trees_common_locals
// {
//
//   float4 umGlobalParams;             // Offset:    0 Size:    16
//   float4 WindGlobalParams;           // Offset:   16 Size:    16 [unused]
//   float UseTreeNormals;              // Offset:   32 Size:     4
//   float SelfShadowing;               // Offset:   36 Size:     4
//   float AlphaScale;                  // Offset:   40 Size:     4 [unused]
//   float AlphaTest;                   // Offset:   44 Size:     4 [unused]
//   float ShadowFalloff;               // Offset:   48 Size:     4 [unused]
//   float AlphaScaleNormal;            // Offset:   52 Size:     4 [unused]
//   float AlphaClampNormal;            // Offset:   56 Size:     4 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// TintPaletteSampler                sampler      NA          NA    2        1
// SfxWindSampler3D                  sampler      NA          NA    3        1
// TintPaletteSampler                texture  float4          2d    2        1
// SfxWindSampler3D                  texture  float4          3d    3        1
// rage_matrices                     cbuffer      NA          NA    1        1
// misc_globals                      cbuffer      NA          NA    2        1
// playercolenabled_buffer           cbuffer      NA          NA    8        1
// trees_common_shared_locals        cbuffer      NA          NA    9        1
// trees_common_locals               cbuffer      NA          NA   10        1
// tri_uMovment_and_branch_bend_shared    cbuffer      NA          NA   11        1
// common_locals                     cbuffer      NA          NA   13        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION                 0   xyz         0     NONE   float   xyz 
// NORMAL                   0   xyz         1     NONE   float   xyz 
// COLOR                    0   xyzw        2     NONE   float   xyzw
// COLOR                    1   xyzw        3     NONE   float     z 
// TEXCOORD                 0   xy          4     NONE   float   xy  
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float   xyzw
// COLOR                    0   xyzw        1     NONE   float   xyzw
// TEXCOORD                 0   xyzw        2     NONE   float   xyzw
// TEXCOORD                 1   xyz         3     NONE   float   xyz 
//
vs_4_0
dcl_constantbuffer cb1[12], immediateIndexed
dcl_constantbuffer cb2[14], immediateIndexed
dcl_constantbuffer cb13[1], immediateIndexed
dcl_constantbuffer cb11[10], immediateIndexed
dcl_constantbuffer cb8[2], immediateIndexed
dcl_constantbuffer cb9[15], immediateIndexed
dcl_constantbuffer cb10[3], immediateIndexed
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture3d (float,float,float,float) t3
dcl_input v0.xyz
dcl_input v1.xyz
dcl_input v2.xyzw
dcl_input v3.z
dcl_input v4.xy
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xyz
dcl_temps 9
mul r0.xyz, v1.yyyy, cb1[1].xyzx
mad r0.xyz, v1.xxxx, cb1[0].xyzx, r0.xyzx
mad r0.xyz, v1.zzzz, cb1[2].xyzx, r0.xyzx
add r0.xyz, r0.xyzx, l(-0.000000, -0.000000, -1.000000, 0.000000)
mad r0.xyz, cb10[2].xxxx, r0.xyzx, l(0.000000, 0.000000, 1.000000, 0.000000)
mad o3.xyz, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
dp3 r0.x, cb11[5].xyzx, v0.xyzx
add_sat r0.x, r0.x, cb11[5].w
lt r0.y, l(0.000000), r0.x
if_nz r0.y
  mul_sat r0.y, cb11[4].z, cb10[0].z
  add r0.y, -r0.y, l(1.000000)
  mul r1.x, cb2[13].x, cb11[1].w
  mul r1.y, cb2[13].x, cb11[2].w
  add r0.zw, r1.xxxy, v2.yyyy
  add r0.zw, r0.zzzw, cb11[3].wwww
  frc r0.zw, r0.zzzw
  add r0.zw, r0.zzzw, l(0.000000, 0.000000, -0.500000, -0.500000)
  mad r0.zw, -|r0.zzzw|, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, 1.000000, 1.000000)
  mul r1.xy, r0.zwzz, r0.zwzz
  mad r0.zw, -r0.zzzw, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, 3.000000, 3.000000)
  mul r0.zw, r0.zzzw, r1.xxxy
  mad r0.zw, r0.zzzw, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000)
  add r1.xy, -r0.wzww, l(1.000000, 1.000000, 0.000000, 0.000000)
  mul r1.z, r1.x, r1.y
  mul r1.xy, r0.zwzz, r1.xyxx
  mul r0.z, r0.w, r0.z
  mul r2.xyz, r1.xxxx, cb11[1].xyzx
  mad r1.xzw, r1.zzzz, cb11[0].xxyz, r2.xxyz
  mad r1.xyz, r1.yyyy, cb11[2].xyzx, r1.xzwx
  mad r1.xyz, r0.zzzz, cb11[3].xyzx, r1.xyzx
  mad r2.xyz, cb11[8].xyzx, cb2[13].xxxx, v2.yyyy
  add r2.xyz, r2.xyzx, cb11[3].wwww
  frc r2.xyz, r2.xyzx
  add r2.xyz, r2.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000)
  mad r2.xyz, -|r2.xyzx|, l(2.000000, 2.000000, 2.000000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000)
  mul r3.xyz, r2.xyzx, r2.xyzx
  mad r2.xyz, -r2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(3.000000, 3.000000, 3.000000, 0.000000)
  mul r2.xyz, r2.xyzx, r3.xyzx
  add r0.z, r2.x, r2.x
  lt r0.w, l(0.000000), cb11[6].w
  if_nz r0.w
    mad r2.xyz, r2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
    mad r2.xyz, r2.xyzx, cb11[8].wwww, v0.xyzx
    add r2.xyz, r2.xyzx, -cb11[6].xyzx
    mul r2.xyz, r2.xyzx, cb11[7].xyzx
    sample_l r2.xyzw, r2.xyzx, t3.xyzw, s3, l(0.000000)
  else 
    mov r2.xyz, l(0,0,0,0)
  endif 
  add r0.w, -cb11[9].x, l(1.000000)
  mul r0.z, r0.z, cb11[9].x
  mad r0.z, r0.z, l(0.500000), r0.w
  mad r1.xyz, r0.zzzz, r2.xyzx, r1.xyzx
  max r0.z, v2.z, v2.x
  mul r1.xyz, r1.xyzx, r0.zzzz
  mul r1.xyz, r0.yyyy, r1.xyzx
  dp3 r2.x, cb1[0].xyzx, r1.xyzx
  dp3 r2.y, cb1[1].xyzx, r1.xyzx
  dp3 r2.z, cb1[2].xyzx, r1.xyzx
  dp3 r0.z, v0.xyzx, v0.xyzx
  add r1.xyz, |r2.xyzx|, l(0.001000, 0.000000, 0.000000, 0.000000)
  dp3 r0.w, r1.xyzx, r1.xyzx
  sqrt r0.zw, r0.zzzw
  mul r1.xy, r0.yyyy, cb11[4].xyxx
  mad r0.y, -cb11[4].x, r0.y, r0.w
  max r0.y, r0.y, l(0.000000)
  div r0.y, r0.y, r1.y
  mul r0.y, r0.y, l(-1.442695)
  exp r0.y, r0.y
  add r0.y, -r0.y, l(1.000000)
  mad r0.y, r1.y, r0.y, r1.x
  div r0.y, r0.y, r0.w
  ge r0.w, r1.x, r0.w
  and r0.w, r0.w, l(0x3f800000)
  add r1.x, -r0.y, l(1.000000)
  mad r0.y, r1.x, r0.w, r0.y
  mad r1.xyz, r2.xyzx, r0.yyyy, v0.xyzx
  dp3 r0.y, r1.xyzx, r1.xyzx
  sqrt r0.y, r0.y
  div r0.y, r0.z, r0.y
  mul r0.yzw, r0.yyyy, r1.xxyz
else 
  mov r0.yzw, v0.xxyz
endif 
lt r1.x, r0.x, l(1.000000)
mul r1.yzw, v2.xxxz, cb10[0].xxxy
mul r1.yzw, r1.yyzw, cb9[13].xxxy
add r2.x, v2.y, cb9[0].w
mul r2.x, |r2.x|, l(6.283185)
mul r2.yzw, cb9[13].zzzw, cb10[0].zzzw
mad r2.xyz, cb2[13].xxxx, r2.yzwy, r2.xxxx
sincos r2.xyz, null, r2.xyzx
mad r1.yzw, r2.xxyz, r1.yyzw, v0.xxyz
movc r1.xyz, r1.xxxx, r1.yzwy, v0.xyzx
add r1.w, -r0.x, l(1.000000)
mul r0.xyz, r0.yzwy, r0.xxxx
mad r0.xyz, r1.wwww, r1.xyzx, r0.xyzx
mul r1.xyz, cb1[0].xyzx, cb9[14].zzzz
mul r2.xyz, cb1[1].xyzx, cb9[14].zzzz
mul r3.xyz, cb1[2].xyzx, cb9[14].wwww
mul r4.xyz, r0.xyzx, cb9[14].xxyx
mov r4.w, l(1.000000)
mov r5.x, r1.x
mov r5.y, r2.x
mov r5.z, r3.x
mov r5.w, cb1[3].x
dp4 r6.x, r4.xyzw, r5.xyzw
mov r7.x, r1.y
mov r7.y, r2.y
mov r7.z, r3.y
mov r7.w, cb1[3].y
dp4 r6.y, r4.xyzw, r7.xyzw
mov r8.x, r1.z
mov r8.y, r2.z
mov r8.z, r3.z
mov r8.w, cb1[3].z
dp4 r6.z, r4.xyzw, r8.xyzw
add r4.xyz, r6.xyzx, -cb9[0].xyzx
dp3 r0.w, r4.xyzx, r4.xyzx
add r1.w, -r0.w, l(0.562500)
mul r1.w, r1.w, l(1.777778)
max r1.w, r1.w, l(0.000000)
rsq r0.w, r0.w
mul r4.xy, r0.wwww, r4.xyxx
mul r4.xy, r1.wwww, r4.xyxx
mad r6.xy, r4.xyxx, v2.xxxx, r6.xyxx
add r4.xyz, r6.xyzx, -cb1[3].xyzx
mul r4.xyz, r4.xyzx, cb9[14].zzwz
dp3 r6.x, r4.xyzx, r1.xyzx
dp3 r6.y, r4.xyzx, r2.xyzx
dp3 r6.z, r4.xyzx, r3.xyzx
movc r0.xyz, cb8[0].xxxx, r6.xyzx, r0.xyzx
if_nz cb8[0].y
  mul r4.xyz, r0.xyzx, cb9[14].xxyx
  mov r4.w, l(1.000000)
  dp4 r5.x, r4.xyzw, r5.xyzw
  dp4 r5.y, r4.xyzw, r7.xyzw
  dp4 r0.w, r4.xyzw, r8.xyzw
  add r4.xy, r5.xyxx, -cb9[1].xyxx
  dp2 r1.w, cb9[2].xyxx, r4.xyxx
  mul_sat r1.w, r1.w, cb9[2].w
  mad r4.xy, r1.wwww, cb9[2].xyxx, cb9[1].xyxx
  add r4.xy, -r4.xyxx, r5.xyxx
  dp2 r1.w, r4.xyxx, r4.xyxx
  add r2.w, -r1.w, cb9[3].y
  mul_sat r2.w, r2.w, cb9[3].z
  mul r3.w, r2.w, cb9[3].x
  rsq r4.z, r1.w
  mul r4.xy, r4.zzzz, r4.xyxx
  mul r4.xy, r3.wwww, r4.xyxx
  mad r4.xy, r4.xyxx, v2.xxxx, r5.xyxx
  add r3.w, -r0.w, cb9[3].w
  mad r0.w, r2.w, r3.w, r0.w
  mul r2.w, cb9[3].x, l(0.500000)
  mul r2.w, r2.w, r2.w
  lt r1.w, r1.w, r2.w
  add r2.w, cb9[3].w, l(-0.250000)
  movc r4.z, r1.w, r2.w, r0.w
  if_nz cb8[0].z
    add r5.xy, r4.xyxx, -cb9[4].xyxx
    dp2 r0.w, cb9[5].xyxx, r5.xyxx
    mul_sat r0.w, r0.w, cb9[5].w
    mad r5.xy, r0.wwww, cb9[5].xyxx, cb9[4].xyxx
    add r5.xy, r4.xyxx, -r5.xyxx
    dp2 r0.w, r5.xyxx, r5.xyxx
    add r1.w, -r0.w, cb9[6].y
    mul_sat r1.w, r1.w, cb9[6].z
    mul r2.w, r1.w, cb9[6].x
    rsq r3.w, r0.w
    mul r5.xy, r3.wwww, r5.xyxx
    mul r5.xy, r2.wwww, r5.xyxx
    mad r4.xy, r5.xyxx, v2.xxxx, r4.xyxx
    add r2.w, -r4.z, cb9[6].w
    mad r1.w, r1.w, r2.w, r4.z
    mul r2.w, cb9[6].x, l(0.500000)
    mul r2.w, r2.w, r2.w
    lt r0.w, r0.w, r2.w
    add r2.w, cb9[6].w, l(-0.250000)
    movc r4.z, r0.w, r2.w, r1.w
  endif 
  if_nz cb8[0].w
    add r5.xy, r4.xyxx, -cb9[7].xyxx
    dp2 r0.w, cb9[8].xyxx, r5.xyxx
    mul_sat r0.w, r0.w, cb9[8].w
    mad r5.xy, r0.wwww, cb9[8].xyxx, cb9[7].xyxx
    add r5.xy, r4.xyxx, -r5.xyxx
    dp2 r0.w, r5.xyxx, r5.xyxx
    add r1.w, -r0.w, cb9[9].y
    mul_sat r1.w, r1.w, cb9[9].z
    mul r2.w, r1.w, cb9[9].x
    rsq r3.w, r0.w
    mul r5.xy, r3.wwww, r5.xyxx
    mul r5.xy, r2.wwww, r5.xyxx
    mad r4.xy, r5.xyxx, v2.xxxx, r4.xyxx
    add r2.w, -r4.z, cb9[9].w
    mad r1.w, r1.w, r2.w, r4.z
    mul r2.w, cb9[9].x, l(0.500000)
    mul r2.w, r2.w, r2.w
    lt r0.w, r0.w, r2.w
    add r2.w, cb9[9].w, l(-0.250000)
    movc r4.z, r0.w, r2.w, r1.w
  endif 
  if_nz cb8[1].x
    add r5.xy, r4.xyxx, -cb9[10].xyxx
    dp2 r0.w, cb9[11].xyxx, r5.xyxx
    mul_sat r0.w, r0.w, cb9[11].w
    mad r5.xy, r0.wwww, cb9[11].xyxx, cb9[10].xyxx
    add r5.xy, r4.xyxx, -r5.xyxx
    dp2 r0.w, r5.xyxx, r5.xyxx
    add r1.w, -r0.w, cb9[12].y
    mul_sat r1.w, r1.w, cb9[12].z
    mul r2.w, r1.w, cb9[12].x
    rsq r3.w, r0.w
    mul r5.xy, r3.wwww, r5.xyxx
    mul r5.xy, r2.wwww, r5.xyxx
    mad r4.xy, r5.xyxx, v2.xxxx, r4.xyxx
    add r2.w, -r4.z, cb9[12].w
    mad r1.w, r1.w, r2.w, r4.z
    mul r2.w, cb9[12].x, l(0.500000)
    mul r2.w, r2.w, r2.w
    lt r0.w, r0.w, r2.w
    add r2.w, cb9[12].w, l(-0.250000)
    movc r4.z, r0.w, r2.w, r1.w
  endif 
  add r4.xyz, r4.xyzx, -cb1[3].xyzx
  mul r4.xyz, r4.xyzx, cb9[14].zzwz
  dp3 r0.x, r4.xyzx, r1.xyzx
  dp3 r0.y, r4.xyzx, r2.xyzx
  dp3 r0.z, r4.xyzx, r3.xyzx
endif 
mul r1.xyzw, r0.yyyy, cb1[9].xyzw
mad r1.xyzw, r0.xxxx, cb1[8].xyzw, r1.xyzw
mad r0.xyzw, r0.zzzz, cb1[10].xyzw, r1.xyzw
add o0.xyzw, r0.xyzw, cb1[11].xyzw
mov r0.x, v3.z
mov r0.y, cb13[0].x
sample_l o1.xyzw, r0.xyxx, t2.xyzw, s2, l(0.000000)
mov o2.xy, v4.xyxx
mov o2.z, v2.w
mov o2.w, cb10[2].y
ret 
// Approximately 242 instruction slots used

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