// Hear Enemy VS - Disable Effect

cbuffer _Globals : register(b0)
{
  float4x4 LocalToWorld : packoffset(c0);
  float TwoSidedSign : packoffset(c4);
  float4x4 HairAnimationMatrix : packoffset(c5);
  float4x3 WorldToLocal : packoffset(c9);
  float4x4 PreviousLocalToWorld : packoffset(c12);
  float3 MeshOrigin : packoffset(c16);
  float3 MeshExtension : packoffset(c17);
  uint BoneIndexOffset : packoffset(c17.w);
  float4 SharedFogParameter0 : packoffset(c18);
  float4 SharedFogParameter1 : packoffset(c19);
  float4 SharedFogParameter2 : packoffset(c20);
  float4 SharedFogParameter3 : packoffset(c21);
  bool bUseExponentialHeightFog : packoffset(c22);
  float4 FogInScattering[4] : packoffset(c23);
  float4 FogMaxHeight : packoffset(c27);
  float4 FirstDensityFunctionParameters : packoffset(c28);
  float4 SecondDensityFunctionParameters : packoffset(c29);
  float StartDistance : packoffset(c30);
  float3 ApproxFogColor : packoffset(c30.y);
  float3 FogVolumeBoxMin : packoffset(c31);
  float3 FogVolumeBoxMax : packoffset(c32);
  bool bUseVolumetricFog : packoffset(c32.w);
  float4 VolumetricFogTextureScaleBias : packoffset(c33);
  float3 VolumetricFogDepthRemap : packoffset(c34);
  float2 VolumetricClampRect : packoffset(c35);
}

cbuffer VSOffsetConstants : register(b1)
{
  float4x4 ViewProjectionMatrix : packoffset(c0);
  float4x4 ViewProjectionMatrixNoTemporal : packoffset(c4);
  float4 CameraPositionVS : packoffset(c8);
  float4 PreViewTranslation : packoffset(c9);
}

cbuffer VSBoneConstants : register(b3)
{
  float4x3 BoneMatrices[128] : packoffset(c0);
}

SamplerState VolumetricFogInScatteringTextureSampler_s : register(s2);
SamplerState VolumetricFogOpaqueTransmittanceSampler_s : register(s3);
Texture2D<float4> VolumetricFogInScatteringTexture : register(t1);
Texture2D<float4> VolumetricFogOpaqueTransmittance : register(t2);


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


void main( 
  float4 v0 : POSITION0,
  float3 v1 : TANGENT0,
  float4 v2 : NORMAL0,
  uint4 v3 : BLENDINDICES0,
  float4 v4 : BLENDWEIGHT0,
  float2 v5 : TEXCOORD0,
  float4 v6 : COLOR0,
  out float4 o0 : TEXCOORD10,
  out float4 o1 : TEXCOORD11,
  out float4 o2 : COLOR0,
  out float4 o3 : TEXCOORD0,
  out float4 o4 : TEXCOORD4,
  out float4 o5 : TEXCOORD5,
  out float4 o6 : SV_Position0)
{
  float4 r0,r1,r2,r3,r4,r5,r6;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.xyz = v0.xyz * MeshExtension.xyz + MeshOrigin.xyz;
  r1.xyzw = (int4)v3.xyzw * int4(3,3,3,3);
  r2.xyzw = BoneMatrices[v3.y]._m00_m10_m20_m30 * v4.yyyy;
  r3.xyzw = BoneMatrices[v3.y]._m01_m11_m21_m31 * v4.yyyy;
  r4.xyzw = BoneMatrices[v3.y]._m02_m12_m22_m32 * v4.yyyy;
  r2.xyzw = v4.xxxx * BoneMatrices[v3.x]._m00_m10_m20_m30 + r2.xyzw;
  r3.xyzw = v4.xxxx * BoneMatrices[v3.x]._m01_m11_m21_m31 + r3.xyzw;
  r4.xyzw = v4.xxxx * BoneMatrices[v3.x]._m02_m12_m22_m32 + r4.xyzw;
  r2.xyzw = v4.zzzz * BoneMatrices[v3.z]._m00_m10_m20_m30 + r2.xyzw;
  r3.xyzw = v4.zzzz * BoneMatrices[v3.z]._m01_m11_m21_m31 + r3.xyzw;
  r4.xyzw = v4.zzzz * BoneMatrices[v3.z]._m02_m12_m22_m32 + r4.xyzw;
  r2.xyzw = v4.wwww * BoneMatrices[v3.w]._m00_m10_m20_m30 + r2.xyzw;
  r3.xyzw = v4.wwww * BoneMatrices[v3.w]._m01_m11_m21_m31 + r3.xyzw;
  r1.xyzw = v4.wwww * BoneMatrices[v3.w]._m02_m12_m22_m32 + r4.xyzw;
  r4.xyzw = v2.xyzw * float4(2,2,2,2) + float4(-1,-1,-1,-1);
  r5.xyz = v1.xyz * float3(2,2,2) + float3(-1,-1,-1);
  r6.z = dot(r5.xyz, r2.xyz);
  r6.x = dot(r5.xyz, r3.xyz);
  r6.y = dot(r5.xyz, r1.xyz);
  r5.y = dot(r4.xyz, r2.xyz);
  r5.z = dot(r4.xyz, r3.xyz);
  r5.x = dot(r4.xyz, r1.xyz);
  r4.xyz = r5.xyz * r6.xyz;
  r4.xyz = r5.zxy * r6.yzx + -r4.xyz;
  r4.xyz = r4.xyz * r4.www;
  r0.w = 1;
  r2.x = dot(r0.xyzw, r2.xyzw);
  r2.y = dot(r0.xyzw, r3.xyzw);
  r0.x = dot(r0.xyzw, r1.xyzw);
  r1.xyzw = LocalToWorld._m01_m11_m21_m31 * r2.yyyy;
  r1.xyzw = LocalToWorld._m00_m10_m20_m30 * r2.xxxx + r1.xyzw;
  r0.xyzw = LocalToWorld._m02_m12_m22_m32 * r0.xxxx + r1.xyzw;
  r0.xyzw = LocalToWorld._m03_m13_m23_m33 + r0.xyzw;
  r1.xyzw = ViewProjectionMatrix._m01_m11_m21_m31 * r0.yyyy;
  r1.xyzw = ViewProjectionMatrix._m00_m10_m20_m30 * r0.xxxx + r1.xyzw;
  r1.xyzw = ViewProjectionMatrix._m02_m12_m22_m32 * r0.zzzz + r1.xyzw;
  o6.xyzw = ViewProjectionMatrix._m03_m13_m23_m33 * r0.wwww + r1.xyzw;
  r1.xy = LocalToWorld._m01_m21 * r6.xx;
  r1.xy = LocalToWorld._m00_m20 * r6.zz + r1.xy;
  r1.xy = LocalToWorld._m02_m22 * r6.yy + r1.xy;
  r2.xy = LocalToWorld._m01_m21 * r4.yy;
  r2.xy = LocalToWorld._m00_m20 * r4.xx + r2.xy;
  r2.xy = LocalToWorld._m02_m22 * r4.zz + r2.xy;
  r2.zw = LocalToWorld._m01_m21 * r5.zz;
  r2.zw = LocalToWorld._m00_m20 * r5.yy + r2.zw;
  r2.zw = LocalToWorld._m02_m22 * r5.xx + r2.zw;
  o1.w = WorldToLocal._m30 * r4.w;
  if (bUseVolumetricFog != 0) {
    r3.xyz = ViewProjectionMatrix._m01_m11_m31 * r0.yyy;
    r3.xyz = ViewProjectionMatrix._m00_m10_m30 * r0.xxx + r3.xyz;
    r3.xyz = ViewProjectionMatrix._m02_m12_m32 * r0.zzz + r3.xyz;
    r3.xyz = ViewProjectionMatrix._m03_m13_m33 * r0.www + r3.xyz;
    r3.xy = r3.xy / r3.zz;
    r3.xy = r3.xy * VolumetricFogTextureScaleBias.xy + VolumetricFogTextureScaleBias.wz;
    r3.xy = min(VolumetricClampRect.xy, r3.xy);
    r4.xyz = VolumetricFogInScatteringTexture.SampleLevel(VolumetricFogInScatteringTextureSampler_s, r3.xy, 0).xyz;
    r3.x = VolumetricFogOpaqueTransmittance.SampleLevel(VolumetricFogOpaqueTransmittanceSampler_s, r3.xy, 0).x;
    o4.w = exp2(-r3.x);
    o4.xyz = r4.xyz;
  } else {
    if (bUseExponentialHeightFog != 0) {
      r3.xyz = -CameraPositionVS.xyz + r0.xyz;
      r3.w = dot(r3.xyz, r3.xyz);
      r4.x = sqrt(r3.w);
      r4.x = -SharedFogParameter0.w + r4.x;
      r4.x = max(0, r4.x);
      r4.y = cmp(0.00999999978 < abs(r3.z));
      r4.y = r4.y ? r3.z : 0.00999999978;
      r4.z = -SharedFogParameter0.y * r4.y;
      r4.z = exp2(r4.z);
      r4.z = 1 + -r4.z;
      r4.xy = SharedFogParameter0.xy * r4.xy;
      r4.y = r4.z / r4.y;
      r4.x = r4.x * r4.y;
      r3.w = rsqrt(r3.w);
      r3.xyz = r3.xyz * r3.www;
      r3.x = dot(SharedFogParameter3.xyz, r3.xyz);
      r3.x = -r3.x * 0.499000013 + 0.5;
      r3.x = log2(r3.x);
      r3.x = SharedFogParameter0.z * r3.x;
      r3.x = exp2(r3.x);
      r3.yzw = -SharedFogParameter2.xyz + SharedFogParameter1.xyz;
      r3.xyz = r3.xxx * r3.yzw + SharedFogParameter2.xyz;
      r3.w = exp2(-r4.x);
      r3.w = min(1, r3.w);
      r3.w = max(SharedFogParameter1.w, r3.w);
      r4.x = 1 + -r3.w;
      o4.xyz = r4.xxx * r3.xyz;
      o4.w = r3.w;
    } else {
      r3.xyz = -CameraPositionVS.xyz + r0.xyz;
      r3.x = dot(r3.xyz, r3.xyz);
      r3.x = sqrt(r3.x);
      r4.xyzw = -CameraPositionVS.zzzz + SharedFogParameter3.xyzw;
      r3.y = cmp(0.00100000005 >= abs(r3.z));
      r3.y = r3.y ? 0.00100000005 : r3.z;
      r4.xyzw = saturate(r4.xyzw / r3.yyyy);
      r5.xyzw = -CameraPositionVS.zzzz + FogMaxHeight.xyzw;
      r5.xyzw = saturate(r5.xyzw / r3.yyyy);
      r3.xyzw = -SharedFogParameter2.xyzw + r3.xxxx;
      r3.xyzw = max(float4(0,0,0,0), r3.xyzw);
      r4.xyzw = r5.xyzw + -r4.xyzw;
      r3.xyzw = abs(r4.xyzw) * r3.xyzw;
      r4.xyzw = cmp(r3.xyzw < SharedFogParameter1.xyzw);
      r3.xyzw = SharedFogParameter0.xyzw * r3.xyzw;
      r3.xyzw = exp2(r3.xyzw);
      r3.xyzw = r4.xyzw ? r3.xyzw : 0;
      r4.xyzw = float4(-1,-1,-1,-1) + r3.xyzw;
      r5.xyz = FogInScattering[0].xyz * r4.xxx;
      r5.w = r3.x;
      r5.xyzw = r5.xyzw * r3.yyyy;
      r5.xyz = r4.yyy * FogInScattering[1].xyz + r5.xyz;
      r5.xyzw = r5.xyzw * r3.zzzz;
      r5.xyz = r4.zzz * FogInScattering[2].xyz + r5.xyz;
      r3.xyzw = r5.xyzw * r3.wwww;
      o4.xyz = r4.www * FogInScattering[3].xyz + r3.xyz;
      o4.w = r3.w;
    }
  }
  o1.x = r1.y;
  o1.yz = r2.yw;
  o2.xyzw = v6.zyxw;
  o3.xy = v5.xy;
  o3.zw = float2(0,0);
  o5.xyzw = r0.xyzw;
  r1.zw = r2.xz;
  o0.xyz = r1.xzw;
  
  o4 = 0;
  
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.20546
//
//   using 3Dmigoto v1.2.57 on Sun Jun 11 12:22:15 2017
//
//
// Buffer Definitions: 
//
// cbuffer $Globals
// {
//
//   float4x4 LocalToWorld;             // Offset:    0 Size:    64
//   float TwoSidedSign;                // Offset:   64 Size:     4 [unused]
//   float4x4 HairAnimationMatrix;      // Offset:   80 Size:    64 [unused]
//   float4x3 WorldToLocal;             // Offset:  144 Size:    48
//   float4x4 PreviousLocalToWorld;     // Offset:  192 Size:    64 [unused]
//   float3 MeshOrigin;                 // Offset:  256 Size:    12
//   float3 MeshExtension;              // Offset:  272 Size:    12
//   uint BoneIndexOffset;              // Offset:  284 Size:     4 [unused]
//   float4 SharedFogParameter0;        // Offset:  288 Size:    16
//   float4 SharedFogParameter1;        // Offset:  304 Size:    16
//   float4 SharedFogParameter2;        // Offset:  320 Size:    16
//   float4 SharedFogParameter3;        // Offset:  336 Size:    16
//   bool bUseExponentialHeightFog;     // Offset:  352 Size:     4
//   float4 FogInScattering[4];         // Offset:  368 Size:    64
//   float4 FogMaxHeight;               // Offset:  432 Size:    16
//   float4 FirstDensityFunctionParameters;// Offset:  448 Size:    16 [unused]
//   float4 SecondDensityFunctionParameters;// Offset:  464 Size:    16 [unused]
//   float StartDistance;               // Offset:  480 Size:     4 [unused]
//   float3 ApproxFogColor;             // Offset:  484 Size:    12 [unused]
//   float3 FogVolumeBoxMin;            // Offset:  496 Size:    12 [unused]
//   float3 FogVolumeBoxMax;            // Offset:  512 Size:    12 [unused]
//   bool bUseVolumetricFog;            // Offset:  524 Size:     4
//   float4 VolumetricFogTextureScaleBias;// Offset:  528 Size:    16
//   float3 VolumetricFogDepthRemap;    // Offset:  544 Size:    12 [unused]
//   float2 VolumetricClampRect;        // Offset:  560 Size:     8
//
// }
//
// cbuffer VSOffsetConstants
// {
//
//   float4x4 ViewProjectionMatrix;     // Offset:    0 Size:    64
//   float4x4 ViewProjectionMatrixNoTemporal;// Offset:   64 Size:    64 [unused]
//   float4 CameraPositionVS;           // Offset:  128 Size:    16
//   float4 PreViewTranslation;         // Offset:  144 Size:    16 [unused]
//
// }
//
// cbuffer VSBoneConstants
// {
//
//   float4x3 BoneMatrices[128];        // Offset:    0 Size:  6144
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// VolumetricFogInScatteringTextureSampler    sampler      NA          NA    2        1
// VolumetricFogOpaqueTransmittanceSampler    sampler      NA          NA    3        1
// VolumetricFogInScatteringTexture    texture  float4          2d    1        1
// VolumetricFogOpaqueTransmittance    texture  float4          2d    2        1
// $Globals                          cbuffer      NA          NA    0        1
// VSOffsetConstants                 cbuffer      NA          NA    1        1
// VSBoneConstants                   cbuffer      NA          NA    3        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION                 0   xyzw        0     NONE   float   xyz 
// TANGENT                  0   xyz         1     NONE   float   xyz 
// NORMAL                   0   xyzw        2     NONE   float   xyzw
// BLENDINDICES             0   xyzw        3     NONE    uint   xyzw
// BLENDWEIGHT              0   xyzw        4     NONE   float   xyzw
// TEXCOORD                 0   xy          5     NONE   float   xy  
// COLOR                    0   xyzw        6     NONE   float   xyzw
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD                10   xyz         0     NONE   float   xyz 
// TEXCOORD                11   xyzw        1     NONE   float   xyzw
// COLOR                    0   xyzw        2     NONE   float   xyzw
// TEXCOORD                 0   xyzw        3     NONE   float   xyzw
// TEXCOORD                 4   xyzw        4     NONE   float   xyzw
// TEXCOORD                 5   xyzw        5     NONE   float   xyzw
// SV_Position              0   xyzw        6      POS   float   xyzw
//
vs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[36], immediateIndexed
dcl_constantbuffer cb1[9], immediateIndexed
dcl_constantbuffer cb3[384], dynamicIndexed
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_input v0.xyz
dcl_input v1.xyz
dcl_input v2.xyzw
dcl_input v3.xyzw
dcl_input v4.xyzw
dcl_input v5.xy
dcl_input v6.xyzw
dcl_output o0.xyz
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xyzw
dcl_output o4.xyzw
dcl_output o5.xyzw
dcl_output_siv o6.xyzw, position
dcl_temps 7
mad r0.xyz, v0.xyzx, cb0[17].xyzx, cb0[16].xyzx
imul null, r1.xyzw, v3.xyzw, l(3, 3, 3, 3)
mul r2.xyzw, v4.yyyy, cb3[r1.y + 0].xyzw
mul r3.xyzw, v4.yyyy, cb3[r1.y + 1].xyzw
mul r4.xyzw, v4.yyyy, cb3[r1.y + 2].xyzw
mad r2.xyzw, v4.xxxx, cb3[r1.x + 0].xyzw, r2.xyzw
mad r3.xyzw, v4.xxxx, cb3[r1.x + 1].xyzw, r3.xyzw
mad r4.xyzw, v4.xxxx, cb3[r1.x + 2].xyzw, r4.xyzw
mad r2.xyzw, v4.zzzz, cb3[r1.z + 0].xyzw, r2.xyzw
mad r3.xyzw, v4.zzzz, cb3[r1.z + 1].xyzw, r3.xyzw
mad r4.xyzw, v4.zzzz, cb3[r1.z + 2].xyzw, r4.xyzw
mad r2.xyzw, v4.wwww, cb3[r1.w + 0].xyzw, r2.xyzw
mad r3.xyzw, v4.wwww, cb3[r1.w + 1].xyzw, r3.xyzw
mad r1.xyzw, v4.wwww, cb3[r1.w + 2].xyzw, r4.xyzw
mad r4.xyzw, v2.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), l(-1.000000, -1.000000, -1.000000, -1.000000)
mad r5.xyz, v1.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
dp3 r6.z, r5.xyzx, r2.xyzx
dp3 r6.x, r5.xyzx, r3.xyzx
dp3 r6.y, r5.xyzx, r1.xyzx
dp3 r5.y, r4.xyzx, r2.xyzx
dp3 r5.z, r4.xyzx, r3.xyzx
dp3 r5.x, r4.xyzx, r1.xyzx
mul r4.xyz, r6.xyzx, r5.xyzx
mad r4.xyz, r5.zxyz, r6.yzxy, -r4.xyzx
mul r4.xyz, r4.wwww, r4.xyzx
mov r0.w, l(1.000000)
dp4 r2.x, r0.xyzw, r2.xyzw
dp4 r2.y, r0.xyzw, r3.xyzw
dp4 r0.x, r0.xyzw, r1.xyzw
mul r1.xyzw, r2.yyyy, cb0[1].xyzw
mad r1.xyzw, cb0[0].xyzw, r2.xxxx, r1.xyzw
mad r0.xyzw, cb0[2].xyzw, r0.xxxx, r1.xyzw
add r0.xyzw, r0.xyzw, cb0[3].xyzw
mul r1.xyzw, r0.yyyy, cb1[1].xyzw
mad r1.xyzw, cb1[0].xyzw, r0.xxxx, r1.xyzw
mad r1.xyzw, cb1[2].xyzw, r0.zzzz, r1.xyzw
mad o6.xyzw, cb1[3].xyzw, r0.wwww, r1.xyzw
mul r1.xy, r6.xxxx, cb0[1].xzxx
mad r1.xy, cb0[0].xzxx, r6.zzzz, r1.xyxx
mad r1.xy, cb0[2].xzxx, r6.yyyy, r1.xyxx
mul r2.xy, r4.yyyy, cb0[1].xzxx
mad r2.xy, cb0[0].xzxx, r4.xxxx, r2.xyxx
mad r2.xy, cb0[2].xzxx, r4.zzzz, r2.xyxx
mul r2.zw, r5.zzzz, cb0[1].xxxz
mad r2.zw, cb0[0].xxxz, r5.yyyy, r2.zzzw
mad r2.zw, cb0[2].xxxz, r5.xxxx, r2.zzzw
mul o1.w, r4.w, cb0[9].w
if_nz cb0[32].w
  mul r3.xyz, r0.yyyy, cb1[1].xywx
  mad r3.xyz, cb1[0].xywx, r0.xxxx, r3.xyzx
  mad r3.xyz, cb1[2].xywx, r0.zzzz, r3.xyzx
  mad r3.xyz, cb1[3].xywx, r0.wwww, r3.xyzx
  div r3.xy, r3.xyxx, r3.zzzz
  mad r3.xy, r3.xyxx, cb0[33].xyxx, cb0[33].wzww
  min r3.xy, r3.xyxx, cb0[35].xyxx
  sample_l_indexable(texture2d)(float,float,float,float) r4.xyz, r3.xyxx, t1.xyzw, s2, l(0.000000)
  sample_l_indexable(texture2d)(float,float,float,float) r3.x, r3.xyxx, t2.xyzw, s3, l(0.000000)
  exp o4.w, -r3.x
  mov o4.xyz, r4.xyzx
else 
  if_nz cb0[22].x
    add r3.xyz, r0.xyzx, -cb1[8].xyzx
    dp3 r3.w, r3.xyzx, r3.xyzx
    sqrt r4.x, r3.w
    add r4.x, r4.x, -cb0[18].w
    max r4.x, r4.x, l(0.000000)
    lt r4.y, l(0.010000), |r3.z|
    movc r4.y, r4.y, r3.z, l(0.010000)
    mul r4.z, r4.y, -cb0[18].y
    exp r4.z, r4.z
    add r4.z, -r4.z, l(1.000000)
    mul r4.xy, r4.xyxx, cb0[18].xyxx
    div r4.y, r4.z, r4.y
    mul r4.x, r4.y, r4.x
    rsq r3.w, r3.w
    mul r3.xyz, r3.wwww, r3.xyzx
    dp3 r3.x, cb0[21].xyzx, r3.xyzx
    mad r3.x, -r3.x, l(0.499000), l(0.500000)
    log r3.x, r3.x
    mul r3.x, r3.x, cb0[18].z
    exp r3.x, r3.x
    add r3.yzw, cb0[19].xxyz, -cb0[20].xxyz
    mad r3.xyz, r3.xxxx, r3.yzwy, cb0[20].xyzx
    exp r3.w, -r4.x
    min r3.w, r3.w, l(1.000000)
    max r3.w, r3.w, cb0[19].w
    add r4.x, -r3.w, l(1.000000)
    mul o4.xyz, r3.xyzx, r4.xxxx
    mov o4.w, r3.w
  else 
    add r3.xyz, r0.xyzx, -cb1[8].xyzx
    dp3 r3.x, r3.xyzx, r3.xyzx
    sqrt r3.x, r3.x
    add r4.xyzw, cb0[21].xyzw, -cb1[8].zzzz
    ge r3.y, l(0.001000), |r3.z|
    movc r3.y, r3.y, l(0.001000), r3.z
    div_sat r4.xyzw, r4.xyzw, r3.yyyy
    add r5.xyzw, cb0[27].xyzw, -cb1[8].zzzz
    div_sat r5.xyzw, r5.xyzw, r3.yyyy
    add r3.xyzw, r3.xxxx, -cb0[20].xyzw
    max r3.xyzw, r3.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
    add r4.xyzw, -r4.xyzw, r5.xyzw
    mul r3.xyzw, r3.xyzw, |r4.xyzw|
    lt r4.xyzw, r3.xyzw, cb0[19].xyzw
    mul r3.xyzw, r3.xyzw, cb0[18].xyzw
    exp r3.xyzw, r3.xyzw
    and r3.xyzw, r3.xyzw, r4.xyzw
    add r4.xyzw, r3.xyzw, l(-1.000000, -1.000000, -1.000000, -1.000000)
    mul r5.xyz, r4.xxxx, cb0[23].xyzx
    mov r5.w, r3.x
    mul r5.xyzw, r3.yyyy, r5.xyzw
    mad r5.xyz, r4.yyyy, cb0[24].xyzx, r5.xyzx
    mul r5.xyzw, r3.zzzz, r5.xyzw
    mad r5.xyz, r4.zzzz, cb0[25].xyzx, r5.xyzx
    mul r3.xyzw, r3.wwww, r5.xyzw
    mad o4.xyz, r4.wwww, cb0[26].xyzx, r3.xyzx
    mov o4.w, r3.w
  endif 
endif 
mov o1.x, r1.y
mov o1.yz, r2.yywy
mov o2.xyzw, v6.zyxw
mov o3.xy, v5.xyxx
mov o3.zw, l(0,0,0,0)
mov o5.xyzw, r0.xyzw
mov r1.zw, r2.xxxz
mov o0.xyz, r1.xzwx
ret 
// Approximately 128 instruction slots used

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