//HUD PS 1.
// ---- Created with geo-11 v0.7.11 on Tue Sep 29 22:56:03 2026

cbuffer PerFrameCB : register(b0)
{
  uint noise_frame : packoffset(c0);
  float noise_scale : packoffset(c0.y);
}

cbuffer PerDrawCB : register(b1)
{

  struct
  {
    uint width;
    uint height;
    bool linear_filtering;
  } textures[7] : packoffset(c0);

  float4 combiner_inputs[6] : packoffset(c7);
  float4 fog_color : packoffset(c13);
  float4 grayscale_color : packoffset(c14);
  float4 uv_transform[2] : packoffset(c15);
  float4 texture_clamp[2] : packoffset(c17);
  float4 fog_params : packoffset(c19);
  float4 palette_params[2] : packoffset(c20);
  float4 lod_params : packoffset(c22);
  float4 uCustom[32] : packoffset(c23);
  float4 debug_tint : packoffset(c55);
}

SamplerState g_sampler0_s : register(s0);
SamplerState g_samplerPal_s : register(s6);
Texture2D<float4> g_texture0 : register(t0);
Texture2D<float4> g_texturePal : register(t6);


// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);


void main(
  float4 v0 : SV_POSITION0,
  float2 v1 : TEXCOORD0,
  float correction : TEXCOORD1,
  out float4 o0 : SV_TARGET0)
{
  float4 r0,r1,r2,r3,r4,r5,r6,r7;
  uint4 bitmask, uiDest;
  float4 fDest;
  
  float4 scissor_rect = IniParams[84].xyzw;
  
  float delta = floor(correction * IniParams[85].x * 0.5);
  
  scissor_rect.xz += delta;
  
  float2 coords = v0.xy + floor(correction * IniParams[85].x * 0.5);
  
  //The delta comparison avoids skybox clipping.
  if (v0.x>delta && v0.x<(IniParams[85].x+delta) && (any(v0.xy < scissor_rect.xy) || any(v0.xy >= scissor_rect.zw))) {
          discard;
          return;
  }
  
  float4 x0[16];
  float4 x1[16];
  x0[0].x = 0;
  x0[1].x = 6;
  x0[2].x = 1;
  x0[3].x = 7;
  x0[4].x = 4;
  x0[5].x = 2;
  x0[6].x = 5;
  x0[7].x = 3;
  x0[8].x = 3;
  x0[9].x = 5;
  x0[10].x = 2;
  x0[11].x = 4;
  x0[12].x = 7;
  x0[13].x = 1;
  x0[14].x = 6;
  x0[15].x = 0;
  x1[0].x = 0;
  x1[1].x = 4;
  x1[2].x = 1;
  x1[3].x = 5;
  x1[4].x = 6;
  x1[5].x = 2;
  x1[6].x = 7;
  x1[7].x = 3;
  x1[8].x = 1;
  x1[9].x = 5;
  x1[10].x = 0;
  x1[11].x = 4;
  x1[12].x = 7;
  x1[13].x = 3;
  x1[14].x = 6;
  x1[15].x = 2;
  r0.xy = v0.xy;
  r0.zw = v1.xy;
  g_texture0.GetDimensions(0, fDest.x, fDest.y, fDest.z);
  r1.xyzw = fDest.xyzw;
  r1.x = (int)r1.x;
  r1.y = (int)r1.y;
  r0.zw = r0.zw;
  r2.x = (int)r1.x;
  r2.y = (int)r1.y;
  r1.xy = palette_params[0].xy;
  r1.z = cmp(1.5 < r1.y);
  if (r1.z != 0) {
    r1.zw = r2.xy * r0.zw;
    r2.zw = float2(-0.5,-0.5);
    r1.zw = r2.zw + r1.zw;
    r1.zw = frac(r1.zw);
    r2.z = r1.z + r1.w;
    r2.z = cmp(r2.z >= 1);
    r2.z = r2.z ? 1 : 0;
    r2.zw = -r2.zz;
    r3.yz = r2.zw + r1.zw;
    r1.zw = r3.yz / r2.xy;
    r1.zw = -r1.zw;
    r1.zw = r1.zw + r0.zw;
    r1.x = r1.x;
    r4.xyzw = g_texture0.Sample(g_sampler0_s, r1.zw).xyzw;
    r4.x = r4.x;
    r1.z = 255 * r4.x;
    r1.z = r1.z + r1.x;
    r1.z = 0.5 + r1.z;
    r4.x = r1.z / 256;
    r4.y = 0.5;
    r4.xyzw = g_texturePal.Sample(g_samplerPal_s, r4.xy).xyzw;
    r4.xyz = r4.xyz;
    r1.z = cmp(0 < r3.y);
    r1.w = cmp(r3.y < 0);
    r1.z = -(int)r1.z;
    r1.z = (int)r1.z + (int)r1.w;
    r1.z = (int)r1.z;
    r1.z = -r1.z;
    r3.x = r3.y + r1.z;
    r1.zw = r3.xz / r2.xy;
    r1.zw = -r1.zw;
    r1.zw = r1.zw + r0.zw;
    r1.x = r1.x;
    r5.xyzw = g_texture0.Sample(g_sampler0_s, r1.zw).xyzw;
    r5.x = r5.x;
    r1.z = 255 * r5.x;
    r1.z = r1.z + r1.x;
    r1.z = 0.5 + r1.z;
    r5.x = r1.z / 256;
    r5.y = 0.5;
    r5.xyzw = g_texturePal.Sample(g_samplerPal_s, r5.xy).xyzw;
    r5.xyz = r5.xyz;
    r1.z = cmp(0 < r3.z);
    r1.w = cmp(r3.z < 0);
    r1.z = -(int)r1.z;
    r1.z = (int)r1.z + (int)r1.w;
    r1.z = (int)r1.z;
    r1.z = -r1.z;
    r3.w = r3.z + r1.z;
    r1.zw = r3.yw / r2.xy;
    r1.zw = -r1.zw;
    r1.zw = r1.zw + r0.zw;
    r1.x = r1.x;
    r6.xyzw = g_texture0.Sample(g_sampler0_s, r1.zw).xyzw;
    r1.z = 255 * r6.x;
    r1.z = r1.z + r1.x;
    r1.z = 0.5 + r1.z;
    r6.x = r1.z / 256;
    r6.y = 0.5;
    r6.xyzw = g_texturePal.Sample(g_samplerPal_s, r6.xy).xyzw;
    r6.xyz = r6.xyz;
    r1.z = -r3.y;
    r1.z = max(r3.y, r1.z);
    r3.xyw = -r4.xyz;
    r3.xyw = r5.xyz + r3.xyw;
    r3.xyw = r3.xyw * r1.zzz;
    r3.xyw = r4.xyz + r3.xyw;
    r1.z = -r3.z;
    r1.z = max(r3.z, r1.z);
    r4.xyz = -r4.xyz;
    r4.xyz = r6.xyz + r4.xyz;
    r4.xyz = r4.xyz * r1.zzz;
    r3.xyz = r4.xyz + r3.xyw;
  } else {
    r1.y = cmp(0.5 < r1.y);
    if (r1.y != 0) {
      r0.zw = r2.xy * r0.zw;
      r1.yz = float2(-0.5,-0.5);
      r0.zw = r1.yz + r0.zw;
      r1.yz = frac(r0.zw);
      r0.zw = floor(r0.zw);
      r0.zw = float2(0.5,0.5) + r0.zw;
      r0.zw = r0.zw / r2.xy;
      r2.zw = float2(1,0) / r2.xy;
      r2.xy = float2(0,1) / r2.xy;
      r0.zw = r0.zw;
      r1.x = r1.x;
      r4.xyzw = g_texture0.Sample(g_sampler0_s, r0.zw).xyzw;
      r4.x = r4.x;
      r1.w = 255 * r4.x;
      r1.w = r1.w + r1.x;
      r1.w = 0.5 + r1.w;
      r4.x = r1.w / 256;
      r4.y = 0.5;
      r4.xyzw = g_texturePal.Sample(g_samplerPal_s, r4.xy).xyzw;
      r4.xyz = r4.xyz;
      r5.xy = r0.zw + r2.zw;
      r1.x = r1.x;
      r5.xyzw = g_texture0.Sample(g_sampler0_s, r5.xy).xyzw;
      r5.x = r5.x;
      r1.w = 255 * r5.x;
      r1.w = r1.w + r1.x;
      r1.w = 0.5 + r1.w;
      r5.x = r1.w / 256;
      r5.y = 0.5;
      r5.xyzw = g_texturePal.Sample(g_samplerPal_s, r5.xy).xyzw;
      r5.xyz = r5.xyz;
      r6.xy = r0.zw + r2.xy;
      r1.x = r1.x;
      r6.xyzw = g_texture0.Sample(g_sampler0_s, r6.xy).xyzw;
      r6.x = r6.x;
      r1.w = 255 * r6.x;
      r1.w = r1.w + r1.x;
      r1.w = 0.5 + r1.w;
      r6.x = r1.w / 256;
      r6.y = 0.5;
      r6.xyzw = g_texturePal.Sample(g_samplerPal_s, r6.xy).xyzw;
      r6.xyz = r6.xyz;
      r0.zw = r0.zw + r2.zw;
      r0.zw = r0.zw + r2.xy;
      r1.x = r1.x;
      r2.xyzw = g_texture0.Sample(g_sampler0_s, r0.zw).xyzw;
      r0.z = 255 * r2.x;
      r0.z = r0.z + r1.x;
      r0.z = 0.5 + r0.z;
      r2.x = r0.z / 256;
      r2.y = 0.5;
      r2.xyzw = g_texturePal.Sample(g_samplerPal_s, r2.xy).xyzw;
      r2.xyz = r2.xyz;
      r7.xyz = -r4.xyz;
      r5.xyz = r7.xyz + r5.xyz;
      r5.xyz = r5.xyz * r1.yyy;
      r4.xyz = r5.xyz + r4.xyz;
      r5.xyz = -r6.xyz;
      r2.xyz = r5.xyz + r2.xyz;
      r2.xyz = r2.xyz * r1.yyy;
      r2.xyz = r6.xyz + r2.xyz;
      r5.xyz = -r4.xyz;
      r2.xyz = r5.xyz + r2.xyz;
      r1.yzw = r2.xyz * r1.zzz;
      r3.xyz = r4.xyz + r1.yzw;
    } else {
      r1.x = r1.x;
      r2.xyzw = g_texture0.Sample(g_sampler0_s, v1.xy).xyzw;
      r0.z = 255 * r2.x;
      r0.z = r0.z + r1.x;
      r0.z = 0.5 + r0.z;
      r1.x = r0.z / 256;
      r1.y = 0.5;
      r3.xyzw = g_texturePal.Sample(g_samplerPal_s, r1.xy).xyzw;
      r3.xyz = r3.xyz;
    }
  }
  r3.xyz = r3.xyz;
  r3.xyz = r3.xyz;
  r1.xyz = float3(0.50999999,0.50999999,0.50999999);
  r1.xyz = r3.xyz + r1.xyz;
  r2.xyz = float3(0.50999999,0.50999999,0.50999999);
  r2.xyz = r3.xyz + r2.xyz;
  r2.xyz = r2.xyz / float3(2.01999998,2.01999998,2.01999998);
  r2.xyz = floor(r2.xyz);
  r2.xyz = float3(2.01999998,2.01999998,2.01999998) * r2.xyz;
  r2.xyz = -r2.xyz;
  r1.xyz = r2.xyz + r1.xyz;
  r1.xyz = float3(-0.50999999,-0.50999999,-0.50999999) + r1.xyz;
  r1.xyz = max(float3(0,0,0), r1.xyz);
  r1.xyz = min(float3(1,1,1), r1.xyz);
  r1.xyz = r1.xyz;
  r0.z = lod_params.w;
  r0.xy = r0.xy;
  r0.w = noise_scale;
  r1.w = noise_frame;
  r0.z = 0.5 + r0.z;
  r0.z = (int)r0.z;
  r2.x = cmp((int)r0.z >= 4);
  if (r2.x != 0) {
    r2.yzw = r1.xyz;
  }
  if (r2.x == 0) {
    r0.xy = r0.xy * r0.ww;
    r0.xy = floor(r0.xy);
    r0.w = 0;
    if (r0.z == 0) {
      r3.xy = (int2)r0.xy;
      r3.xy = (int2)r3.xy & int2(3,3);
      r2.x = (int)r3.y * 4;
      r2.x = (int)r3.x + (int)r2.x;
      r2.x = x0[r2.x+0].x;
      r0.w = (int)r2.x;
    } else {
      r2.x = cmp((int)r0.z == 1);
      if (r2.x != 0) {
        r3.xy = (int2)r0.xy;
        r3.xy = (int2)r3.xy & int2(3,3);
        r2.x = (int)r3.y * 4;
        r2.x = (int)r3.x + (int)r2.x;
        r2.x = x1[r2.x+0].x;
        r0.w = (int)r2.x;
      } else {
        r0.z = cmp((int)r0.z == 2);
        if (r0.z != 0) {
          r0.xy = (int2)r0.xy;
          r0.z = (int)r1.w;
          r0.x = (int)r0.x * 0x5f356495;
          r0.y = (int)r0.y * 0xe336beb9;
          r0.x = (int)r0.y ^ (int)r0.x;
          r0.y = (int)r0.z * 0x9e3779b1;
          r0.x = (int)r0.y ^ (int)r0.x;
          r0.y = 16;
          r0.y = (uint)r0.x >> (uint)r0.y;
          r0.x = (int)r0.y ^ (int)r0.x;
          r0.x = (int)r0.x * 0x85ebca77;
          r0.y = 13;
          r0.y = (uint)r0.x >> (uint)r0.y;
          r0.x = (int)r0.y ^ (int)r0.x;
          r0.x = (int)r0.x * 0xc2b2ae3d;
          r0.y = 16;
          r0.y = (uint)r0.x >> (uint)r0.y;
          r0.x = (int)r0.y ^ (int)r0.x;
          r0.x = (int)r0.x & 7;
          r0.w = (int)r0.x;
        }
      }
    }
    r0.xyz = float3(255,255,255) * r1.xyz;
    r0.xyz = r0.xyz + r0.www;
    r0.xyz = max(float3(0,0,0), r0.xyz);
    r0.xyz = min(float3(255,255,255), r0.xyz);
    r0.xyz = r0.xyz / float3(8,8,8);
    r0.xyz = floor(r0.xyz);
    r0.xyz = min(float3(31,31,31), r0.xyz);
    r1.xyz = float3(8,8,8) * r0.xyz;
    r0.xyz = r0.xyz / float3(4,4,4);
    r0.xyz = floor(r0.xyz);
    r0.xyz = r1.xyz + r0.xyz;
    r2.yzw = r0.xyz / float3(255,255,255);
  }
  r2.yzw = r2.yzw;
  r0.xyz = -r2.yzw;
  r0.xyz = debug_tint.xyz + r0.xyz;
  r0.xyz = debug_tint.www * r0.xyz;
  r0.xyz = r2.yzw + r0.xyz;
  r0.xyz = r0.xyz;
  r0.w = 1;
  o0.xyzw = r0.xyzw;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
//   using 3Dmigoto v0.7.11 on Tue Sep 29 22:56:03 2026
//
//
// Buffer Definitions:
//
// cbuffer PerFrameCB
// {
//
//   uint noise_frame;                  // Offset:    0 Size:     4
//   float noise_scale;                 // Offset:    4 Size:     4
//
// }
//
// cbuffer PerDrawCB
// {
//
//   struct
//   {
//
//       uint width;                    // Offset:    0
//       uint height;                   // Offset:    4
//       bool linear_filtering;         // Offset:    8
//
//   } textures[7];                     // Offset:    0 Size:   108 [unused]
//   float4 combiner_inputs[6];         // Offset:  112 Size:    96 [unused]
//   float4 fog_color;                  // Offset:  208 Size:    16 [unused]
//   float4 grayscale_color;            // Offset:  224 Size:    16 [unused]
//   float4 uv_transform[2];            // Offset:  240 Size:    32 [unused]
//   float4 texture_clamp[2];           // Offset:  272 Size:    32 [unused]
//   float4 fog_params;                 // Offset:  304 Size:    16 [unused]
//   float4 palette_params[2];          // Offset:  320 Size:    32
//   float4 lod_params;                 // Offset:  352 Size:    16
//   float4 uCustom[32];                // Offset:  368 Size:   512 [unused]
//   float4 debug_tint;                 // Offset:  880 Size:    16
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// g_sampler0                        sampler      NA          NA    0        1
// g_samplerPal                      sampler      NA          NA    6        1
// g_texture0                        texture  float4          2d    0        1
// g_texturePal                      texture  float4          2d    6        1
// PerFrameCB                        cbuffer      NA          NA    0        1
// PerDrawCB                         cbuffer      NA          NA    1        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION              0   xyzw        0      POS   float   xy
// TEXCOORD                 0   xy          1     NONE   float   xy
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_TARGET                0   xyzw        0   TARGET   float   xyzw
//
ps_4_0
dcl_constantbuffer CB0[1], immediateIndexed
dcl_constantbuffer CB1[56], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s6, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t6
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_input_ps linear v1.xy
dcl_output o0.xyzw
dcl_temps 8
dcl_indexableTemp x0[16], 4
dcl_indexableTemp x1[16], 4
mov x0[0].x, l(0)
mov x0[1].x, l(6)
mov x0[2].x, l(1)
mov x0[3].x, l(7)
mov x0[4].x, l(4)
mov x0[5].x, l(2)
mov x0[6].x, l(5)
mov x0[7].x, l(3)
mov x0[8].x, l(3)
mov x0[9].x, l(5)
mov x0[10].x, l(2)
mov x0[11].x, l(4)
mov x0[12].x, l(7)
mov x0[13].x, l(1)
mov x0[14].x, l(6)
mov x0[15].x, l(0)
mov x1[0].x, l(0)
mov x1[1].x, l(4)
mov x1[2].x, l(1)
mov x1[3].x, l(5)
mov x1[4].x, l(6)
mov x1[5].x, l(2)
mov x1[6].x, l(7)
mov x1[7].x, l(3)
mov x1[8].x, l(1)
mov x1[9].x, l(5)
mov x1[10].x, l(0)
mov x1[11].x, l(4)
mov x1[12].x, l(7)
mov x1[13].x, l(3)
mov x1[14].x, l(6)
mov x1[15].x, l(2)
mov r0.xy, v0.xyxx
mov r0.zw, v1.xxxy
resinfo r1.xyzw, l(0), t0.xyzw
ftoi r1.x, r1.x
ftoi r1.y, r1.y
mov r0.zw, r0.zzzw
itof r2.x, r1.x
itof r2.y, r1.y
mov r1.xy, cb1[20].xyxx
lt r1.z, l(1.500000), r1.y
if_nz r1.z
  mul r1.zw, r0.zzzw, r2.xxxy
  mov r2.zw, l(-0.000000,-0.000000,-0.500000,-0.500000)
  add r1.zw, r1.zzzw, r2.zzzw
  frc r1.zw, r1.zzzw
  add r2.z, r1.w, r1.z
  ge r2.z, r2.z, l(1.000000)
  movc r2.z, r2.z, l(1.000000), l(0)
  mov r2.zw, -r2.zzzz
  add r3.yz, r1.zzwz, r2.zzwz
  div r1.zw, r3.yyyz, r2.xxxy
  mov r1.zw, -r1.zzzw
  add r1.zw, r0.zzzw, r1.zzzw
  mov r1.x, r1.x
  sample r4.xyzw, r1.zwzz, t0.xyzw, s0
  mov r4.x, r4.x
  mul r1.z, r4.x, l(255.000000)
  add r1.z, r1.x, r1.z
  add r1.z, r1.z, l(0.500000)
  div r4.x, r1.z, l(256.000000)
  mov r4.y, l(0.500000)
  sample r4.xyzw, r4.xyxx, t6.xyzw, s6
  mov r4.xyz, r4.xyzx
  lt r1.z, l(0.000000), r3.y
  lt r1.w, r3.y, l(0.000000)
  ineg r1.z, r1.z
  iadd r1.z, r1.z, r1.w
  itof r1.z, r1.z
  mov r1.z, -r1.z
  add r3.x, r1.z, r3.y
  div r1.zw, r3.xxxz, r2.xxxy
  mov r1.zw, -r1.zzzw
  add r1.zw, r0.zzzw, r1.zzzw
  mov r1.x, r1.x
  sample r5.xyzw, r1.zwzz, t0.xyzw, s0
  mov r5.x, r5.x
  mul r1.z, r5.x, l(255.000000)
  add r1.z, r1.x, r1.z
  add r1.z, r1.z, l(0.500000)
  div r5.x, r1.z, l(256.000000)
  mov r5.y, l(0.500000)
  sample r5.xyzw, r5.xyxx, t6.xyzw, s6
  mov r5.xyz, r5.xyzx
  lt r1.z, l(0.000000), r3.z
  lt r1.w, r3.z, l(0.000000)
  ineg r1.z, r1.z
  iadd r1.z, r1.z, r1.w
  itof r1.z, r1.z
  mov r1.z, -r1.z
  add r3.w, r1.z, r3.z
  div r1.zw, r3.yyyw, r2.xxxy
  mov r1.zw, -r1.zzzw
  add r1.zw, r0.zzzw, r1.zzzw
  mov r1.x, r1.x
  sample r6.xyzw, r1.zwzz, t0.xyzw, s0
  mul r1.z, r6.x, l(255.000000)
  add r1.z, r1.x, r1.z
  add r1.z, r1.z, l(0.500000)
  div r6.x, r1.z, l(256.000000)
  mov r6.y, l(0.500000)
  sample r6.xyzw, r6.xyxx, t6.xyzw, s6
  mov r6.xyz, r6.xyzx
  mov r1.z, -r3.y
  max r1.z, r1.z, r3.y
  mov r3.xyw, -r4.xyxz
  add r3.xyw, r3.xyxw, r5.xyxz
  mul r3.xyw, r1.zzzz, r3.xyxw
  add r3.xyw, r3.xyxw, r4.xyxz
  mov r1.z, -r3.z
  max r1.z, r1.z, r3.z
  mov r4.xyz, -r4.xyzx
  add r4.xyz, r4.xyzx, r6.xyzx
  mul r4.xyz, r1.zzzz, r4.xyzx
  add r3.xyz, r3.xywx, r4.xyzx
else
  lt r1.y, l(0.500000), r1.y
  if_nz r1.y
    mul r0.zw, r0.zzzw, r2.xxxy
    mov r1.yz, l(-0.000000,-0.500000,-0.500000,-0.000000)
    add r0.zw, r0.zzzw, r1.yyyz
    frc r1.yz, r0.zzwz
    round_ni r0.zw, r0.zzzw
    add r0.zw, r0.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000)
    div r0.zw, r0.zzzw, r2.xxxy
    div r2.zw, l(0.000000, 0.000000, 1.000000, 0.000000), r2.xxxy
    div r2.xy, l(0.000000, 1.000000, 0.000000, 0.000000), r2.xyxx
    mov r0.zw, r0.zzzw
    mov r1.x, r1.x
    sample r4.xyzw, r0.zwzz, t0.xyzw, s0
    mov r4.x, r4.x
    mul r1.w, r4.x, l(255.000000)
    add r1.w, r1.x, r1.w
    add r1.w, r1.w, l(0.500000)
    div r4.x, r1.w, l(256.000000)
    mov r4.y, l(0.500000)
    sample r4.xyzw, r4.xyxx, t6.xyzw, s6
    mov r4.xyz, r4.xyzx
    add r5.xy, r2.zwzz, r0.zwzz
    mov r1.x, r1.x
    sample r5.xyzw, r5.xyxx, t0.xyzw, s0
    mov r5.x, r5.x
    mul r1.w, r5.x, l(255.000000)
    add r1.w, r1.x, r1.w
    add r1.w, r1.w, l(0.500000)
    div r5.x, r1.w, l(256.000000)
    mov r5.y, l(0.500000)
    sample r5.xyzw, r5.xyxx, t6.xyzw, s6
    mov r5.xyz, r5.xyzx
    add r6.xy, r2.xyxx, r0.zwzz
    mov r1.x, r1.x
    sample r6.xyzw, r6.xyxx, t0.xyzw, s0
    mov r6.x, r6.x
    mul r1.w, r6.x, l(255.000000)
    add r1.w, r1.x, r1.w
    add r1.w, r1.w, l(0.500000)
    div r6.x, r1.w, l(256.000000)
    mov r6.y, l(0.500000)
    sample r6.xyzw, r6.xyxx, t6.xyzw, s6
    mov r6.xyz, r6.xyzx
    add r0.zw, r2.zzzw, r0.zzzw
    add r0.zw, r2.xxxy, r0.zzzw
    mov r1.x, r1.x
    sample r2.xyzw, r0.zwzz, t0.xyzw, s0
    mul r0.z, r2.x, l(255.000000)
    add r0.z, r1.x, r0.z
    add r0.z, r0.z, l(0.500000)
    div r2.x, r0.z, l(256.000000)
    mov r2.y, l(0.500000)
    sample r2.xyzw, r2.xyxx, t6.xyzw, s6
    mov r2.xyz, r2.xyzx
    mov r7.xyz, -r4.xyzx
    add r5.xyz, r5.xyzx, r7.xyzx
    mul r5.xyz, r1.yyyy, r5.xyzx
    add r4.xyz, r4.xyzx, r5.xyzx
    mov r5.xyz, -r6.xyzx
    add r2.xyz, r2.xyzx, r5.xyzx
    mul r2.xyz, r1.yyyy, r2.xyzx
    add r2.xyz, r2.xyzx, r6.xyzx
    mov r5.xyz, -r4.xyzx
    add r2.xyz, r2.xyzx, r5.xyzx
    mul r1.yzw, r1.zzzz, r2.xxyz
    add r3.xyz, r1.yzwy, r4.xyzx
  else
    mov r1.x, r1.x
    sample r2.xyzw, v1.xyxx, t0.xyzw, s0
    mul r0.z, r2.x, l(255.000000)
    add r0.z, r1.x, r0.z
    add r0.z, r0.z, l(0.500000)
    div r1.x, r0.z, l(256.000000)
    mov r1.y, l(0.500000)
    sample r3.xyzw, r1.xyxx, t6.xyzw, s6
    mov r3.xyz, r3.xyzx
  endif
endif
mov r3.xyz, r3.xyzx
mov r3.xyz, r3.xyzx
mov r1.xyz, l(0.510000,0.510000,0.510000,-0.000000)
add r1.xyz, r1.xyzx, r3.xyzx
mov r2.xyz, l(0.510000,0.510000,0.510000,-0.000000)
add r2.xyz, r2.xyzx, r3.xyzx
div r2.xyz, r2.xyzx, l(2.020000, 2.020000, 2.020000, 0.000000)
round_ni r2.xyz, r2.xyzx
mul r2.xyz, r2.xyzx, l(2.020000, 2.020000, 2.020000, 0.000000)
mov r2.xyz, -r2.xyzx
add r1.xyz, r1.xyzx, r2.xyzx
add r1.xyz, r1.xyzx, l(-0.510000, -0.510000, -0.510000, 0.000000)
max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
min r1.xyz, r1.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
mov r1.xyz, r1.xyzx
mov r0.z, cb1[22].w
mov r0.xy, r0.xyxx
mov r0.w, cb0[0].y
utof r1.w, cb0[0].x
add r0.z, r0.z, l(0.500000)
ftoi r0.z, r0.z
ige r2.x, r0.z, l(4)
if_nz r2.x
  mov r2.yzw, r1.xxyz
endif
if_z r2.x
  mul r0.xy, r0.wwww, r0.xyxx
  round_ni r0.xy, r0.xyxx
  mov r0.w, l(0)
  if_z r0.z
    ftoi r3.xy, r0.xyxx
    and r3.xy, r3.xyxx, l(3, 3, 0, 0)
    imul null, r2.x, r3.y, l(4)
    iadd r2.x, r3.x, r2.x
    mov r2.x, x0[r2.x + 0].x
    itof r0.w, r2.x
  else
    ieq r2.x, r0.z, l(1)
    if_nz r2.x
      ftoi r3.xy, r0.xyxx
      and r3.xy, r3.xyxx, l(3, 3, 0, 0)
      imul null, r2.x, r3.y, l(4)
      iadd r2.x, r3.x, r2.x
      mov r2.x, x1[r2.x + 0].x
      itof r0.w, r2.x
    else
      ieq r0.z, r0.z, l(2)
      if_nz r0.z
        ftoi r0.xy, r0.xyxx
        ftoi r0.z, r1.w
        imul null, r0.x, r0.x, l(0x5f356495)
        imul null, r0.y, r0.y, l(0xe336beb9)
        xor r0.x, r0.y, r0.x
        imul null, r0.y, r0.z, l(0x9e3779b1)
        xor r0.x, r0.y, r0.x
        mov r0.y, l(16)
        ushr r0.y, r0.x, r0.y
        xor r0.x, r0.y, r0.x
        imul null, r0.x, r0.x, l(0x85ebca77)
        mov r0.y, l(13)
        ushr r0.y, r0.x, r0.y
        xor r0.x, r0.y, r0.x
        imul null, r0.x, r0.x, l(0xc2b2ae3d)
        mov r0.y, l(16)
        ushr r0.y, r0.x, r0.y
        xor r0.x, r0.y, r0.x
        and r0.x, r0.x, l(7)
        itof r0.w, r0.x
      endif
    endif
  endif
  mul r0.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000)
  add r0.xyz, r0.wwww, r0.xyzx
  max r0.xyz, r0.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
  min r0.xyz, r0.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000)
  div r0.xyz, r0.xyzx, l(8.000000, 8.000000, 8.000000, 0.000000)
  round_ni r0.xyz, r0.xyzx
  min r0.xyz, r0.xyzx, l(31.000000, 31.000000, 31.000000, 0.000000)
  mul r1.xyz, r0.xyzx, l(8.000000, 8.000000, 8.000000, 0.000000)
  div r0.xyz, r0.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000)
  round_ni r0.xyz, r0.xyzx
  add r0.xyz, r0.xyzx, r1.xyzx
  div r2.yzw, r0.xxyz, l(0.000000, 255.000000, 255.000000, 255.000000)
endif
mov r2.yzw, r2.yyzw
mov r0.xyz, -r2.yzwy
add r0.xyz, r0.xyzx, cb1[55].xyzx
mul r0.xyz, r0.xyzx, cb1[55].wwww
add r0.xyz, r0.xyzx, r2.yzwy
mov r0.xyz, r0.xyzx
mov r0.w, l(1.000000)
mov o0.xyzw, r0.xyzw
ret
// Approximately 289 instruction slots used

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
