// asmtool.py -I ../.. --auto-fix-vertex-halo --fix-unusual-halo-with-inconsistent-w-optimisation --fix-unity-reflection --fix-unity-frustum-world --only-autofixed 7c19da3f862b84ed-vs.txt
// 3DMigoto: 7c19da3f862b84ed | Matched 3 variants of 3 shaders: Particles/Additive, Particles/Additive (Soft), Particles/Alpha Blended
//
// 1:    Unity headers extracted from Particle Add.shader
// 4:    Unity headers extracted from Particle AddSmooth.shader
// 2:    Unity headers extracted from Particle Alpha Blend.shader
// 4:    Shader "Particles/Additive (Soft)" {
// 1:    Shader "Particles/Additive" {
// 2:    Shader "Particles/Alpha Blended" {
//         Properties {
// 3:       _TintColor ("Tint Color", Color) = (0.5,0.5,0.5,0.5)
//          _MainTex ("Particle Texture", 2D) = "white" { }
//          _InvFade ("Soft Particles Factor", Range(0.01,3)) = 1
//         }
//         SubShader 1/1 {
//           Tags { "QUEUE"="Transparent" "IGNOREPROJECTOR"="true" "RenderType"="Transparent" }
//           Pass 1/1 {
//             Tags { "QUEUE"="Transparent" "IGNOREPROJECTOR"="true" "RenderType"="Transparent" }
//             ZWrite Off
//             Cull Off
// 4:          Blend One OneMinusSrcColor
// 1:          Blend SrcAlpha One
// 2:          Blend SrcAlpha OneMinusSrcAlpha
//             ColorMask RGB
// 4:          GpuProgramID 4861
// 2:          GpuProgramID 54810
// 1:          GpuProgramID 62330
//             Program "vp" {
//               SubProgram "d3d11_9x " {
//                 GpuProgramIndex 5
//               }
//             }
//           }
//         }
//       }
//
// 1: Unity 5.3 headers extracted from Particle Add.shader.decompressed:
// 4: Unity 5.3 headers extracted from Particle AddSmooth.shader.decompressed:
// 2: Unity 5.3 headers extracted from Particle Alpha Blend.shader.decompressed:
//      API d3d11_9x
//      Shader model vs_4_0_level_9_1
//      undeciphered1: 201509030 13 0 0
//      Keywords { "SOFTPARTICLES_ON" }
//      undeciphered2: 1 0 3 0 0
//      undeciphered3: 13 3 0 0 2 1 3 4
//      ConstBuffer "$Globals" 144
//      Vector 112 [_MainTex_ST]
//      ConstBuffer "UnityPerCamera" 144
//      Vector 80 [_ProjectionParams]
//      ConstBuffer "UnityPerDraw" 352
//      Matrix 0 [glstate_matrix_mvp]
//      Matrix 64 [glstate_matrix_modelview0]
//      BindCB "$Globals" 0
//      BindCB "UnityPerCamera" 1
//      BindCB "UnityPerDraw" 2
//
// Headers extracted with DarkStarSword's extract_unity53_shaders.py
// https://github.com/DarkStarSword/3d-fixes

//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.3.2 on Mon Jul 23 23:45:15 2018
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION                 0   xyzw        0     NONE   float   xyzw
// COLOR                    0   xyzw        1     NONE   float   xyzw
// TEXCOORD                 0   xy          2     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   xy          2     NONE   float   xy
// TEXCOORD                 2   xyzw        3     NONE   float   xyzw
//
//
// Constant buffer to DX9 shader constant mappings:
//
// Target Reg Buffer  Start Reg # of Regs        Data Conversion
// ---------- ------- --------- --------- ----------------------
// c1         cb0             7         1  ( FLT, FLT, FLT, FLT)
// c2         cb1             5         1  ( FLT, FLT, FLT, FLT)
// c3         cb2             0         8  ( FLT, FLT, FLT, FLT)
//
//
// Runtime generated constant mappings:
//
// Target Reg                               Constant Description
// ---------- --------------------------------------------------
// c0                              Vertex Shader position offset
//
//
// Level9 shader bytecode:
//
    vs_2_0
    def c11, 0.5, 0, 0, 0
    dcl_texcoord v0
    dcl_texcoord1 v1
    dcl_texcoord2 v2
    mul r0, v0.y, c4
    mad r0, c3, v0.x, r0
    mad r0, c5, v0.z, r0
    mad r0, c6, v0.w, r0
    mul r1.x, r0.y, c2.x
    mul r1.w, r1.x, c11.x
    mul r1.xz, r0.xyww, c11.x
    add oT2.xy, r1.z, r1.xwzw
    mul r1.x, v0.y, c8.z
    mad r1.x, c7.z, v0.x, r1.x
    mad r1.x, c9.z, v0.z, r1.x
    mad r1.x, c10.z, v0.w, r1.x
    mov oT2.z, -r1.x
    mad oT1.xy, v2, c1, c1.zwzw
    mad oPos.xy, r0.w, c0, r0
    mov oPos.zw, r0
    mov oT2.w, r0.w
    mov oT0, v1

// approximately 18 instruction slots used
vs_4_0
dcl_constantbuffer cb0[8], immediateIndexed
dcl_constantbuffer cb1[6], immediateIndexed
dcl_constantbuffer cb2[8], immediateIndexed
dcl_input v0.xyzw
dcl_input v1.xyzw
dcl_input v2.xy
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xy
dcl_output o3.xyzw
dcl_temps 3

// 3DMigoto StereoParams:
dcl_resource_texture2d (float,float,float,float) t125

ld_indexable(texture2d)(float,float,float,float) r2.xyzw, l(0, 0, 0, 0), t125.xyzw

mul r0.xyzw, v0.yyyy, cb2[1].xyzw
mad r0.xyzw, cb2[0].xyzw, v0.xxxx, r0.xyzw
mad r0.xyzw, cb2[2].xyzw, v0.zzzz, r0.xyzw
mad r0.xyzw, cb2[3].xyzw, v0.wwww, r0.xyzw
mov o0.xyzw, r0.xyzw

// Automatic vertex shader halo fix inserted with DarkStarSword's asmtool.py:
// asmtool.py -I ../.. --auto-fix-vertex-halo --fix-unusual-halo-with-inconsistent-w-optimisation --fix-unity-reflection --fix-unity-frustum-world --only-autofixed 7c19da3f862b84ed-vs.txt
ne r2.w, r0.w, l(1.0)
if_nz r2.w
  add r2.w, r0.w, -r2.y
  mad r0.x, r2.w, r2.x, r0.x
endif

mov o1.xyzw, v1.xyzw
mad o2.xy, v2.xyxx, cb0[7].xyxx, cb0[7].zwzz
mul r0.y, r0.y, cb1[5].x
mul r1.xzw, r0.xxwy, l(0.500000, 0.000000, 0.500000, 0.500000)
mov o3.w, r0.w
add o3.xy, r1.zzzz, r1.xwxx
mul r0.x, v0.y, cb2[5].z
mad r0.x, cb2[4].z, v0.x, r0.x
mad r0.x, cb2[6].z, v0.z, r0.x
mad r0.x, cb2[7].z, v0.w, r0.x
mov o3.z, -r0.x
ret
// Approximately 0 instruction slots used