//Bushes 5
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 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 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)
{
  float specularFresnel : packoffset(c0);
  float specularFalloffMult : packoffset(c0.y);
  float specularIntensityMult : packoffset(c0.z);
  float3 specMapIntMask : packoffset(c1);
  float bumpiness : packoffset(c1.w);
  float4 umGlobalParams : packoffset(c2);
  float4 WindGlobalParams : packoffset(c3);
  float UseTreeNormals : packoffset(c4);
  float SelfShadowing : packoffset(c4.y);
  float AlphaScale : packoffset(c4.z);
  float AlphaTest : packoffset(c4.w);
  float ShadowFalloff : packoffset(c5);
  float AlphaScaleNormal : packoffset(c5.y);
  float AlphaClampNormal : packoffset(c5.z);
}
SamplerState SfxWindSampler3D_s : register(s2);
Texture3D<float4> SfxWindSampler3D : register(t2);

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,
  float4 v5 : TANGENT0,
  out float4 o0 : SV_Position0,
  out float2 o1 : TEXCOORD0)
{
  float4 r0,r1,r2,r3;
  uint4 bitmask, uiDest;
  float4 fDest;

  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.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;
  o1.xy = v4.xy;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//   using 3Dmigoto v1.1.36 on Sat Aug 08 07:38:53 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 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 trees_common_shared_locals
// {
//
//   float4 _worldPlayerPos_umGlobalPhaseShift;// Offset:    0 Size:    16
//   float4 _vecvehColl0[3];            // Offset:   16 Size:    48 [unused]
//   float4 _vecvehColl1[3];            // Offset:   64 Size:    48 [unused]
//   float4 _vecvehColl2[3];            // Offset:  112 Size:    48 [unused]
//   float4 _vecvehColl3[3];            // Offset:  160 Size:    48 [unused]
//   float4 umGlobalOverrideParams;     // Offset:  208 Size:    16
//   float4 _globalEntityScale;         // Offset:  224 Size:    16 [unused]
//
// }
//
// cbuffer trees_common_locals
// {
//
//   float specularFresnel;             // Offset:    0 Size:     4 [unused]
//   float specularFalloffMult;         // Offset:    4 Size:     4 [unused]
//   float specularIntensityMult;       // Offset:    8 Size:     4 [unused]
//   float3 specMapIntMask;             // Offset:   16 Size:    12 [unused]
//   float bumpiness;                   // Offset:   28 Size:     4 [unused]
//   float4 umGlobalParams;             // Offset:   32 Size:    16
//   float4 WindGlobalParams;           // Offset:   48 Size:    16 [unused]
//   float UseTreeNormals;              // Offset:   64 Size:     4 [unused]
//   float SelfShadowing;               // Offset:   68 Size:     4 [unused]
//   float AlphaScale;                  // Offset:   72 Size:     4 [unused]
//   float AlphaTest;                   // Offset:   76 Size:     4 [unused]
//   float ShadowFalloff;               // Offset:   80 Size:     4 [unused]
//   float AlphaScaleNormal;            // Offset:   84 Size:     4 [unused]
//   float AlphaClampNormal;            // Offset:   88 Size:     4 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// SfxWindSampler3D                  sampler      NA          NA    2        1
// SfxWindSampler3D                  texture  float4          3d    2        1
// rage_matrices                     cbuffer      NA          NA    1        1
// misc_globals                      cbuffer      NA          NA    2        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
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION                 0   xyz         0     NONE   float   xyz 
// NORMAL                   0   xyz         1     NONE   float       
// COLOR                    0   xyzw        2     NONE   float   xyz 
// COLOR                    1   xyzw        3     NONE   float       
// TEXCOORD                 0   xy          4     NONE   float   xy  
// TANGENT                  0   xyzw        5     NONE   float       
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float   xyzw
// TEXCOORD                 0   xy          1     NONE   float   xy  
//
vs_4_0
dcl_constantbuffer cb1[12], immediateIndexed
dcl_constantbuffer cb2[14], immediateIndexed
dcl_constantbuffer cb11[10], immediateIndexed
dcl_constantbuffer cb9[14], immediateIndexed
dcl_constantbuffer cb10[3], immediateIndexed
dcl_sampler s2, mode_default
dcl_resource_texture3d (float,float,float,float) t2
dcl_input v0.xyz
dcl_input v2.xyz
dcl_input v4.xy
dcl_output_siv o0.xyzw, position
dcl_output o1.xy
dcl_temps 4
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[2].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, t2.xyzw, s2, 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[2].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[2].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.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 o1.xy, v4.xyxx
ret 
// Approximately 98 instruction slots used

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