// MANUALLY DUMPED [ShaderRegex\ShaderFixes\UE5_masterotaku.ini\HaloPS1Simple_1] SH2 HZB geometry culling PS 1.
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v0.6.198 on Mon Dec 23 14:22:27 2024
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      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[6], immediateIndexed
dcl_constantbuffer CB1[77], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_output o0.xyzw
dcl_temps 13
dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture2d)(float,float,float,float) r11.xyzw, l(0, 0, 0, 0), t125.xyzw
mul r0.xy, v0.xyxx, cb0[4].xyxx
sample_l_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyxx, t2.xyzw, s2, l(0.000000)
eq r0.z, r1.w, l(0.000000)
if_nz r0.z
  mov o0.xyzw, l(1.000000,0,0,0)
  ret
endif
sample_l_indexable(texture2d)(float,float,float,float) r0.xyz, r0.xyxx, t1.xyzw, s1, l(0.000000)
mad r2.xyz, cb1[64].xyzx, l(-2097152.000000, -2097152.000000, -2097152.000000, 0.000000), cb1[76].xyzx
add r0.xyz, r0.xyzx, r2.xyzx
ge r0.w, cb1[35].w, l(1.000000)
if_nz r0.w
  mul r2.xyz, r0.yyyy, cb1[1].xyzx
  mad r2.xyz, r0.xxxx, cb1[0].xyzx, r2.xyzx
  mad r2.xyz, r0.zzzz, cb1[2].xyzx, r2.xyzx
  add r2.xyz, r2.xyzx, cb1[3].xyzx
  mul r3.xyz, r1.xxxx, cb1[0].xyzx
  mul r4.xyz, r1.yyyy, cb1[1].xyzx
  add r3.xyz, |r3.xyzx|, |r4.xyzx|
  mul r4.xyz, r1.zzzz, cb1[2].xyzx
  add r3.xyz, r3.xyzx, |r4.xyzx|
  add r4.xyz, r2.xyzx, -r3.xyzx
  
  add r12.x, r2.z, -r11.y
  mad r2.x, r11.x, r12.x, r2.x
  
  add r2.xyz, r2.xyzx, r3.xyzx
  lt r3.xy, l(0.000000, 1.000000, 0.000000, 0.000000), r2.zzzz
  lt r0.w, r4.z, l(1.000000)
  and r0.w, r0.w, r3.x
  lt r5.xy, r2.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000)
  lt r5.zw, l(0.000000, 0.000000, 1.000000, 1.000000), r4.xxxy
  or r5.xy, r5.zwzz, r5.xyxx
  or r1.w, r5.y, r5.x
  ieq r1.w, r1.w, l(0)
  and r0.w, r0.w, r1.w
  mov r4.zw, r2.xxxy
  mov r3.x, r2.z
else
  add r2.xyz, r1.xyzx, r1.xyzx
  add r0.xyz, -r1.xyzx, r0.xyzx
  mul r1.xyzw, r0.yyyy, cb1[1].xyzw
  mad r1.xyzw, r0.xxxx, cb1[0].xyzw, r1.xyzw
  mad r1.xyzw, r0.zzzz, cb1[2].xyzw, r1.xyzw
  add r1.xyzw, r1.xyzw, cb1[3].xyzw



  mad r5.xyzw, r2.zzzz, cb1[2].xyzw, r1.xyzw
  min r0.x, r1.w, r5.w
  min r0.x, r0.x, l(1.000000)
  max r0.y, r1.w, r5.w
  max r0.y, r0.y, l(-1.000000)
  mad r6.xyzw, r1.xyxy, l(1.000000, 1.000000, -1.000000, -1.000000), -r1.wwww
  mad r7.xyzw, r5.xyxy, l(1.000000, 1.000000, -1.000000, -1.000000), -r5.wwww
  min r6.xyzw, r6.xyzw, r7.xyzw
  min r6.xyzw, r6.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
  
  add r12.x, r1.w, -r11.y
  mad r1.x, r11.x, r12.x, r1.x
  
  div r7.xyz, r1.xyzx, r1.wwww
  div r8.xyz, r5.xyzx, r5.wwww
  min r2.zw, r7.xxxy, r8.xxxy
  min r2.zw, r2.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000)
  max r7.xyz, r7.xyzx, r8.xyzx
  max r7.xyz, r7.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000)
  mad r1.xyzw, r2.xxxx, cb1[0].xyzw, r1.xyzw
  mad r5.xyzw, r2.xxxx, cb1[0].xyzw, r5.xyzw
  min r0.z, r1.w, r5.w
  min r0.x, r0.z, r0.x
  max r0.z, r1.w, r5.w
  max r0.y, r0.z, r0.y
  mad r8.xyzw, r1.xyxy, l(1.000000, 1.000000, -1.000000, -1.000000), -r1.wwww
  mad r9.xyzw, r5.xyxy, l(1.000000, 1.000000, -1.000000, -1.000000), -r5.wwww
  min r8.xyzw, r8.xyzw, r9.xyzw
  min r6.xyzw, r6.xyzw, r8.xyzw
  
  add r12.x, r1.w, -r11.y
  mad r1.x, r11.x, r12.x, r1.x
  
  div r8.xyz, r1.xyzx, r1.wwww
  div r9.xyz, r5.xyzx, r5.wwww
  min r10.xy, r8.xyxx, r9.xyxx
  min r2.zw, r2.zzzw, r10.xxxy
  max r8.xyz, r8.xyzx, r9.xyzx
  max r7.xyz, r7.xyzx, r8.xyzx
  mad r1.xyzw, r2.yyyy, cb1[1].xyzw, r1.xyzw
  mad r5.xyzw, r2.yyyy, cb1[1].xyzw, r5.xyzw
  min r0.z, r1.w, r5.w
  min r0.x, r0.z, r0.x
  max r0.z, r1.w, r5.w
  max r0.y, r0.z, r0.y
  mad r8.xyzw, r1.xyxy, l(1.000000, 1.000000, -1.000000, -1.000000), -r1.wwww
  mad r9.xyzw, r5.xyxy, l(1.000000, 1.000000, -1.000000, -1.000000), -r5.wwww
  min r8.xyzw, r8.xyzw, r9.xyzw
  min r6.xyzw, r6.xyzw, r8.xyzw
  
  add r12.x, r1.w, -r11.y
  mad r1.x, r11.x, r12.x, r1.x
  
  div r8.xyz, r1.xyzx, r1.wwww
  div r9.xyz, r5.xyzx, r5.wwww
  min r10.xy, r8.xyxx, r9.xyxx
  min r2.yz, r2.zzwz, r10.xxyx
  max r8.xyz, r8.xyzx, r9.xyzx
  max r7.xyz, r7.xyzx, r8.xyzx
  mad r1.xyzw, -r2.xxxx, cb1[0].xyzw, r1.xyzw
  mad r5.xyzw, -r2.xxxx, cb1[0].xyzw, r5.xyzw
  min r0.z, r1.w, r5.w
  min r0.x, r0.z, r0.x
  max r0.z, r1.w, r5.w
  max r0.y, r0.z, r0.y
  mad r8.xyzw, r1.xyxy, l(1.000000, 1.000000, -1.000000, -1.000000), -r1.wwww
  mad r9.xyzw, r5.xyxy, l(1.000000, 1.000000, -1.000000, -1.000000), -r5.wwww
  min r8.xyzw, r8.xyzw, r9.xyzw
  min r6.xyzw, r6.xyzw, r8.xyzw
  
  add r12.x, r1.w, -r11.y
  mad r1.x, r11.x, r12.x, r1.x
  
  div r1.xyz, r1.xyzx, r1.wwww
  div r5.xyz, r5.xyzx, r5.wwww
  min r2.xw, r1.xxxy, r5.xxxy
  min r2.xy, r2.xwxx, r2.yzyy
  max r1.xyz, r1.xyzx, r5.xyzx
  max r1.xyz, r1.xyzx, r7.xyzx
  lt r0.z, l(0.000000), r1.z
  ge r5.y, l(0.000000), r0.x
  lt r0.x, l(0.000000), r0.y
  and r0.y, r0.x, r5.y
  and r5.z, r0.z, r0.x
  mov r2.zw, r1.xxxy
  movc r4.xyzw, r0.yyyy, l(-1.000000,-1.000000,1.000000,1.000000), r2.xyzw
  mov r5.x, r1.z
  movc r3.xyz, r0.yyyy, l(1.000000,-1,-1,0), r5.xyzx
  lt r1.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000), r6.xyzw
  or r0.xy, r1.zwzz, r1.xyxx
  or r0.x, r0.y, r0.x
  ieq r0.x, r0.x, l(0)
  and r0.w, r0.x, r3.z
endif
not r0.x, r3.y
and r0.x, r0.x, r0.w
if_nz r0.x
  ftoi r0.xy, cb0[5].xyxx
  mad_sat r1.xyzw, r4.xwzy, l(0.500000, -0.500000, 0.500000, -0.500000), l(0.500000, 0.500000, 0.500000, 0.500000)
  round_z r2.xyzw, cb0[5].xyxy
  mad r1.xyzw, r1.xyzw, r2.xyzw, l(0.500000, 0.500000, -0.500000, -0.500000)
  ftoi r1.xyzw, r1.xyzw
  imax r2.xy, r1.xyxx, l(0, 0, 0, 0)
  iadd r0.xy, r0.xyxx, l(-1, -1, 0, 0)
  imin r0.xy, r0.xyxx, r1.zwzz
  imax r2.zw, r0.xxxy, r2.xxxy
  ishr r1.xyzw, r2.xyzw, l(1, 1, 1, 1)
  iadd r0.xy, -r1.xyxx, r1.zwzz
  firstbit_shi r0.xy, r0.xyxx
  ieq r2.xy, r0.xyxx, l(-1, -1, 0, 0)
  iadd r0.xy, -r0.xyxx, l(31, 31, 0, 0)
  movc r0.xy, r2.xyxx, l(-1,-1,0,0), r0.xyxx
  imax r0.x, r0.y, r0.x
  iadd r0.x, r0.x, l(-1)
  imax r0.x, r0.x, l(0)
  ishr r2.xyzw, r1.zwxy, r0.xxxx
  iadd r0.yz, -r2.zzwz, r2.xxyx
  ilt r0.yz, l(0, 3, 3, 0), r0.yyzy
  or r0.y, r0.z, r0.y
  and r0.y, r0.y, l(1)
  iadd r0.x, r0.y, r0.x
  ishr r1.xyzw, r1.xyzw, r0.xxxx
  iadd r0.yz, l(0, 0x7f000000, 0x7f000000, 0), -cb0[4].zzwz
  ishl r2.x, r0.x, l(23)
  iadd r0.yz, r0.yyzy, r2.xxxx
  itof r0.x, r0.x
  iadd r2.xyzw, r1.xxxx, l(0, 1, 2, 3)
  imin r2.xyzw, r1.zzzz, r2.xyzw
  itof r2.xyzw, r2.xyzw
  add r2.xyzw, r2.xyzw, l(0.500000, 0.500000, 0.500000, 0.500000)
  mul r2.xyzw, r0.yyyy, r2.wxyz
  iadd r4.xyzw, r1.yyyy, l(0, 1, 2, 3)
  imin r1.xyzw, r1.wwww, r4.xyzw
  itof r1.xyzw, r1.xyzw
  add r1.xyzw, r1.xyzw, l(0.500000, 0.500000, 0.500000, 0.500000)
  mul r1.xyzw, r0.zzzz, r1.xwyz
  mov r4.xzw, r2.yyzw
  mov r4.y, r1.x
  sample_l_indexable(texture2d)(float,float,float,float) r0.y, r4.xyxx, t0.yxzw, s0, r0.x
  sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zyzz, t0.yzxw, s0, r0.x
  sample_l_indexable(texture2d)(float,float,float,float) r3.y, r4.wyww, t0.yxzw, s0, r0.x
  mov r2.y, r4.y
  sample_l_indexable(texture2d)(float,float,float,float) r2.y, r2.xyxx, t0.yxzw, s0, r0.x
  mov r4.y, r1.z
  sample_l_indexable(texture2d)(float,float,float,float) r3.z, r4.xyxx, t0.yzxw, s0, r0.x
  sample_l_indexable(texture2d)(float,float,float,float) r3.w, r4.zyzz, t0.yzwx, s0, r0.x
  sample_l_indexable(texture2d)(float,float,float,float) r5.x, r4.wyww, t0.xyzw, s0, r0.x
  mov r2.z, r4.y
  sample_l_indexable(texture2d)(float,float,float,float) r2.z, r2.xzxx, t0.yzxw, s0, r0.x
  mov r4.y, r1.w
  sample_l_indexable(texture2d)(float,float,float,float) r5.y, r4.xyxx, t0.yxzw, s0, r0.x
  sample_l_indexable(texture2d)(float,float,float,float) r5.z, r4.zyzz, t0.yzxw, s0, r0.x
  sample_l_indexable(texture2d)(float,float,float,float) r5.w, r4.wyww, t0.yzwx, s0, r0.x
  mov r2.w, r4.y
  sample_l_indexable(texture2d)(float,float,float,float) r2.w, r2.xwxx, t0.yzwx, s0, r0.x
  mov r1.xzw, r4.xxzw
  sample_l_indexable(texture2d)(float,float,float,float) r4.x, r1.xyxx, t0.xyzw, s0, r0.x
  sample_l_indexable(texture2d)(float,float,float,float) r1.z, r1.zyzz, t0.yzxw, s0, r0.x
  sample_l_indexable(texture2d)(float,float,float,float) r1.w, r1.wyww, t0.yzwx, s0, r0.x
  mov r1.x, r2.x
  sample_l_indexable(texture2d)(float,float,float,float) r0.x, r1.xyxx, t0.xyzw, s0, r0.x
  min r0.z, r0.z, r3.y
  min r0.y, r0.z, r0.y
  min r0.z, r3.w, r3.z
  min r0.z, r0.z, r2.y
  min r1.x, r2.z, r5.y
  min r1.x, r1.x, r5.x
  min r0.z, r0.z, r1.x
  min r0.y, r0.z, r0.y
  min r0.z, r2.w, r5.w
  min r0.z, r0.z, r5.z
  min r1.x, r1.w, r1.z
  min r1.x, r1.x, r4.x
  min r0.x, r0.x, r1.x
  min r0.x, r0.x, r0.z
  min r0.x, r0.x, r0.y
  ge r0.w, r3.x, r0.x
endif
and o0.xyzw, r0.wwww, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
ret
// Approximately 0 instruction slots used
