mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-26 13:32:08 +00:00
11980 lines
633 KiB
C#
11980 lines
633 KiB
C#
/*
|
|
* Copyright © 2003 Maxim Stepin (maxst@hiend3d.com)
|
|
*
|
|
* Copyright © 2010 Cameron Zemek (grom@zeminvaders.net)
|
|
*
|
|
* Copyright © 2011 Tamme Schichler (tamme.schichler@googlemail.com)
|
|
*
|
|
* This file is part of hqxSharp.
|
|
*
|
|
* hqxSharp is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* hqxSharp is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with hqxSharp. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Drawing;
|
|
using System.Drawing.Imaging;
|
|
|
|
namespace Hqx
|
|
{
|
|
/// <summary>
|
|
/// Provides access to hqxSharp, the extended port of the hqx pixel art magnification filter.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// The main focus of hqxSharp lies on asset creation and use in tools; it is not necessarily intended as final output for real-time graphics.
|
|
/// <para>This means that additional functionality (like alpha support and variable AYUV thresholds) and easier code are usually preferred over a small performance increase.</para>
|
|
/// <para>Calls to hqx methods are compatible with the corresponding hqxSharp methods and the default thresholds are those used in hqx.</para>
|
|
/// </remarks>
|
|
public static class HqxSharp
|
|
{
|
|
|
|
#region Common
|
|
private const int Ymask = 0x00ff0000;
|
|
private const int Umask = 0x0000ff00;
|
|
private const int Vmask = 0x000000ff;
|
|
|
|
/// <summary>
|
|
/// Compares two ARGB colors according to the provided Y, U, V and A thresholds.
|
|
/// </summary>
|
|
/// <param name="c1">An ARGB color.</param>
|
|
/// <param name="c2">A second ARGB color.</param>
|
|
/// <param name="trY">The Y (luminance) threshold.</param>
|
|
/// <param name="trU">The U (chrominance) threshold.</param>
|
|
/// <param name="trV">The V (chrominance) threshold.</param>
|
|
/// <param name="trA">The A (transparency) threshold.</param>
|
|
/// <returns>Returns true if colors differ more than the thresholds permit, otherwise false.</returns>
|
|
private static bool Diff(uint c1, uint c2, uint trY, uint trU, uint trV, uint trA)
|
|
{
|
|
int YUV1 = (int)GetYuv(c1);
|
|
int YUV2 = (int)GetYuv(c2);
|
|
|
|
return ((Math.Abs((YUV1 & Ymask) - (YUV2 & Ymask)) > trY) ||
|
|
(Math.Abs((YUV1 & Umask) - (YUV2 & Umask)) > trU) ||
|
|
(Math.Abs((YUV1 & Vmask) - (YUV2 & Vmask)) > trV) ||
|
|
(Math.Abs(((int)((uint)c1 >> 24) - (int)((uint)c2 >> 24))) > trA));
|
|
}
|
|
#endregion
|
|
|
|
#region Interpolation
|
|
private const uint Mask4 = 0xff000000;
|
|
private const uint Mask2 = 0x0000ff00;
|
|
private const uint Mask13 = 0x00ff00ff;
|
|
|
|
// return statements:
|
|
// 1. line: green
|
|
// 2. line: red and blue
|
|
// 3. line: alpha
|
|
|
|
private static uint Mix3To1(uint c1, uint c2)
|
|
{
|
|
//return (c1*3+c2) >> 2;
|
|
if (c1 == c2)
|
|
{
|
|
return c1;
|
|
|
|
}
|
|
return ((((c1 & Mask2) * 3 + (c2 & Mask2)) >> 2) & Mask2) |
|
|
((((c1 & Mask13) * 3 + (c2 & Mask13)) >> 2) & Mask13) |
|
|
((((c1 & Mask4) >> 2) * 3 + ((c2 & Mask4) >> 2)) & Mask4);
|
|
}
|
|
|
|
private static uint Mix2To1To1(uint c1, uint c2, uint c3)
|
|
{
|
|
//return (c1*2+c2+c3) >> 2;
|
|
return ((((c1 & Mask2) * 2 + (c2 & Mask2) + (c3 & Mask2)) >> 2) & Mask2) |
|
|
((((c1 & Mask13) * 2 + (c2 & Mask13) + (c3 & Mask13)) >> 2) & Mask13) |
|
|
((((c1 & Mask4) >> 2) * 2 + ((c2 & Mask4) >> 2) + ((c3 & Mask4) >> 2)) & Mask4);
|
|
}
|
|
|
|
private static uint Mix7To1(uint c1, uint c2)
|
|
{
|
|
//return (c1*7+c2)/8;
|
|
if (c1 == c2)
|
|
{
|
|
return c1;
|
|
|
|
}
|
|
return ((((c1 & Mask2) * 7 + (c2 & Mask2)) >> 3) & Mask2) |
|
|
((((c1 & Mask13) * 7 + (c2 & Mask13)) >> 3) & Mask13) |
|
|
((((c1 & Mask4) >> 3) * 7 + ((c2 & Mask4) >> 3)) & Mask4);
|
|
}
|
|
|
|
private static uint Mix2To7To7(uint c1, uint c2, uint c3)
|
|
{
|
|
//return (c1*2+(c2+c3)*7)/16;
|
|
return ((((c1 & Mask2) * 2 + (c2 & Mask2) * 7 + (c3 & Mask2) * 7) >> 4) & Mask2) |
|
|
((((c1 & Mask13) * 2 + (c2 & Mask13) * 7 + (c3 & Mask13) * 7) >> 4) & Mask13) |
|
|
((((c1 & Mask4) >> 4) * 2 + ((c2 & Mask4) >> 4) * 7 + ((c3 & Mask4) >> 4) * 7) & Mask4);
|
|
}
|
|
|
|
private static uint MixEven(uint c1, uint c2)
|
|
{
|
|
//return (c1+c2) >> 1;
|
|
if (c1 == c2)
|
|
{
|
|
return c1;
|
|
|
|
}
|
|
return ((((c1 & Mask2) + (c2 & Mask2)) >> 1) & Mask2) |
|
|
((((c1 & Mask13) + (c2 & Mask13)) >> 1) & Mask13) |
|
|
((((c1 & Mask4) >> 1) + ((c2 & Mask4) >> 1)) & Mask4);
|
|
}
|
|
|
|
private static uint Mix4To2To1(uint c1, uint c2, uint c3)
|
|
{
|
|
//return (c1*5+c2*2+c3)/8;
|
|
return ((((c1 & Mask2) * 5 + (c2 & Mask2) * 2 + (c3 & Mask2)) >> 3) & Mask2) |
|
|
((((c1 & Mask13) * 5 + (c2 & Mask13) * 2 + (c3 & Mask13)) >> 3) & Mask13) |
|
|
((((c1 & Mask4) >> 3) * 5 + ((c2 & Mask4) >> 3) * 2 + ((c3 & Mask4) >> 3)) & Mask4);
|
|
}
|
|
|
|
private static uint Mix6To1To1(uint c1, uint c2, uint c3)
|
|
{
|
|
//return (c1*6+c2+c3)/8;
|
|
return ((((c1 & Mask2) * 6 + (c2 & Mask2) + (c3 & Mask2)) >> 3) & Mask2) |
|
|
((((c1 & Mask13) * 6 + (c2 & Mask13) + (c3 & Mask13)) >> 3) & Mask13) |
|
|
((((c1 & Mask4) >> 3) * 6 + ((c2 & Mask4) >> 3) + ((c3 & Mask4) >> 3)) & Mask4);
|
|
}
|
|
|
|
private static uint Mix5To3(uint c1, uint c2)
|
|
{
|
|
//return (c1*5+c2*3)/8;
|
|
if (c1 == c2)
|
|
{
|
|
return c1;
|
|
|
|
}
|
|
return ((((c1 & Mask2) * 5 + (c2 & Mask2) * 3) >> 3) & Mask2) |
|
|
((((c1 & Mask13) * 5 + (c2 & Mask13) * 3) >> 3) & Mask13) |
|
|
((((c1 & Mask4) >> 3) * 5 + ((c2 & Mask4) >> 3) * 3) & Mask4);
|
|
}
|
|
|
|
private static uint Mix2To3To3(uint c1, uint c2, uint c3)
|
|
{
|
|
//return (c1*2+(c2+c3)*3)/8;
|
|
return ((((c1 & Mask2) * 2 + (c2 & Mask2) * 3 + (c3 & Mask2) * 3) >> 3) & Mask2) |
|
|
((((c1 & Mask13) * 2 + (c2 & Mask13) * 3 + (c3 & Mask13) * 3) >> 3) & Mask13) |
|
|
((((c1 & Mask4) >> 3) * 2 + ((c2 & Mask4) >> 3) * 3 + ((c3 & Mask4) >> 3) * 3) & Mask4);
|
|
}
|
|
|
|
private static uint Mix14To1To1(uint c1, uint c2, uint c3)
|
|
{
|
|
//return (c1*14+c2+c3)/16;
|
|
return ((((c1 & Mask2) * 14 + (c2 & Mask2) + (c3 & Mask2)) >> 4) & Mask2) |
|
|
((((c1 & Mask13) * 14 + (c2 & Mask13) + (c3 & Mask13)) >> 4) & Mask13) |
|
|
((((c1 & Mask4) >> 4) * 14 + ((c2 & Mask4) >> 4) + ((c3 & Mask4) >> 4)) & Mask4);
|
|
}
|
|
#endregion
|
|
|
|
#region RgbYuv
|
|
private const uint RgbMask = 0x00ffffff;
|
|
private static volatile int[] lookupTable;
|
|
private static int[] LookupTable
|
|
{
|
|
get
|
|
{
|
|
if (lookupTable == null)
|
|
Initialize();
|
|
return lookupTable;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets whether the lookup table is ready.
|
|
/// </summary>
|
|
private static bool Initialized
|
|
{
|
|
get
|
|
{
|
|
return lookupTable != null;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns the 24bit YUV equivalent of the provided 24bit RGB color.
|
|
/// <para>Any alpha component is dropped.</para>
|
|
/// </summary>
|
|
/// <param name="rgb">A 24bit rgb color.</param>
|
|
/// <returns>The corresponding 24bit YUV color.</returns>
|
|
private static int GetYuv(uint rgb)
|
|
{
|
|
return LookupTable[rgb & RgbMask];
|
|
}
|
|
|
|
/// <summary>
|
|
/// Calculates the lookup table.
|
|
/// </summary>
|
|
private static unsafe void Initialize()
|
|
{
|
|
var lTable = new int[0x1000000]; // 256 * 256 * 256
|
|
fixed (int* lookupP = lTable)
|
|
{
|
|
byte* lP = (byte*)lookupP;
|
|
for (uint i = 0; i < lTable.Length; i++)
|
|
{
|
|
float r = (i & 0xff0000) >> 16;
|
|
float g = (i & 0x00ff00) >> 8;
|
|
float b = (i & 0x0000ff);
|
|
|
|
lP++; //Skip alpha byte
|
|
*(lP++) = (byte)(.299 * r + .587 * g + .114 * b);
|
|
*(lP++) = (byte)((int)(-.169 * r - .331 * g + .5 * b) + 128);
|
|
*(lP++) = (byte)((int)(.5 * r - .419 * g - .081 * b) + 128);
|
|
}
|
|
}
|
|
lookupTable = lTable;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Releases the reference to the lookup table.
|
|
/// <para>The table has to be calculated again for the next lookup.</para>
|
|
/// </summary>
|
|
private static void UnloadLookupTable()
|
|
{
|
|
lookupTable = null;
|
|
}
|
|
#endregion
|
|
|
|
#region Hq2x
|
|
/// <summary>
|
|
/// This is the extended C# port of the hq2x algorithm.
|
|
/// <para>The image is scaled to twice its size.</para>
|
|
/// </summary>
|
|
/// <param name="bitmap">The source image.</param>
|
|
/// <param name="trY">The Y (luminance) threshold.</param>
|
|
/// <param name="trU">The U (chrominance) threshold.</param>
|
|
/// <param name="trV">The V (chrominance) threshold.</param>
|
|
/// <param name="trA">The A (transparency) threshold.</param>
|
|
/// <param name="wrapX">Used for images that can be seamlessly repeated horizontally.</param>
|
|
/// <param name="wrapY">Used for images that can be seamlessly repeated vertically.</param>
|
|
/// <returns>A new Bitmap instance that contains the source imagage scaled to twice its size.</returns>
|
|
public static unsafe Bitmap Scale2(Bitmap bitmap, uint trY = 48, uint trU = 7, uint trV = 6, uint trA = 0, bool wrapX = false, bool wrapY = false)
|
|
{
|
|
|
|
int Xres = bitmap.Width;
|
|
int Yres = bitmap.Height;
|
|
|
|
Bitmap dest = new Bitmap(bitmap.Width * 2, bitmap.Height * 2);
|
|
|
|
BitmapData bmpData = bitmap.LockBits(new Rectangle(Point.Empty, bitmap.Size), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
|
|
BitmapData destData = dest.LockBits(new Rectangle(Point.Empty, dest.Size), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
|
|
{
|
|
|
|
uint* sp = (uint*)bmpData.Scan0.ToPointer();
|
|
uint* dp = (uint*)destData.Scan0.ToPointer();
|
|
|
|
Scale2(sp, dp, Xres, Yres, trY, trU, trV, trA, wrapX, wrapY);
|
|
}
|
|
bitmap.UnlockBits(bmpData);
|
|
dest.UnlockBits(destData);
|
|
|
|
return dest;
|
|
}
|
|
|
|
/// <summary>
|
|
/// This is the extended C# port of the hq2x algorithm.
|
|
/// <para>The destination image must be exactly twice as large in both dimensions as the source image.</para>
|
|
/// </summary>
|
|
/// <param name="sp">A pointer to the source image.</param>
|
|
/// <param name="dp">A pointer to the destination image.</param>
|
|
/// <param name="Xres">The horizontal resolution of the source image.</param>
|
|
/// <param name="Yres">The vertical resolution of the source image.</param>
|
|
/// <param name="trY">The Y (luminance) threshold.</param>
|
|
/// <param name="trU">The U (chrominance) threshold.</param>
|
|
/// <param name="trV">The V (chrominance) threshold.</param>
|
|
/// <param name="trA">The A (transparency) threshold.</param>
|
|
/// <param name="wrapX">Used for images that can be seamlessly repeated horizontally.</param>
|
|
/// <param name="wrapY">Used for images that can be seamlessly repeated vertically.</param>
|
|
public static unsafe void Scale2(uint* sp, uint* dp, int Xres, int Yres, uint trY = 48, uint trU = 7, uint trV = 6, uint trA = 0, bool wrapX = false, bool wrapY = false)
|
|
{
|
|
//Don't shift trA, as it uses shift right instead of a mask for comparisons.
|
|
trY <<= 2 * 8;
|
|
trU <<= 1 * 8;
|
|
int dpL = Xres * 2;
|
|
|
|
int prevline, nextline;
|
|
uint[] w = new uint[9];
|
|
|
|
for (int j = 0; j < Yres; j++)
|
|
{
|
|
if (j > 0)
|
|
{
|
|
prevline = -Xres;
|
|
}
|
|
else
|
|
{
|
|
if (wrapY)
|
|
{
|
|
prevline = Xres * (Yres - 1);
|
|
}
|
|
else
|
|
{
|
|
prevline = 0;
|
|
}
|
|
}
|
|
if (j < Yres - 1)
|
|
{
|
|
nextline = Xres;
|
|
}
|
|
else
|
|
{
|
|
if (wrapY)
|
|
{
|
|
nextline = -(Xres * (Yres - 1));
|
|
}
|
|
else
|
|
{
|
|
nextline = 0;
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < Xres; i++)
|
|
{
|
|
w[1] = *(sp + prevline);
|
|
w[4] = *sp;
|
|
w[7] = *(sp + nextline);
|
|
|
|
if (i > 0)
|
|
{
|
|
w[0] = *(sp + prevline - 1);
|
|
w[3] = *(sp - 1);
|
|
w[6] = *(sp + nextline - 1);
|
|
}
|
|
else
|
|
{
|
|
if (wrapX)
|
|
{
|
|
w[0] = *(sp + prevline + Xres - 1);
|
|
w[3] = *(sp + Xres - 1);
|
|
w[6] = *(sp + nextline + Xres - 1);
|
|
}
|
|
else
|
|
{
|
|
w[0] = w[1];
|
|
w[3] = w[4];
|
|
w[6] = w[7];
|
|
}
|
|
}
|
|
|
|
if (i < Xres - 1)
|
|
{
|
|
w[2] = *(sp + prevline + 1);
|
|
w[5] = *(sp + 1);
|
|
w[8] = *(sp + nextline + 1);
|
|
}
|
|
else
|
|
{
|
|
if (wrapX)
|
|
{
|
|
w[2] = *(sp + prevline - Xres + 1);
|
|
w[5] = *(sp - Xres + 1);
|
|
w[8] = *(sp + nextline - Xres + 1);
|
|
}
|
|
else
|
|
{
|
|
w[2] = w[1];
|
|
w[5] = w[4];
|
|
w[8] = w[7];
|
|
}
|
|
}
|
|
|
|
int pattern = 0;
|
|
int flag = 1;
|
|
|
|
for (int k = 0; k < 9; k++)
|
|
{
|
|
if (k == 4) continue;
|
|
|
|
if (w[k] != w[4])
|
|
{
|
|
if (Diff(w[4], w[k], trY, trU, trV, trA))
|
|
pattern |= flag;
|
|
}
|
|
flag <<= 1;
|
|
}
|
|
|
|
switch (pattern)
|
|
{
|
|
case 0:
|
|
case 1:
|
|
case 4:
|
|
case 32:
|
|
case 128:
|
|
case 5:
|
|
case 132:
|
|
case 160:
|
|
case 33:
|
|
case 129:
|
|
case 36:
|
|
case 133:
|
|
case 164:
|
|
case 161:
|
|
case 37:
|
|
case 165:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 2:
|
|
case 34:
|
|
case 130:
|
|
case 162:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 16:
|
|
case 17:
|
|
case 48:
|
|
case 49:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 64:
|
|
case 65:
|
|
case 68:
|
|
case 69:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 8:
|
|
case 12:
|
|
case 136:
|
|
case 140:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 3:
|
|
case 35:
|
|
case 131:
|
|
case 163:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 6:
|
|
case 38:
|
|
case 134:
|
|
case 166:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 20:
|
|
case 21:
|
|
case 52:
|
|
case 53:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 144:
|
|
case 145:
|
|
case 176:
|
|
case 177:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 192:
|
|
case 193:
|
|
case 196:
|
|
case 197:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 96:
|
|
case 97:
|
|
case 100:
|
|
case 101:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 40:
|
|
case 44:
|
|
case 168:
|
|
case 172:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 9:
|
|
case 13:
|
|
case 137:
|
|
case 141:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 18:
|
|
case 50:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 80:
|
|
case 81:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 72:
|
|
case 76:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 10:
|
|
case 138:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 66:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 24:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 7:
|
|
case 39:
|
|
case 135:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 148:
|
|
case 149:
|
|
case 180:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 224:
|
|
case 228:
|
|
case 225:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 41:
|
|
case 169:
|
|
case 45:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 22:
|
|
case 54:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 208:
|
|
case 209:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 104:
|
|
case 108:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 11:
|
|
case 139:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 19:
|
|
case 51:
|
|
{
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix2To3To3(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 146:
|
|
case 178:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To3To3(w[4], w[1], w[5]);
|
|
*(dp + dpL + 1) = Mix4To2To1(w[4], w[5], w[7]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
break;
|
|
}
|
|
case 84:
|
|
case 85:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix4To2To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 1) = Mix2To3To3(w[4], w[5], w[7]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
break;
|
|
}
|
|
case 112:
|
|
case 113:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix2To3To3(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 200:
|
|
case 204:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To3To3(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix4To2To1(w[4], w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 73:
|
|
case 77:
|
|
{
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL) = Mix2To3To3(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 42:
|
|
case 170:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To3To3(w[4], w[3], w[1]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
}
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 14:
|
|
case 142:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To3To3(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 67:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 70:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 28:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 152:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 194:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 98:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 56:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 25:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 26:
|
|
case 31:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 82:
|
|
case 214:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 88:
|
|
case 248:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 74:
|
|
case 107:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 27:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 86:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 216:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 106:
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 30:
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 210:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 120:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 75:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 29:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 198:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 184:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 99:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 57:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 71:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 156:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 226:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 60:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 195:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 102:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 153:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 58:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix6To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix6To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 83:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix6To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 92:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix6To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 202:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix6To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix6To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 78:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix6To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix6To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 154:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix6To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix6To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 114:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix6To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 89:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix6To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 90:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix6To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix6To1To1(w[4], w[1], w[5]);
|
|
}
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix6To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 55:
|
|
case 23:
|
|
{
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix2To3To3(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 182:
|
|
case 150:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To3To3(w[4], w[1], w[5]);
|
|
*(dp + dpL + 1) = Mix4To2To1(w[4], w[5], w[7]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
break;
|
|
}
|
|
case 213:
|
|
case 212:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix4To2To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 1) = Mix2To3To3(w[4], w[5], w[7]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
break;
|
|
}
|
|
case 241:
|
|
case 240:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix2To3To3(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 236:
|
|
case 232:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To3To3(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix4To2To1(w[4], w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 109:
|
|
case 105:
|
|
{
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL) = Mix2To3To3(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 171:
|
|
case 43:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To3To3(w[4], w[3], w[1]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
}
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 143:
|
|
case 15:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To3To3(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 124:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 203:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 62:
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 211:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 118:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 217:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 110:
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 155:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 188:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 185:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 61:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 157:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 103:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 227:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 230:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 199:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 220:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix6To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 158:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix6To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 234:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix6To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 242:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix6To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 59:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix6To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 121:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 87:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 79:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix6To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 122:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix6To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix6To1To1(w[4], w[1], w[5]);
|
|
}
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 94:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix6To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix6To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 218:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix6To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix6To1To1(w[4], w[1], w[5]);
|
|
}
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix6To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 91:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix6To1To1(w[4], w[1], w[5]);
|
|
}
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix6To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 229:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 167:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 173:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 181:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 186:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix6To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix6To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 115:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix6To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 93:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix6To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 206:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix6To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix6To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 205:
|
|
case 201:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix6To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 174:
|
|
case 46:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix6To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 179:
|
|
case 147:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix6To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 117:
|
|
case 116:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 189:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 231:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 126:
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 219:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 125:
|
|
{
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL) = Mix2To3To3(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 221:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix4To2To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 1) = Mix2To3To3(w[4], w[5], w[7]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 207:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To3To3(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 238:
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To3To3(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix4To2To1(w[4], w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 190:
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To3To3(w[4], w[1], w[5]);
|
|
*(dp + dpL + 1) = Mix4To2To1(w[4], w[5], w[7]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 187:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To3To3(w[4], w[3], w[1]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
}
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 243:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix2To3To3(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 119:
|
|
{
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix2To3To3(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 237:
|
|
case 233:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix14To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 175:
|
|
case 47:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix14To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 183:
|
|
case 151:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix14To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 245:
|
|
case 244:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix14To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 250:
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 123:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 95:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 222:
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 252:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix14To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 249:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix14To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 235:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix2To1To1(w[4], w[2], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix14To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 111:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix14To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[5]);
|
|
break;
|
|
}
|
|
case 63:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix14To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[8], w[7]);
|
|
break;
|
|
}
|
|
case 159:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix14To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[7]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 215:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix14To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[6], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 246:
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[0], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix14To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 254:
|
|
{
|
|
*dp = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix14To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 253:
|
|
{
|
|
*dp = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix14To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix14To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 251:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix3To1(w[4], w[2]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix14To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 239:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix14To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix14To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 127:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix14To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 191:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix14To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix14To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 223:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix14To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 247:
|
|
{
|
|
*dp = Mix3To1(w[4], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix14To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix14To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 255:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*dp = Mix14To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix14To1To1(w[4], w[1], w[5]);
|
|
}
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix14To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 1) = Mix14To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
sp++;
|
|
dp += 2;
|
|
}
|
|
dp += dpL;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Hq3x
|
|
/// <summary>
|
|
/// This is the extended C# port of the hq3x algorithm.
|
|
/// <para>The image is scaled to three times its size.</para>
|
|
/// </summary>
|
|
/// <param name="bitmap">The source image.</param>
|
|
/// <param name="trY">The Y (luminance) threshold.</param>
|
|
/// <param name="trU">The U (chrominance) threshold.</param>
|
|
/// <param name="trV">The V (chrominance) threshold.</param>
|
|
/// <param name="trA">The A (transparency) threshold.</param>
|
|
/// <param name="wrapX">Used for images that can be seamlessly repeated horizontally.</param>
|
|
/// <param name="wrapY">Used for images that can be seamlessly repeated vertically.</param>
|
|
/// <returns>A new Bitmap instance that contains the source imagage scaled to three times its size.</returns>
|
|
public static unsafe Bitmap Scale3(Bitmap bitmap, uint trY = 48, uint trU = 7, uint trV = 6, uint trA = 0, bool wrapX = false, bool wrapY = false)
|
|
{
|
|
|
|
int Xres = bitmap.Width;
|
|
int Yres = bitmap.Height;
|
|
|
|
var dest = new Bitmap(bitmap.Width * 3, bitmap.Height * 3);
|
|
|
|
var bmpData = bitmap.LockBits(new Rectangle(Point.Empty, bitmap.Size), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
|
|
var destData = dest.LockBits(new Rectangle(Point.Empty, dest.Size), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
|
|
{
|
|
|
|
uint* sp = (uint*)bmpData.Scan0.ToPointer();
|
|
uint* dp = (uint*)destData.Scan0.ToPointer();
|
|
|
|
Scale3(sp, dp, Xres, Yres, trY, trU, trV, trA, wrapX, wrapY);
|
|
}
|
|
bitmap.UnlockBits(bmpData);
|
|
dest.UnlockBits(destData);
|
|
|
|
return dest;
|
|
}
|
|
|
|
/// <summary>
|
|
/// This is the extended C# port of the hq3x algorithm.
|
|
/// <para>The destination image must be exactly three times as large in both dimensions as the source image.</para>
|
|
/// </summary>
|
|
/// <param name="sp">A pointer to the source image.</param>
|
|
/// <param name="dp">A pointer to the destination image.</param>
|
|
/// <param name="Xres">The horizontal resolution of the source image.</param>
|
|
/// <param name="Yres">The vertical resolution of the source image.</param>
|
|
/// <param name="trY">The Y (luminance) threshold.</param>
|
|
/// <param name="trU">The U (chrominance) threshold.</param>
|
|
/// <param name="trV">The V (chrominance) threshold.</param>
|
|
/// <param name="trA">The A (transparency) threshold.</param>
|
|
/// <param name="wrapX">Used for images that can be seamlessly repeated horizontally.</param>
|
|
/// <param name="wrapY">Used for images that can be seamlessly repeated vertically.</param>
|
|
public static unsafe void Scale3(uint* sp, uint* dp, int Xres, int Yres, uint trY = 48, uint trU = 7, uint trV = 6, uint trA = 0, bool wrapX = false, bool wrapY = false)
|
|
{
|
|
//Don't shift trA, as it uses shift right instead of a mask for comparisons.
|
|
trY <<= 2 * 8;
|
|
trU <<= 1 * 8;
|
|
int dpL = Xres * 3;
|
|
|
|
int prevline, nextline;
|
|
var w = new uint[9];
|
|
|
|
for (int j = 0; j < Yres; j++)
|
|
{
|
|
if (j > 0)
|
|
{
|
|
prevline = -Xres;
|
|
}
|
|
else
|
|
{
|
|
if (wrapY)
|
|
{
|
|
prevline = Xres * (Yres - 1);
|
|
}
|
|
else
|
|
{
|
|
prevline = 0;
|
|
}
|
|
}
|
|
if (j < Yres - 1)
|
|
{
|
|
nextline = Xres;
|
|
}
|
|
else
|
|
{
|
|
if (wrapY)
|
|
{
|
|
nextline = -(Xres * (Yres - 1));
|
|
}
|
|
else
|
|
{
|
|
nextline = 0;
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < Xres; i++)
|
|
{
|
|
w[1] = *(sp + prevline);
|
|
w[4] = *sp;
|
|
w[7] = *(sp + nextline);
|
|
|
|
if (i > 0)
|
|
{
|
|
w[0] = *(sp + prevline - 1);
|
|
w[3] = *(sp - 1);
|
|
w[6] = *(sp + nextline - 1);
|
|
}
|
|
else
|
|
{
|
|
if (wrapX)
|
|
{
|
|
w[0] = *(sp + prevline + Xres - 1);
|
|
w[3] = *(sp + Xres - 1);
|
|
w[6] = *(sp + nextline + Xres - 1);
|
|
}
|
|
else
|
|
{
|
|
w[0] = w[1];
|
|
w[3] = w[4];
|
|
w[6] = w[7];
|
|
}
|
|
}
|
|
|
|
if (i < Xres - 1)
|
|
{
|
|
w[2] = *(sp + prevline + 1);
|
|
w[5] = *(sp + 1);
|
|
w[8] = *(sp + nextline + 1);
|
|
}
|
|
else
|
|
{
|
|
if (wrapX)
|
|
{
|
|
w[2] = *(sp + prevline - Xres + 1);
|
|
w[5] = *(sp - Xres + 1);
|
|
w[8] = *(sp + nextline - Xres + 1);
|
|
}
|
|
else
|
|
{
|
|
w[2] = w[1];
|
|
w[5] = w[4];
|
|
w[8] = w[7];
|
|
}
|
|
}
|
|
|
|
int pattern = 0;
|
|
int flag = 1;
|
|
|
|
for (int k = 0; k < 9; k++)
|
|
{
|
|
if (k == 4) continue;
|
|
|
|
if (w[k] != w[4])
|
|
{
|
|
if (Diff(w[4], w[k], trY, trU, trV, trA))
|
|
pattern |= flag;
|
|
}
|
|
flag <<= 1;
|
|
}
|
|
|
|
switch (pattern)
|
|
{
|
|
case 0:
|
|
case 1:
|
|
case 4:
|
|
case 32:
|
|
case 128:
|
|
case 5:
|
|
case 132:
|
|
case 160:
|
|
case 33:
|
|
case 129:
|
|
case 36:
|
|
case 133:
|
|
case 164:
|
|
case 161:
|
|
case 37:
|
|
case 165:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 2:
|
|
case 34:
|
|
case 130:
|
|
case 162:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 16:
|
|
case 17:
|
|
case 48:
|
|
case 49:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 64:
|
|
case 65:
|
|
case 68:
|
|
case 69:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 8:
|
|
case 12:
|
|
case 136:
|
|
case 140:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 3:
|
|
case 35:
|
|
case 131:
|
|
case 163:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 6:
|
|
case 38:
|
|
case 134:
|
|
case 166:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 20:
|
|
case 21:
|
|
case 52:
|
|
case 53:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 144:
|
|
case 145:
|
|
case 176:
|
|
case 177:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 192:
|
|
case 193:
|
|
case 196:
|
|
case 197:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 96:
|
|
case 97:
|
|
case 100:
|
|
case 101:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 40:
|
|
case 44:
|
|
case 168:
|
|
case 172:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 9:
|
|
case 13:
|
|
case 137:
|
|
case 141:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 18:
|
|
case 50:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To7To7(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 80:
|
|
case 81:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To7To7(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 72:
|
|
case 76:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix2To7To7(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 10:
|
|
case 138:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To7To7(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 66:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 24:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 7:
|
|
case 39:
|
|
case 135:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 148:
|
|
case 149:
|
|
case 180:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 224:
|
|
case 228:
|
|
case 225:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 41:
|
|
case 169:
|
|
case 45:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 22:
|
|
case 54:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To7To7(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 208:
|
|
case 209:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To7To7(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 104:
|
|
case 108:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix2To7To7(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 11:
|
|
case 139:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To7To7(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 19:
|
|
case 51:
|
|
{
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[1], w[4]);
|
|
*(dp + 2) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 146:
|
|
case 178:
|
|
{
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix3To1(w[5], w[4]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 84:
|
|
case 85:
|
|
{
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix3To1(w[5], w[4]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = MixEven(w[5], w[7]);
|
|
}
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 112:
|
|
case 113:
|
|
{
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[7], w[4]);
|
|
*(dp + dpL + dpL + 2) = MixEven(w[5], w[7]);
|
|
}
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
break;
|
|
}
|
|
case 200:
|
|
case 204:
|
|
{
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[7], w[4]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 73:
|
|
case 77:
|
|
{
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[3], w[4]);
|
|
*(dp + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 42:
|
|
case 170:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[3], w[4]);
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 14:
|
|
case 142:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[1], w[4]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 67:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 70:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 28:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 152:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 194:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 98:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 56:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 25:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 26:
|
|
case 31:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To7To7(w[4], w[3], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To7To7(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 82:
|
|
case 214:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To7To7(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To7To7(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 88:
|
|
case 248:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix2To7To7(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 2) = Mix2To7To7(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 74:
|
|
case 107:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To7To7(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To7To7(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 27:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To7To7(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 86:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To7To7(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 216:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To7To7(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 106:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix2To7To7(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 30:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To7To7(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 210:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To7To7(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 120:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix2To7To7(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 75:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To7To7(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 29:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 198:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 184:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 99:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 57:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 71:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 156:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 226:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 60:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 195:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 102:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 153:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 58:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 83:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 92:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 202:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 78:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 154:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 114:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 89:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 90:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 55:
|
|
case 23:
|
|
{
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[1], w[4]);
|
|
*(dp + 2) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 182:
|
|
case 150:
|
|
{
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix3To1(w[5], w[4]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 213:
|
|
case 212:
|
|
{
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix3To1(w[5], w[4]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = MixEven(w[5], w[7]);
|
|
}
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 241:
|
|
case 240:
|
|
{
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[7], w[4]);
|
|
*(dp + dpL + dpL + 2) = MixEven(w[5], w[7]);
|
|
}
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
break;
|
|
}
|
|
case 236:
|
|
case 232:
|
|
{
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[7], w[4]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 109:
|
|
case 105:
|
|
{
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[3], w[4]);
|
|
*(dp + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 171:
|
|
case 43:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[3], w[4]);
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 143:
|
|
case 15:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[1], w[4]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 124:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix2To7To7(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 203:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To7To7(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 62:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To7To7(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 211:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To7To7(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 118:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To7To7(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 217:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To7To7(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 110:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix2To7To7(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 155:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To7To7(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 188:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 185:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 61:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 157:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 103:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 227:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 230:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 199:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 220:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To7To7(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 158:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To7To7(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 234:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix2To7To7(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 242:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To7To7(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 59:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To7To7(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 121:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix2To7To7(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 87:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To7To7(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 79:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To7To7(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 122:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix2To7To7(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 94:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To7To7(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 218:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To7To7(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 91:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To7To7(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 229:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 167:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 173:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 181:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 186:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 115:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 93:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 206:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 205:
|
|
case 201:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 174:
|
|
case 46:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 179:
|
|
case 147:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 117:
|
|
case 116:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 189:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 231:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 126:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To7To7(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix2To7To7(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 219:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To7To7(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To7To7(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 125:
|
|
{
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[3], w[4]);
|
|
*(dp + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 221:
|
|
{
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix3To1(w[5], w[4]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = MixEven(w[5], w[7]);
|
|
}
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 207:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[1], w[4]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 238:
|
|
{
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[7], w[4]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 190:
|
|
{
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix3To1(w[5], w[4]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 187:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[3], w[4]);
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 243:
|
|
{
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[7], w[4]);
|
|
*(dp + dpL + dpL + 2) = MixEven(w[5], w[7]);
|
|
}
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
break;
|
|
}
|
|
case 119:
|
|
{
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[1], w[4]);
|
|
*(dp + 2) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 237:
|
|
case 233:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 175:
|
|
case 47:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
break;
|
|
}
|
|
case 183:
|
|
case 151:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 245:
|
|
case 244:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 250:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix2To7To7(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 2) = Mix2To7To7(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 123:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To7To7(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To7To7(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 95:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To7To7(w[4], w[3], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To7To7(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 222:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To7To7(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To7To7(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 252:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix2To7To7(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 249:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 2) = Mix2To7To7(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 235:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To7To7(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 111:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To7To7(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 63:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To7To7(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 159:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To7To7(w[4], w[3], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 215:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To7To7(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 246:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To7To7(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 254:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To7To7(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix2To7To7(w[4], w[7], w[3]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 253:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 251:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To7To7(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 2) = Mix2To7To7(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 239:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 127:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To7To7(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To7To7(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 191:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 223:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To7To7(w[4], w[3], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[3]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix2To7To7(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 247:
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
case 255:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix2To1To1(w[4], w[5], w[7]);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
sp++;
|
|
dp += 3;
|
|
}
|
|
dp += (dpL * 2);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Hq4x
|
|
/// <summary>
|
|
/// This is the extended C# port of the hq4x algorithm.
|
|
/// <para>The image is scaled to four times its size.</para>
|
|
/// </summary>
|
|
/// <param name="bitmap">The source image.</param>
|
|
/// <param name="trY">The Y (luminance) threshold.</param>
|
|
/// <param name="trU">The U (chrominance) threshold.</param>
|
|
/// <param name="trV">The V (chrominance) threshold.</param>
|
|
/// <param name="trA">The A (transparency) threshold.</param>
|
|
/// <param name="wrapX">Used for images that can be seamlessly repeated horizontally.</param>
|
|
/// <param name="wrapY">Used for images that can be seamlessly repeated vertically.</param>
|
|
/// <returns>A new Bitmap instance that contains the source imagage scaled to four times its size.</returns>
|
|
public static unsafe Bitmap Scale4(Bitmap bitmap, uint trY = 48, uint trU = 7, uint trV = 6, uint trA = 0, bool wrapX = false, bool wrapY = false)
|
|
{
|
|
|
|
int Xres = bitmap.Width;
|
|
int Yres = bitmap.Height;
|
|
|
|
var dest = new Bitmap(bitmap.Width * 4, bitmap.Height * 4);
|
|
|
|
var bmpData = bitmap.LockBits(new Rectangle(Point.Empty, bitmap.Size), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
|
|
var destData = dest.LockBits(new Rectangle(Point.Empty, dest.Size), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
|
|
{
|
|
|
|
uint* sp = (uint*)bmpData.Scan0.ToPointer();
|
|
uint* dp = (uint*)destData.Scan0.ToPointer();
|
|
|
|
Scale4(sp, dp, Xres, Yres, trY, trU, trV, trA, wrapX, wrapY);
|
|
}
|
|
bitmap.UnlockBits(bmpData);
|
|
dest.UnlockBits(destData);
|
|
|
|
return dest;
|
|
}
|
|
|
|
/// <summary>
|
|
/// This is the extended C# port of the hq4x algorithm.
|
|
/// <para>The destination image must be exactly four times as large in both dimensions as the source image.</para>
|
|
/// </summary>
|
|
/// <param name="sp">A pointer to the source image.</param>
|
|
/// <param name="dp">A pointer to the destination image.</param>
|
|
/// <param name="Xres">The horizontal resolution of the source image.</param>
|
|
/// <param name="Yres">The vertical resolution of the source image.</param>
|
|
/// <param name="trY">The Y (luminance) threshold.</param>
|
|
/// <param name="trU">The U (chrominance) threshold.</param>
|
|
/// <param name="trV">The V (chrominance) threshold.</param>
|
|
/// <param name="trA">The A (transparency) threshold.</param>
|
|
/// <param name="wrapX">Used for images that can be seamlessly repeated horizontally.</param>
|
|
/// <param name="wrapY">Used for images that can be seamlessly repeated vertically.</param>
|
|
public static unsafe void Scale4(uint* sp, uint* dp, int Xres, int Yres, uint trY = 48, uint trU = 7, uint trV = 6, uint trA = 0, bool wrapX = false, bool wrapY = false)
|
|
{
|
|
//Don't shift trA, as it uses shift right instead of a mask for comparisons.
|
|
trY <<= 2 * 8;
|
|
trU <<= 1 * 8;
|
|
int dpL = Xres * 4;
|
|
|
|
int prevline, nextline;
|
|
var w = new uint[9];
|
|
|
|
for (int j = 0; j < Yres; j++)
|
|
{
|
|
if (j > 0)
|
|
{
|
|
prevline = -Xres;
|
|
}
|
|
else
|
|
{
|
|
if (wrapY)
|
|
{
|
|
prevline = Xres * (Yres - 1);
|
|
}
|
|
else
|
|
{
|
|
prevline = 0;
|
|
}
|
|
}
|
|
if (j < Yres - 1)
|
|
{
|
|
nextline = Xres;
|
|
}
|
|
else
|
|
{
|
|
if (wrapY)
|
|
{
|
|
nextline = -(Xres * (Yres - 1));
|
|
}
|
|
else
|
|
{
|
|
nextline = 0;
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < Xres; i++)
|
|
{
|
|
w[1] = *(sp + prevline);
|
|
w[4] = *sp;
|
|
w[7] = *(sp + nextline);
|
|
|
|
if (i > 0)
|
|
{
|
|
w[0] = *(sp + prevline - 1);
|
|
w[3] = *(sp - 1);
|
|
w[6] = *(sp + nextline - 1);
|
|
}
|
|
else
|
|
{
|
|
if (wrapX)
|
|
{
|
|
w[0] = *(sp + prevline + Xres - 1);
|
|
w[3] = *(sp + Xres - 1);
|
|
w[6] = *(sp + nextline + Xres - 1);
|
|
}
|
|
else
|
|
{
|
|
w[0] = w[1];
|
|
w[3] = w[4];
|
|
w[6] = w[7];
|
|
}
|
|
}
|
|
|
|
if (i < Xres - 1)
|
|
{
|
|
w[2] = *(sp + prevline + 1);
|
|
w[5] = *(sp + 1);
|
|
w[8] = *(sp + nextline + 1);
|
|
}
|
|
else
|
|
{
|
|
if (wrapX)
|
|
{
|
|
w[2] = *(sp + prevline - Xres + 1);
|
|
w[5] = *(sp - Xres + 1);
|
|
w[8] = *(sp + nextline - Xres + 1);
|
|
}
|
|
else
|
|
{
|
|
w[2] = w[1];
|
|
w[5] = w[4];
|
|
w[8] = w[7];
|
|
}
|
|
}
|
|
|
|
int pattern = 0;
|
|
int flag = 1;
|
|
|
|
for (int k = 0; k < 9; k++)
|
|
{
|
|
if (k == 4) continue;
|
|
|
|
if (w[k] != w[4])
|
|
{
|
|
if (Diff(w[4], w[k], trY, trU, trV, trA))
|
|
pattern |= flag;
|
|
}
|
|
flag <<= 1;
|
|
}
|
|
|
|
switch (pattern)
|
|
{
|
|
case 0:
|
|
case 1:
|
|
case 4:
|
|
case 32:
|
|
case 128:
|
|
case 5:
|
|
case 132:
|
|
case 160:
|
|
case 33:
|
|
case 129:
|
|
case 36:
|
|
case 133:
|
|
case 164:
|
|
case 161:
|
|
case 37:
|
|
case 165:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 2:
|
|
case 34:
|
|
case 130:
|
|
case 162:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 16:
|
|
case 17:
|
|
case 48:
|
|
case 49:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 64:
|
|
case 65:
|
|
case 68:
|
|
case 69:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 8:
|
|
case 12:
|
|
case 136:
|
|
case 140:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 3:
|
|
case 35:
|
|
case 131:
|
|
case 163:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 6:
|
|
case 38:
|
|
case 134:
|
|
case 166:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 20:
|
|
case 21:
|
|
case 52:
|
|
case 53:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 144:
|
|
case 145:
|
|
case 176:
|
|
case 177:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 192:
|
|
case 193:
|
|
case 196:
|
|
case 197:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 96:
|
|
case 97:
|
|
case 100:
|
|
case 101:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 40:
|
|
case 44:
|
|
case 168:
|
|
case 172:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 9:
|
|
case 13:
|
|
case 137:
|
|
case 141:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 18:
|
|
case 50:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = MixEven(w[1], w[4]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = MixEven(w[5], w[4]);
|
|
}
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 80:
|
|
case 81:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = MixEven(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = MixEven(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 72:
|
|
case 76:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = MixEven(w[7], w[4]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 10:
|
|
case 138:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = MixEven(w[1], w[4]);
|
|
*(dp + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 66:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 24:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 7:
|
|
case 39:
|
|
case 135:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 148:
|
|
case 149:
|
|
case 180:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 224:
|
|
case 228:
|
|
case 225:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 41:
|
|
case 169:
|
|
case 45:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 22:
|
|
case 54:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = MixEven(w[1], w[4]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 3) = MixEven(w[5], w[4]);
|
|
}
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 208:
|
|
case 209:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 3) = MixEven(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = MixEven(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 104:
|
|
case 108:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = MixEven(w[7], w[4]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 11:
|
|
case 139:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = MixEven(w[1], w[4]);
|
|
*(dp + dpL) = MixEven(w[3], w[4]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 19:
|
|
case 51:
|
|
{
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[1], w[4]);
|
|
*(dp + 2) = Mix5To3(w[1], w[5]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix2To1To1(w[5], w[4], w[1]);
|
|
}
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 146:
|
|
case 178:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[1], w[4], w[5]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix5To3(w[5], w[1]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 84:
|
|
case 85:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 3) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix3To1(w[5], w[4]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix2To1To1(w[7], w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 112:
|
|
case 113:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix2To1To1(w[5], w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 200:
|
|
case 204:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[3], w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix3To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 73:
|
|
case 77:
|
|
{
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL) = Mix3To1(w[3], w[4]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix2To1To1(w[7], w[4], w[3]);
|
|
}
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 42:
|
|
case 170:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = Mix2To1To1(w[1], w[4], w[3]);
|
|
*(dp + dpL) = Mix5To3(w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 14:
|
|
case 142:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = Mix5To3(w[1], w[3]);
|
|
*(dp + 2) = Mix3To1(w[1], w[4]);
|
|
*(dp + 3) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix2To1To1(w[3], w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 67:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 70:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 28:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 152:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 194:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 98:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 56:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 25:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 26:
|
|
case 31:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = MixEven(w[1], w[4]);
|
|
*(dp + dpL) = MixEven(w[3], w[4]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = MixEven(w[1], w[4]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 3) = MixEven(w[5], w[4]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 82:
|
|
case 214:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = MixEven(w[1], w[4]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 3) = MixEven(w[5], w[4]);
|
|
}
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 3) = MixEven(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = MixEven(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 88:
|
|
case 248:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = MixEven(w[7], w[4]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 3) = MixEven(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = MixEven(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 74:
|
|
case 107:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = MixEven(w[1], w[4]);
|
|
*(dp + dpL) = MixEven(w[3], w[4]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = MixEven(w[7], w[4]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 27:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = MixEven(w[1], w[4]);
|
|
*(dp + dpL) = MixEven(w[3], w[4]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 86:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = MixEven(w[1], w[4]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 3) = MixEven(w[5], w[4]);
|
|
}
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 216:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 3) = MixEven(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = MixEven(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 106:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = MixEven(w[7], w[4]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 30:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = MixEven(w[1], w[4]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 3) = MixEven(w[5], w[4]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 210:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 3) = MixEven(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = MixEven(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 120:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = MixEven(w[7], w[4]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 75:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = MixEven(w[1], w[4]);
|
|
*(dp + dpL) = MixEven(w[3], w[4]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 29:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 198:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 184:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 99:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 57:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 71:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 156:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 226:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 60:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 195:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 102:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 153:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 58:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 83:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 92:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 202:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 78:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 154:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 114:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
break;
|
|
}
|
|
case 89:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 90:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
}
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 55:
|
|
case 23:
|
|
{
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[1], w[4]);
|
|
*(dp + 2) = Mix5To3(w[1], w[5]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix2To1To1(w[5], w[4], w[1]);
|
|
}
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 182:
|
|
case 150:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[1], w[4], w[5]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix5To3(w[5], w[1]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 213:
|
|
case 212:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 3) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix3To1(w[5], w[4]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix2To1To1(w[7], w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 241:
|
|
case 240:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix2To1To1(w[5], w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 236:
|
|
case 232:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[3], w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix3To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 109:
|
|
case 105:
|
|
{
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL) = Mix3To1(w[3], w[4]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix2To1To1(w[7], w[4], w[3]);
|
|
}
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 171:
|
|
case 43:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = Mix2To1To1(w[1], w[4], w[3]);
|
|
*(dp + dpL) = Mix5To3(w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 143:
|
|
case 15:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = Mix5To3(w[1], w[3]);
|
|
*(dp + 2) = Mix3To1(w[1], w[4]);
|
|
*(dp + 3) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix2To1To1(w[3], w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 124:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = MixEven(w[7], w[4]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 203:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = MixEven(w[1], w[4]);
|
|
*(dp + dpL) = MixEven(w[3], w[4]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 62:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = MixEven(w[1], w[4]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 3) = MixEven(w[5], w[4]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 211:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 3) = MixEven(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = MixEven(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 118:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = MixEven(w[1], w[4]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 3) = MixEven(w[5], w[4]);
|
|
}
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 217:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 3) = MixEven(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = MixEven(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 110:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = MixEven(w[7], w[4]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 155:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = MixEven(w[1], w[4]);
|
|
*(dp + dpL) = MixEven(w[3], w[4]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 188:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 185:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 61:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 157:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 103:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 227:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 230:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 199:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 220:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 3) = MixEven(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = MixEven(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 158:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = MixEven(w[1], w[4]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 3) = MixEven(w[5], w[4]);
|
|
}
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 234:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = MixEven(w[7], w[4]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 242:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 3) = MixEven(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = MixEven(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
break;
|
|
}
|
|
case 59:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = MixEven(w[1], w[4]);
|
|
*(dp + dpL) = MixEven(w[3], w[4]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 121:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = MixEven(w[7], w[4]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 87:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = MixEven(w[1], w[4]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 3) = MixEven(w[5], w[4]);
|
|
}
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 79:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = MixEven(w[1], w[4]);
|
|
*(dp + dpL) = MixEven(w[3], w[4]);
|
|
}
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 122:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
}
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = MixEven(w[7], w[4]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 94:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = MixEven(w[1], w[4]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 3) = MixEven(w[5], w[4]);
|
|
}
|
|
*(dp + dpL + 2) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 218:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
}
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 3) = MixEven(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = MixEven(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 91:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = MixEven(w[1], w[4]);
|
|
*(dp + dpL) = MixEven(w[3], w[4]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 229:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 167:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 173:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 181:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 186:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 115:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
break;
|
|
}
|
|
case 93:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 206:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 205:
|
|
case 201:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 174:
|
|
case 46:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 179:
|
|
case 147:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix3To1(w[4], w[1]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 117:
|
|
case 116:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
break;
|
|
}
|
|
case 189:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 231:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 126:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = MixEven(w[1], w[4]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 3) = MixEven(w[5], w[4]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = MixEven(w[7], w[4]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 219:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = MixEven(w[1], w[4]);
|
|
*(dp + dpL) = MixEven(w[3], w[4]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 3) = MixEven(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = MixEven(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 125:
|
|
{
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[3]);
|
|
*(dp + dpL) = Mix3To1(w[3], w[4]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix2To1To1(w[7], w[4], w[3]);
|
|
}
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 221:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 3) = Mix3To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix3To1(w[5], w[4]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix2To1To1(w[7], w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 207:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = Mix5To3(w[1], w[3]);
|
|
*(dp + 2) = Mix3To1(w[1], w[4]);
|
|
*(dp + 3) = Mix3To1(w[4], w[1]);
|
|
*(dp + dpL) = Mix2To1To1(w[3], w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
}
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 238:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = Mix2To1To1(w[3], w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix3To1(w[4], w[7]);
|
|
}
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 190:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = Mix2To1To1(w[1], w[4], w[5]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix5To3(w[5], w[1]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix3To1(w[4], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 187:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = Mix2To1To1(w[1], w[4], w[3]);
|
|
*(dp + dpL) = Mix5To3(w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + dpL) = Mix3To1(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = Mix3To1(w[4], w[3]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 243:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix2To1To1(w[5], w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix3To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 119:
|
|
{
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix3To1(w[4], w[1]);
|
|
*(dp + 1) = Mix3To1(w[1], w[4]);
|
|
*(dp + 2) = Mix5To3(w[1], w[5]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix2To1To1(w[5], w[4], w[1]);
|
|
}
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 237:
|
|
case 233:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[5]);
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix6To1To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[1]);
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 175:
|
|
case 47:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix6To1To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
break;
|
|
}
|
|
case 183:
|
|
case 151:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix6To1To1(w[4], w[3], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 245:
|
|
case 244:
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[3]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 1) = Mix6To1To1(w[4], w[3], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 250:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = MixEven(w[7], w[4]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 3) = MixEven(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = MixEven(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 123:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = MixEven(w[1], w[4]);
|
|
*(dp + dpL) = MixEven(w[3], w[4]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = MixEven(w[7], w[4]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 95:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = MixEven(w[1], w[4]);
|
|
*(dp + dpL) = MixEven(w[3], w[4]);
|
|
}
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = MixEven(w[1], w[4]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 3) = MixEven(w[5], w[4]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 222:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = MixEven(w[1], w[4]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 3) = MixEven(w[5], w[4]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 3) = MixEven(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = MixEven(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 252:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix4To2To1(w[4], w[1], w[0]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = MixEven(w[7], w[4]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 249:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix4To2To1(w[4], w[1], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 3) = MixEven(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = MixEven(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
break;
|
|
}
|
|
case 235:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = MixEven(w[1], w[4]);
|
|
*(dp + dpL) = MixEven(w[3], w[4]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix4To2To1(w[4], w[5], w[2]);
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 111:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = MixEven(w[7], w[4]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix4To2To1(w[4], w[5], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 63:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = MixEven(w[1], w[4]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 3) = MixEven(w[5], w[4]);
|
|
}
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix4To2To1(w[4], w[7], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 159:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = MixEven(w[1], w[4]);
|
|
*(dp + dpL) = MixEven(w[3], w[4]);
|
|
}
|
|
*(dp + 2) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix4To2To1(w[4], w[7], w[6]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 215:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL) = Mix4To2To1(w[4], w[3], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 3) = MixEven(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = MixEven(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 246:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = MixEven(w[1], w[4]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 3) = MixEven(w[5], w[4]);
|
|
}
|
|
*(dp + dpL) = Mix4To2To1(w[4], w[3], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 254:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[0]);
|
|
*(dp + 1) = Mix3To1(w[4], w[0]);
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = MixEven(w[1], w[4]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 3) = MixEven(w[5], w[4]);
|
|
}
|
|
*(dp + dpL) = Mix3To1(w[4], w[0]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[0]);
|
|
*(dp + dpL + 2) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = MixEven(w[7], w[4]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 253:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[1]);
|
|
*(dp + 1) = Mix5To3(w[4], w[1]);
|
|
*(dp + 2) = Mix5To3(w[4], w[1]);
|
|
*(dp + 3) = Mix5To3(w[4], w[1]);
|
|
*(dp + dpL) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + 3) = Mix7To1(w[4], w[1]);
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 251:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = MixEven(w[1], w[4]);
|
|
*(dp + dpL) = MixEven(w[3], w[4]);
|
|
}
|
|
*(dp + 2) = Mix3To1(w[4], w[2]);
|
|
*(dp + 3) = Mix5To3(w[4], w[2]);
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[2]);
|
|
*(dp + dpL + 3) = Mix3To1(w[4], w[2]);
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 3) = MixEven(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = MixEven(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
break;
|
|
}
|
|
case 239:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = Mix7To1(w[4], w[5]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[5]);
|
|
break;
|
|
}
|
|
case 127:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 2) = w[4];
|
|
*(dp + 3) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 2) = MixEven(w[1], w[4]);
|
|
*(dp + 3) = MixEven(w[1], w[5]);
|
|
*(dp + dpL + 3) = MixEven(w[5], w[4]);
|
|
}
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL) = MixEven(w[3], w[4]);
|
|
*(dp + dpL + dpL + dpL) = MixEven(w[7], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = MixEven(w[7], w[4]);
|
|
}
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + 3) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix3To1(w[4], w[8]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[8]);
|
|
break;
|
|
}
|
|
case 191:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 2) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + 3) = Mix7To1(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 2) = Mix5To3(w[4], w[7]);
|
|
*(dp + dpL + dpL + dpL + 3) = Mix5To3(w[4], w[7]);
|
|
break;
|
|
}
|
|
case 223:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
*(dp + 1) = w[4];
|
|
*(dp + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = MixEven(w[1], w[3]);
|
|
*(dp + 1) = MixEven(w[1], w[4]);
|
|
*(dp + dpL) = MixEven(w[3], w[4]);
|
|
}
|
|
*(dp + 2) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL) = Mix3To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[6]);
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + 3) = MixEven(w[5], w[4]);
|
|
*(dp + dpL + dpL + dpL + 2) = MixEven(w[7], w[4]);
|
|
*(dp + dpL + dpL + dpL + 3) = MixEven(w[7], w[5]);
|
|
}
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[6]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix3To1(w[4], w[6]);
|
|
break;
|
|
}
|
|
case 247:
|
|
{
|
|
*(dp) = Mix5To3(w[4], w[3]);
|
|
*(dp + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + 2) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL + dpL) = Mix5To3(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 1) = Mix7To1(w[4], w[3]);
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
case 255:
|
|
{
|
|
if (Diff(w[3], w[1], trY, trU, trV, trA))
|
|
{
|
|
*dp = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp) = Mix2To1To1(w[4], w[1], w[3]);
|
|
}
|
|
*(dp + 1) = w[4];
|
|
*(dp + 2) = w[4];
|
|
if (Diff(w[1], w[5], trY, trU, trV, trA))
|
|
{
|
|
*(dp + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + 3) = Mix2To1To1(w[4], w[1], w[5]);
|
|
}
|
|
*(dp + dpL) = w[4];
|
|
*(dp + dpL + 1) = w[4];
|
|
*(dp + dpL + 2) = w[4];
|
|
*(dp + dpL + 3) = w[4];
|
|
*(dp + dpL + dpL) = w[4];
|
|
*(dp + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + 2) = w[4];
|
|
*(dp + dpL + dpL + 3) = w[4];
|
|
if (Diff(w[7], w[3], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + dpL) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + dpL) = Mix2To1To1(w[4], w[7], w[3]);
|
|
}
|
|
*(dp + dpL + dpL + dpL + 1) = w[4];
|
|
*(dp + dpL + dpL + dpL + 2) = w[4];
|
|
if (Diff(w[5], w[7], trY, trU, trV, trA))
|
|
{
|
|
*(dp + dpL + dpL + dpL + 3) = w[4];
|
|
}
|
|
else
|
|
{
|
|
*(dp + dpL + dpL + dpL + 3) = Mix2To1To1(w[4], w[7], w[5]);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
sp++;
|
|
dp += 4;
|
|
}
|
|
dp += (dpL * 3);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
}
|