//Volumetric fog GS 1. Fixed clipping in ShaderFixesDM by unchecking stereo.w.
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v0.6.198 on Sun Oct 27 00:01:52 2024
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD                10   xyzw        0     NONE   float   xyzw
// TEXCOORD                11   xyzw        1     NONE   float   xyzw
// PRIMITIVE_ID             0   x           2     NONE    uint   x
// ATTRIBUTE                0   xy          3     NONE   float   xy
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD                10   xyzw        0     NONE   float   xyzw
// TEXCOORD                11   xyzw        1     NONE   float   xyzw
// PRIMITIVE_ID             0   x           2     NONE    uint   x
// SV_RenderTargetArrayIndex     0    y          2  RTINDEX    uint    y
// SV_POSITION              0   xyzw        3      POS   float   xyzw
//
gs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer CB0[2], immediateIndexed
dcl_constantbuffer CB1[77], immediateIndexed
dcl_constantbuffer CB2[16], immediateIndexed
dcl_resource_structured t0, 16
dcl_input v[3][0].xyzw
dcl_input v[3][1].xyzw
dcl_input v[3][2].x
dcl_input v[3][3].xy
dcl_temps 31
dcl_inputprimitive triangle
dcl_stream m0
dcl_outputtopology trianglestrip
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.x
dcl_output_siv o2.y, rendertarget_array_index
dcl_output_siv o3.xyzw, position
dcl_maxout 24
dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture2d)(float,float,float,float) r25.xyzw, l(0, 0, 0, 0), t125.xyzw
ftoi r0.x, cb2[14].z
imad r0.y, v[0][2].x, l(42), l(1)
ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r0.yzw, r0.y, l(0), t0.xxyz
imad r1.x, v[0][2].x, l(42), l(19)
ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r1.xyzw, r1.x, l(0), t0.xyzw
add r2.xyz, r0.yzwy, -cb1[64].xyzx
add r1.xyz, r1.xyzx, cb1[76].xyzx
mad r1.xyz, r2.xyzx, l(2097152.000000, 2097152.000000, 2097152.000000, 0.000000), r1.xyzx
mul r1.y, r1.y, cb1[17].z
mad r1.x, r1.x, cb1[16].z, r1.y
mad r1.x, r1.z, cb1[18].z, r1.x
add r1.x, r1.x, cb1[19].z
add r1.y, r1.w, r1.x
mad r1.y, r1.y, cb2[15].x, cb2[15].y
log r1.y, r1.y
mul r1.y, r1.y, cb2[15].z
add r1.z, -r1.w, r1.x
mad r1.z, r1.z, cb2[15].x, cb2[15].y
log r1.z, r1.z
mul r1.z, r1.z, cb2[15].z
ftoi r1.yz, r1.yyzy
imax r2.x, r1.z, l(0)
ishl r2.y, cb0[1].z, l(3)
iadd r2.x, r2.y, r2.x
ilt r1.z, r1.z, r0.x
ige r2.y, r1.y, r2.x
and r1.z, r1.z, r2.y
ige r2.y, r1.y, l(0)
and r1.z, r1.z, r2.y
if_nz r1.z
  imad r3.xyzw, v[0][2].xxxx, l(42, 42, 42, 42), l(25, 26, 2, 3)
  ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r4.xyz, r3.x, l(0), t0.xyzx
  ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r5.xyz, r3.y, l(0), t0.xyzx
  ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r2.yzw, r3.z, l(0), t0.xxyz
  ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.xyz, r3.w, l(0), t0.xyzx
  imad r6.xy, v[0][2].xxxx, l(42, 42, 0, 0), l(4, 5, 0, 0)
  ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r6.xzw, r6.x, l(0), t0.xxyz
  ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r7.xyz, r6.y, l(0), t0.xyzx
  mad r7.xyw, r0.yzyw, l(2097152.000000, 2097152.000000, 0.000000, 2097152.000000), r7.xyxz
  iadd r0.x, r0.x, l(-1)
  imin r0.x, r0.x, r1.y
  iadd r0.y, r2.x, l(7)
  imin r0.x, r0.y, r0.x
  
  //add r26.x, r4.z, -r25.y
  //mad r4.x, -r25.x, r26.x, r4.x
  
  mov r4.w, l(1.000000)
  mov r8.x, r2.y
  mov r8.y, r3.x
  mov r8.z, r6.x
  mov r8.w, r7.x
  dp4 r9.x, r4.xyzw, r8.xyzw
  mov r10.x, r2.z
  mov r10.y, r3.y
  mov r10.z, r6.z
  mov r10.w, r7.y
  dp4 r9.y, r4.xyzw, r10.xyzw
  mov r7.x, r2.w
  mov r7.y, r3.z
  mov r7.z, r6.w
  dp4 r9.z, r4.xyzw, r7.xyzw
  mad r0.yzw, cb1[64].xxyz, l(0.000000, -2097152.000000, -2097152.000000, -2097152.000000), cb1[76].xxyz
  add r2.yzw, r0.yyzw, r9.xxyz
  mul r1.yz, r2.zzzz, cb1[17].xxyx
  mad r1.yz, r2.yyyy, cb1[16].xxyx, r1.yyzy
  mad r1.yz, r2.wwww, cb1[18].xxyx, r1.yyzy
  add r1.yz, r1.yyzy, cb1[19].xxyx
  min r2.yz, r1.yyzy, l(0.000000, 10000000.000000, 10000000.000000, 0.000000)
  max r1.yz, r1.yyzy, l(0.000000, -10000000.000000, -10000000.000000, 0.000000)
  add r3.xyz, -r4.xyzx, r5.xyzx
  mad r6.xyz, r3.xyzx, l(1.000000, 0.000000, 0.000000, 0.000000), r4.xyzx
  mov r6.w, l(1.000000)
  
  //add r26.x, r6.z, -r25.y
  //mad r6.x, -r25.x, r26.x, r6.x
  
  dp4 r9.x, r6.xyzw, r8.xyzw
  dp4 r9.y, r6.xyzw, r10.xyzw
  dp4 r9.z, r6.xyzw, r7.xyzw
  add r6.xyz, r0.yzwy, r9.xyzx
  mul r6.yw, r6.yyyy, cb1[17].xxxy
  mad r6.xy, r6.xxxx, cb1[16].xyxx, r6.ywyy
  mad r6.xy, r6.zzzz, cb1[18].xyxx, r6.xyxx
  add r6.xy, r6.xyxx, cb1[19].xyxx
  min r2.yz, r2.yyzy, r6.xxyx
  max r1.yz, r1.yyzy, r6.xxyx
  mad r6.xyz, r3.xyzx, l(0.000000, 1.000000, 0.000000, 0.000000), r4.xyzx
  mov r6.w, l(1.000000)
  
  //add r26.x, r6.z, -r25.y
  //mad r6.x, -r25.x, r26.x, r6.x
  
  dp4 r9.x, r6.xyzw, r8.xyzw
  dp4 r9.y, r6.xyzw, r10.xyzw
  dp4 r9.z, r6.xyzw, r7.xyzw
  add r6.xyz, r0.yzwy, r9.xyzx
  mul r6.yw, r6.yyyy, cb1[17].xxxy
  mad r6.xy, r6.xxxx, cb1[16].xyxx, r6.ywyy
  mad r6.xy, r6.zzzz, cb1[18].xyxx, r6.xyxx
  add r6.xy, r6.xyxx, cb1[19].xyxx
  min r2.yz, r2.yyzy, r6.xxyx
  max r1.yz, r1.yyzy, r6.xxyx
  mad r6.xyz, r3.xyzx, l(1.000000, 1.000000, 0.000000, 0.000000), r4.xyzx
  mov r6.w, l(1.000000)
  
  //add r26.x, r6.z, -r25.y
  //mad r6.x, -r25.x, r26.x, r6.x
  
  dp4 r9.x, r6.xyzw, r8.xyzw
  dp4 r9.y, r6.xyzw, r10.xyzw
  dp4 r9.z, r6.xyzw, r7.xyzw
  add r6.xyz, r0.yzwy, r9.xyzx
  mul r6.yw, r6.yyyy, cb1[17].xxxy
  mad r6.xy, r6.xxxx, cb1[16].xyxx, r6.ywyy
  mad r6.xy, r6.zzzz, cb1[18].xyxx, r6.xyxx
  add r6.xy, r6.xyxx, cb1[19].xyxx
  min r2.yz, r2.yyzy, r6.xxyx
  max r1.yz, r1.yyzy, r6.xxyx
  mad r6.xyz, r3.xyzx, l(0.000000, 0.000000, 1.000000, 0.000000), r4.xyzx
  mov r6.w, l(1.000000)
  
  //add r26.x, r6.z, -r25.y
  //mad r6.x, -r25.x, r26.x, r6.x
  
  dp4 r9.x, r6.xyzw, r8.xyzw
  dp4 r9.y, r6.xyzw, r10.xyzw
  dp4 r9.z, r6.xyzw, r7.xyzw
  add r6.xyz, r0.yzwy, r9.xyzx
  mul r6.yw, r6.yyyy, cb1[17].xxxy
  mad r6.xy, r6.xxxx, cb1[16].xyxx, r6.ywyy
  mad r6.xy, r6.zzzz, cb1[18].xyxx, r6.xyxx
  add r6.xy, r6.xyxx, cb1[19].xyxx
  min r2.yz, r2.yyzy, r6.xxyx
  max r1.yz, r1.yyzy, r6.xxyx
  mad r6.xyz, r3.xyzx, l(1.000000, 0.000000, 1.000000, 0.000000), r4.xyzx
  mov r6.w, l(1.000000)
  
  //add r26.x, r6.z, -r25.y
  //mad r6.x, -r25.x, r26.x, r6.x
  
  dp4 r9.x, r6.xyzw, r8.xyzw
  dp4 r9.y, r6.xyzw, r10.xyzw
  dp4 r9.z, r6.xyzw, r7.xyzw
  add r6.xyz, r0.yzwy, r9.xyzx
  mul r6.yw, r6.yyyy, cb1[17].xxxy
  mad r6.xy, r6.xxxx, cb1[16].xyxx, r6.ywyy
  mad r6.xy, r6.zzzz, cb1[18].xyxx, r6.xyxx
  add r6.xy, r6.xyxx, cb1[19].xyxx
  min r2.yz, r2.yyzy, r6.xxyx
  max r1.yz, r1.yyzy, r6.xxyx
  mad r3.xyz, r3.xyzx, l(0.000000, 1.000000, 1.000000, 0.000000), r4.xyzx
  mov r3.w, l(1.000000)
  
  //add r26.x, r3.z, -r25.y
  //mad r3.x, -r25.x, r26.x, r3.x
  
  dp4 r4.x, r3.xyzw, r8.xyzw
  dp4 r4.y, r3.xyzw, r10.xyzw
  dp4 r4.z, r3.xyzw, r7.xyzw
  add r3.xyz, r0.yzwy, r4.xyzx
  mul r3.yw, r3.yyyy, cb1[17].xxxy
  mad r3.xy, r3.xxxx, cb1[16].xyxx, r3.ywyy
  mad r3.xy, r3.zzzz, cb1[18].xyxx, r3.xyxx
  add r3.xy, r3.xyxx, cb1[19].xyxx
  min r2.yz, r2.yyzy, r3.xxyx
  max r1.yz, r1.yyzy, r3.xxyx
  mov r5.w, l(1.000000)
  
  //add r26.x, r5.z, -r25.y
  //mad r5.x, -r25.x, r26.x, r5.x
  
  dp4 r3.x, r5.xyzw, r8.xyzw
  dp4 r3.y, r5.xyzw, r10.xyzw
  dp4 r3.z, r5.xyzw, r7.xyzw
  add r0.yzw, r0.yyzw, r3.xxyz
  mul r3.xy, r0.zzzz, cb1[17].xyxx
  mad r0.yz, r0.yyyy, cb1[16].xxyx, r3.xxyx
  mad r0.yz, r0.wwww, cb1[18].xxyx, r0.yyzy
  add r0.yz, r0.yyzy, cb1[19].xxyx
  min r2.yz, r0.yyzy, r2.yyzy
  max r0.yz, r0.yyzy, r1.yyzy
  eq r0.w, r1.w, l(0.000000)
  add r0.yz, -r2.yyzy, r0.yyzy
  mad r1.yz, r0.yyzy, v[0][3].xxyx, r2.yyzy
  mad r3.xy, r0.yzyy, v[1][3].xyxx, r2.yzyy
  mad r0.yz, r0.yyzy, v[2][3].xxyx, r2.yyzy
  mul r4.xyzw, r1.zzzz, cb2[8].xyzw
  mad r4.xyzw, r1.yyyy, cb2[7].xyzw, r4.xyzw
  mul r5.xyzw, r3.yyyy, cb2[8].xyzw
  mad r3.xyzw, r3.xxxx, cb2[7].xyzw, r5.xyzw
  mul r5.xyzw, r0.zzzz, cb2[8].xyzw
  mad r5.xyzw, r0.yyyy, cb2[7].xyzw, r5.xyzw
  mov r0.y, r2.x
  loop
    ilt r0.z, r0.x, r0.y
    breakc_nz r0.z
    itof r0.z, r0.y
    add r0.z, r0.z, cb2[12].z
    div r0.z, r0.z, cb2[15].z
    exp r0.z, r0.z
    add r0.z, r0.z, -cb2[15].y
    div r0.z, r0.z, cb2[15].x
    add r1.y, -r1.x, r0.z
    ge r1.y, r1.w, |r1.y|
    or r1.y, r0.w, r1.y
    if_nz r1.y
      mad r6.xyzw, r0.zzzz, cb2[9].xyzw, r4.xyzw
      add r6.xyzw, r6.xyzw, cb2[10].xyzw
      mov o0.xyzw, v[0][0].xyzw
      mov o1.xyzw, v[0][1].xyzw
      mov o2.x, v[0][2].x
      mov o3.xyzw, r6.xyzw
      mov o2.y, r0.y
      emit_stream m0
      mad r6.xyzw, r0.zzzz, cb2[9].xyzw, r3.xyzw
      add r6.xyzw, r6.xyzw, cb2[10].xyzw
      mov o0.xyzw, v[1][0].xyzw
      mov o1.xyzw, v[1][1].xyzw
      mov o2.x, v[1][2].x
      mov o3.xyzw, r6.xyzw
      mov o2.y, r0.y
      emit_stream m0
      mad r6.xyzw, r0.zzzz, cb2[9].xyzw, r5.xyzw
      add r6.xyzw, r6.xyzw, cb2[10].xyzw
      mov o0.xyzw, v[2][0].xyzw
      mov o1.xyzw, v[2][1].xyzw
      mov o2.x, v[2][2].x
      mov o3.xyzw, r6.xyzw
      mov o2.y, r0.y
      emit_stream m0
      cut_stream m0
    endif
    iadd r0.y, r0.y, l(1)
  endloop
endif
ret
// Approximately 0 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with geo-11 v0.6.198 on Sun Oct 27 00:01:52 2024
// struct t0_t {
//   float val[4];
// };
// StructuredBuffer<t0_t> t0 : register(t0);
//
// cbuffer cb2 : register(b2)
// {
//   float4 cb2[16];
// }
//
// cbuffer cb1 : register(b1)
// {
//   float4 cb1[77];
// }
//
// cbuffer cb0 : register(b0)
// {
//   float4 cb0[2];
// }
//
//
//
//
// // 3Dmigoto declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Texture2D<float4> StereoParams : register(t125);
//
//
// [maxvertexcount(24)]
// void main(
//   inout TriangleStream<float> m0,
//   float4 v0 : TEXCOORD10,
//   float4 v1 : TEXCOORD11,
//   uint v2 : PRIMITIVE_ID0,
//   float2 v3 : ATTRIBUTE0,
//   out float4 o0 : TEXCOORD10,
//   out float4 o1 : TEXCOORD11,
//   out uint o2 : PRIMITIVE_ID0,
//   out uint p2 : SV_RenderTargetArrayIndex0,
//   out float4 o3 : SV_POSITION0)
// {
//   float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_inputprimitive triangle
// // Needs manual fix for instruction:  
// //dcl_stream m0
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_outputtopology trianglestrip
//   r0.x = (int)cb2[14].z;
//   r0.y = mad((int)v[0][2].x, 42, 1);
//   r0.y = t0[r0.y].val[0/4];
//   r0.z = t0[r0.y].val[0/4+1];
//   r0.w = t0[r0.y].val[0/4+2];
//   r1.x = mad((int)v[0][2].x, 42, 19);
//   r1.x = t0[r1.x].val[0/4];
//   r1.y = t0[r1.x].val[0/4+1];
//   r1.z = t0[r1.x].val[0/4+2];
//   r1.w = t0[r1.x].val[0/4+3];
//   r2.xyz = -cb1[64].xyz + r0.yzw;
//   r1.xyz = cb1[76].xyz + r1.xyz;
//   r1.xyz = r2.xyz * float3(2097152,2097152,2097152) + r1.xyz;
//   r1.y = cb1[17].z * r1.y;
//   r1.x = r1.x * cb1[16].z + r1.y;
//   r1.x = r1.z * cb1[18].z + r1.x;
//   r1.x = cb1[19].z + r1.x;
//   r1.y = r1.x + r1.w;
//   r1.y = r1.y * cb2[15].x + cb2[15].y;
//   r1.y = log2(r1.y);
//   r1.y = cb2[15].z * r1.y;
//   r1.z = r1.x + -r1.w;
//   r1.z = r1.z * cb2[15].x + cb2[15].y;
//   r1.z = log2(r1.z);
//   r1.z = cb2[15].z * r1.z;
//   r1.yz = (int2)r1.yz;
//   r2.x = max(0, (int)r1.z);
//   r2.y = asuint(cb0[1].z) << 3;
//   r2.x = (int)r2.y + (int)r2.x;
//   r1.z = cmp((int)r1.z < (int)r0.x);
//   r2.y = cmp((int)r1.y >= (int)r2.x);
//   r1.z = r1.z ? r2.y : 0;
//   r2.y = cmp((int)r1.y >= 0);
//   r1.z = r1.z ? r2.y : 0;
//   if (r1.z != 0) {
//     r3.xyzw = mad((int4)v[0][2].xxxx, int4(42,42,42,42), int4(25,26,2,3));
//     r4.x = t0[r3.x].val[0/4];
//     r4.y = t0[r3.x].val[0/4+1];
//     r4.z = t0[r3.x].val[0/4+2];
//     r5.x = t0[r3.y].val[0/4];
//     r5.y = t0[r3.y].val[0/4+1];
//     r5.z = t0[r3.y].val[0/4+2];
//     r2.y = t0[r3.z].val[0/4];
//     r2.z = t0[r3.z].val[0/4+1];
//     r2.w = t0[r3.z].val[0/4+2];
//     r3.x = t0[r3.w].val[0/4];
//     r3.y = t0[r3.w].val[0/4+1];
//     r3.z = t0[r3.w].val[0/4+2];
//     r6.xy = mad((int2)v[0][2].xx, int2(42,42), int2(4,5));
//     r6.x = t0[r6.x].val[0/4];
//     r6.z = t0[r6.x].val[0/4+1];
//     r6.w = t0[r6.x].val[0/4+2];
//     r7.x = t0[r6.y].val[0/4];
//     r7.y = t0[r6.y].val[0/4+1];
//     r7.z = t0[r6.y].val[0/4+2];
//     r7.xyw = r0.yzw * float3(2097152,2097152,2097152) + r7.xyz;
//     r0.x = (int)r0.x + -1;
//     r0.x = min((int)r1.y, (int)r0.x);
//     r0.y = (int)r2.x + 7;
//     r0.x = min((int)r0.x, (int)r0.y);
//     r4.w = 1;
//     r8.x = r2.y;
//     r8.y = r3.x;
//     r8.z = r6.x;
//     r8.w = r7.x;
//     r9.x = dot(r4.xyzw, r8.xyzw);
//     r10.x = r2.z;
//     r10.y = r3.y;
//     r10.z = r6.z;
//     r10.w = r7.y;
//     r9.y = dot(r4.xyzw, r10.xyzw);
//     r7.x = r2.w;
//     r7.y = r3.z;
//     r7.z = r6.w;
//     r9.z = dot(r4.xyzw, r7.xyzw);
//     r0.yzw = cb1[64].xyz * float3(-2097152,-2097152,-2097152) + cb1[76].xyz;
//     r2.yzw = r9.xyz + r0.yzw;
//     r1.yz = cb1[17].xy * r2.zz;
//     r1.yz = r2.yy * cb1[16].xy + r1.yz;
//     r1.yz = r2.ww * cb1[18].xy + r1.yz;
//     r1.yz = cb1[19].xy + r1.yz;
//     r2.yz = min(float2(10000000,10000000), r1.yz);
//     r1.yz = max(float2(-10000000,-10000000), r1.yz);
//     r3.xyz = r5.xyz + -r4.xyz;
//     r6.xyz = r3.xyz * float3(1,0,0) + r4.xyz;
//     r6.w = 1;
//     r9.x = dot(r6.xyzw, r8.xyzw);
//     r9.y = dot(r6.xyzw, r10.xyzw);
//     r9.z = dot(r6.xyzw, r7.xyzw);
//     r6.xyz = r9.xyz + r0.yzw;
//     r6.yw = cb1[17].xy * r6.yy;
//     r6.xy = r6.xx * cb1[16].xy + r6.yw;
//     r6.xy = r6.zz * cb1[18].xy + r6.xy;
//     r6.xy = cb1[19].xy + r6.xy;
//     r2.yz = min(r6.xy, r2.yz);
//     r1.yz = max(r6.xy, r1.yz);
//     r6.xyz = r3.xyz * float3(0,1,0) + r4.xyz;
//     r6.w = 1;
//     r9.x = dot(r6.xyzw, r8.xyzw);
//     r9.y = dot(r6.xyzw, r10.xyzw);
//     r9.z = dot(r6.xyzw, r7.xyzw);
//     r6.xyz = r9.xyz + r0.yzw;
//     r6.yw = cb1[17].xy * r6.yy;
//     r6.xy = r6.xx * cb1[16].xy + r6.yw;
//     r6.xy = r6.zz * cb1[18].xy + r6.xy;
//     r6.xy = cb1[19].xy + r6.xy;
//     r2.yz = min(r6.xy, r2.yz);
//     r1.yz = max(r6.xy, r1.yz);
//     r6.xyz = r3.xyz * float3(1,1,0) + r4.xyz;
//     r6.w = 1;
//     r9.x = dot(r6.xyzw, r8.xyzw);
//     r9.y = dot(r6.xyzw, r10.xyzw);
//     r9.z = dot(r6.xyzw, r7.xyzw);
//     r6.xyz = r9.xyz + r0.yzw;
//     r6.yw = cb1[17].xy * r6.yy;
//     r6.xy = r6.xx * cb1[16].xy + r6.yw;
//     r6.xy = r6.zz * cb1[18].xy + r6.xy;
//     r6.xy = cb1[19].xy + r6.xy;
//     r2.yz = min(r6.xy, r2.yz);
//     r1.yz = max(r6.xy, r1.yz);
//     r6.xyz = r3.xyz * float3(0,0,1) + r4.xyz;
//     r6.w = 1;
//     r9.x = dot(r6.xyzw, r8.xyzw);
//     r9.y = dot(r6.xyzw, r10.xyzw);
//     r9.z = dot(r6.xyzw, r7.xyzw);
//     r6.xyz = r9.xyz + r0.yzw;
//     r6.yw = cb1[17].xy * r6.yy;
//     r6.xy = r6.xx * cb1[16].xy + r6.yw;
//     r6.xy = r6.zz * cb1[18].xy + r6.xy;
//     r6.xy = cb1[19].xy + r6.xy;
//     r2.yz = min(r6.xy, r2.yz);
//     r1.yz = max(r6.xy, r1.yz);
//     r6.xyz = r3.xyz * float3(1,0,1) + r4.xyz;
//     r6.w = 1;
//     r9.x = dot(r6.xyzw, r8.xyzw);
//     r9.y = dot(r6.xyzw, r10.xyzw);
//     r9.z = dot(r6.xyzw, r7.xyzw);
//     r6.xyz = r9.xyz + r0.yzw;
//     r6.yw = cb1[17].xy * r6.yy;
//     r6.xy = r6.xx * cb1[16].xy + r6.yw;
//     r6.xy = r6.zz * cb1[18].xy + r6.xy;
//     r6.xy = cb1[19].xy + r6.xy;
//     r2.yz = min(r6.xy, r2.yz);
//     r1.yz = max(r6.xy, r1.yz);
//     r3.xyz = r3.xyz * float3(0,1,1) + r4.xyz;
//     r3.w = 1;
//     r4.x = dot(r3.xyzw, r8.xyzw);
//     r4.y = dot(r3.xyzw, r10.xyzw);
//     r4.z = dot(r3.xyzw, r7.xyzw);
//     r3.xyz = r4.xyz + r0.yzw;
//     r3.yw = cb1[17].xy * r3.yy;
//     r3.xy = r3.xx * cb1[16].xy + r3.yw;
//     r3.xy = r3.zz * cb1[18].xy + r3.xy;
//     r3.xy = cb1[19].xy + r3.xy;
//     r2.yz = min(r3.xy, r2.yz);
//     r1.yz = max(r3.xy, r1.yz);
//     r5.w = 1;
//     r3.x = dot(r5.xyzw, r8.xyzw);
//     r3.y = dot(r5.xyzw, r10.xyzw);
//     r3.z = dot(r5.xyzw, r7.xyzw);
//     r0.yzw = r3.xyz + r0.yzw;
//     r3.xy = cb1[17].xy * r0.zz;
//     r0.yz = r0.yy * cb1[16].xy + r3.xy;
//     r0.yz = r0.ww * cb1[18].xy + r0.yz;
//     r0.yz = cb1[19].xy + r0.yz;
//     r2.yz = min(r2.yz, r0.yz);
//     r0.yz = max(r1.yz, r0.yz);
//     r0.w = cmp(r1.w == 0.000000);
//     r0.yz = r0.yz + -r2.yz;
//     r1.yz = r0.yz * v[0][3].xy + r2.yz;
//     r3.xy = r0.yz * v[1][3].xy + r2.yz;
//     r0.yz = r0.yz * v[2][3].xy + r2.yz;
//     r4.xyzw = cb2[8].xyzw * r1.zzzz;
//     r4.xyzw = r1.yyyy * cb2[7].xyzw + r4.xyzw;
//     r5.xyzw = cb2[8].xyzw * r3.yyyy;
//     r3.xyzw = r3.xxxx * cb2[7].xyzw + r5.xyzw;
//     r5.xyzw = cb2[8].xyzw * r0.zzzz;
//     r5.xyzw = r0.yyyy * cb2[7].xyzw + r5.xyzw;
//     r0.y = r2.x;
//     while (true) {
//       r0.z = cmp((int)r0.x < (int)r0.y);
//       if (r0.z != 0) break;
//       r0.z = (int)r0.y;
//       r0.z = cb2[12].z + r0.z;
//       r0.z = r0.z / cb2[15].z;
//       r0.z = exp2(r0.z);
//       r0.z = -cb2[15].y + r0.z;
//       r0.z = r0.z / cb2[15].x;
//       r1.y = r0.z + -r1.x;
//       r1.y = cmp(r1.w >= abs(r1.y));
//       r1.y = (int)r0.w | (int)r1.y;
//       if (r1.y != 0) {
//         r6.xyzw = r0.zzzz * cb2[9].xyzw + r4.xyzw;
//         r6.xyzw = cb2[10].xyzw + r6.xyzw;
//         o0.xyzw = v[0][0].xyzw;
//         o1.xyzw = v[0][1].xyzw;
//         o2.x = v[0][2].x;
//         o3.xyzw = r6.xyzw;
//         p2.x = r0.y;
//       // Needs manual fix for instruction, maybe. 
// //            emit_stream m0
//       m0.Append(0);
//         r6.xyzw = r0.zzzz * cb2[9].xyzw + r3.xyzw;
//         r6.xyzw = cb2[10].xyzw + r6.xyzw;
//         o0.xyzw = v[1][0].xyzw;
//         o1.xyzw = v[1][1].xyzw;
//         o2.x = v[1][2].x;
//         o3.xyzw = r6.xyzw;
//         p2.x = r0.y;
//       // Needs manual fix for instruction, maybe. 
// //            emit_stream m0
//       m0.Append(0);
//         r6.xyzw = r0.zzzz * cb2[9].xyzw + r5.xyzw;
//         r6.xyzw = cb2[10].xyzw + r6.xyzw;
//         o0.xyzw = v[2][0].xyzw;
//         o1.xyzw = v[2][1].xyzw;
//         o2.x = v[2][2].x;
//         o3.xyzw = r6.xyzw;
//         p2.x = r0.y;
//       // Needs manual fix for instruction, maybe. 
// //            emit_stream m0
//       m0.Append(0);
//       // Needs manual fix for instruction, maybe. 
// //            cut_stream m0
//       m0.RestartStrip();
//       }
//       r0.y = (int)r0.y + 1;
//     }
//   }
//   return;
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// D:\SteamLibrary\steamapps\common\SILENT HILL 2\SHProto\Binaries\Win64\ShaderFixes\e218816d77d4b40c-gs_replace.txt(55,19): error X3004: undeclared identifier 'v'
/////////////////////////////////////////////////////////////////////////////
