//DBSZ rocky area shadows.
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v0.6.198 on Thu Oct 10 00:19:48 2024
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD                 0   xyzw        0     NONE   float   xyzw
// TEXCOORD                 1   xy          1     NONE    uint   xy
// SV_POSITION              0   xyzw        2      POS   float   xy
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer CB0[27], immediateIndexed
dcl_constantbuffer CB1[177], immediateIndexed
dcl_sampler s0, mode_default
dcl_resource_raw t0
dcl_resource_texture3d (float,float,float,float) t1
dcl_resource_structured t2, 16
dcl_resource_structured t3, 16
dcl_resource_structured t4, 4
dcl_resource_structured t5, 16
dcl_resource_structured t6, 16
dcl_uav_structured u1, 4
dcl_uav_typed_buffer (uint,uint,uint,uint) u2
dcl_input_ps constant v0.xyzw
dcl_input_ps constant v1.xy
dcl_input_ps_siv linear noperspective v2.xy, position
dcl_output o0.xyzw
dcl_temps 34
dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture2d)(float,float,float,float) r25.xyzw, l(0, 0, 0, 0), t125.xyzw
//mov r25.xyzw, l(0.0)
dcl_resource_texture1d (float,float,float,float) t120
ld_indexable(texture1d)(float,float,float,float) r30.xyzw, l(10, 0, 0, 0), t120.xyzw

//mov r25.xyzw, l(0.0)

mul r25.x, r25.x, r30.w

ftou r0.xy, v2.yxyy
utof r0.xy, r0.xyxx
mad r0.x, r0.x, cb0[26].x, r0.y
ftou r0.x, r0.x
ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r1.xyzw, r0.x, l(0), t5.xyzw
mul r0.y, r1.w, r1.w
mad r0.z, -r1.w, r1.w, l(1.000000)
sqrt r0.z, r0.z

mul r22.xyz, v0.yyyy, cb1[17].xyzx
mad r22.xyz, v0.xxxx, cb1[16].xyzx, r22.xyzx
mad r22.xyz, v0.zzzz, cb1[18].xyzx, r22.xyzx
add r22.xyz, r22.xyzx, cb1[19].xyzx
mad r20.w, cb0[24].x, l(0.500000), v0.w
div r22.w, r20.w, r20.z

mov r20.xy, v0.xyxx
//mad r26.x, r25.y, l(0.0), l(-1.0)
//mul r26.x, r26.x, cb1[129].x
//mul r26.x, r26.x, l(0.5)
//mad r20.x, r25.x, r26.x, r20.x

mul r2.xyz, v0.yyyy, cb1[17].xyzx
mad r2.xyz, r20.xxxx, cb1[16].xyzx, r2.xyzx
mad r2.xyz, v0.zzzz, cb1[18].xyzx, r2.xyzx
add r2.xyz, r2.xyzx, cb1[19].xyzx
mad r0.w, cb0[24].x, l(0.500000), v0.w
div r2.w, r0.w, r0.z
mad r3.xyz, r2.wwww, r1.xyzx, r2.xyzx
dp3 r2.w, r3.xyzx, r3.xyzx
dp3 r3.x, r1.xyzx, r3.xyzx
lt r3.y, l(0.000000), r3.x
mul r3.x, r3.x, r3.x
mul r0.y, r0.y, r2.w
ge r0.y, r3.x, r0.y
and r0.y, r0.y, r3.y
dp3 r2.w, r2.xyzx, r2.xyzx
dp3 r2.x, r1.xyzx, r2.xyzx
lt r2.y, l(0.000000), -r2.x
mul r2.z, r2.x, r2.x
mul r3.x, r0.z, r0.z
mul r3.x, r2.w, r3.x
ge r2.z, r2.z, r3.x
and r2.y, r2.z, r2.y
mul r2.z, r0.w, r0.w
ge r2.z, r2.z, r2.w
movc r2.y, r2.y, r2.z, l(-1)
and r0.y, r0.y, r2.y
if_nz r0.y
  ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.xyzw, r0.x, l(0), t6.xyzw
  add r0.y, r0.w, r2.x
  add r0.w, -r0.w, r2.x
  lt r2.x, r3.x, r0.y
  lt r2.y, r0.w, r3.y
  and r2.x, r2.y, r2.x
  if_nz r2.x
    imul null, r2.x, v1.x, l(10)
    ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r2.xyz, r2.x, l(0), t3.xyzx
    imad r2.w, v1.x, l(10), l(1)
    ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r4.xyzw, r2.w, l(0), t3.xyzw
    imad r5.xyzw, v1.xxxx, l(10, 10, 10, 10), l(2, 3, 4, 9)
    ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r6.xyzw, r5.x, l(0), t3.xyzw
    ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r7.xyzw, r5.y, l(0), t3.xyzw
    ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r5.xyz, r5.z, l(0), t3.xyzx
    ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r8.xyzw, r5.w, l(0), t3.xyzw
    min r2.w, r8.z, r8.y
    min r2.w, r2.w, r8.x
    add r2.xyz, -r2.xyzx, cb1[64].xyzx
    mad r9.xyz, r2.xyzx, l(2097152.000000, 2097152.000000, 2097152.000000, 0.000000), -cb1[76].xyzx
    mov r9.w, l(1.000000)
	
	add r26.x, r9.z, -r25.y
	//mad r9.x, -r25.x, r26.x, r9.x
	
    dp4 r4.w, r9.xyzw, r4.xyzw
    dp4 r6.w, r9.xyzw, r6.xyzw
    dp4 r7.w, r9.xyzw, r7.xyzw
    add r2.x, r3.y, r3.x
    mul r2.x, r2.x, l(0.500000)
	
	mov r32.z, r2.x
	
    mul r2.xyz, r1.xyzx, r2.xxxx
	
	add r26.x, r32.z, -r25.y
	//mad r2.x, -r25.x, r26.x, r2.x
	
    mul r8.xyz, r2.yyyy, cb1[21].xyzx
    mad r8.xyz, r2.xxxx, cb1[20].xyzx, r8.xyzx
    mad r2.xyz, r2.zzzz, cb1[22].xyzx, r8.xyzx
    add r9.xyz, r2.xyzx, cb1[23].xyzx
    add r2.x, -r3.x, r3.y
    mul r2.x, r2.x, l(0.500000)
    mul r2.y, r0.z, r3.y
    div r2.y, r2.y, r1.w
    mul r2.y, r2.y, r2.y
    mad r2.x, r2.x, r2.x, r2.y
    sqrt r2.x, r2.x
    mov r9.w, l(1.000000)
	
	add r26.x, r9.z, -r25.y
	//mad r9.x, -r25.x, r26.x, r9.x
	
    dp4 r4.x, r9.xyzw, r4.xyzw
    dp4 r4.y, r9.xyzw, r6.xyzw
    dp4 r4.z, r9.xyzw, r7.xyzw
    lt r6.xyz, r4.xyzx, -r5.xyzx
    add r7.xyz, r5.xyzx, r4.xyzx
    mov r7.xyz, |r7.xyzx|
    and r6.xyz, r6.xyzx, r7.xyzx
    lt r7.xyz, r5.xyzx, r4.xyzx
    add r8.xyz, -r5.xyzx, r4.xyzx
    mov r8.xyz, |r8.xyzx|
    and r7.xyz, r7.xyzx, r8.xyzx
    dp3 r2.y, r6.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
    dp3 r2.z, r7.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
    add r2.y, r2.z, r2.y
    mul r2.y, r2.w, r2.y
    add r2.x, r2.x, cb0[24].x
    lt r2.y, r2.y, r2.x
    if_nz r2.y
      max r6.xyz, -r5.xyzx, r4.xyzx
      min r5.xyz, r5.xyzx, r6.xyzx
      add r4.xyz, r4.xyzx, -r5.xyzx
      dp3 r2.y, r4.xyzx, r4.xyzx
      sqrt r2.y, r2.y
      imul null, r2.z, r8.w, l(9)
      ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.x, r2.z, l(0), t2.xxxx
      ushr r3.x, r3.x, l(30)
      iadd r3.y, cb0[19].y, cb0[19].x
      mov r4.xy, l(0,0,0,0)
      loop
        uge r4.z, r4.y, r3.x
        breakc_nz r4.z
        imad r4.z, r4.y, l(3), r2.z
        ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r6.xy, r4.z, l(0), t2.xyxx
        iadd r4.zw, r4.zzzz, l(0, 0, 1, 2)
        ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r7.xyzw, r4.z, l(0), t2.xyzw
        ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r8.xyzw, r4.w, l(0), t2.xyzw
        and r4.z, r6.x, l(1023)
        ubfe r4.w, l(10), l(10), r6.x
        mad r6.xzw, r5.xxyz, r7.xxyz, r8.xxyz
        ftoi r7.xyz, r6.xzwx
        imad r4.w, r7.z, r4.w, r7.y
        imad r4.z, r4.w, r4.z, r7.x
        iadd r4.z, r4.z, r6.y
        ishl r4.z, r4.z, l(2)
        ld_raw_indexable(raw_buffer)(mixed,mixed,mixed,mixed) r4.z, r4.z, t0.xxxx
        ine r4.w, r4.z, l(-1)
        add r5.w, r7.w, r8.w
        if_nz r4.w
          round_z r7.xyz, r6.xzwx
          add r6.xyz, r6.xzwx, -r7.xyzx
          and r4.w, r4.z, cb0[18].x
          ushr r6.w, r4.z, cb0[19].x
          and r6.w, r6.w, cb0[18].y
          ushr r4.z, r4.z, r3.y
          utof r7.y, r6.w
          utof r7.xz, r4.wwzw
          mul r6.xyz, r6.xyzx, cb0[23].xyzx
          mad r6.xyz, r7.xyzx, cb0[22].xyzx, r6.xyzx
          add r6.xyz, r6.xyzx, cb0[21].xyzx
          sample_l_indexable(texture3d)(float,float,float,float) r4.z, r6.xyzx, t1.yzxw, s0, l(0.000000)
          mad r4.z, r4.z, r7.w, r8.w
        else
          mov r4.z, r5.w
        endif
        mul r4.w, r5.w, l(0.250000)
        lt r4.w, r4.w, |r4.z|
        if_nz r4.w
          mov r4.x, r4.z
          break
        endif
        iadd r4.y, r4.y, l(1)
        mov r4.xy, r4.zyzz
      endloop
      add r2.y, r2.y, r4.x
      mul r2.y, r2.w, r2.y
      lt r2.x, r2.y, r2.x
      if_nz r2.x
        mov r2.y, l(-1)
      endif
    else
      mov r2.x, l(0)
    endif
  else
    mov r2.x, l(0)
  endif
  and r2.x, r2.y, r2.x
  if_z r2.x
    lt r0.y, r3.z, r0.y
    lt r0.w, r0.w, r3.w
    and r0.y, r0.w, r0.y
    if_nz r0.y
      imul null, r0.y, v1.x, l(10)
      ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r2.xyz, r0.y, l(0), t3.xyzx
      imad r0.y, v1.x, l(10), l(1)
      ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r4.xyzw, r0.y, l(0), t3.xyzw
      imad r5.xyzw, v1.xxxx, l(10, 10, 10, 10), l(2, 3, 4, 9)
      ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r6.xyzw, r5.x, l(0), t3.xyzw
      ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r7.xyzw, r5.y, l(0), t3.xyzw
      ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r5.xyz, r5.z, l(0), t3.xyzx
      ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r8.xyzw, r5.w, l(0), t3.xyzw
      min r0.y, r8.z, r8.y
      min r0.y, r0.y, r8.x
      add r2.xyz, -r2.xyzx, cb1[64].xyzx
      mad r2.xyz, r2.xyzx, l(2097152.000000, 2097152.000000, 2097152.000000, 0.000000), -cb1[76].xyzx
      mov r2.w, l(1.000000)
	  
	  add r26.x, r2.z, -r25.y
	  //mad r2.x, -r25.x, r26.x, r2.x
	  
      dp4 r4.w, r2.xyzw, r4.xyzw
      dp4 r6.w, r2.xyzw, r6.xyzw
      dp4 r7.w, r2.xyzw, r7.xyzw
      add r0.w, r3.w, r3.z
      mul r0.w, r0.w, l(0.500000)
	  
	  mov r32.w, r0.x
	  
      mul r1.xyz, r0.wwww, r1.xyzx
	  
	  add r26.x, r32.w, -r25.y
	  //mad r1.x, -r25.x, r26.x, r1.x
	  
      mul r2.xyz, r1.yyyy, cb1[21].xyzx
      mad r2.xyz, r1.xxxx, cb1[20].xyzx, r2.xyzx
      mad r1.xyz, r1.zzzz, cb1[22].xyzx, r2.xyzx
      add r2.xyz, r1.xyzx, cb1[23].xyzx
      add r0.w, -r3.z, r3.w
      mul r0.w, r0.w, l(0.500000)
      mul r0.z, r0.z, r3.w
      div r0.z, r0.z, r1.w
      mul r0.z, r0.z, r0.z
      mad r0.z, r0.w, r0.w, r0.z
      sqrt r0.z, r0.z
      mov r2.w, l(1.000000)
	  
	  add r26.x, r2.z, -r25.y
	  //mad r2.x, -r25.x, r26.x, r2.x
	  
      dp4 r1.x, r2.xyzw, r4.xyzw
      dp4 r1.y, r2.xyzw, r6.xyzw
      dp4 r1.z, r2.xyzw, r7.xyzw
      lt r2.xyz, r1.xyzx, -r5.xyzx
      add r3.xyz, r5.xyzx, r1.xyzx
      mov r3.xyz, |r3.xyzx|
      and r2.xyz, r2.xyzx, r3.xyzx
      lt r3.xyz, r5.xyzx, r1.xyzx
      add r4.xyz, -r5.xyzx, r1.xyzx
      mov r4.xyz, |r4.xyzx|
      and r3.xyz, r3.xyzx, r4.xyzx
      dp3 r0.w, r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
      dp3 r1.w, r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
      add r0.w, r0.w, r1.w
      mul r0.w, r0.y, r0.w
      add r0.z, r0.z, cb0[24].x
      lt r0.w, r0.w, r0.z
      if_nz r0.w
        max r2.xyz, -r5.xyzx, r1.xyzx
        min r2.xyz, r5.xyzx, r2.xyzx
        add r1.xyz, r1.xyzx, -r2.xyzx
        dp3 r0.w, r1.xyzx, r1.xyzx
        sqrt r0.w, r0.w
        imul null, r1.x, r8.w, l(9)
        ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r1.y, r1.x, l(0), t2.xxxx
        ushr r1.y, r1.y, l(30)
        iadd r1.z, cb0[19].y, cb0[19].x
        mov r1.w, l(0)
        mov r2.w, l(0)
        loop
          uge r3.x, r2.w, r1.y
          breakc_nz r3.x
          imad r3.x, r2.w, l(3), r1.x
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.yz, r3.x, l(0), t2.xxyx
          iadd r3.xw, r3.xxxx, l(1, 0, 0, 2)
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r4.xyzw, r3.x, l(0), t2.xyzw
          ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r5.xyzw, r3.w, l(0), t2.xyzw
          and r3.x, r3.y, l(1023)
          ubfe r3.y, l(10), l(10), r3.y
          mad r4.xyz, r2.xyzx, r4.xyzx, r5.xyzx
          ftoi r5.xyz, r4.xyzx
          imad r3.y, r5.z, r3.y, r5.y
          imad r3.x, r3.y, r3.x, r5.x
          iadd r3.x, r3.x, r3.z
          ishl r3.x, r3.x, l(2)
          ld_raw_indexable(raw_buffer)(mixed,mixed,mixed,mixed) r3.x, r3.x, t0.xxxx
          ine r3.y, r3.x, l(-1)
          add r3.z, r4.w, r5.w
          if_nz r3.y
            round_z r5.xyz, r4.xyzx
            add r4.xyz, r4.xyzx, -r5.xyzx
            and r3.y, r3.x, cb0[18].x
            ushr r3.w, r3.x, cb0[19].x
            and r3.w, r3.w, cb0[18].y
            ushr r3.x, r3.x, r1.z
            utof r5.xyz, r3.ywxy
            mul r3.xyw, r4.xyxz, cb0[23].xyxz
            mad r3.xyw, r5.xyxz, cb0[22].xyxz, r3.xyxw
            add r3.xyw, r3.xyxw, cb0[21].xyxz
            sample_l_indexable(texture3d)(float,float,float,float) r3.x, r3.xywx, t1.xyzw, s0, l(0.000000)
            mad r3.x, r3.x, r4.w, r5.w
          else
            mov r3.x, r3.z
          endif
          mul r3.y, r3.z, l(0.250000)
          lt r3.y, r3.y, |r3.x|
          if_nz r3.y
            mov r1.w, r3.x
            break
          endif
          iadd r2.w, r2.w, l(1)
          mov r1.w, r3.x
        endloop
        add r0.w, r0.w, r1.w
        mul r0.y, r0.y, r0.w
        lt r0.y, r0.y, r0.z
        if_nz r0.y
          mov r0.z, l(-1)
        endif
      else
        mov r0.y, l(0)
      endif
    else
      mov r0.y, l(0)
    endif
    and r0.y, r0.z, r0.y
  else
    mov r0.y, l(-1)
  endif
  if_nz r0.y
    mov r1.x, v1.y
    mov r1.y, l(0)
    imm_atomic_iadd r1.x, u1, r1.xyxx, l(1)
    ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r0.y, v1.y, l(0), t4.xxxx
    iadd r0.y, r1.x, r0.y
    ishl r0.z, r0.y, l(1)
    store_uav_typed u2.xyzw, r0.zzzz, r0.xxxx
    bfi r0.x, l(31), l(1), r0.y, l(1)
    store_uav_typed u2.xyzw, r0.xxxx, v1.xxxx
  endif
endif
mov o0.xyzw, l(0,0,0,0)
ret
// Approximately 0 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with geo-11 v0.6.198 on Thu Oct 10 00:19:48 2024
// struct u1_t {
//   float val[1];
// };
// RWStructuredBuffer<u1_t> u1 : register(u1);
//
// struct t6_t {
//   float val[4];
// };
// StructuredBuffer<t6_t> t6 : register(t6);
//
// struct t5_t {
//   float val[4];
// };
// StructuredBuffer<t5_t> t5 : register(t5);
//
// struct t4_t {
//   float val[1];
// };
// StructuredBuffer<t4_t> t4 : register(t4);
//
// struct t3_t {
//   float val[4];
// };
// StructuredBuffer<t3_t> t3 : register(t3);
//
// struct t2_t {
//   float val[4];
// };
// StructuredBuffer<t2_t> t2 : register(t2);
//
// Texture3D<float4> t1 : register(t1);
//
// SamplerState s0_s : register(s0);
//
// cbuffer cb1 : register(b1)
// {
//   float4 cb1[77];
// }
//
// cbuffer cb0 : register(b0)
// {
//   float4 cb0[27];
// }
//
//
//
//
// // 3Dmigoto declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Texture2D<float4> StereoParams : register(t125);
//
//
// void main(
//   nointerpolation float4 v0 : TEXCOORD0,
//   nointerpolation uint2 v1 : TEXCOORD1,
//   float4 v2 : SV_POSITION0,
//   out float4 o0 : SV_Target0)
// {
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_resource_raw t0
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_uav_typed_buffer (uint,uint,uint,uint) u2
//   float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
//   r0.xy = (uint2)v2.yx;
//   r0.xy = (uint2)r0.xy;
//   r0.x = r0.x * cb0[26].x + r0.y;
//   r0.x = (uint)r0.x;
//   r1.x = t5[r0.x].val[0/4];
//   r1.y = t5[r0.x].val[0/4+1];
//   r1.z = t5[r0.x].val[0/4+2];
//   r1.w = t5[r0.x].val[0/4+3];
//   r0.y = r1.w * r1.w;
//   r0.z = -r1.w * r1.w + 1;
//   r0.z = sqrt(r0.z);
//   r2.xyz = cb1[17].xyz * v0.yyy;
//   r2.xyz = v0.xxx * cb1[16].xyz + r2.xyz;
//   r2.xyz = v0.zzz * cb1[18].xyz + r2.xyz;
//   r2.xyz = cb1[19].xyz + r2.xyz;
//   r0.w = cb0[24].x * 0.5 + v0.w;
//   r2.w = r0.w / r0.z;
//   r3.xyz = r2.www * r1.xyz + r2.xyz;
//   r2.w = dot(r3.xyz, r3.xyz);
//   r3.x = dot(r1.xyz, r3.xyz);
//   r3.y = cmp(0 < r3.x);
//   r3.x = r3.x * r3.x;
//   r0.y = r2.w * r0.y;
//   r0.y = cmp(r3.x >= r0.y);
//   r0.y = r0.y ? r3.y : 0;
//   r2.w = dot(r2.xyz, r2.xyz);
//   r2.x = dot(r1.xyz, r2.xyz);
//   r2.y = cmp(0 < -r2.x);
//   r2.z = r2.x * r2.x;
//   r3.x = r0.z * r0.z;
//   r3.x = r3.x * r2.w;
//   r2.z = cmp(r2.z >= r3.x);
//   r2.y = r2.z ? r2.y : 0;
//   r2.z = r0.w * r0.w;
//   r2.z = cmp(r2.z >= r2.w);
//   r2.y = r2.y ? r2.z : -1;
//   r0.y = r0.y ? r2.y : 0;
//   if (r0.y != 0) {
//     r3.x = t6[r0.x].val[0/4];
//     r3.y = t6[r0.x].val[0/4+1];
//     r3.z = t6[r0.x].val[0/4+2];
//     r3.w = t6[r0.x].val[0/4+3];
//     r0.y = r2.x + r0.w;
//     r0.w = r2.x + -r0.w;
//     r2.x = cmp(r3.x < r0.y);
//     r2.y = cmp(r0.w < r3.y);
//     r2.x = r2.y ? r2.x : 0;
//     if (r2.x != 0) {
//       r2.x = (int)v1.x * 10;
//       r2.x = t3[r2.x].val[0/4];
//       r2.y = t3[r2.x].val[0/4+1];
//       r2.z = t3[r2.x].val[0/4+2];
//       r2.w = mad((int)v1.x, 10, 1);
//       r4.x = t3[r2.w].val[0/4];
//       r4.y = t3[r2.w].val[0/4+1];
//       r4.z = t3[r2.w].val[0/4+2];
//       r4.w = t3[r2.w].val[0/4+3];
//       r5.xyzw = mad((int4)v1.xxxx, int4(10,10,10,10), int4(2,3,4,9));
//       r6.x = t3[r5.x].val[0/4];
//       r6.y = t3[r5.x].val[0/4+1];
//       r6.z = t3[r5.x].val[0/4+2];
//       r6.w = t3[r5.x].val[0/4+3];
//       r7.x = t3[r5.y].val[0/4];
//       r7.y = t3[r5.y].val[0/4+1];
//       r7.z = t3[r5.y].val[0/4+2];
//       r7.w = t3[r5.y].val[0/4+3];
//       r5.x = t3[r5.z].val[0/4];
//       r5.y = t3[r5.z].val[0/4+1];
//       r5.z = t3[r5.z].val[0/4+2];
//       r8.x = t3[r5.w].val[0/4];
//       r8.y = t3[r5.w].val[0/4+1];
//       r8.z = t3[r5.w].val[0/4+2];
//       r8.w = t3[r5.w].val[0/4+3];
//       r2.w = min(r8.y, r8.z);
//       r2.w = min(r8.x, r2.w);
//       r2.xyz = cb1[64].xyz + -r2.xyz;
//       r9.xyz = r2.xyz * float3(2097152,2097152,2097152) + -cb1[76].xyz;
//       r9.w = 1;
//       r4.w = dot(r9.xyzw, r4.xyzw);
//       r6.w = dot(r9.xyzw, r6.xyzw);
//       r7.w = dot(r9.xyzw, r7.xyzw);
//       r2.x = r3.x + r3.y;
//       r2.x = 0.5 * r2.x;
//       r2.xyz = r2.xxx * r1.xyz;
//       r8.xyz = cb1[21].xyz * r2.yyy;
//       r8.xyz = r2.xxx * cb1[20].xyz + r8.xyz;
//       r2.xyz = r2.zzz * cb1[22].xyz + r8.xyz;
//       r9.xyz = cb1[23].xyz + r2.xyz;
//       r2.x = r3.y + -r3.x;
//       r2.x = 0.5 * r2.x;
//       r2.y = r3.y * r0.z;
//       r2.y = r2.y / r1.w;
//       r2.y = r2.y * r2.y;
//       r2.x = r2.x * r2.x + r2.y;
//       r2.x = sqrt(r2.x);
//       r9.w = 1;
//       r4.x = dot(r9.xyzw, r4.xyzw);
//       r4.y = dot(r9.xyzw, r6.xyzw);
//       r4.z = dot(r9.xyzw, r7.xyzw);
//       r6.xyz = cmp(r4.xyz < -r5.xyz);
//       r7.xyz = r4.xyz + r5.xyz;
//       r7.xyz = abs(r7.xyz);
//       r6.xyz = r6.xyz ? r7.xyz : 0;
//       r7.xyz = cmp(r5.xyz < r4.xyz);
//       r8.xyz = r4.xyz + -r5.xyz;
//       r8.xyz = abs(r8.xyz);
//       r7.xyz = r7.xyz ? r8.xyz : 0;
//       r2.y = dot(r6.xyz, float3(1,1,1));
//       r2.z = dot(r7.xyz, float3(1,1,1));
//       r2.y = r2.y + r2.z;
//       r2.y = r2.y * r2.w;
//       r2.x = cb0[24].x + r2.x;
//       r2.y = cmp(r2.y < r2.x);
//       if (r2.y != 0) {
//         r6.xyz = max(r4.xyz, -r5.xyz);
//         r5.xyz = min(r6.xyz, r5.xyz);
//         r4.xyz = -r5.xyz + r4.xyz;
//         r2.y = dot(r4.xyz, r4.xyz);
//         r2.y = sqrt(r2.y);
//         r2.z = (int)r8.w * 9;
//         r3.x = t2[r2.z].val[0/4];
//         r3.x = (uint)r3.x >> 30;
//         r3.y = asint(cb0[19].y) + asint(cb0[19].x);
//         r4.xy = float2(0,0);
//         while (true) {
//           r4.z = cmp((uint)r4.y >= (uint)r3.x);
//           if (r4.z != 0) break;
//           r4.z = mad((int)r4.y, 3, (int)r2.z);
//           r6.x = t2[r4.z].val[0/4];
//           r6.y = t2[r4.z].val[0/4+1];
//           r4.zw = (int2)r4.zz + int2(1,2);
//           r7.x = t2[r4.z].val[0/4];
//           r7.y = t2[r4.z].val[0/4+1];
//           r7.z = t2[r4.z].val[0/4+2];
//           r7.w = t2[r4.z].val[0/4+3];
//           r8.x = t2[r4.w].val[0/4];
//           r8.y = t2[r4.w].val[0/4+1];
//           r8.z = t2[r4.w].val[0/4+2];
//           r8.w = t2[r4.w].val[0/4+3];
//           r4.z = (int)r6.x & 1023;
//           if (10 == 0) r4.w = 0; else if (10+10 < 32) {           r4.w = (uint)r6.x << (32-(10 + 10)); r4.w = (uint)r4.w >> (32-10);          } else r4.w = (uint)r6.x >> 10;
//           r6.xzw = r5.xyz * r7.xyz + r8.xyz;
//           r7.xyz = (int3)r6.xzw;
//           r4.w = mad((int)r7.z, (int)r4.w, (int)r7.y);
//           r4.z = mad((int)r4.w, (int)r4.z, (int)r7.x);
//           r4.z = (int)r4.z + (int)r6.y;
//           r4.z = (uint)r4.z << 2;
//         // No code for instruction (needs manual fix):
//                 ld_raw_indexable(raw_buffer)(mixed,mixed,mixed,mixed) r4.z, r4.z, t0.xxxx
//           r4.w = cmp((int)r4.z != -1);
//           r5.w = r8.w + r7.w;
//           if (r4.w != 0) {
//             r7.xyz = trunc(r6.xzw);
//             r6.xyz = -r7.xyz + r6.xzw;
//             r4.w = (int)r4.z & asint(cb0[18].x);
//             r6.w = (uint)r4.z >> asuint(cb0[19].x);
//             r6.w = (int)r6.w & asint(cb0[18].y);
//             r4.z = (uint)r4.z >> (uint)r3.y;
//             r7.y = (uint)r6.w;
//             r7.xz = (uint2)r4.wz;
//             r6.xyz = cb0[23].xyz * r6.xyz;
//             r6.xyz = r7.xyz * cb0[22].xyz + r6.xyz;
//             r6.xyz = cb0[21].xyz + r6.xyz;
//             r4.z = t1.SampleLevel(s0_s, r6.xyz, 0).x;
//             r4.z = r4.z * r7.w + r8.w;
//           } else {
//             r4.z = r5.w;
//           }
//           r4.w = 0.25 * r5.w;
//           r4.w = cmp(r4.w < abs(r4.z));
//           if (r4.w != 0) {
//             r4.x = r4.z;
//             break;
//           }
//           r4.y = (int)r4.y + 1;
//           r4.xy = r4.zy;
//         }
//         r2.y = r4.x + r2.y;
//         r2.y = r2.y * r2.w;
//         r2.x = cmp(r2.y < r2.x);
//         if (r2.x != 0) {
//           r2.y = -1;
//         }
//       } else {
//         r2.x = 0;
//       }
//     } else {
//       r2.x = 0;
//     }
//     r2.x = (int)r2.y & (int)r2.x;
//     if (r2.x == 0) {
//       r0.y = cmp(r3.z < r0.y);
//       r0.w = cmp(r0.w < r3.w);
//       r0.y = r0.w ? r0.y : 0;
//       if (r0.y != 0) {
//         r0.y = (int)v1.x * 10;
//         r2.x = t3[r0.y].val[0/4];
//         r2.y = t3[r0.y].val[0/4+1];
//         r2.z = t3[r0.y].val[0/4+2];
//         r0.y = mad((int)v1.x, 10, 1);
//         r4.x = t3[r0.y].val[0/4];
//         r4.y = t3[r0.y].val[0/4+1];
//         r4.z = t3[r0.y].val[0/4+2];
//         r4.w = t3[r0.y].val[0/4+3];
//         r5.xyzw = mad((int4)v1.xxxx, int4(10,10,10,10), int4(2,3,4,9));
//         r6.x = t3[r5.x].val[0/4];
//         r6.y = t3[r5.x].val[0/4+1];
//         r6.z = t3[r5.x].val[0/4+2];
//         r6.w = t3[r5.x].val[0/4+3];
//         r7.x = t3[r5.y].val[0/4];
//         r7.y = t3[r5.y].val[0/4+1];
//         r7.z = t3[r5.y].val[0/4+2];
//         r7.w = t3[r5.y].val[0/4+3];
//         r5.x = t3[r5.z].val[0/4];
//         r5.y = t3[r5.z].val[0/4+1];
//         r5.z = t3[r5.z].val[0/4+2];
//         r8.x = t3[r5.w].val[0/4];
//         r8.y = t3[r5.w].val[0/4+1];
//         r8.z = t3[r5.w].val[0/4+2];
//         r8.w = t3[r5.w].val[0/4+3];
//         r0.y = min(r8.y, r8.z);
//         r0.y = min(r8.x, r0.y);
//         r2.xyz = cb1[64].xyz + -r2.xyz;
//         r2.xyz = r2.xyz * float3(2097152,2097152,2097152) + -cb1[76].xyz;
//         r2.w = 1;
//         r4.w = dot(r2.xyzw, r4.xyzw);
//         r6.w = dot(r2.xyzw, r6.xyzw);
//         r7.w = dot(r2.xyzw, r7.xyzw);
//         r0.w = r3.z + r3.w;
//         r0.w = 0.5 * r0.w;
//         r1.xyz = r1.xyz * r0.www;
//         r2.xyz = cb1[21].xyz * r1.yyy;
//         r2.xyz = r1.xxx * cb1[20].xyz + r2.xyz;
//         r1.xyz = r1.zzz * cb1[22].xyz + r2.xyz;
//         r2.xyz = cb1[23].xyz + r1.xyz;
//         r0.w = r3.w + -r3.z;
//         r0.w = 0.5 * r0.w;
//         r0.z = r3.w * r0.z;
//         r0.z = r0.z / r1.w;
//         r0.z = r0.z * r0.z;
//         r0.z = r0.w * r0.w + r0.z;
//         r0.z = sqrt(r0.z);
//         r2.w = 1;
//         r1.x = dot(r2.xyzw, r4.xyzw);
//         r1.y = dot(r2.xyzw, r6.xyzw);
//         r1.z = dot(r2.xyzw, r7.xyzw);
//         r2.xyz = cmp(r1.xyz < -r5.xyz);
//         r3.xyz = r1.xyz + r5.xyz;
//         r3.xyz = abs(r3.xyz);
//         r2.xyz = r2.xyz ? r3.xyz : 0;
//         r3.xyz = cmp(r5.xyz < r1.xyz);
//         r4.xyz = r1.xyz + -r5.xyz;
//         r4.xyz = abs(r4.xyz);
//         r3.xyz = r3.xyz ? r4.xyz : 0;
//         r0.w = dot(r2.xyz, float3(1,1,1));
//         r1.w = dot(r3.xyz, float3(1,1,1));
//         r0.w = r1.w + r0.w;
//         r0.w = r0.w * r0.y;
//         r0.z = cb0[24].x + r0.z;
//         r0.w = cmp(r0.w < r0.z);
//         if (r0.w != 0) {
//           r2.xyz = max(r1.xyz, -r5.xyz);
//           r2.xyz = min(r2.xyz, r5.xyz);
//           r1.xyz = -r2.xyz + r1.xyz;
//           r0.w = dot(r1.xyz, r1.xyz);
//           r0.w = sqrt(r0.w);
//           r1.x = (int)r8.w * 9;
//           r1.y = t2[r1.x].val[0/4];
//           r1.y = (uint)r1.y >> 30;
//           r1.z = asint(cb0[19].y) + asint(cb0[19].x);
//           r1.w = 0;
//           r2.w = 0;
//           while (true) {
//             r3.x = cmp((uint)r2.w >= (uint)r1.y);
//             if (r3.x != 0) break;
//             r3.x = mad((int)r2.w, 3, (int)r1.x);
//             r3.y = t2[r3.x].val[0/4];
//             r3.z = t2[r3.x].val[0/4+1];
//             r3.xw = (int2)r3.xx + int2(1,2);
//             r4.x = t2[r3.x].val[0/4];
//             r4.y = t2[r3.x].val[0/4+1];
//             r4.z = t2[r3.x].val[0/4+2];
//             r4.w = t2[r3.x].val[0/4+3];
//             r5.x = t2[r3.w].val[0/4];
//             r5.y = t2[r3.w].val[0/4+1];
//             r5.z = t2[r3.w].val[0/4+2];
//             r5.w = t2[r3.w].val[0/4+3];
//             r3.x = r3.y ? 0.000000 : 0;
//             if (10 == 0) r3.y = 0; else if (10+10 < 32) {             r3.y = (uint)r3.y << (32-(10 + 10)); r3.y = (uint)r3.y >> (32-10);            } else r3.y = (uint)r3.y >> 10;
//             r4.xyz = r2.xyz * r4.xyz + r5.xyz;
//             r5.xyz = (int3)r4.xyz;
//             r3.y = mad((int)r5.z, (int)r3.y, (int)r5.y);
//             r3.x = mad((int)r3.y, (int)r3.x, (int)r5.x);
//             r3.x = (int)r3.x + (int)r3.z;
//             r3.x = (uint)r3.x << 2;
//           // No code for instruction (needs manual fix):
//                     ld_raw_indexable(raw_buffer)(mixed,mixed,mixed,mixed) r3.x, r3.x, t0.xxxx
//             r3.y = cmp((int)r3.x != -1);
//             r3.z = r5.w + r4.w;
//             if (r3.y != 0) {
//               r5.xyz = trunc(r4.xyz);
//               r4.xyz = -r5.xyz + r4.xyz;
//               r3.y = (int)r3.x & asint(cb0[18].x);
//               r3.w = (uint)r3.x >> asuint(cb0[19].x);
//               r3.w = (int)r3.w & asint(cb0[18].y);
//               r3.x = (uint)r3.x >> (uint)r1.z;
//               r5.xyz = (uint3)r3.ywx;
//               r3.xyw = cb0[23].xyz * r4.xyz;
//               r3.xyw = r5.xyz * cb0[22].xyz + r3.xyw;
//               r3.xyw = cb0[21].xyz + r3.xyw;
//               r3.x = t1.SampleLevel(s0_s, r3.xyw, 0).x;
//               r3.x = r3.x * r4.w + r5.w;
//             } else {
//               r3.x = r3.z;
//             }
//             r3.y = 0.25 * r3.z;
//             r3.y = cmp(r3.y < abs(r3.x));
//             if (r3.y != 0) {
//               r1.w = r3.x;
//               break;
//             }
//             r2.w = (int)r2.w + 1;
//             r1.w = r3.x;
//           }
//           r0.w = r1.w + r0.w;
//           r0.y = r0.w * r0.y;
//           r0.y = cmp(r0.y < r0.z);
//           if (r0.y != 0) {
//             r0.z = -1;
//           }
//         } else {
//           r0.y = 0;
//         }
//       } else {
//         r0.y = 0;
//       }
//       r0.y = (int)r0.z & (int)r0.y;
//     } else {
//       r0.y = -1;
//     }
//     if (r0.y != 0) {
//       r1.x = v1.y;
//       r1.y = 0;
//       // Needs manual fix for instruction:
//         imm_atomic_iadd r1.x, u1, r1.xyxx, l(1)
//       InterlockedAdd(dest, imm_value, orig_value);
//       r0.y = t4[v1.y].val[0/4];
//       r0.y = (int)r1.x + (int)r0.y;
//       r0.z = (uint)r0.y << 1;
//     // No code for instruction (needs manual fix):
//         store_uav_typed u2.xyzw, r0.zzzz, r0.xxxx
//       bitmask.x = ((~(-1 << 31)) << 1) & 0xffffffff;  r0.x = (((uint)r0.y << 1) & bitmask.x) | ((uint)1 & ~bitmask.x);
//     // No code for instruction (needs manual fix):
//         store_uav_typed u2.xyzw, r0.xxxx, v1.xxxx
//     }
//   }
//   o0.xyzw = float4(0,0,0,0);
//   return;
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// E:\SteamLibrary\steamapps\common\DRAGON BALL Sparking! ZERO\SparkingZERO\Binaries\Win64\ShaderFixes\aaa5db588f9dde12-ps_replace.txt(217,34-43): error X3004: undeclared identifier 'raw_buffer'
// E:\SteamLibrary\steamapps\common\DRAGON BALL Sparking! ZERO\SparkingZERO\Binaries\Win64\ShaderFixes\aaa5db588f9dde12-ps_replace.txt(217,17-44): error X3004: undeclared identifier 'ld_raw_indexable'
/////////////////////////////////////////////////////////////////////////////
