// AUTOMATICALLY CONVERTED FROM SHADER FIXES 
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
//   using 3Dmigoto v0.6.181 on Thu Jun 13 23:33:12 2024
//
//
// Buffer Definitions:
//
// cbuffer RenderView
// {
//
//   float4x4 uProjectionMatrix;        // Index:    0 1 2 3          Components:    16
//   float4x4 uModelViewMatrix;         // Index:    4 5 6 7          Components:    16
//   float4x4 uInverseProjectionMatrix; // Index:    8 9 10 11        Components:    16 [unused]
//   float4x4 uPrevProjection;          // Index:   12 13 14 15       Components:    16 [unused]
//   float4x4 uInverseModelViewMatrix;  // Index:   16 17 18 19       Components:    16 [unused]
//   float4x4 uPrevModelView;           // Index:   20 21 22 23       Components:    16 [unused]
//   float4x4 uRotationMatrix;          // Index:   24 25 26 27       Components:    16 [unused]
//   float4x4 uInverseRotationMatrix;   // Index:   28 29 30 31       Components:    16 [unused]
//   float4x4 uTransposedRotationMatrix;// Index:   32 33 34 35       Components:    16 [unused]
//   float4x4 uClipMatrix;              // Index:   36 37 38 39       Components:    16 [unused]
//   float4x4 uInverseClipMatrix;       // Index:   40 41 42 43       Components:    16 [unused]
//   float4x4 uPrevClipMatrix;          // Index:   44 45 46 47       Components:    16 [unused]
//   float4x4 uNormalMatrix;            // Index:   48 49 50 51       Components:    16 [unused]
//   float3 uViewOrigin;                // Index:   52.xyz            Components:     3 [unused]
//   float uViewWidth;                  // Index:   52.w              Components:     1 [unused]
//   float uViewHeight;                 // Index:   53.x              Components:     1 [unused]
//   float uZNear;                      // Index:   53.y              Components:     1 [unused]
//   float uZFar;                       // Index:   53.z              Components:     1 [unused]
//   float2 uInvFocalCoords;            // Index:   54.xy             Components:     2 [unused]
//   float4 uResolutionScale;           // Index:   55.xyzw           Components:     4 [unused]
//   float4 uScreenBounds;              // Index:   56.xyzw           Components:     4 [unused]
//   float4 uFrustumCorners[4];         // Index:   57 58 59 60       Components:    16 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// DepthBuffer                       texture   float          2d  110        1
// IniParams                         texture  float4          1d  120        1
// StereoParams                      texture  float4          2d  125        1
// RenderView                        cbuffer      NA          NA    0        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// ATTRIB                   0   xyz         0     NONE   float   xyz
// ATTRIB                   1   xy          1     NONE   float   xy
// ATTRIB                   2   xyzw        2     NONE   float   xyzw
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION              0   xyzw        0      POS   float   xyzw
// TEXCOORD                 0   xy          1     NONE   float   xy
// COLOR                    0   xyzw        2     NONE   float   xyzw
// P                        0   x           3  RTINDEX    uint   x
//
vs_4_0
dcl_output_siv o3.x, rendertarget_array_index
dcl_constantbuffer CB0[8], immediateIndexed
dcl_resource_texture2d (float,float,float,float) t110
dcl_resource_texture1d (float,float,float,float) t120
dcl_resource_buffer (float,float,float,float) t125
dcl_input v0.xyz
dcl_input v1.xy
dcl_input v2.xyzw
dcl_output_siv o0.xyzw, position
dcl_output o1.xy
dcl_output o2.xyzw
dcl_temps 10
ld_indexable(buffer)(float,float,float,float) r9.xyzw, l(0, 0, 0, 0), t125.xyzw
mov o3.x, r9.z
ld r0.xyzw, l(0, 0, 0, 0), t125.xyzw
movc r0.z, r0.z, l(-1.000000), l(1.000000)
ld r1.xyzw, l(3, 0, 0, 0), t120.xyzw
ld r2.xyzw, l(10, 0, 0, 0), t120.xyzw
mul r3.xyzw, v0.yyyy, cb0[5].xyzw
mad r3.xyzw, cb0[4].xyzw, v0.xxxx, r3.xyzw
mad r3.xyzw, cb0[6].xyzw, v0.zzzz, r3.xyzw
add r3.xyzw, r3.xyzw, cb0[7].xyzw
mul r4.xyzw, r3.yyyy, cb0[1].xyzw
mad r4.xyzw, cb0[0].xyzw, r3.xxxx, r4.xyzw
mad r4.xyzw, cb0[2].xyzw, r3.zzzz, r4.xyzw
mad r3.xyzw, cb0[3].xyzw, r3.wwww, r4.xyzw
eq r0.w, r3.w, l(1.000000)
eq r1.x, r1.w, l(1.000000)
and r1.x, r0.w, r1.x
eq r1.y, r2.x, l(0.000000)
and r1.x, r1.y, r1.x
ge r1.yz, r3.xxyx, l(0.000000, -0.200000, -0.200000, 0.000000)
and r1.x, r1.y, r1.x
lt r2.xy, r3.xyxx, l(0.200000, 0.200000, 0.000000, 0.000000)
and r1.x, r1.x, r2.x
and r1.x, r1.z, r1.x
and r1.x, r2.y, r1.x
eq r2.xyz, v2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
and r1.x, r1.x, r2.x
and r1.x, r2.y, r1.x
and r1.x, r2.z, r1.x
if_nz r1.x
  ne r1.x, r0.x, l(0.000000)
  if_nz r1.x
    add r1.x, -r0.y, l(0.000010)
    mul r1.x, r0.x, r1.x
    mul r1.y, r1.x, l(0.020000)
    mad r1.x, -r1.x, l(0.020000), r0.x
    mul r1.z, r0.y, r0.x
    mul r1.z, r1.z, l(10.000000)
    resinfo_uint r2.xyzw, l(0), t110.xyzw
    iadd r2.zw, r2.xxxy, l(0, 0, -1, -1)
    utof r2.xyzw, r2.xyzw
    mul r2.y, r2.y, l(0.500000)
    min r2.y, r2.w, r2.y
    ftoi r4.y, r2.y
    mov r4.zw, l(0,0,0,0)
    mov r2.y, l(0)
    mov r2.w, r1.y
    mov r5.x, r1.y
    mov r5.yz, l(0,0,0,0)
    loop
      utof r5.w, r5.y
      ge r5.w, r5.w, l(350.000000)
      mov r5.z, l(0)
      breakc_nz r5.w
      mad r5.x, r1.x, l(0.00285714283), r5.x
      mul r5.w, r0.z, r5.x
      mad r5.w, r5.w, l(0.500000), l(0.500000)
      mul r5.w, r2.x, r5.w
      max r5.w, r5.w, l(0.000000)
      min r5.w, r2.z, r5.w
      ftoi r4.x, r5.w
      ld r6.xyzw, r4.xyzw, t110.xyzw
      ne r4.x, r6.x, l(1.000000)
      add r5.w, -r6.x, l(1.000000)
      mul r5.w, r5.w, l(0.000010)
      div r5.w, l(0.000010), r5.w
      add r5.w, r6.x, r5.w
      and r4.x, r4.x, r5.w
      eq r5.w, r4.x, l(0.000000)
      if_nz r5.w
        mov r2.y, r0.x
        mov r5.z, l(-1)
        break
      endif
      add r6.x, r0.x, -r5.x
      div r6.x, r1.z, r6.x
      lt r4.x, r4.x, r6.x
      if_nz r4.x
        mov r2.y, l(0)
        mov r5.z, l(0)
        break
      endif
      mov r2.w, r5.x
      iadd r5.y, r5.y, l(1)
      mov r5.xyz, r5.xywx
      mov r2.y, l(0)
    endloop
    movc r0.z, r5.z, r2.y, r2.w
  else
    mov r0.z, l(0)
  endif
  add r3.x, r0.z, r3.x
else
  ld r2.xyzw, l(1, 0, 0, 0), t120.xyzw
  eq r0.z, r2.x, l(1.000000)
  and r0.z, r0.z, r0.w
  eq r0.w, r1.w, l(2.000000)
  and r0.z, r0.w, r0.z
  mad r0.y, -r0.y, r2.y, r3.w
  mad r0.x, r0.x, r0.y, r3.x
  movc r3.x, r0.z, r0.x, r3.x
endif
mov r7.xyzw, r3.xyzw
mov o2.xyzw, v2.xyzw
mov o1.xy, v1.xyxx
add r8.x, -r9.y, r7.w
mul r8.y, r9.x, r9.w
mad r8.x, r8.x, r8.y, r7.x
ne r8.y, l(1.000000), r7.w
movc r7.x, r8.y, r8.x, r7.x
mov o0.xyzw, r7.xyzw
ret
// Approximately 103 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v0.6.181 on Thu Jun 13 23:33:12 2024
//
// cbuffer RenderView : register(b0)
// {
//   float4x4 uProjectionMatrix : packoffset(c0);
//   float4x4 uModelViewMatrix : packoffset(c4);
//   float4x4 uInverseProjectionMatrix : packoffset(c8);
//   float4x4 uPrevProjection : packoffset(c12);
//   float4x4 uInverseModelViewMatrix : packoffset(c16);
//   float4x4 uPrevModelView : packoffset(c20);
//   float4x4 uRotationMatrix : packoffset(c24);
//   float4x4 uInverseRotationMatrix : packoffset(c28);
//   float4x4 uTransposedRotationMatrix : packoffset(c32);
//   float4x4 uClipMatrix : packoffset(c36);
//   float4x4 uInverseClipMatrix : packoffset(c40);
//   float4x4 uPrevClipMatrix : packoffset(c44);
//   float4x4 uNormalMatrix : packoffset(c48);
//   float3 uViewOrigin : packoffset(c52);
//   float uViewWidth : packoffset(c52.w);
//   float uViewHeight : packoffset(c53);
//   float uZNear : packoffset(c53.y);
//   float uZFar : packoffset(c53.z);
//   float2 uInvFocalCoords : packoffset(c54);
//   float4 uResolutionScale : packoffset(c55);
//   float4 uScreenBounds : packoffset(c56);
//   float4 uFrustumCorners[4] : packoffset(c57);
// }
//
// Texture2D<float> DepthBuffer : register(t110);
//
//
// // 3Dmigoto declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Buffer<float4> StereoParams : register(t125);
//
//
// void main(
//   float3 v0 : ATTRIB0,
//   float2 v1 : ATTRIB1,
//   float4 v2 : ATTRIB2,
//   out float4 o0 : SV_POSITION0,
//   out float2 o1 : TEXCOORD0,
//   out float4 o2 : COLOR0,
//   out uint o3 : P0)
// {
//   float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
//   r9.xyzw = StereoParams.Load(float4(0,0,0,0)).xyzw;
//   o3.x = r9.z;
//   r0.xyzw = StereoParams.Load(float4(0,0,0,0)).xyzw;
//   r0.z = r0.z ? -1 : 1;
//   r1.xyzw = IniParams.Load(float4(3,0,0,0)).xyzw;
//   r2.xyzw = IniParams.Load(float4(10,0,0,0)).xyzw;
//   r3.xyzw = uModelViewMatrix._m01_m11_m21_m31 * v0.yyyy;
//   r3.xyzw = uModelViewMatrix._m00_m10_m20_m30 * v0.xxxx + r3.xyzw;
//   r3.xyzw = uModelViewMatrix._m02_m12_m22_m32 * v0.zzzz + r3.xyzw;
//   r3.xyzw = uModelViewMatrix._m03_m13_m23_m33 + r3.xyzw;
//   r4.xyzw = uProjectionMatrix._m01_m11_m21_m31 * r3.yyyy;
//   r4.xyzw = uProjectionMatrix._m00_m10_m20_m30 * r3.xxxx + r4.xyzw;
//   r4.xyzw = uProjectionMatrix._m02_m12_m22_m32 * r3.zzzz + r4.xyzw;
//   r3.xyzw = uProjectionMatrix._m03_m13_m23_m33 * r3.wwww + r4.xyzw;
//   r0.w = cmp(r3.w == 1.000000);
//   r1.x = cmp(r1.w == 1.000000);
//   r1.x = r0.w ? r1.x : 0;
//   r1.y = cmp(r2.x == 0.000000);
//   r1.x = r1.y ? r1.x : 0;
//   r1.yz = cmp(r3.xy >= float2(-0.200000003,-0.200000003));
//   r1.x = r1.y ? r1.x : 0;
//   r2.xy = cmp(r3.xy < float2(0.200000003,0.200000003));
//   r1.x = r1.x ? r2.x : 0;
//   r1.x = r1.z ? r1.x : 0;
//   r1.x = r2.y ? r1.x : 0;
//   r2.xyz = cmp(v2.xyz == float3(1,1,1));
//   r1.x = r1.x ? r2.x : 0;
//   r1.x = r2.y ? r1.x : 0;
//   r1.x = r2.z ? r1.x : 0;
//   if (r1.x != 0) {
//     r1.x = cmp(r0.x != 0.000000);
//     if (r1.x != 0) {
//       r1.x = 9.99999975e-06 + -r0.y;
//       r1.x = r1.x * r0.x;
//       r1.y = 0.0199999996 * r1.x;
//       r1.x = -r1.x * 0.0199999996 + r0.x;
//       r1.z = r0.x * r0.y;
//       r1.z = 10 * r1.z;
//       DepthBuffer.GetDimensions(0, uiDest.x, uiDest.y, uiDest.z);
//       r2.xyzw = uiDest.xyzw;
//       r2.zw = (int2)r2.xy + int2(-1,-1);
//       r2.xyzw = (uint4)r2.xyzw;
//       r2.y = 0.5 * r2.y;
//       r2.y = min(r2.y, r2.w);
//       r4.y = (int)r2.y;
//       r4.zw = float2(0,0);
//       r2.y = 0;
//       r2.w = r1.y;
//       r5.x = r1.y;
//       r5.yz = float2(0,0);
//       while (true) {
//         r5.w = (uint)r5.y;
//         r5.w = cmp(r5.w >= 350);
//         r5.z = 0;
//         if (r5.w != 0) break;
//         r5.x = r1.x * 0.00285714283 + r5.x;
//         r5.w = r5.x * r0.z;
//         r5.w = r5.w * 0.5 + 0.5;
//         r5.w = r5.w * r2.x;
//         r5.w = max(0, r5.w);
//         r5.w = min(r5.w, r2.z);
//         r4.x = (int)r5.w;
//         r6.x = DepthBuffer.Load(r4.xyz).x;
//         r4.x = cmp(r6.x != 1.000000);
//         r5.w = 1 + -r6.x;
//         r5.w = 9.99999975e-06 * r5.w;
//         r5.w = 9.99999975e-06 / r5.w;
//         r5.w = r5.w + r6.x;
//         r4.x = r4.x ? r5.w : 0;
//         r5.w = cmp(r4.x == 0.000000);
//         if (r5.w != 0) {
//           r2.y = r0.x;
//           r5.z = -1;
//           break;
//         }
//         r6.x = -r5.x + r0.x;
//         r6.x = r1.z / r6.x;
//         r4.x = cmp(r4.x < r6.x);
//         if (r4.x != 0) {
//           r2.y = 0;
//           r5.z = 0;
//           break;
//         }
//         r2.w = r5.x;
//         r5.y = (int)r5.y + 1;
//         r5.xyz = r5.xyw;
//         r2.y = 0;
//       }
//       r0.z = r5.z ? r2.y : r2.w;
//     } else {
//       r0.z = 0;
//     }
//     r3.x = r3.x + r0.z;
//   } else {
//     r2.xyzw = IniParams.Load(float4(1,0,0,0)).xyzw;
//     r0.z = cmp(r2.x == 1.000000);
//     r0.z = r0.z ? r0.w : 0;
//     r0.w = cmp(r1.w == 2.000000);
//     r0.z = r0.w ? r0.z : 0;
//     r0.y = -r0.y * r2.y + r3.w;
//     r0.x = r0.x * r0.y + r3.x;
//     r3.x = r0.z ? r0.x : r3.x;
//   }
//   r7.xyzw = r3.xyzw;
//   o2.xyzw = v2.xyzw;
//   o1.xy = v1.xy;
//   r8.x = r7.w + -r9.y;
//   r8.y = r9.w * r9.x;
//   r8.x = r8.x * r8.y + r7.x;
//   r8.y = cmp(1.000000 != r7.w);
//   r7.x = r8.y ? r8.x : r7.x;
//   o0.xyzw = r7.xyzw;
//   return;
// }
/////////////////////////////////////////////////////////////////////////////
