// 2D elements
// ---- Created with geo-11 v0.7.10 on Sun Aug 30 01:00:51 2026
cbuffer cb1 : register(b1)
{
  float4 cb1[150];
}

cbuffer cb0 : register(b0)
{
  float4 cb0[96];
}




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

static const float near = 0.00001;
static const float far = 1;

float world_z_from_depth_buffer(float x, float y)
{
    uint width, height;
    float z;

    DepthBuffer.GetDimensions(width, height);

    x = min(max((x / 2 + 0.5) * width, 0), width - 1);
    y = min(max((-y / 2 + 0.5) * height, 0), height - 1);
    z = DepthBuffer.Load(int3(x, y, 0)).x;
    if (z == 1)
        return 0;

  return (far*near/((1-z)*near) + (far*z));
}

// from masterotaku's Batman Arkam Knight fix:
// https://helixmod.blogspot.com/2020/12/batman-arkham-knight-dx11.html
float adjust_from_depth_buffer(float x, float y, float numsamples)
{
    float4 stereo = StereoParams.Load(0);
    // if separation is not present (depth is 0), abort
    if (stereo.x==0) {return 0;}
    float separation = stereo.x;
    float convergence = stereo.y;
    float old_offset, offset, w, sampled_w, distance;
    uint i;

    offset = (near - convergence) * separation; // Z = X offset from center
    distance = separation - offset;         // Total distance to cover (separation - starting X offset)

    old_offset = offset;
    for (i = 0; i < numsamples; i++) {
        offset += distance / numsamples;

        // Calculate depth for this point on the line:
        w = (separation * convergence * 0.1) / (separation - offset);

        sampled_w = world_z_from_depth_buffer(x + offset, y);
        if (sampled_w == 0)
            return separation;

        // If the sampled depth is closer than the calculated depth,
        // we have found something that intersects the line, so exit
        // the loop and return the last point that was not intersected:
        if (w > sampled_w)
            break;

        old_offset = offset;
    }

    return old_offset;
}

void main(
  float4 v0 : POSITION0,
  float4 v1 : COLOR0,
  float4 v2 : COLOR1,
  float4 v3 : TEXCOORD0,
  float4 v4 : TEXCOORD1,
  float4 v5 : TEXCOORD2,
  float4 v6 : TEXCOORD3,
  float4 v7 : TEXCOORD4,
  float4 v8 : TEXCOORD5,
  float4 v9 : TEXCOORD6,
  float4 v10 : TEXCOORD7,
  float v11 : TEXCOORD13,
  out float4 o0 : SV_POSITION0,
  out float4 o1 : TEXCOORD8,
  out float4 o2 : COLOR0,
  out float4 o3 : COLOR1,
  out float4 o4 : TEXCOORD9,
  out float4 o5 : TEXCOORD0,
  out float4 o6 : TEXCOORD1,
  out float4 o7 : TEXCOORD2,
  out float4 o8 : TEXCOORD3,
  out float4 o9 : TEXCOORD4,
  out float4 o10 : TEXCOORD5,
  out float4 o11 : TEXCOORD6,
  out float4 o12 : TEXCOORD7)
{
  float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.xy = asint(cb0[86].ww) & int2(1,2);
  r0.z = cmp((int)r0.y != 0);
  r0.w = max(0, v0.z);
  r1.xy = min(float2(1,9.99999983e+12), r0.ww);
  r0.w = cmp(r1.x == v0.z);
  r0.z = (int)r0.w | (int)r0.z;
  r0.w = cmp(v0.w < 0);
  r1.x = cmp(v0.w != v0.w);
  r0.w = (int)r0.w | (int)r1.x;
  r0.w = r0.w ? 1 : v0.w;
  r2.y = r0.z ? r0.w : v0.w;
  r2.x = r0.y ? r1.y : v0.z;
  r0.xz = r0.xx ? r2.yx : v0.wz;
  r1.x = cmp(r0.x >= 0);
  r1.y = max(9.99999996e-12, r0.x);
  r1.y = min(9.99999983e+12, r1.y);
  r1.x = r1.x ? r1.y : r0.x;
  r1.x = 1 / r1.x;
  r1.yz = cb0[2].xy * v0.xy;
  r0.xy = cb0[2].zw + r1.yz;
  r0.w = 1;
  r0.xyzw = r0.xyzw * r1.xxxx;
  o1.x = dot(r0.xyzw, cb0[39].xyzw);
  o1.y = dot(r0.xyzw, cb0[40].xyzw);
  o1.z = dot(r0.xyzw, cb0[41].xyzw);
  o1.w = dot(r0.xyzw, cb0[42].xyzw);
  r1.xyzw = asint(cb0[1].xxxx) & int4(1,2,8,16);
  o2.xyzw = r1.xxxx ? v1.xyzw : cb0[13].xyzw;
  r2.xyzw = r1.yyyy ? v2.xyzw : cb0[14].xyzw;
  o4.x = saturate(r2.w);
  r3.xyzw = r1.zzzz ? v3.xyzw : float4(0,0,0,0);
  r1.xyzw = r1.wwww ? v4.xyzw : float4(0,0,0,0);
  r4.xyzw = asint(cb0[1].xxxx) & int4(32,64,128,256);
  r5.xyzw = r4.xxxx ? v5.xyzw : float4(0,0,0,0);
  r6.xyzw = r4.yyyy ? v6.xyzw : float4(0,0,0,0);
  r7.xyzw = r4.zzzz ? v7.xyzw : float4(0,0,0,0);
  r4.xyzw = r4.wwww ? v8.xyzw : float4(0,0,0,0);
  r8.xy = asint(cb0[1].xx) & int2(512,1024);
  r9.xyzw = r8.xxxx ? v9.xyzw : float4(0,0,0,0);
  r8.xyzw = r8.yyyy ? v10.xyzw : float4(0,0,0,0);
  r10.x = 255 & asint(cb0[87].x);
  r11.xyzw = cmp((int4)r10.xxxx == int4(1,2,3,4));
  r12.xyzw = r11.xxxx ? r1.xyzw : r3.xyzw;
  r12.xyzw = r11.yyyy ? r5.xyzw : r12.xyzw;
  r12.xyzw = r11.zzzz ? r6.xyzw : r12.xyzw;
  r11.xyzw = r11.wwww ? r7.xyzw : r12.xyzw;
  r10.yzw = cmp((int3)r10.xxx == int3(5,6,7));
  r11.xyzw = r10.yyyy ? r4.xyzw : r11.xyzw;
  r11.xyzw = r10.zzzz ? r9.xyzw : r11.xyzw;
  r11.xyzw = r10.wwww ? r8.xyzw : r11.xyzw;
  r10.y = 255 & asint(cb0[88].x);
  r12.xyzw = cmp((int4)r10.yyyy == int4(1,2,3,4));
  r13.xyzw = r12.xxxx ? r1.xyzw : r3.xyzw;
  r13.xyzw = r12.yyyy ? r5.xyzw : r13.xyzw;
  r13.xyzw = r12.zzzz ? r6.xyzw : r13.xyzw;
  r12.xyzw = r12.wwww ? r7.xyzw : r13.xyzw;
  r13.xyz = cmp((int3)r10.yyy == int3(5,6,7));
  r12.xyzw = r13.xxxx ? r4.xyzw : r12.xyzw;
  r12.xyzw = r13.yyyy ? r9.xyzw : r12.xyzw;
  r12.xyzw = r13.zzzz ? r8.xyzw : r12.xyzw;
  r10.z = 255 & asint(cb0[89].x);
  r13.xyzw = cmp((int4)r10.zzzz == int4(1,2,3,4));
  r14.xyzw = r13.xxxx ? r1.xyzw : r3.xyzw;
  r14.xyzw = r13.yyyy ? r5.xyzw : r14.xyzw;
  r14.xyzw = r13.zzzz ? r6.xyzw : r14.xyzw;
  r13.xyzw = r13.wwww ? r7.xyzw : r14.xyzw;
  r14.xyz = cmp((int3)r10.zzz == int3(5,6,7));
  r13.xyzw = r14.xxxx ? r4.xyzw : r13.xyzw;
  r13.xyzw = r14.yyyy ? r9.xyzw : r13.xyzw;
  r13.xyzw = r14.zzzz ? r8.xyzw : r13.xyzw;
  r10.w = 255 & asint(cb0[90].x);
  r14.xyzw = cmp((int4)r10.wwww == int4(1,2,3,4));
  r15.xyzw = r14.xxxx ? r1.xyzw : r3.xyzw;
  r15.xyzw = r14.yyyy ? r5.xyzw : r15.xyzw;
  r15.xyzw = r14.zzzz ? r6.xyzw : r15.xyzw;
  r14.xyzw = r14.wwww ? r7.xyzw : r15.xyzw;
  r15.xyz = cmp((int3)r10.www == int3(5,6,7));
  r14.xyzw = r15.xxxx ? r4.xyzw : r14.xyzw;
  r14.xyzw = r15.yyyy ? r9.xyzw : r14.xyzw;
  r14.xyzw = r15.zzzz ? r8.xyzw : r14.xyzw;
  r15.x = 255 & asint(cb0[91].x);
  r16.xyzw = cmp((int4)r15.xxxx == int4(1,2,3,4));
  r17.xyzw = r16.xxxx ? r1.xyzw : r3.xyzw;
  r17.xyzw = r16.yyyy ? r5.xyzw : r17.xyzw;
  r17.xyzw = r16.zzzz ? r6.xyzw : r17.xyzw;
  r16.xyzw = r16.wwww ? r7.xyzw : r17.xyzw;
  r15.yzw = cmp((int3)r15.xxx == int3(5,6,7));
  r16.xyzw = r15.yyyy ? r4.xyzw : r16.xyzw;
  r16.xyzw = r15.zzzz ? r9.xyzw : r16.xyzw;
  r16.xyzw = r15.wwww ? r8.xyzw : r16.xyzw;
  r15.y = 255 & asint(cb0[92].x);
  r17.xyzw = cmp((int4)r15.yyyy == int4(1,2,3,4));
  r18.xyzw = r17.xxxx ? r1.xyzw : r3.xyzw;
  r18.xyzw = r17.yyyy ? r5.xyzw : r18.xyzw;
  r18.xyzw = r17.zzzz ? r6.xyzw : r18.xyzw;
  r17.xyzw = r17.wwww ? r7.xyzw : r18.xyzw;
  r18.xyz = cmp((int3)r15.yyy == int3(5,6,7));
  r17.xyzw = r18.xxxx ? r4.xyzw : r17.xyzw;
  r17.xyzw = r18.yyyy ? r9.xyzw : r17.xyzw;
  r17.xyzw = r18.zzzz ? r8.xyzw : r17.xyzw;
  r15.z = 255 & asint(cb0[93].x);
  r18.xyzw = cmp((int4)r15.zzzz == int4(1,2,3,4));
  r19.xyzw = r18.xxxx ? r1.xyzw : r3.xyzw;
  r19.xyzw = r18.yyyy ? r5.xyzw : r19.xyzw;
  r19.xyzw = r18.zzzz ? r6.xyzw : r19.xyzw;
  r18.xyzw = r18.wwww ? r7.xyzw : r19.xyzw;
  r19.xyz = cmp((int3)r15.zzz == int3(5,6,7));
  r18.xyzw = r19.xxxx ? r4.xyzw : r18.xyzw;
  r18.xyzw = r19.yyyy ? r9.xyzw : r18.xyzw;
  r18.xyzw = r19.zzzz ? r8.xyzw : r18.xyzw;
  r15.w = 255 & asint(cb0[94].x);
  r19.xyzw = cmp((int4)r15.wwww == int4(1,2,3,4));
  r1.xyzw = r19.xxxx ? r1.xyzw : r3.xyzw;
  r1.xyzw = r19.yyyy ? r5.xyzw : r1.xyzw;
  r1.xyzw = r19.zzzz ? r6.xyzw : r1.xyzw;
  r1.xyzw = r19.wwww ? r7.xyzw : r1.xyzw;
  r3.xyz = cmp((int3)r15.www == int3(5,6,7));
  r1.xyzw = r3.xxxx ? r4.xyzw : r1.xyzw;
  r1.xyzw = r3.yyyy ? r9.xyzw : r1.xyzw;
  r1.xyzw = r3.zzzz ? r8.xyzw : r1.xyzw;
  if (cb0[95].w == 0) {
    r3.x = cmp(4 != asint(cb0[r10.x+87].y));
    r11.w = r3.x ? 1 : r11.w;
    r3.x = 256 & asint(cb0[r10.x+87].z);
    r3.y = cb0[r10.x+87].y;
    r3.y = dot(r11.xyzw, cb1[r3.y+145].xyzw);
    r11.w = r3.x ? r3.y : r11.w;
    r3.x = cmp(4 != asint(cb0[r10.y+87].y));
    r12.w = r3.x ? 1 : r12.w;
    r3.x = 256 & asint(cb0[88].z);
    r3.y = cb0[r10.y+87].y;
    r3.y = dot(r12.xyzw, cb1[r3.y+145].xyzw);
    r12.w = r3.x ? r3.y : r12.w;
    r3.x = cmp(4 != asint(cb0[r10.z+87].y));
    r13.w = r3.x ? 1 : r13.w;
    r3.x = 256 & asint(cb0[89].z);
    r3.y = cb0[r10.z+87].y;
    r3.y = dot(r13.xyzw, cb1[r3.y+145].xyzw);
    r13.w = r3.x ? r3.y : r13.w;
    r3.x = cmp(4 != asint(cb0[r10.w+87].y));
    r14.w = r3.x ? 1 : r14.w;
    r3.x = 256 & asint(cb0[90].z);
    r3.y = cb0[r10.w+87].y;
    r3.y = dot(r14.xyzw, cb1[r3.y+145].xyzw);
    r14.w = r3.x ? r3.y : r14.w;
    r3.x = cmp(4 != asint(cb0[r15.x+87].y));
    r16.w = r3.x ? 1 : r16.w;
    r3.x = 256 & asint(cb0[91].z);
    r3.y = cb0[r15.x+87].y;
    r3.y = dot(r16.xyzw, cb1[r3.y+145].xyzw);
    r16.w = r3.x ? r3.y : r16.w;
    r3.x = cmp(4 != asint(cb0[r15.y+87].y));
    r17.w = r3.x ? 1 : r17.w;
    r3.x = 256 & asint(cb0[92].z);
    r3.y = cb0[r15.y+87].y;
    r3.y = dot(r17.xyzw, cb1[r3.y+145].xyzw);
    r17.w = r3.x ? r3.y : r17.w;
    r3.x = cmp(4 != asint(cb0[r15.z+87].y));
    r18.w = r3.x ? 1 : r18.w;
    r3.x = 256 & asint(cb0[93].z);
    r3.y = cb0[r15.z+87].y;
    r3.y = dot(r18.xyzw, cb1[r3.y+145].xyzw);
    r18.w = r3.x ? r3.y : r18.w;
    r3.x = cmp(4 != asint(cb0[r15.w+87].y));
    r1.w = r3.x ? 1 : r1.w;
    r3.x = 256 & asint(cb0[94].z);
    r3.y = cb0[r15.w+87].y;
    r3.y = dot(r1.xyzw, cb1[r3.y+145].xyzw);
    r1.w = r3.x ? r3.y : r1.w;
  }
  o0.xyzw = r0.xyzw;

  float presetLow = IniParams[10].x;

  if (presetLow == 1)
  {
    o0.x += adjust_from_depth_buffer(0,0,255);
  }

  // target only the gameplay area
  //if (o0.x > -0.49 && o0.x < 0.5)
  //{
  //  o0.x += adjust_from_depth_buffer(0,0,255);
  //}

  o3.xyzw = r2.xyzw;
  o4.yzw = v11.xxx;
  o5.xyzw = r11.xyzw;
  o6.xyzw = r12.xyzw;
  o7.xyzw = r13.xyzw;
  o8.xyzw = r14.xyzw;
  o9.xyzw = r16.xyzw;
  o10.xyzw = r17.xyzw;
  o11.xyzw = r18.xyzw;
  o12.xyzw = r1.xyzw;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v0.7.10 on Sun Aug 30 01:00:51 2026
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION                 0   xyzw        0     NONE   float   xyzw
// COLOR                    0   xyzw        1     NONE   float   xyzw
// COLOR                    1   xyzw        2     NONE   float   xyzw
// TEXCOORD                 0   xyzw        3     NONE   float   xyzw
// TEXCOORD                 1   xyzw        4     NONE   float   xyzw
// TEXCOORD                 2   xyzw        5     NONE   float   xyzw
// TEXCOORD                 3   xyzw        6     NONE   float   xyzw
// TEXCOORD                 4   xyzw        7     NONE   float   xyzw
// TEXCOORD                 5   xyzw        8     NONE   float   xyzw
// TEXCOORD                 6   xyzw        9     NONE   float   xyzw
// TEXCOORD                 7   xyzw       10     NONE   float   xyzw
// TEXCOORD                13   x          11     NONE   float   x
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION              0   xyzw        0      POS   float   xyzw
// TEXCOORD                 8   xyzw        1     NONE   float   xyzw
// COLOR                    0   xyzw        2     NONE   float   xyzw
// COLOR                    1   xyzw        3     NONE   float   xyzw
// TEXCOORD                 9   xyzw        4     NONE   float   xyzw
// TEXCOORD                 0   xyzw        5     NONE   float   xyzw
// TEXCOORD                 1   xyzw        6     NONE   float   xyzw
// TEXCOORD                 2   xyzw        7     NONE   float   xyzw
// TEXCOORD                 3   xyzw        8     NONE   float   xyzw
// TEXCOORD                 4   xyzw        9     NONE   float   xyzw
// TEXCOORD                 5   xyzw       10     NONE   float   xyzw
// TEXCOORD                 6   xyzw       11     NONE   float   xyzw
// TEXCOORD                 7   xyzw       12     NONE   float   xyzw
//
vs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer CB0[96], dynamicIndexed
dcl_constantbuffer CB1[150], dynamicIndexed
dcl_input v0.xyzw
dcl_input v1.xyzw
dcl_input v2.xyzw
dcl_input v3.xyzw
dcl_input v4.xyzw
dcl_input v5.xyzw
dcl_input v6.xyzw
dcl_input v7.xyzw
dcl_input v8.xyzw
dcl_input v9.xyzw
dcl_input v10.xyzw
dcl_input v11.x
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xyzw
dcl_output o4.xyzw
dcl_output o5.xyzw
dcl_output o6.xyzw
dcl_output o7.xyzw
dcl_output o8.xyzw
dcl_output o9.xyzw
dcl_output o10.xyzw
dcl_output o11.xyzw
dcl_output o12.xyzw
dcl_temps 20
and [precise(xy)] r0.xy, cb0[86].wwww, l(1, 2, 0, 0)
ine [precise(z)] r0.z, r0.y, l(0)
max [precise(w)] r0.w, v0.z, l(0.000000)
min [precise(xy)] r1.xy, r0.wwww, l(1.000000, 9999999827968.000000, 0.000000, 0.000000)
eq [precise(w)] r0.w, r1.x, v0.z
or [precise(z)] r0.z, r0.w, r0.z
lt [precise(w)] r0.w, v0.w, l(0.000000)
ne [precise(x)] r1.x, v0.w, v0.w
or [precise(w)] r0.w, r0.w, r1.x
movc [precise(w)] r0.w, r0.w, l(1.000000), v0.w
movc [precise(y)] r2.y, r0.z, r0.w, v0.w
movc [precise(x)] r2.x, r0.y, r1.y, v0.z
movc [precise(xz)] r0.xz, r0.xxxx, r2.yyxy, v0.wwzw
ge [precise(x)] r1.x, r0.x, l(0.000000)
max [precise(y)] r1.y, r0.x, l(9.999999960E-12)
min [precise(y)] r1.y, r1.y, l(9999999827968.000000)
movc [precise(x)] r1.x, r1.x, r1.y, r0.x
div [precise(x)] r1.x, l(1.000000, 1.000000, 1.000000, 1.000000), r1.x
mul [precise(yz)] r1.yz, v0.xxyx, cb0[2].xxyx
add [precise(xy)] r0.xy, r1.yzyy, cb0[2].zwzz
mov [precise(w)] r0.w, l(1.000000)
mul [precise] r0.xyzw, r1.xxxx, r0.xyzw
dp4 [precise(x)] o1.x, r0.xyzw, cb0[39].xyzw
dp4 [precise(y)] o1.y, r0.xyzw, cb0[40].xyzw
dp4 [precise(z)] o1.z, r0.xyzw, cb0[41].xyzw
dp4 [precise(w)] o1.w, r0.xyzw, cb0[42].xyzw
and [precise] r1.xyzw, cb0[1].xxxx, l(1, 2, 8, 16)
movc [precise] o2.xyzw, r1.xxxx, v1.xyzw, cb0[13].xyzw
movc [precise] r2.xyzw, r1.yyyy, v2.xyzw, cb0[14].xyzw
mov_sat [precise(x)] o4.x, r2.w
movc [precise] r3.xyzw, r1.zzzz, v3.xyzw, l(0,0,0,0)
movc [precise] r1.xyzw, r1.wwww, v4.xyzw, l(0,0,0,0)
and [precise] r4.xyzw, cb0[1].xxxx, l(32, 64, 128, 256)
movc [precise] r5.xyzw, r4.xxxx, v5.xyzw, l(0,0,0,0)
movc [precise] r6.xyzw, r4.yyyy, v6.xyzw, l(0,0,0,0)
movc [precise] r7.xyzw, r4.zzzz, v7.xyzw, l(0,0,0,0)
movc [precise] r4.xyzw, r4.wwww, v8.xyzw, l(0,0,0,0)
and [precise(xy)] r8.xy, cb0[1].xxxx, l(512, 1024, 0, 0)
movc [precise] r9.xyzw, r8.xxxx, v9.xyzw, l(0,0,0,0)
movc [precise] r8.xyzw, r8.yyyy, v10.xyzw, l(0,0,0,0)
and [precise(x)] r10.x, l(255), cb0[87].x
ieq [precise] r11.xyzw, r10.xxxx, l(1, 2, 3, 4)
movc [precise] r12.xyzw, r11.xxxx, r1.xyzw, r3.xyzw
movc [precise] r12.xyzw, r11.yyyy, r5.xyzw, r12.xyzw
movc [precise] r12.xyzw, r11.zzzz, r6.xyzw, r12.xyzw
movc [precise] r11.xyzw, r11.wwww, r7.xyzw, r12.xyzw
ieq [precise(yzw)] r10.yzw, r10.xxxx, l(0, 5, 6, 7)
movc [precise] r11.xyzw, r10.yyyy, r4.xyzw, r11.xyzw
movc [precise] r11.xyzw, r10.zzzz, r9.xyzw, r11.xyzw
movc [precise] r11.xyzw, r10.wwww, r8.xyzw, r11.xyzw
and [precise(y)] r10.y, l(255), cb0[88].x
ieq [precise] r12.xyzw, r10.yyyy, l(1, 2, 3, 4)
movc [precise] r13.xyzw, r12.xxxx, r1.xyzw, r3.xyzw
movc [precise] r13.xyzw, r12.yyyy, r5.xyzw, r13.xyzw
movc [precise] r13.xyzw, r12.zzzz, r6.xyzw, r13.xyzw
movc [precise] r12.xyzw, r12.wwww, r7.xyzw, r13.xyzw
ieq [precise(xyz)] r13.xyz, r10.yyyy, l(5, 6, 7, 0)
movc [precise] r12.xyzw, r13.xxxx, r4.xyzw, r12.xyzw
movc [precise] r12.xyzw, r13.yyyy, r9.xyzw, r12.xyzw
movc [precise] r12.xyzw, r13.zzzz, r8.xyzw, r12.xyzw
and [precise(z)] r10.z, l(255), cb0[89].x
ieq [precise] r13.xyzw, r10.zzzz, l(1, 2, 3, 4)
movc [precise] r14.xyzw, r13.xxxx, r1.xyzw, r3.xyzw
movc [precise] r14.xyzw, r13.yyyy, r5.xyzw, r14.xyzw
movc [precise] r14.xyzw, r13.zzzz, r6.xyzw, r14.xyzw
movc [precise] r13.xyzw, r13.wwww, r7.xyzw, r14.xyzw
ieq [precise(xyz)] r14.xyz, r10.zzzz, l(5, 6, 7, 0)
movc [precise] r13.xyzw, r14.xxxx, r4.xyzw, r13.xyzw
movc [precise] r13.xyzw, r14.yyyy, r9.xyzw, r13.xyzw
movc [precise] r13.xyzw, r14.zzzz, r8.xyzw, r13.xyzw
and [precise(w)] r10.w, l(255), cb0[90].x
ieq [precise] r14.xyzw, r10.wwww, l(1, 2, 3, 4)
movc [precise] r15.xyzw, r14.xxxx, r1.xyzw, r3.xyzw
movc [precise] r15.xyzw, r14.yyyy, r5.xyzw, r15.xyzw
movc [precise] r15.xyzw, r14.zzzz, r6.xyzw, r15.xyzw
movc [precise] r14.xyzw, r14.wwww, r7.xyzw, r15.xyzw
ieq [precise(xyz)] r15.xyz, r10.wwww, l(5, 6, 7, 0)
movc [precise] r14.xyzw, r15.xxxx, r4.xyzw, r14.xyzw
movc [precise] r14.xyzw, r15.yyyy, r9.xyzw, r14.xyzw
movc [precise] r14.xyzw, r15.zzzz, r8.xyzw, r14.xyzw
and [precise(x)] r15.x, l(255), cb0[91].x
ieq [precise] r16.xyzw, r15.xxxx, l(1, 2, 3, 4)
movc [precise] r17.xyzw, r16.xxxx, r1.xyzw, r3.xyzw
movc [precise] r17.xyzw, r16.yyyy, r5.xyzw, r17.xyzw
movc [precise] r17.xyzw, r16.zzzz, r6.xyzw, r17.xyzw
movc [precise] r16.xyzw, r16.wwww, r7.xyzw, r17.xyzw
ieq [precise(yzw)] r15.yzw, r15.xxxx, l(0, 5, 6, 7)
movc [precise] r16.xyzw, r15.yyyy, r4.xyzw, r16.xyzw
movc [precise] r16.xyzw, r15.zzzz, r9.xyzw, r16.xyzw
movc [precise] r16.xyzw, r15.wwww, r8.xyzw, r16.xyzw
and [precise(y)] r15.y, l(255), cb0[92].x
ieq [precise] r17.xyzw, r15.yyyy, l(1, 2, 3, 4)
movc [precise] r18.xyzw, r17.xxxx, r1.xyzw, r3.xyzw
movc [precise] r18.xyzw, r17.yyyy, r5.xyzw, r18.xyzw
movc [precise] r18.xyzw, r17.zzzz, r6.xyzw, r18.xyzw
movc [precise] r17.xyzw, r17.wwww, r7.xyzw, r18.xyzw
ieq [precise(xyz)] r18.xyz, r15.yyyy, l(5, 6, 7, 0)
movc [precise] r17.xyzw, r18.xxxx, r4.xyzw, r17.xyzw
movc [precise] r17.xyzw, r18.yyyy, r9.xyzw, r17.xyzw
movc [precise] r17.xyzw, r18.zzzz, r8.xyzw, r17.xyzw
and [precise(z)] r15.z, l(255), cb0[93].x
ieq [precise] r18.xyzw, r15.zzzz, l(1, 2, 3, 4)
movc [precise] r19.xyzw, r18.xxxx, r1.xyzw, r3.xyzw
movc [precise] r19.xyzw, r18.yyyy, r5.xyzw, r19.xyzw
movc [precise] r19.xyzw, r18.zzzz, r6.xyzw, r19.xyzw
movc [precise] r18.xyzw, r18.wwww, r7.xyzw, r19.xyzw
ieq [precise(xyz)] r19.xyz, r15.zzzz, l(5, 6, 7, 0)
movc [precise] r18.xyzw, r19.xxxx, r4.xyzw, r18.xyzw
movc [precise] r18.xyzw, r19.yyyy, r9.xyzw, r18.xyzw
movc [precise] r18.xyzw, r19.zzzz, r8.xyzw, r18.xyzw
and [precise(w)] r15.w, l(255), cb0[94].x
ieq [precise] r19.xyzw, r15.wwww, l(1, 2, 3, 4)
movc [precise] r1.xyzw, r19.xxxx, r1.xyzw, r3.xyzw
movc [precise] r1.xyzw, r19.yyyy, r5.xyzw, r1.xyzw
movc [precise] r1.xyzw, r19.zzzz, r6.xyzw, r1.xyzw
movc [precise] r1.xyzw, r19.wwww, r7.xyzw, r1.xyzw
ieq [precise(xyz)] r3.xyz, r15.wwww, l(5, 6, 7, 0)
movc [precise] r1.xyzw, r3.xxxx, r4.xyzw, r1.xyzw
movc [precise] r1.xyzw, r3.yyyy, r9.xyzw, r1.xyzw
movc [precise] r1.xyzw, r3.zzzz, r8.xyzw, r1.xyzw
if_z cb0[95].w
  ine [precise(x)] r3.x, l(4), cb0[r10.x + 87].y
  movc [precise(w)] r11.w, r3.x, l(1.000000), r11.w
  and [precise(x)] r3.x, l(256), cb0[87].z
  mov [precise(y)] r3.y, cb0[r10.x + 87].y
  dp4 [precise(y)] r3.y, r11.xyzw, cb1[r3.y + 145].xyzw
  movc [precise(w)] r11.w, r3.x, r3.y, r11.w
  ine [precise(x)] r3.x, l(4), cb0[r10.y + 87].y
  movc [precise(w)] r12.w, r3.x, l(1.000000), r12.w
  and [precise(x)] r3.x, l(256), cb0[88].z
  mov [precise(y)] r3.y, cb0[r10.y + 87].y
  dp4 [precise(y)] r3.y, r12.xyzw, cb1[r3.y + 145].xyzw
  movc [precise(w)] r12.w, r3.x, r3.y, r12.w
  ine [precise(x)] r3.x, l(4), cb0[r10.z + 87].y
  movc [precise(w)] r13.w, r3.x, l(1.000000), r13.w
  and [precise(x)] r3.x, l(256), cb0[89].z
  mov [precise(y)] r3.y, cb0[r10.z + 87].y
  dp4 [precise(y)] r3.y, r13.xyzw, cb1[r3.y + 145].xyzw
  movc [precise(w)] r13.w, r3.x, r3.y, r13.w
  ine [precise(x)] r3.x, l(4), cb0[r10.w + 87].y
  movc [precise(w)] r14.w, r3.x, l(1.000000), r14.w
  and [precise(x)] r3.x, l(256), cb0[90].z
  mov [precise(y)] r3.y, cb0[r10.w + 87].y
  dp4 [precise(y)] r3.y, r14.xyzw, cb1[r3.y + 145].xyzw
  movc [precise(w)] r14.w, r3.x, r3.y, r14.w
  ine [precise(x)] r3.x, l(4), cb0[r15.x + 87].y
  movc [precise(w)] r16.w, r3.x, l(1.000000), r16.w
  and [precise(x)] r3.x, l(256), cb0[91].z
  mov [precise(y)] r3.y, cb0[r15.x + 87].y
  dp4 [precise(y)] r3.y, r16.xyzw, cb1[r3.y + 145].xyzw
  movc [precise(w)] r16.w, r3.x, r3.y, r16.w
  ine [precise(x)] r3.x, l(4), cb0[r15.y + 87].y
  movc [precise(w)] r17.w, r3.x, l(1.000000), r17.w
  and [precise(x)] r3.x, l(256), cb0[92].z
  mov [precise(y)] r3.y, cb0[r15.y + 87].y
  dp4 [precise(y)] r3.y, r17.xyzw, cb1[r3.y + 145].xyzw
  movc [precise(w)] r17.w, r3.x, r3.y, r17.w
  ine [precise(x)] r3.x, l(4), cb0[r15.z + 87].y
  movc [precise(w)] r18.w, r3.x, l(1.000000), r18.w
  and [precise(x)] r3.x, l(256), cb0[93].z
  mov [precise(y)] r3.y, cb0[r15.z + 87].y
  dp4 [precise(y)] r3.y, r18.xyzw, cb1[r3.y + 145].xyzw
  movc [precise(w)] r18.w, r3.x, r3.y, r18.w
  ine [precise(x)] r3.x, l(4), cb0[r15.w + 87].y
  movc [precise(w)] r1.w, r3.x, l(1.000000), r1.w
  and [precise(x)] r3.x, l(256), cb0[94].z
  mov [precise(y)] r3.y, cb0[r15.w + 87].y
  dp4 [precise(y)] r3.y, r1.xyzw, cb1[r3.y + 145].xyzw
  movc [precise(w)] r1.w, r3.x, r3.y, r1.w
endif
mov [precise] o0.xyzw, r0.xyzw
mov [precise] o3.xyzw, r2.xyzw
mov [precise(yzw)] o4.yzw, v11.xxxx
mov [precise] o5.xyzw, r11.xyzw
mov [precise] o6.xyzw, r12.xyzw
mov [precise] o7.xyzw, r13.xyzw
mov [precise] o8.xyzw, r14.xyzw
mov [precise] o9.xyzw, r16.xyzw
mov [precise] o10.xyzw, r17.xyzw
mov [precise] o11.xyzw, r18.xyzw
mov [precise] o12.xyzw, r1.xyzw
ret
// Approximately 0 instruction slots used

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