private static long Eight(byte[] u0002, long u0003, byte[] u0005, long u0008, ref long u0006, ref long u000e)
{
long num;
long num1 = (long)0;
long num2 = (long)1;
if (u0003 == (long)0)
{
return 0;
}
if (u0003 > 1)
{
do
{
num2 = (num2 << 1) + 1;
}
while (num2 < u0003);
}
do
{
u0006 = (long)(u0002[u0006 & 255] + u0005[u000e]);
u000e = u000e + (long)1;
if (u000e >= u0008)
{
u000e = 0;
u0006 = u0006 + u0008;
}
num1 = num1 + 1;
num = (num1 <= 11 ? u0006 & num2 : u0006 & num2 % u0003);
}
while (num > u0003);
return num;
}