// AUTOMATICALLY CONVERTED FROM SHADER FIXES 
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v0.6.198 on Sat Nov 30 12:58:10 2024
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// ATTRIBUTE                0   xyzw        0     NONE   float   xyz
// ATTRIBUTE               13   x           1     NONE    uint   x
// SV_InstanceID            0   x           2   INSTID    uint   x
// SV_VertexID              0   x           3   VERTID    uint   x
//
//
// 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
// TEXCOORD                 7   xyzw        3     NONE   float   xyzw
// SV_POSITION              0   xyzw        4      POS   float   xyzw
// P                        0   x           5  RTINDEX    uint   x
//
vs_5_0
dcl_output_siv o5.x, rendertarget_array_index
dcl_globalFlags refactoringAllowed
dcl_constantbuffer CB0[114], immediateIndexed
dcl_constantbuffer CB1[284], immediateIndexed
dcl_constantbuffer CB2[1], immediateIndexed
dcl_sampler s0, mode_default
dcl_resource_structured t0, 16
dcl_resource_structured t1, 16
dcl_resource_texture3d (float,float,float,float) t2
dcl_resource_structured t3, 4
dcl_resource_buffer (float,float,float,float) t4
dcl_input v0.xyz
dcl_input v1.x
dcl_input_sgv v2.x, instance_id
dcl_input_sgv v3.x, vertex_id
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.x
dcl_output o3.xyzw
dcl_output_siv o4.xyzw, position
dcl_temps 37
dcl_resource_buffer (float,float,float,float) t125
ld_indexable(buffer)(float,float,float,float) r36.xyzw, l(0, 0, 0, 0), t125.xyzw
mov o5.x, r36.z
ld_indexable(buffer)(float,float,float,float) r25.xyzw, l(0, 0, 0, 0), t125.xyzw
and [precise(x)] r0.x, v1.x, l(0x80000000)
if_nz r0.x
  and [precise(x)] r0.x, v1.x, l(0x7fffffff)
  imul [precise(x)] null, r0.x, r0.x, l(42)
  ld_structured_indexable [precise(x)](structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r0.x, r0.x, l(4), t0.xxxx
  iadd [precise(x)] r0.x, r0.x, v2.x
else
  iadd [precise(y)] r0.y, v1.x, v2.x
  ld_structured_indexable [precise(y)](structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r0.y, r0.y, l(0), t3.xxxx
  and [precise(x)] r0.x, r0.y, l(0x0fffffff)
endif
ld_structured_indexable [precise(y)](structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r0.y, r0.x, l(0), t1.xxxx
and [precise(z)] r0.z, r0.y, l(0x000fffff)
ine [precise(w)] r0.w, r0.z, l(0x000fffff)
if_nz r0.w
  imad [precise(w)] r0.w, r0.z, l(42), l(1)
  ld_structured_indexable [precise(xyz)](structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r1.xyz, r0.w, l(0), t0.xyzx
  iadd [precise(w)] r0.w, r0.x, cb1[283].x
  ld_structured_indexable [precise](structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r2.xyzw, r0.w, l(0), t1.xyzw
  ishl [precise(w)] r0.w, cb1[283].x, l(1)
  iadd [precise(x)] r0.x, r0.x, r0.w
  ld_structured_indexable [precise(xyz)](structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.xyz, r0.x, l(0), t1.xyzx
  ushr [precise(xyz)] r4.xyz, r2.xzwx, l(16, 16, 16, 0)
  and [precise(xyz)] r5.xyz, r2.xyyx, l(0x0000ffff, 0x00007fff, 0x00008000, 0)
  utof [precise(xz)] r6.xz, r5.xxyx
  utof [precise(y)] r6.y, r4.x
  add [precise(xyw)] r5.xyw, r6.xyxz, l(-32768.000000, -32768.000000, 0.000000, -16384.000000)
  mul [precise(xyw)] r5.xyw, r5.xyxw, l(0.0000305185094, 0.0000305185094, 0.000000, 0.0000431610060)
  add [precise(x)] r6.x, r5.y, r5.x
  add [precise(y)] r6.y, -r5.y, r5.x
  dp2 [precise(x)] r0.x, l(1.000000, 1.000000, 0.000000, 0.000000), |r6.xyxx|
  add [precise(z)] r6.z, -r0.x, l(2.000000)
  dp3 [precise(x)] r0.x, r6.xyzx, r6.xyzx
  rsq [precise(x)] r0.x, r0.x
  mul [precise(xyz)] r6.xyz, r0.xxxx, r6.xyzx
  add [precise(x)] r0.x, r6.z, l(1.000000)
  div [precise(x)] r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x
  mov [precise(xy)] r7.xy, -r6.xyxx
  mul [precise(w)] r0.w, r6.y, r7.x
  mul [precise(z)] r8.z, r0.x, r0.w
  mul [precise(xy)] r2.xy, r6.xyxx, r6.xyxx
  mul [precise(xw)] r0.xw, r0.xxxx, r2.xxxy
  add [precise(xy)] r8.xy, -r0.xwxx, l(1.000000, 1.000000, 0.000000, 0.000000)
  mul [precise(x)] r0.x, r5.w, r5.w
  add [precise(x)] r0.x, -r0.x, l(1.000000)
  sqrt [precise(x)] r0.x, r0.x
  swapc [precise(x)] r0.x, r2.x, r5.z, r5.w, r0.x
  mov [precise(w)] r8.w, r7.x
  mul [precise(xyz)] r5.xyz, r2.xxxx, r8.xzwx
  mov [precise(zw)] r7.zw, r8.zzzy
  mul [precise(xyz)] r7.xyz, r0.xxxx, r7.zwyz
  add [precise(xyz)] r5.xyz, r5.xyzx, r7.xyzx
  mul [precise(xyz)] r7.xyz, r5.zxyz, r6.yzxy
  mul [precise(xyz)] r8.xyz, r5.yzxy, r6.zxyz
  add [precise(xyz)] r7.xyz, r7.xyzx, -r8.xyzx
  ishl [precise(x)] r0.x, r4.z, l(23)
  iadd [precise(x)] r0.x, r0.x, l(0xf8800000)
  mov [precise(xz)] r4.xz, r2.zzwz
  and [precise(xyz)] r2.xyz, r4.xyzx, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0)
  utof [precise(xyz)] r2.xyz, r2.xyzx
  add [precise(xyz)] r2.xyz, r2.xyzx, l(-32768.000000, -32768.000000, -32768.000000, 0.000000)
  mul [precise(xyz)] r2.xyz, r0.xxxx, r2.xyzx
  mul [precise(xyz)] r4.xyz, r2.xxxx, r5.xyzx
  mul [precise(xyz)] r5.xyz, r2.yyyy, r7.xyzx
  mul [precise(xyz)] r6.xyz, r2.zzzz, r6.xyzx
  rcp r2.xyz, |r2.xyzx|
  ubfe [precise(x)] r0.x, l(1), l(20), r0.y
  movc [precise(x)] r0.x, r0.x, l(-1.000000), l(1.000000)
else
  mov [precise(xyz)] r4.xyz, l(0,0,0,0)
  mov [precise(xyz)] r5.xyz, l(0,0,0,0)
  mov [precise(xyz)] r6.xyz, l(0,0,0,0)
  mov [precise(xyz)] r3.xyz, l(0,0,0,0)
  mov [precise(xyz)] r1.xyz, l(0,0,0,0)
  mov r2.xyz, l(0,0,0,0)
  mov r0.x, l(0)
endif
imul [precise(y)] null, r0.y, r0.z, l(42)
ld_structured_indexable [precise(y)](structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r0.y, r0.y, l(0), t0.xxxx
iadd r0.w, v3.x, cb2[0].w
ishl r1.w, r0.w, l(1)
ld_indexable(buffer)(float,float,float,float) r7.xyz, r1.wwww, t4.xyzw
bfi r0.w, l(31), l(1), r0.w, l(1)
ld_indexable(buffer)(float,float,float,float) r8.xyzw, r0.wwww, t4.xyzw
mul r9.xyz, r7.xyzx, r8.yzxy
mad r7.xyz, r8.xyzx, r7.yzxy, -r9.xyzx
mul r7.xyz, r8.wwww, r7.xyzx
mul r9.xyz, r8.yzxy, r7.xyzx
mad r7.xyz, r7.zxyz, r8.zxyz, -r9.xyzx
mul r7.xyz, r8.wwww, r7.xyzx
mul r9.xyz, r2.xxxx, r4.xyzx
mul r2.xyw, r2.yyyy, r5.xyxz
mul r10.xyz, r2.zzzz, r6.xyzx
mul r11.xyz, r2.xywx, r7.yyyy
mad r7.xyw, r7.xxxx, r9.xyxz, r11.xyxz
mad o0.xyz, r7.zzzz, r10.xyzx, r7.xywx
mul r2.xyz, r2.xywx, r8.yyyy
mad r2.xyz, r8.xxxx, r9.xyzx, r2.xyzx
mad o1.xyz, r8.zzzz, r10.xyzx, r2.xyzx
mul o1.w, r0.x, r8.w
mul [precise(xyz)] r2.xyz, r4.xyzx, v0.xxxx
mul [precise(xyz)] r4.xyz, r5.xyzx, v0.yyyy
add [precise(xyz)] r2.xyz, r2.xyzx, r4.xyzx
mul [precise(xyz)] r4.xyz, r6.xyzx, v0.zzzz
add [precise(xyz)] r2.xyz, r2.xyzx, r4.xyzx
add [precise(xyz)] r1.xyz, r1.xyzx, -cb1[64].xyzx
add [precise(xyz)] r3.xyz, r3.xyzx, cb1[76].xyzx
mul [precise(xyz)] r1.xyz, r1.xyzx, l(2097152.000000, 2097152.000000, 2097152.000000, 0.000000)
add [precise(xyz)] r1.xyz, r3.xyzx, r1.xyzx
add [precise(xyz)] r1.xyz, r1.xyzx, r2.xyzx
and [precise(x)] r0.x, r0.y, l(0x01000000)
if_nz r0.x
  imad [precise(x)] r0.x, r0.z, l(42), l(1)
  ld_structured_indexable [precise(xyw)](structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r0.xyw, r0.x, l(0), t0.xyxz
  imad [precise(w)] r1.w, r0.z, l(42), l(19)
  ld_structured_indexable [precise(xyz)](structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r2.xyz, r1.w, l(0), t0.xyzx
  add [precise(xyw)] r0.xyw, r0.xyxw, -cb1[64].xyxz
  add [precise(xyz)] r2.xyz, r2.xyzx, -cb1[73].xyzx
  mul [precise(xyz)] r3.xyz, r2.xyzx, l(4.768371582E-07, 4.768371582E-07, 4.768371582E-07, 0.000000)
  mul [precise(xyz)] r4.xyz, r3.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000)
  add [precise(xyz)] r4.xyz, r0.xywx, r4.xyzx
  mul [precise(xyz)] r4.xyz, r0.xywx, r4.xyzx
  mul [precise(xyz)] r3.xyz, r2.xyzx, r3.xyzx
  add [precise(w)] r1.w, r4.y, r4.x
  add [precise(w)] r2.w, r3.y, r3.x
  add [precise(w)] r1.w, r4.z, r1.w
  add [precise(w)] r2.w, r3.z, r2.w
  mul [precise(w)] r2.w, r2.w, l(4.768371582E-07)
  add [precise(w)] r1.w, r1.w, r2.w
  rsq [precise(w)] r2.w, r1.w
  mul [precise(w)] r2.w, r2.w, l(4.768371582E-07)
  mul [precise(xyw)] r0.xyw, r0.xyxw, r2.wwww
  mul [precise(xyz)] r2.xyz, r2.wwww, r2.xyzx
  mul [precise(xyw)] r0.xyw, r0.xyxw, l(2097152.000000, 2097152.000000, 0.000000, 2097152.000000)
  add [precise(xyw)] r0.xyw, r2.xyxz, r0.xyxw
  mul [precise(xyw)] r0.xyw, r0.xyxw, l(-1.000000, -1.000000, 0.000000, -1.000000)
  sqrt [precise(w)] r1.w, r1.w
  mul [precise(xyz)] r2.xyz, r0.xywx, r1.wwww
  mul [precise(xyw)] r0.xyw, r0.xyxw, l(0.000000, 0.000000, 0.000000, 0.000000)
  mul [precise(xyz)] r2.xyz, r2.xyzx, l(2097152.000000, 2097152.000000, 2097152.000000, 0.000000)
  add [precise(xyw)] r0.xyw, r0.xyxw, r2.xyxz
else
  mov [precise(xyw)] r0.xyw, l(0,0,0,0)
endif
add [precise(xyw)] r0.xyw, r0.xyxw, r1.xyxz
mul [precise] r1.xyzw, r0.xxxx, cb1[0].xyzw
mul [precise] r2.xyzw, r0.yyyy, cb1[1].xyzw
add [precise] r1.xyzw, r1.xyzw, r2.xyzw
mul [precise] r2.xyzw, r0.wwww, cb1[2].xyzw
add [precise] r1.xyzw, r1.xyzw, r2.xyzw
add [precise] r1.xyzw, r1.xyzw, cb1[3].xyzw
add [precise(xyz)] r2.xyz, r0.xywx, -cb1[74].xyzx
dp3 [precise(x)] r0.x, r2.xyzx, r2.xyzx
rsq [precise(x)] r0.x, r0.x
mul [precise(xyw)] r0.xyw, r0.xxxx, r2.xyxz
dp3 [precise(x)] r0.x, r0.xywx, cb1[66].xyzx
lt [precise(y)] r0.y, l(0.001000), r0.x
rcp [precise(x)] r0.x, r0.x
and [precise(x)] r0.x, r0.x, r0.y
mul [precise(x)] r0.x, r0.x, cb1[231].z
mul [precise(y)] r0.y, cb1[64].z, l(2097152.000000)
add [precise(y)] r0.y, r0.y, cb1[73].z
min [precise(w)] r0.w, r0.y, cb0[110].z
add [precise(y)] r0.y, -r0.w, r0.y
add [precise(w)] r2.w, r0.y, r2.z
dp3 [precise(y)] r0.y, r2.xywx, r2.xywx
max [precise(x)] r3.x, r0.y, l(9.999999939E-09)
rsq [precise(x)] r3.x, r3.x
max [precise(x)] r0.x, r0.x, cb0[110].w
lt [precise(y)] r3.y, l(0.000000), r0.x
mul [precise(xy)] r0.xy, r0.xyxx, r3.xxxx
mul [precise(x)] r3.x, r2.w, r0.x
add [precise(w)] r0.w, r0.w, r3.x
add [precise(x)] r3.x, r2.w, -r3.x
add [precise(x)] r0.x, -r0.x, l(1.000000)
mul [precise(x)] r0.x, r0.y, r0.x
add [precise(z)] r3.z, r0.w, -cb0[113].y
mul [precise(z)] r3.z, r3.z, cb0[110].y
max [precise(z)] r3.z, r3.z, l(-127.000000)
exp [precise(z)] r3.z, -r3.z
mul [precise(z)] r3.z, r3.z, cb0[113].x
add [precise(w)] r0.w, r0.w, -cb0[111].w
mul [precise(w)] r0.w, r0.w, cb0[111].y
max [precise(w)] r0.w, r0.w, l(-127.000000)
exp [precise(w)] r0.w, -r0.w
mul [precise(w)] r0.w, r0.w, cb0[111].z
movc [precise(z)] r3.z, r3.y, r3.z, cb0[110].x
movc [precise(w)] r0.w, r3.y, r0.w, cb0[111].x
movc [precise(x)] r0.x, r3.y, r0.x, r0.y
movc [precise(w)] r2.w, r3.y, r3.x, r2.w
mul [precise(x)] r3.x, r2.w, cb0[110].y
max [precise(x)] r3.x, r3.x, l(-127.000000)
exp [precise(y)] r3.y, -r3.x
add [precise(y)] r3.y, -r3.y, l(1.000000)
div [precise(y)] r3.y, r3.y, r3.x
mul [precise(w)] r3.w, r3.x, l(0.240226507)
add [precise(w)] r3.w, -r3.w, l(0.693147182)
lt [precise(x)] r3.x, l(0.010000), |r3.x|
movc [precise(x)] r3.x, r3.x, r3.y, r3.w
mul [precise(x)] r3.x, r3.x, r3.z
mul [precise(w)] r2.w, r2.w, cb0[111].y
max [precise(w)] r2.w, r2.w, l(-127.000000)
exp [precise(y)] r3.y, -r2.w
add [precise(y)] r3.y, -r3.y, l(1.000000)
div [precise(y)] r3.y, r3.y, r2.w
mul [precise(z)] r3.z, r2.w, l(0.240226507)
add [precise(z)] r3.z, -r3.z, l(0.693147182)
lt [precise(w)] r2.w, l(0.010000), |r2.w|
movc [precise(w)] r2.w, r2.w, r3.y, r3.z
mul [precise(w)] r0.w, r0.w, r2.w
add [precise(w)] r0.w, r0.w, r3.x
mul [precise(x)] r0.x, r0.x, r0.w
exp [precise(x)] r0.x, -r0.x
min [precise(x)] r0.x, r0.x, l(1.000000)
max [precise(x)] r0.x, r0.x, cb0[112].w
lt [precise(w)] r0.w, l(0.000000), cb0[113].w
lt [precise(y)] r0.y, cb0[113].w, r0.y
and [precise(y)] r0.y, r0.y, r0.w
movc [precise(x)] r0.x, r0.y, l(1.000000), r0.x
lt [precise(y)] r0.y, l(0.000000), cb1[182].y
if_nz r0.y
  ne r0.y, l(0.000000, 0.000000, 0.000000, 0.000000), cb1[184].x
  mul r2.xyz, r2.xyzx, l(0.000010, 0.000010, 0.000010, 0.000000)
  div r3.xy, r1.xyxx, r1.wwww
  mad r3.xy, r3.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
  dp3 r0.w, r2.xyzx, r2.xyzx
  sqrt r2.w, r0.w
  add r2.w, r2.w, -cb1[181].x
  max r2.w, r2.w, l(0.000000)
  mul r2.w, r2.w, cb1[182].x
  mul r2.w, r2.w, cb1[181].z
  sqrt r4.z, r2.w
  mul r2.w, r4.z, cb1[181].y
  lt r3.z, r2.w, l(0.707106769)
  mul r2.w, r2.w, r2.w
  mul r2.w, r2.w, l(2.000000)
  min r2.w, r2.w, l(1.000000)
  movc r2.w, r3.z, r2.w, l(1.000000)
  rsq r0.w, r0.w
  mul r2.xyz, r0.wwww, r2.xyzx
  mad r0.w, -r2.z, r2.z, l(1.000000)
  sqrt r0.w, r0.w
  mad r5.y, r2.z, l(0.500000), l(0.500000)
  div r2.xy, r2.xyxx, r0.wwww
  add r0.w, -|r2.x|, l(1.000000)
  sqrt r0.w, r0.w
  mad r2.z, |r2.x|, l(-0.0187292993), l(0.074261)
  mad r2.z, r2.z, |r2.x|, l(-0.212114394)
  mad r2.z, r2.z, |r2.x|, l(1.57072878)
  mul r3.z, r0.w, r2.z
  mad r3.z, r3.z, l(-2.000000), l(3.14159274)
  lt r2.x, r2.x, -r2.x
  and r2.x, r2.x, r3.z
  mad r0.w, r2.z, r0.w, r2.x
  lt r2.x, r2.y, l(0.000000)
  add r2.y, -r0.w, l(6.28318548)
  movc r0.w, r2.x, r2.y, r0.w
  mul r5.x, r0.w, l(0.159154937)
  mad r2.xy, cb1[180].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000), r5.xyxx
  add r3.zw, cb1[180].xxxy, l(0.000000, 0.000000, 1.000000, 1.000000)
  div r3.zw, cb1[180].xxxy, r3.zzzw
  mul r2.xy, r2.xyxx, r3.zwzz
  movc r4.xy, r0.yyyy, r2.xyxx, r3.xyxx
  sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r4.xyzx, t2.xyzw, s0, l(0.000000)
  mul r2.xyz, r2.wwww, r3.xyzx
  add r0.y, -r3.w, l(1.000000)
  mad r0.y, -r2.w, r0.y, l(1.000000)
  mul r2.xyz, r2.xyzx, cb1[136].wwww
  mul o3.xyz, r0.xxxx, r2.xyzx
  mul o3.w, r0.y, r0.x
else
  mov o3.xyz, l(0,0,0,0)
  mov [precise(w)] o3.w, r0.x
endif
mov o0.w, l(0)
ne r27.x, r1.w, l(1.000000)
if_nz r27.x
  mad r1.x, r25.x, r25.y, r1.x
endif
mov [precise] r34.xyzw, r1.xyzw
mov [precise(x)] o2.x, r0.z
add r35.x, -r36.y, r34.w
mul r35.y, r36.x, r36.w
mad r35.x, r35.x, r35.y, r34.x
ne r35.y, l(1.000000), r34.w
movc r34.x, r35.y, r35.x, r34.x
mov o4.xyzw, r34.xyzw
ret
// Approximately 0 instruction slots used
